OpenAPI/swagger.yaml
2022-01-12 23:05:22 +00:00

414 lines
10 KiB
YAML

openapi: 3.0.0
servers:
- description: Official Instance
url: https://pipedapi.kavin.rocks
info:
description: This is an API specification for Piped API instances.
version: "1.0.0"
title: Piped API
contact:
email: kavin@kavin.rocks
url: https://github.com/TeamPiped/Piped/issues
license:
name: MIT
url: "https://opensource.org/licenses/MIT"
tags:
- name: unauthenticated
description: Requests that can be made by anyone
- name: authenticated
description: Requests that can only be made when logged in, with an authToken
paths:
/trending:
get:
tags:
- unauthenticated
summary: Gets all Trending Videos
operationId: trending
description: Gets all Trending Videos in the requested country.
parameters:
- in: query
name: region
description: The Region to get trending videos from.
required: true
example: US
schema:
$ref: "#/components/schemas/Regions"
responses:
"200":
description: Array of trending Videos.
content:
application/json:
schema:
type: array
items:
anyOf:
- $ref: "#/components/schemas/StreamItem"
"500":
description: Server Side exception
content:
application/json:
schema:
$ref: "#/components/schemas/ExceptionError"
/streams/{videoId}:
get:
tags:
- unauthenticated
summary: Gets Video Information
operationId: streamInfo
description: |
Gets all available Stream information about a video.
parameters:
- in: path
name: videoId
description: The video ID of the YouTube video you want to get information about.
required: true
example: dQw4w9WgXcQ
schema:
type: string
responses:
"200":
description: The information about the video.
content:
application/json:
schema:
$ref: "#/components/schemas/VideoInfo"
"500":
description: Server Side exception
content:
application/json:
schema:
$ref: "#/components/schemas/ExceptionError"
/channel/{channelId}:
get:
tags:
- unauthenticated
summary: Gets Channel Information
operationId: channelInfoId
description: |
Gets all available Channel information about a channel.
parameters:
- in: path
name: channelId
description: The channel ID of the YouTube channel you want to get information about.
required: true
example: UCs6KfncB4OV6Vug4o_bzijg
schema:
type: string
responses:
"200":
description: The information about the channel.
content:
application/json:
schema:
$ref: "#/components/schemas/ChannelInfo"
"500":
description: Server Side exception
content:
application/json:
schema:
$ref: "#/components/schemas/ExceptionError"
/c/{name}:
get:
tags:
- unauthenticated
summary: Gets Channel Information
operationId: channelInfoName
description: |
Gets all available Channel information about a channel.
parameters:
- in: path
name: name
description: The name of the YouTube channel you want to get information about.
required: true
example: Dream
schema:
type: string
responses:
"200":
description: The information about the channel.
content:
application/json:
schema:
$ref: "#/components/schemas/ChannelInfo"
"500":
description: Server Side exception
content:
application/json:
schema:
$ref: "#/components/schemas/ExceptionError"
/user/{username}:
get:
tags:
- unauthenticated
summary: Gets Channel Information
operationId: channelInfoUsername
description: |
Gets all available Channel information about a channel.
parameters:
- in: path
name: username
description: The username of the YouTube channel you want to get information about.
required: true
example: DreamTraps
schema:
type: string
responses:
"200":
description: The information about the channel.
content:
application/json:
schema:
$ref: "#/components/schemas/ChannelInfo"
"500":
description: Server Side exception
content:
application/json:
schema:
$ref: "#/components/schemas/ExceptionError"
components:
schemas:
Regions:
type: string
enum:
[
"DZ",
"AR",
"AU",
"AT",
"AZ",
"BH",
"BD",
"BY",
"BE",
"BO",
"BA",
"BR",
"BG",
"CA",
"CL",
"CO",
"CR",
"HR",
"CY",
"CZ",
"DK",
"DO",
"EC",
"EG",
"SV",
"EE",
"FI",
"FR",
"GE",
"DE",
"GH",
"GR",
"GT",
"HN",
"HK",
"HU",
"IS",
"IN",
"ID",
"IQ",
"IE",
"IL",
"IT",
"JM",
"JP",
"JO",
"KZ",
"KE",
"KW",
"LV",
"LB",
"LY",
"LI",
"LT",
"LU",
"MY",
"MT",
"MX",
"ME",
"MA",
"NP",
"NL",
"NZ",
"NI",
"NG",
"MK",
"NO",
"OM",
"PK",
"PA",
"PG",
"PY",
"PE",
"PH",
"PL",
"PT",
"PR",
"QA",
"RO",
"RU",
"SA",
"SN",
"RS",
"SG",
"SK",
"SI",
"ZA",
"KR",
"ES",
"LK",
"SE",
"CH",
"TW",
"TZ",
"TH",
"TN",
"TR",
"UG",
"UA",
"AE",
"GB",
"US",
"UY",
"VE",
"VN",
"YE",
"ZW",
]
VideoInfo:
type: object
properties:
audioStreams:
type: array
items:
$ref: "#/components/schemas/Stream"
relatedStreams:
type: array
items:
$ref: "#/components/schemas/StreamItem"
ChannelInfo:
type: object
properties:
avatarUrl:
type: string
description: The URL of the channel's avatar.
bannerUrl:
type: string
description: The URL of the channel's banner.
description:
type: string
description: The channel's description.
id:
type: string
description: The ID of the channel.
example: UCs6KfncB4OV6Vug4o_bzijg
name:
type: string
description: The name of the channel.
example: Techlore
nextpage:
type: string
description: The parameter used to get the next page of related videos.
relatedStreams:
type: array
items:
$ref: "#/components/schemas/StreamItem"
subscriberCount:
type: integer
description: The number of subscribers the channel has.
example: 170000
verified:
type: boolean
description: Whether the channel is verified.
example: true
Stream:
properties:
url:
type: string
description: The URL of the stream.
format:
type: string
description: The format of the stream.
enum: [MPEG_4, v3GPP, WEBM, M4A, WEBMA_OPUS]
example: MPEG_4
quality:
type: string
description: The quality of the stream.
example: 1080p
mimeType:
type: string
description: The mime type of the stream.
example: video/mp4
codec:
type: string
description: The codec of the stream.
example: avc1.64002a
videoOnly:
type: boolean
bitrate:
type: integer
initStart:
type: integer
initEnd:
type: integer
indexStart:
type: integer
indexEnd:
type: integer
width:
type: integer
height:
type: integer
fps:
type: integer
StreamItem:
required:
- duration
- thumbnail
- title
- url
properties:
duration:
type: integer
description: The duration of the video in seconds.
thumbnail:
type: string
description: The thumbnail of the video.
title:
type: string
description: The title of the video.
uploadedDate:
type: string
example: 3 months ago
description: The relative date the video was uploaded on.
uploaderAvatar:
type: string
description: The avatar of the channel of the video.
uploaderUrl:
type: string
description: The relative URL of the channel of the video.
uploaderVerified:
type: boolean
description: Whether or not the channel has a verified badge.
url:
type: string
description: The relative URL to the video.
views:
type: integer
description: The number of views the video has.
ExceptionError:
required:
- error
- message
properties:
error:
type: string
description: The stacktrace provided by the server.
message:
type: string
description: The error message from the stacktrace.
description: When a server-side exception takes place.