mirror of
https://github.com/Vateron-Media/XC_VM.git
synced 2026-10-05 20:02:41 +02:00
103 lines
3.5 KiB
YAML
103 lines
3.5 KiB
YAML
openapi: 3.0.3
|
|||
|
|
info:
|
||
|
|
title: XC_VM Playlist API
|
||
|
|
version: "1.0.0"
|
||
|
|
description: |
|
||
|
|
Authentication and playlist generation for XC_VM. Clients authenticate with a
|
||
|
|
username/password pair **or** a token, after which a personalized playlist is generated.
|
||
|
|
|
||
|
|
- **Controller:** `src/Public/Controllers/Api/PlaylistApiController.php`
|
||
|
|
- **Base URL:** `/playlist`
|
||
|
|
- **Authentication:** `username` + `password`, or `token`.
|
||
|
|
|
||
|
|
## Error codes
|
||
|
|
| Code | Description |
|
||
|
|
| --- | --- |
|
||
|
|
| `NO_CREDENTIALS` | Missing authentication data |
|
||
|
|
| `INVALID_CREDENTIALS` | Invalid username, password or token |
|
||
|
|
| `BLOCKED_USER_AGENT` | User agent is blocked |
|
||
|
|
| `EXPIRED` | Account has expired |
|
||
|
|
| `DEVICE_NOT_ALLOWED` | Device type is not allowed |
|
||
|
|
| `BANNED` | User is banned |
|
||
|
|
| `DISABLED` | Account is disabled |
|
||
|
|
| `EMPTY_USER_AGENT` | User agent is required but missing |
|
||
|
|
| `NOT_IN_ALLOWED_IPS` | IP address is not allowed |
|
||
|
|
| `NOT_IN_ALLOWED_COUNTRY` | Country is not allowed |
|
||
|
|
| `NOT_IN_ALLOWED_UAS` | User agent is not allowed |
|
||
|
|
| `ISP_BLOCKED` | ISP is blocked |
|
||
|
|
| `ASN_BLOCKED` | ASN restriction applied |
|
||
|
|
| `DOWNLOAD_LIMIT_REACHED` | Too many requests |
|
||
|
|
| `GENERATE_PLAYLIST_FAILED` | Failed to generate playlist |
|
||
|
|
servers:
|
||
|
|
- url: '{protocol}://{host}:{port}/playlist'
|
||
|
|
description: XC_VM playlist endpoint
|
||
|
|
variables:
|
||
|
|
protocol:
|
||
|
|
default: http
|
||
|
|
enum: [http, https]
|
||
|
|
host:
|
||
|
|
default: your-server.com
|
||
|
|
description: Server IP or domain
|
||
|
|
port:
|
||
|
|
default: '80'
|
||
|
|
description: HTTP port
|
||
|
|
|
||
|
|
tags:
|
||
|
|
- name: Playlist
|
||
|
|
description: Authentication and playlist generation
|
||
|
|
|
||
|
|
paths:
|
||
|
|
/:
|
||
|
|
get:
|
||
|
|
tags: [Playlist]
|
||
|
|
summary: Authenticate and generate playlist
|
||
|
|
description: |
|
||
|
|
Authenticates the client and returns a personalized playlist in the requested format.
|
||
|
|
Provide **either** `username` + `password` **or** `token`.
|
||
|
|
parameters:
|
||
|
|
- name: username
|
||
|
|
in: query
|
||
|
|
required: false
|
||
|
|
schema: { type: string }
|
||
|
|
description: Username (required if `token` is not used)
|
||
|
|
- name: password
|
||
|
|
in: query
|
||
|
|
required: false
|
||
|
|
schema: { type: string }
|
||
|
|
description: Password (required if `token` is not used)
|
||
|
|
- name: token
|
||
|
|
in: query
|
||
|
|
required: false
|
||
|
|
schema: { type: string }
|
||
|
|
description: Authentication token (required if username/password are not used)
|
||
|
|
- name: type
|
||
|
|
in: query
|
||
|
|
required: false
|
||
|
|
schema: { type: string, default: m3u_plus }
|
||
|
|
description: Device type (default `m3u_plus`)
|
||
|
|
- name: key
|
||
|
|
in: query
|
||
|
|
required: false
|
||
|
|
schema: { type: string, enum: [live, movies, radio_streams, series] }
|
||
|
|
description: Content type — `live`, `movies`, `radio_streams` or `series`
|
||
|
|
- name: output
|
||
|
|
in: query
|
||
|
|
required: false
|
||
|
|
schema: { type: string, enum: [hls, m3u] }
|
||
|
|
description: Output format
|
||
|
|
- name: nocache
|
||
|
|
in: query
|
||
|
|
required: false
|
||
|
|
schema: { type: boolean }
|
||
|
|
description: If true, disables caching
|
||
|
|
responses:
|
||
|
|
'200':
|
||
|
|
description: Playlist file in the requested format (M3U or HLS)
|
||
|
|
content:
|
||
|
|
application/x-mpegurl:
|
||
|
|
schema: { type: string }
|
||
|
|
audio/x-mpegurl:
|
||
|
|
schema: { type: string }
|
||
|
|
'403':
|
||
|
|
description: Authentication or access restriction error (see error codes)
|