migrated to v15

This commit is contained in:
Luke Hagar
2024-03-18 15:10:45 -07:00
parent f8e29c091a
commit 367dc248c3
148 changed files with 4128 additions and 1782 deletions

View File

@@ -27,10 +27,7 @@ Get Server Activities
using PlexAPI;
using PlexAPI.Models.Components;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Activities.GetServerActivitiesAsync();
@@ -54,12 +51,9 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Activities.CancelServerActivitiesAsync(ActivityUUID: "string");
var res = await sdk.Activities.CancelServerActivitiesAsync(activityUUID: "<value>");
// handle response
```

View File

@@ -1,9 +1,9 @@
# Security
(*Security*)
# Authentication
(*Authentication*)
## Overview
API Calls against Security for Plex Media Server
API Calls regarding authentication for Plex Media Server
### Available Operations
@@ -23,22 +23,21 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Security.GetTransientTokenAsync(Type: QueryParamType.Delegation, Scope: Scope.All);
var res = await sdk.Authentication.GetTransientTokenAsync(
type: GetTransientTokenQueryParamType.Delegation,
scope: Scope.All);
// handle response
```
### Parameters
| Parameter | Type | Required | Description |
| ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------- |
| `Type` | [QueryParamType](../../Models/Requests/QueryParamType.md) | :heavy_check_mark: | `delegation` - This is the only supported `type` parameter. |
| `Scope` | [Scope](../../Models/Requests/Scope.md) | :heavy_check_mark: | `all` - This is the only supported `scope` parameter. |
| Parameter | Type | Required | Description |
| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
| `Type` | [GetTransientTokenQueryParamType](../../Models/Requests/GetTransientTokenQueryParamType.md) | :heavy_check_mark: | `delegation` - This is the only supported `type` parameter. |
| `Scope` | [Scope](../../Models/Requests/Scope.md) | :heavy_check_mark: | `all` - This is the only supported `scope` parameter. |
### Response
@@ -59,12 +58,9 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Security.GetSourceConnectionInformationAsync(Source: "server://client-identifier");
var res = await sdk.Authentication.GetSourceConnectionInformationAsync(source: "server://client-identifier");
// handle response
```

View File

@@ -24,10 +24,7 @@ Returns a list of butler tasks
using PlexAPI;
using PlexAPI.Models.Components;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Butler.GetButlerTasksAsync();
@@ -55,10 +52,7 @@ This endpoint will attempt to start all Butler tasks that are enabled in the set
using PlexAPI;
using PlexAPI.Models.Components;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Butler.StartAllTasksAsync();
@@ -82,10 +76,7 @@ This endpoint will stop all currently running tasks and remove any scheduled tas
using PlexAPI;
using PlexAPI.Models.Components;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Butler.StopAllTasksAsync();
@@ -114,12 +105,9 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Butler.StartTaskAsync(TaskName: TaskName.CleanOldBundles);
var res = await sdk.Butler.StartTaskAsync(taskName: TaskName.CleanOldBundles);
// handle response
```
@@ -148,12 +136,9 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Butler.StopTaskAsync(TaskName: PathParamTaskName.BackupDatabase);
var res = await sdk.Butler.StopTaskAsync(taskName: PathParamTaskName.BackupDatabase);
// handle response
```

View File

@@ -22,12 +22,11 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Hubs.GetGlobalHubsAsync(Count: 1262.49D, OnlyTransient: OnlyTransient.One);
var res = await sdk.Hubs.GetGlobalHubsAsync(
count: 1262.49D,
onlyTransient: OnlyTransient.One);
// handle response
```
@@ -57,12 +56,12 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Hubs.GetLibraryHubsAsync(SectionId: 6728.76D, Count: 9010.22D, OnlyTransient: QueryParamOnlyTransient.Zero);
var res = await sdk.Hubs.GetLibraryHubsAsync(
sectionId: 6728.76D,
count: 9010.22D,
onlyTransient: QueryParamOnlyTransient.Zero);
// handle response
```

View File

@@ -15,6 +15,7 @@ API Calls interacting with Plex Media Server Libraries
* [DeleteLibrary](#deletelibrary) - Delete Library Section
* [GetLibraryItems](#getlibraryitems) - Get Library Items
* [RefreshLibrary](#refreshlibrary) - Refresh Library
* [SearchLibrary](#searchlibrary) - Search Library
* [GetMetadata](#getmetadata) - Get Items Metadata
* [GetMetadataChildren](#getmetadatachildren) - Get Items Children
* [GetOnDeck](#getondeck) - Get On Deck
@@ -30,12 +31,11 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Library.GetFileHashAsync(Url: "file://C:\Image.png&type=13", Type: 4462.17D);
var res = await sdk.Library.GetFileHashAsync(
url: "file://C:\Image.png&type=13",
type: 4462.17D);
// handle response
```
@@ -64,10 +64,7 @@ This endpoint will return the recently added content.
using PlexAPI;
using PlexAPI.Models.Components;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Library.GetRecentlyAddedAsync();
@@ -96,10 +93,7 @@ This allows a client to provide a rich interface around the media (e.g. allow so
using PlexAPI;
using PlexAPI.Models.Components;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Library.GetLibrariesAsync();
@@ -162,12 +156,11 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Library.GetLibraryAsync(SectionId: 1000D, IncludeDetails: IncludeDetails.Zero);
var res = await sdk.Library.GetLibraryAsync(
sectionId: 1000D,
includeDetails: IncludeDetails.Zero);
// handle response
```
@@ -196,12 +189,9 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Library.DeleteLibraryAsync(SectionId: 1000D);
var res = await sdk.Library.DeleteLibraryAsync(sectionId: 1000D);
// handle response
```
@@ -240,7 +230,6 @@ Fetches details from a specific section of the library identified by a section k
- `resolution`: Items categorized by resolution.
- `firstCharacter`: Items categorized by the first letter.
- `folder`: Items categorized by folder.
- `search?type=1`: Search functionality within the section.
### Example Usage
@@ -250,12 +239,11 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Library.GetLibraryItemsAsync(SectionId: 451092, Tag: Tag.Unwatched);
var res = await sdk.Library.GetLibraryItemsAsync(
sectionId: 451092,
tag: Tag.Unwatched);
// handle response
```
@@ -285,12 +273,9 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Library.RefreshLibraryAsync(SectionId: 934.16D);
var res = await sdk.Library.RefreshLibraryAsync(sectionId: 934.16D);
// handle response
```
@@ -307,6 +292,57 @@ var res = await sdk.Library.RefreshLibraryAsync(SectionId: 934.16D);
**[RefreshLibraryResponse](../../Models/Requests/RefreshLibraryResponse.md)**
## SearchLibrary
Search for content within a specific section of the library.
### Types
Each type in the library comes with a set of filters and sorts, aiding in building dynamic media controls:
- **Type Object Attributes**:
- `type`: Metadata type (if standard Plex type).
- `title`: Title for this content type (e.g., "Movies").
- **Filter Objects**:
- Subset of the media query language.
- Attributes include `filter` (name), `filterType` (data type), `key` (endpoint for value range), and `title`.
- **Sort Objects**:
- Description of sort fields.
- Attributes include `defaultDirection` (asc/desc), `descKey` and `key` (sort parameters), and `title`.
> **Note**: Filters and sorts are optional; without them, no filtering controls are rendered.
### Example Usage
```csharp
using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Library.SearchLibraryAsync(
sectionId: 933505,
type: Type.Four);
// handle response
```
### Parameters
| Parameter | Type | Required | Description |
| ------------------------------------- | ------------------------------------- | ------------------------------------- | ------------------------------------- |
| `SectionId` | *long* | :heavy_check_mark: | the Id of the library to query |
| `Type` | [Type](../../Models/Requests/Type.md) | :heavy_check_mark: | Plex content type to search for |
### Response
**[SearchLibraryResponse](../../Models/Requests/SearchLibraryResponse.md)**
## GetMetadata
This endpoint will return the metadata of a library item specified with the ratingKey.
@@ -319,12 +355,9 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Library.GetMetadataAsync(RatingKey: 8382.31D);
var res = await sdk.Library.GetMetadataAsync(ratingKey: 8382.31D);
// handle response
```
@@ -353,12 +386,9 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Library.GetMetadataChildrenAsync(RatingKey: 1539.14D);
var res = await sdk.Library.GetMetadataChildrenAsync(ratingKey: 1539.14D);
// handle response
```
@@ -386,10 +416,7 @@ This endpoint will return the on deck content.
using PlexAPI;
using PlexAPI.Models.Components;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Library.GetOnDeckAsync();

View File

@@ -24,12 +24,12 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Log.LogLineAsync(Level: Level.Three, Message: "Test log message", Source: "Postman");
var res = await sdk.Log.LogLineAsync(
level: Level.Three,
message: "Test log message",
source: "Postman");
// handle response
```
@@ -79,10 +79,7 @@ Ensure each parameter is properly URL-encoded to avoid interpretation issues.
using PlexAPI;
using PlexAPI.Models.Components;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
string req = "level=4&message=Test%20message%201&source=postman
level=3&message=Test%20message%202&source=postman
@@ -116,10 +113,7 @@ This endpoint will enable all Plex Media Serverlogs to be sent to the Papertrail
using PlexAPI;
using PlexAPI.Models.Components;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Log.EnablePaperTrailAsync();

View File

@@ -23,12 +23,9 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Media.MarkPlayedAsync(Key: 59398D);
var res = await sdk.Media.MarkPlayedAsync(key: 59398D);
// handle response
```
@@ -56,12 +53,9 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Media.MarkUnplayedAsync(Key: 59398D);
var res = await sdk.Media.MarkUnplayedAsync(key: 59398D);
// handle response
```
@@ -90,12 +84,12 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Media.UpdatePlayProgressAsync(Key: "string", Time: 6900.91D, State: "string");
var res = await sdk.Media.UpdatePlayProgressAsync(
key: "<value>",
time: 6900.91D,
state: "<value>");
// handle response
```

View File

@@ -35,14 +35,11 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
CreatePlaylistRequest req = new CreatePlaylistRequest() {
Title = "string",
Type = Type.Photo,
Title = "<value>",
Type = QueryParamType.Photo,
Smart = Smart.One,
Uri = "https://inborn-brochure.biz",
};
@@ -75,12 +72,11 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Playlists.GetPlaylistsAsync(PlaylistType: PlaylistType.Audio, Smart: QueryParamSmart.Zero);
var res = await sdk.Playlists.GetPlaylistsAsync(
playlistType: PlaylistType.Audio,
smart: QueryParamSmart.Zero);
// handle response
```
@@ -111,12 +107,9 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Playlists.GetPlaylistAsync(PlaylistID: 4109.48D);
var res = await sdk.Playlists.GetPlaylistAsync(playlistID: 4109.48D);
// handle response
```
@@ -145,12 +138,9 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Playlists.DeletePlaylistAsync(PlaylistID: 216.22D);
var res = await sdk.Playlists.DeletePlaylistAsync(playlistID: 216.22D);
// handle response
```
@@ -179,12 +169,12 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Playlists.UpdatePlaylistAsync(PlaylistID: 3915D, Title: "string", Summary: "string");
var res = await sdk.Playlists.UpdatePlaylistAsync(
playlistID: 3915D,
title: "<value>",
summary: "<value>");
// handle response
```
@@ -218,12 +208,11 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Playlists.GetPlaylistContentsAsync(PlaylistID: 5004.46D, Type: 9403.59D);
var res = await sdk.Playlists.GetPlaylistContentsAsync(
playlistID: 5004.46D,
type: 9403.59D);
// handle response
```
@@ -253,12 +242,9 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Playlists.ClearPlaylistContentsAsync(PlaylistID: 1893.18D);
var res = await sdk.Playlists.ClearPlaylistContentsAsync(playlistID: 1893.18D);
// handle response
```
@@ -288,12 +274,12 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Playlists.AddPlaylistContentsAsync(PlaylistID: 8502.01D, Uri: "server://12345/com.plexapp.plugins.library/library/metadata/1", PlayQueueID: 123D);
var res = await sdk.Playlists.AddPlaylistContentsAsync(
playlistID: 8502.01D,
uri: "server://12345/com.plexapp.plugins.library/library/metadata/1",
playQueueID: 123D);
// handle response
```
@@ -324,12 +310,11 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Playlists.UploadPlaylistAsync(Path: "/home/barkley/playlist.m3u", Force: Force.Zero);
var res = await sdk.Playlists.UploadPlaylistAsync(
path: "/home/barkley/playlist.m3u",
force: Force.Zero);
// handle response
```

80
docs/sdks/plex/README.md Normal file
View File

@@ -0,0 +1,80 @@
# Plex
(*Plex*)
## Overview
API Calls that perform operations directly against https://Plex.tv
### Available Operations
* [GetPin](#getpin) - Get a Pin
* [GetToken](#gettoken) - Get Access Token
## GetPin
Retrieve a Pin from Plex.tv for authentication flows
### Example Usage
```csharp
using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK();
var res = await sdk.Plex.GetPinAsync(
xPlexClientIdentifier: "<value>",
strong: false);
// handle response
```
### Parameters
| Parameter | Type | Required | Description |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `XPlexClientIdentifier` | *string* | :heavy_check_mark: | The unique identifier for the client application<br/>This is used to track the client application and its usage<br/>(UUID, serial number, or other number unique per device)<br/> |
| `Strong` | *bool* | :heavy_minus_sign: | Determines the kind of code returned by the API call<br/>Strong codes are used for Pin authentication flows<br/>Non-Strong codes are used for `Plex.tv/link`<br/> |
| `serverURL` | *string* | :heavy_minus_sign: | An optional server URL to use. |
### Response
**[GetPinResponse](../../Models/Requests/GetPinResponse.md)**
## GetToken
Retrieve an Access Token from Plex.tv after the Pin has already been authenticated
### Example Usage
```csharp
using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK();
var res = await sdk.Plex.GetTokenAsync(
pinID: "<value>",
xPlexClientIdentifier: "<value>");
// handle response
```
### Parameters
| Parameter | Type | Required | Description |
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `PinID` | *string* | :heavy_check_mark: | The PinID to retrieve an access token for |
| `XPlexClientIdentifier` | *string* | :heavy_check_mark: | The unique identifier for the client application<br/>This is used to track the client application and its usage<br/>(UUID, serial number, or other number unique per device)<br/> |
| `serverURL` | *string* | :heavy_minus_sign: | An optional server URL to use. |
### Response
**[GetTokenResponse](../../Models/Requests/GetTokenResponse.md)**

View File

@@ -35,12 +35,12 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Search.PerformSearchAsync(Query: "dylan", SectionId: 1516.53D, Limit: 5D);
var res = await sdk.Search.PerformSearchAsync(
query: "dylan",
sectionId: 1516.53D,
limit: 5D);
// handle response
```
@@ -74,12 +74,12 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Search.PerformVoiceSearchAsync(Query: "dead+poop", SectionId: 4094.8D, Limit: 5D);
var res = await sdk.Search.PerformVoiceSearchAsync(
query: "dead+poop",
sectionId: 4094.8D,
limit: 5D);
// handle response
```
@@ -109,12 +109,9 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Search.GetSearchResultsAsync(Query: "110");
var res = await sdk.Search.GetSearchResultsAsync(query: "110");
// handle response
```

View File

@@ -27,10 +27,7 @@ Server Capabilities
using PlexAPI;
using PlexAPI.Models.Components;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Server.GetServerCapabilitiesAsync();
@@ -53,10 +50,7 @@ Get Server Preferences
using PlexAPI;
using PlexAPI.Models.Components;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Server.GetServerPreferencesAsync();
@@ -79,10 +73,7 @@ Get Available Clients
using PlexAPI;
using PlexAPI.Models.Components;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Server.GetAvailableClientsAsync();
@@ -105,10 +96,7 @@ Get Devices
using PlexAPI;
using PlexAPI.Models.Components;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Server.GetDevicesAsync();
@@ -131,10 +119,7 @@ Get Server Identity
using PlexAPI;
using PlexAPI.Models.Components;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Server.GetServerIdentityAsync();
@@ -157,10 +142,7 @@ Returns MyPlex Account Information
using PlexAPI;
using PlexAPI.Models.Components;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Server.GetMyPlexAccountAsync();
@@ -185,10 +167,7 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
GetResizedPhotoRequest req = new GetResizedPhotoRequest() {
Width = 110D,
@@ -227,10 +206,7 @@ Get Server List
using PlexAPI;
using PlexAPI.Models.Components;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Server.GetServerListAsync();

View File

@@ -23,10 +23,7 @@ This will retrieve the "Now Playing" Information of the PMS.
using PlexAPI;
using PlexAPI.Models.Components;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Sessions.GetSessionsAsync();
@@ -49,10 +46,7 @@ This will Retrieve a listing of all history views.
using PlexAPI;
using PlexAPI.Models.Components;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Sessions.GetSessionHistoryAsync();
@@ -75,10 +69,7 @@ Get Transcode Sessions
using PlexAPI;
using PlexAPI.Models.Components;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Sessions.GetTranscodeSessionsAsync();
@@ -102,12 +93,9 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Sessions.StopTranscodeSessionAsync(SessionKey: "zz7llzqlx8w9vnrsbnwhbmep");
var res = await sdk.Sessions.StopTranscodeSessionAsync(sessionKey: "zz7llzqlx8w9vnrsbnwhbmep");
// handle response
```

View File

@@ -0,0 +1,41 @@
# Statistics
(*Statistics*)
## Overview
API Calls that perform operations with Plex Media Server Statistics
### Available Operations
* [GetStatistics](#getstatistics) - Get Media Statistics
## GetStatistics
This will return the media statistics for the server
### Example Usage
```csharp
using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Statistics.GetStatisticsAsync(timespan: 411769);
// handle response
```
### Parameters
| Parameter | Type | Required | Description |
| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| `Timespan` | *long* | :heavy_minus_sign: | The timespan to retrieve statistics for<br/>the exact meaning of this parameter is not known<br/> |
### Response
**[GetStatisticsResponse](../../Models/Requests/GetStatisticsResponse.md)**

View File

@@ -23,10 +23,7 @@ Querying status of updates
using PlexAPI;
using PlexAPI.Models.Components;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Updater.GetUpdateStatusAsync();
@@ -50,12 +47,9 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Updater.CheckForUpdatesAsync(Download: Download.One);
var res = await sdk.Updater.CheckForUpdatesAsync(download: Download.One);
// handle response
```
@@ -84,12 +78,11 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
var res = await sdk.Updater.ApplyUpdatesAsync(Tonight: Tonight.One, Skip: Skip.Zero);
var res = await sdk.Updater.ApplyUpdatesAsync(
tonight: Tonight.One,
skip: Skip.Zero);
// handle response
```

View File

@@ -8,49 +8,8 @@ API Calls that perform operations with Plex Media Server Videos
### Available Operations
* [StartUniversalTranscode](#startuniversaltranscode) - Start Universal Transcode
* [GetTimeline](#gettimeline) - Get the timeline for a media item
## StartUniversalTranscode
Begin a Universal Transcode Session
### Example Usage
```csharp
using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
StartUniversalTranscodeRequest req = new StartUniversalTranscodeRequest() {
HasMDE = 8924.99D,
Path = "/etc/mail",
MediaIndex = 9962.95D,
PartIndex = 1232.82D,
Protocol = "string",
};
var res = await sdk.Video.StartUniversalTranscodeAsync(req);
// handle response
```
### Parameters
| Parameter | Type | Required | Description |
| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| `request` | [StartUniversalTranscodeRequest](../../Models/Requests/StartUniversalTranscodeRequest.md) | :heavy_check_mark: | The request object to use for the request. |
### Response
**[StartUniversalTranscodeResponse](../../Models/Requests/StartUniversalTranscodeResponse.md)**
* [StartUniversalTranscode](#startuniversaltranscode) - Start Universal Transcode
## GetTimeline
@@ -63,10 +22,7 @@ using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(
security: new Models.Components.Security() {
AccessToken = "<YOUR_API_KEY_HERE>",
});
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
GetTimelineRequest req = new GetTimelineRequest() {
RatingKey = 716.56D,
@@ -75,7 +31,7 @@ GetTimelineRequest req = new GetTimelineRequest() {
HasMDE = 7574.33D,
Time = 3327.51D,
Duration = 7585.39D,
Context = "string",
Context = "<value>",
PlayQueueItemID = 1406.21D,
PlayBackTime = 2699.34D,
Row = 3536.42D,
@@ -97,3 +53,41 @@ var res = await sdk.Video.GetTimelineAsync(req);
**[GetTimelineResponse](../../Models/Requests/GetTimelineResponse.md)**
## StartUniversalTranscode
Begin a Universal Transcode Session
### Example Usage
```csharp
using PlexAPI;
using PlexAPI.Models.Components;
using PlexAPI.Models.Requests;
var sdk = new PlexAPISDK(AccessToken: "<YOUR_API_KEY_HERE>");
StartUniversalTranscodeRequest req = new StartUniversalTranscodeRequest() {
HasMDE = 8924.99D,
Path = "/etc/mail",
MediaIndex = 9962.95D,
PartIndex = 1232.82D,
Protocol = "<value>",
};
var res = await sdk.Video.StartUniversalTranscodeAsync(req);
// handle response
```
### Parameters
| Parameter | Type | Required | Description |
| ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| `request` | [StartUniversalTranscodeRequest](../../Models/Requests/StartUniversalTranscodeRequest.md) | :heavy_check_mark: | The request object to use for the request. |
### Response
**[StartUniversalTranscodeResponse](../../Models/Requests/StartUniversalTranscodeResponse.md)**