mirror of
https://github.com/LukeHagar/plex-sdk-docs.git
synced 2025-12-07 12:37:44 +00:00
Initial Commit
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
## Get Available Clients
|
||||
|
||||
Get Available Clients
|
||||
@@ -0,0 +1,2 @@
|
||||
{/* Autogenerated DO NOT EDIT */}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
{/* Autogenerated DO NOT EDIT */}
|
||||
import GetAvailableClientsResponse from "/content/types/models/operations/get_available_clients_response/python.mdx"
|
||||
import Collapsible from "/src/components/Collapsible";
|
||||
import Labels from "/src/lib/labels";
|
||||
|
||||
##### *{`operations.GetAvailableClientsResponse`}*
|
||||
<Collapsible defaultOpen openLabel={Labels.showProperties} closeLabel={Labels.hideProperties}>
|
||||
<GetAvailableClientsResponse/>
|
||||
</Collapsible>
|
||||
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
|
||||
<CH.Code>
|
||||
```python GetAvailableClients.py
|
||||
import sdk
|
||||
|
||||
s = sdk.SDK(
|
||||
access_token="<YOUR_API_KEY_HERE>",
|
||||
)
|
||||
|
||||
|
||||
res = s.server.get_available_clients()
|
||||
|
||||
if res.classes is not None:
|
||||
# handle response
|
||||
pass
|
||||
```
|
||||
---
|
||||
|
||||
```json Example Response
|
||||
[
|
||||
{
|
||||
"MediaContainer": {
|
||||
"size": 1,
|
||||
"Server": [
|
||||
{
|
||||
"name": "iPad",
|
||||
"host": "10.10.10.102",
|
||||
"address": "10.10.10.102",
|
||||
"port": 32500,
|
||||
"machineIdentifier": "A2E901F8-E016-43A7-ADFB-EF8CA8A4AC05",
|
||||
"version": "8.17",
|
||||
"protocol": "plex",
|
||||
"product": "Plex for iOS",
|
||||
"deviceClass": "tablet",
|
||||
"protocolVersion": 2,
|
||||
"protocolCapabilities": "playback,playqueues,timeline,provider-playback"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
```
|
||||
</CH.Code>
|
||||
@@ -0,0 +1,12 @@
|
||||
import CurlHeader from './_header.mdx';
|
||||
import SDKHeader from './_header.mdx';
|
||||
import OperationHeader from '/src/components/OperationHeader';
|
||||
|
||||
###### *Server*
|
||||
|
||||
<OperationHeader
|
||||
sdkHeader={<SDKHeader />}
|
||||
curlHeader={<CurlHeader />}
|
||||
/>
|
||||
|
||||
{/* render operation */}
|
||||
@@ -0,0 +1,3 @@
|
||||
## Get Devices
|
||||
|
||||
Get Devices
|
||||
@@ -0,0 +1,2 @@
|
||||
{/* Autogenerated DO NOT EDIT */}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
{/* Autogenerated DO NOT EDIT */}
|
||||
import GetDevicesResponse from "/content/types/models/operations/get_devices_response/python.mdx"
|
||||
import Collapsible from "/src/components/Collapsible";
|
||||
import Labels from "/src/lib/labels";
|
||||
|
||||
##### *{`operations.GetDevicesResponse`}*
|
||||
<Collapsible defaultOpen openLabel={Labels.showProperties} closeLabel={Labels.hideProperties}>
|
||||
<GetDevicesResponse/>
|
||||
</Collapsible>
|
||||
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
|
||||
<CH.Code>
|
||||
```python GetDevices.py
|
||||
import sdk
|
||||
|
||||
s = sdk.SDK(
|
||||
access_token="<YOUR_API_KEY_HERE>",
|
||||
)
|
||||
|
||||
|
||||
res = s.server.get_devices()
|
||||
|
||||
if res.object is not None:
|
||||
# handle response
|
||||
pass
|
||||
```
|
||||
---
|
||||
|
||||
```json Example Response
|
||||
{
|
||||
"MediaContainer": {
|
||||
"size": 151,
|
||||
"identifier": "com.plexapp.system.devices",
|
||||
"Device": [
|
||||
{
|
||||
"id": 1,
|
||||
"name": "iPhone",
|
||||
"platform": "iOS",
|
||||
"clientIdentifier": "string",
|
||||
"createdAt": 1654131230
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
</CH.Code>
|
||||
@@ -0,0 +1,12 @@
|
||||
import CurlHeader from './_header.mdx';
|
||||
import SDKHeader from './_header.mdx';
|
||||
import OperationHeader from '/src/components/OperationHeader';
|
||||
|
||||
###### *Server*
|
||||
|
||||
<OperationHeader
|
||||
sdkHeader={<SDKHeader />}
|
||||
curlHeader={<CurlHeader />}
|
||||
/>
|
||||
|
||||
{/* render operation */}
|
||||
@@ -0,0 +1,3 @@
|
||||
## Get My Plex Account
|
||||
|
||||
Returns MyPlex Account Information
|
||||
@@ -0,0 +1,2 @@
|
||||
{/* Autogenerated DO NOT EDIT */}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
{/* Autogenerated DO NOT EDIT */}
|
||||
import GetMyPlexAccountResponse from "/content/types/models/operations/get_my_plex_account_response/python.mdx"
|
||||
import Collapsible from "/src/components/Collapsible";
|
||||
import Labels from "/src/lib/labels";
|
||||
|
||||
##### *{`operations.GetMyPlexAccountResponse`}*
|
||||
<Collapsible defaultOpen openLabel={Labels.showProperties} closeLabel={Labels.hideProperties}>
|
||||
<GetMyPlexAccountResponse/>
|
||||
</Collapsible>
|
||||
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
|
||||
<CH.Code>
|
||||
```python GetMyPlexAccount.py
|
||||
import sdk
|
||||
|
||||
s = sdk.SDK(
|
||||
access_token="<YOUR_API_KEY_HERE>",
|
||||
)
|
||||
|
||||
|
||||
res = s.server.get_my_plex_account()
|
||||
|
||||
if res.object is not None:
|
||||
# handle response
|
||||
pass
|
||||
```
|
||||
---
|
||||
|
||||
```json Example Response
|
||||
{
|
||||
"MyPlex": {
|
||||
"authToken": "Z5v-PrNASDFpsaCi3CPK7",
|
||||
"username": "example.email@mail.com",
|
||||
"mappingState": "mapped",
|
||||
"mappingError": "string",
|
||||
"signInState": "ok",
|
||||
"publicAddress": "140.20.68.140",
|
||||
"publicPort": 32400,
|
||||
"privateAddress": "10.10.10.47",
|
||||
"privatePort": 32400,
|
||||
"subscriptionFeatures": "federated-auth,hardware_transcoding,home,hwtranscode,item_clusters,kevin-bacon,livetv,loudness,lyrics,music-analysis,music_videos,pass,photo_autotags,photos-v5,photosV6-edit,photosV6-tv-albums,premium_music_metadata,radio,server-manager,session_bandwidth_restrictions,session_kick,shared-radio,sync,trailers,tuner-sharing,type-first,unsupportedtuners,webhooks",
|
||||
"subscriptionActive": false,
|
||||
"subscriptionState": "Active"
|
||||
}
|
||||
}
|
||||
```
|
||||
</CH.Code>
|
||||
@@ -0,0 +1,12 @@
|
||||
import CurlHeader from './_header.mdx';
|
||||
import SDKHeader from './_header.mdx';
|
||||
import OperationHeader from '/src/components/OperationHeader';
|
||||
|
||||
###### *Server*
|
||||
|
||||
<OperationHeader
|
||||
sdkHeader={<SDKHeader />}
|
||||
curlHeader={<CurlHeader />}
|
||||
/>
|
||||
|
||||
{/* render operation */}
|
||||
@@ -0,0 +1,3 @@
|
||||
## Get Resized Photo
|
||||
|
||||
Plex's Photo transcoder is used throughout the service to serve images at specified sizes.
|
||||
@@ -0,0 +1,12 @@
|
||||
{/* Autogenerated DO NOT EDIT */}
|
||||
import GetResizedPhotoRequest from "/content/types/models/operations/get_resized_photo_request/python.mdx"
|
||||
import Collapsible from "/src/components/Collapsible";
|
||||
import Labels from "/src/lib/labels";
|
||||
|
||||
##### `request` *{`operations.GetResizedPhotoRequest`}*
|
||||
The request object to use for the request.
|
||||
<Collapsible openLabel={Labels.showProperties} closeLabel={Labels.hideProperties}>
|
||||
<GetResizedPhotoRequest/>
|
||||
</Collapsible>
|
||||
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
{/* Autogenerated DO NOT EDIT */}
|
||||
import GetResizedPhotoResponse from "/content/types/models/operations/get_resized_photo_response/python.mdx"
|
||||
import Collapsible from "/src/components/Collapsible";
|
||||
import Labels from "/src/lib/labels";
|
||||
|
||||
##### *{`operations.GetResizedPhotoResponse`}*
|
||||
<Collapsible defaultOpen openLabel={Labels.showProperties} closeLabel={Labels.hideProperties}>
|
||||
<GetResizedPhotoResponse/>
|
||||
</Collapsible>
|
||||
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
|
||||
<CH.Code>
|
||||
```python GetResizedPhoto.py
|
||||
import sdk
|
||||
from sdk.models import operations
|
||||
|
||||
s = sdk.SDK(
|
||||
access_token="<YOUR_API_KEY_HERE>",
|
||||
)
|
||||
|
||||
req = operations.GetResizedPhotoRequest(
|
||||
width=110,
|
||||
height=165,
|
||||
opacity=548814,
|
||||
blur=20,
|
||||
min_size=operations.MinSize.ONE,
|
||||
upscale=operations.Upscale.ONE,
|
||||
url='/library/metadata/49564/thumb/1654258204',
|
||||
)
|
||||
|
||||
res = s.server.get_resized_photo(req)
|
||||
|
||||
if res.status_code == 200:
|
||||
# handle response
|
||||
pass
|
||||
```
|
||||
---
|
||||
|
||||
```json Example Response
|
||||
{
|
||||
"errors": [
|
||||
{
|
||||
"code": 1001,
|
||||
"message": "User could not be authenticated",
|
||||
"status": 401
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
</CH.Code>
|
||||
@@ -0,0 +1,12 @@
|
||||
import CurlHeader from './_header.mdx';
|
||||
import SDKHeader from './_header.mdx';
|
||||
import OperationHeader from '/src/components/OperationHeader';
|
||||
|
||||
###### *Server*
|
||||
|
||||
<OperationHeader
|
||||
sdkHeader={<SDKHeader />}
|
||||
curlHeader={<CurlHeader />}
|
||||
/>
|
||||
|
||||
{/* render operation */}
|
||||
@@ -0,0 +1,3 @@
|
||||
## Get Server Capabilities
|
||||
|
||||
Server Capabilities
|
||||
@@ -0,0 +1,2 @@
|
||||
{/* Autogenerated DO NOT EDIT */}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
{/* Autogenerated DO NOT EDIT */}
|
||||
import GetServerCapabilitiesResponse from "/content/types/models/operations/get_server_capabilities_response/python.mdx"
|
||||
import Collapsible from "/src/components/Collapsible";
|
||||
import Labels from "/src/lib/labels";
|
||||
|
||||
##### *{`operations.GetServerCapabilitiesResponse`}*
|
||||
<Collapsible defaultOpen openLabel={Labels.showProperties} closeLabel={Labels.hideProperties}>
|
||||
<GetServerCapabilitiesResponse/>
|
||||
</Collapsible>
|
||||
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
|
||||
<CH.Code>
|
||||
```python GetServerCapabilities.py
|
||||
import sdk
|
||||
|
||||
s = sdk.SDK(
|
||||
access_token="<YOUR_API_KEY_HERE>",
|
||||
)
|
||||
|
||||
|
||||
res = s.server.get_server_capabilities()
|
||||
|
||||
if res.object is not None:
|
||||
# handle response
|
||||
pass
|
||||
```
|
||||
---
|
||||
|
||||
```json Example Response
|
||||
{
|
||||
"MediaContainer": {
|
||||
"size": 5488.14,
|
||||
"allowCameraUpload": false,
|
||||
"allowChannelAccess": false,
|
||||
"allowMediaDeletion": false,
|
||||
"allowSharing": false,
|
||||
"allowSync": false,
|
||||
"allowTuners": false,
|
||||
"backgroundProcessing": false,
|
||||
"certificate": false,
|
||||
"companionProxy": false,
|
||||
"countryCode": "string",
|
||||
"diagnostics": "string",
|
||||
"eventStream": false,
|
||||
"friendlyName": "string",
|
||||
"hubSearch": false,
|
||||
"itemClusters": false,
|
||||
"livetv": 5928.45,
|
||||
"machineIdentifier": "string",
|
||||
"mediaProviders": false,
|
||||
"multiuser": false,
|
||||
"musicAnalysis": 7151.9,
|
||||
"myPlex": false,
|
||||
"myPlexMappingState": "string",
|
||||
"myPlexSigninState": "string",
|
||||
"myPlexSubscription": false,
|
||||
"myPlexUsername": "string",
|
||||
"offlineTranscode": 8442.66,
|
||||
"ownerFeatures": "string",
|
||||
"photoAutoTag": false,
|
||||
"platform": "string",
|
||||
"platformVersion": "string",
|
||||
"pluginHost": false,
|
||||
"pushNotifications": false,
|
||||
"readOnlyLibraries": false,
|
||||
"streamingBrainABRVersion": 6027.63,
|
||||
"streamingBrainVersion": 8579.46,
|
||||
"sync": false,
|
||||
"transcoderActiveVideoSessions": 5448.83,
|
||||
"transcoderAudio": false,
|
||||
"transcoderLyrics": false,
|
||||
"transcoderPhoto": false,
|
||||
"transcoderSubtitles": false,
|
||||
"transcoderVideo": false,
|
||||
"transcoderVideoBitrates": "string",
|
||||
"transcoderVideoQualities": "string",
|
||||
"transcoderVideoResolutions": "string",
|
||||
"updatedAt": 8472.52,
|
||||
"updater": false,
|
||||
"version": "string",
|
||||
"voiceSearch": false,
|
||||
"Directory": [
|
||||
{
|
||||
"count": 4236.55,
|
||||
"key": "string",
|
||||
"title": "string"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
</CH.Code>
|
||||
@@ -0,0 +1,12 @@
|
||||
import CurlHeader from './_header.mdx';
|
||||
import SDKHeader from './_header.mdx';
|
||||
import OperationHeader from '/src/components/OperationHeader';
|
||||
|
||||
###### *Server*
|
||||
|
||||
<OperationHeader
|
||||
sdkHeader={<SDKHeader />}
|
||||
curlHeader={<CurlHeader />}
|
||||
/>
|
||||
|
||||
{/* render operation */}
|
||||
@@ -0,0 +1,3 @@
|
||||
## Get Server Identity
|
||||
|
||||
Get Server Identity
|
||||
@@ -0,0 +1,2 @@
|
||||
{/* Autogenerated DO NOT EDIT */}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
{/* Autogenerated DO NOT EDIT */}
|
||||
import GetServerIdentityResponse from "/content/types/models/operations/get_server_identity_response/python.mdx"
|
||||
import Collapsible from "/src/components/Collapsible";
|
||||
import Labels from "/src/lib/labels";
|
||||
|
||||
##### *{`operations.GetServerIdentityResponse`}*
|
||||
<Collapsible defaultOpen openLabel={Labels.showProperties} closeLabel={Labels.hideProperties}>
|
||||
<GetServerIdentityResponse/>
|
||||
</Collapsible>
|
||||
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
|
||||
<CH.Code>
|
||||
```python GetServerIdentity.py
|
||||
import sdk
|
||||
|
||||
s = sdk.SDK(
|
||||
access_token="<YOUR_API_KEY_HERE>",
|
||||
)
|
||||
|
||||
|
||||
res = s.server.get_server_identity()
|
||||
|
||||
if res.object is not None:
|
||||
# handle response
|
||||
pass
|
||||
```
|
||||
---
|
||||
|
||||
```json Example Response
|
||||
{
|
||||
"MediaContainer": {
|
||||
"size": 0,
|
||||
"claimed": false,
|
||||
"machineIdentifier": "96f2fe7a78c9dc1f16a16bedbe90f98149be16b4",
|
||||
"version": "1.31.3.6868-28fc46b27"
|
||||
}
|
||||
}
|
||||
```
|
||||
</CH.Code>
|
||||
@@ -0,0 +1,12 @@
|
||||
import CurlHeader from './_header.mdx';
|
||||
import SDKHeader from './_header.mdx';
|
||||
import OperationHeader from '/src/components/OperationHeader';
|
||||
|
||||
###### *Server*
|
||||
|
||||
<OperationHeader
|
||||
sdkHeader={<SDKHeader />}
|
||||
curlHeader={<CurlHeader />}
|
||||
/>
|
||||
|
||||
{/* render operation */}
|
||||
@@ -0,0 +1,3 @@
|
||||
## Get Server List
|
||||
|
||||
Get Server List
|
||||
@@ -0,0 +1,2 @@
|
||||
{/* Autogenerated DO NOT EDIT */}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
{/* Autogenerated DO NOT EDIT */}
|
||||
import GetServerListResponse from "/content/types/models/operations/get_server_list_response/python.mdx"
|
||||
import Collapsible from "/src/components/Collapsible";
|
||||
import Labels from "/src/lib/labels";
|
||||
|
||||
##### *{`operations.GetServerListResponse`}*
|
||||
<Collapsible defaultOpen openLabel={Labels.showProperties} closeLabel={Labels.hideProperties}>
|
||||
<GetServerListResponse/>
|
||||
</Collapsible>
|
||||
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
|
||||
<CH.Code>
|
||||
```python GetServerList.py
|
||||
import sdk
|
||||
|
||||
s = sdk.SDK(
|
||||
access_token="<YOUR_API_KEY_HERE>",
|
||||
)
|
||||
|
||||
|
||||
res = s.server.get_server_list()
|
||||
|
||||
if res.object is not None:
|
||||
# handle response
|
||||
pass
|
||||
```
|
||||
---
|
||||
|
||||
```json Example Response
|
||||
{
|
||||
"MediaContainer": {
|
||||
"size": 1,
|
||||
"Server": [
|
||||
{
|
||||
"name": "Hera",
|
||||
"host": "10.10.10.47",
|
||||
"address": "10.10.10.47",
|
||||
"port": 32400,
|
||||
"machineIdentifier": "96f2fe7a78c9dc1f16a16bedbe90f98149be16b4",
|
||||
"version": "1.31.3.6868-28fc46b27"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
</CH.Code>
|
||||
@@ -0,0 +1,12 @@
|
||||
import CurlHeader from './_header.mdx';
|
||||
import SDKHeader from './_header.mdx';
|
||||
import OperationHeader from '/src/components/OperationHeader';
|
||||
|
||||
###### *Server*
|
||||
|
||||
<OperationHeader
|
||||
sdkHeader={<SDKHeader />}
|
||||
curlHeader={<CurlHeader />}
|
||||
/>
|
||||
|
||||
{/* render operation */}
|
||||
@@ -0,0 +1,3 @@
|
||||
## Get Server Preferences
|
||||
|
||||
Get Server Preferences
|
||||
@@ -0,0 +1,2 @@
|
||||
{/* Autogenerated DO NOT EDIT */}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
{/* Autogenerated DO NOT EDIT */}
|
||||
import GetServerPreferencesResponse from "/content/types/models/operations/get_server_preferences_response/python.mdx"
|
||||
import Collapsible from "/src/components/Collapsible";
|
||||
import Labels from "/src/lib/labels";
|
||||
|
||||
##### *{`operations.GetServerPreferencesResponse`}*
|
||||
<Collapsible defaultOpen openLabel={Labels.showProperties} closeLabel={Labels.hideProperties}>
|
||||
<GetServerPreferencesResponse/>
|
||||
</Collapsible>
|
||||
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
|
||||
<CH.Code>
|
||||
```python GetServerPreferences.py
|
||||
import sdk
|
||||
|
||||
s = sdk.SDK(
|
||||
access_token="<YOUR_API_KEY_HERE>",
|
||||
)
|
||||
|
||||
|
||||
res = s.server.get_server_preferences()
|
||||
|
||||
if res.status_code == 200:
|
||||
# handle response
|
||||
pass
|
||||
```
|
||||
---
|
||||
|
||||
```json Example Response
|
||||
{
|
||||
"errors": [
|
||||
{
|
||||
"code": 1001,
|
||||
"message": "User could not be authenticated",
|
||||
"status": 401
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
</CH.Code>
|
||||
@@ -0,0 +1,12 @@
|
||||
import CurlHeader from './_header.mdx';
|
||||
import SDKHeader from './_header.mdx';
|
||||
import OperationHeader from '/src/components/OperationHeader';
|
||||
|
||||
###### *Server*
|
||||
|
||||
<OperationHeader
|
||||
sdkHeader={<SDKHeader />}
|
||||
curlHeader={<CurlHeader />}
|
||||
/>
|
||||
|
||||
{/* render operation */}
|
||||
@@ -0,0 +1,47 @@
|
||||
import GetServerCapabilities from "./get_server_capabilities/get_server_capabilities.mdx";
|
||||
import GetServerPreferences from "./get_server_preferences/get_server_preferences.mdx";
|
||||
import GetAvailableClients from "./get_available_clients/get_available_clients.mdx";
|
||||
import GetDevices from "./get_devices/get_devices.mdx";
|
||||
import GetServerIdentity from "./get_server_identity/get_server_identity.mdx";
|
||||
import GetMyPlexAccount from "./get_my_plex_account/get_my_plex_account.mdx";
|
||||
import GetResizedPhoto from "./get_resized_photo/get_resized_photo.mdx";
|
||||
import GetServerList from "./get_server_list/get_server_list.mdx";
|
||||
|
||||
## Server
|
||||
Operations against the Plex Media Server System.
|
||||
|
||||
|
||||
### Available Operations
|
||||
|
||||
* [Get Server Capabilities](/python/server/get_server_capabilities) - Server Capabilities
|
||||
* [Get Server Preferences](/python/server/get_server_preferences) - Get Server Preferences
|
||||
* [Get Available Clients](/python/server/get_available_clients) - Get Available Clients
|
||||
* [Get Devices](/python/server/get_devices) - Get Devices
|
||||
* [Get Server Identity](/python/server/get_server_identity) - Get Server Identity
|
||||
* [Get My Plex Account](/python/server/get_my_plex_account) - Get MyPlex Account
|
||||
* [Get Resized Photo](/python/server/get_resized_photo) - Get a Resized Photo
|
||||
* [Get Server List](/python/server/get_server_list) - Get Server List
|
||||
|
||||
---
|
||||
<GetServerCapabilities />
|
||||
|
||||
---
|
||||
<GetServerPreferences />
|
||||
|
||||
---
|
||||
<GetAvailableClients />
|
||||
|
||||
---
|
||||
<GetDevices />
|
||||
|
||||
---
|
||||
<GetServerIdentity />
|
||||
|
||||
---
|
||||
<GetMyPlexAccount />
|
||||
|
||||
---
|
||||
<GetResizedPhoto />
|
||||
|
||||
---
|
||||
<GetServerList />
|
||||
Reference in New Issue
Block a user