Add initial swagger.yaml

This commit is contained in:
Kavin 2022-01-12 08:53:04 +00:00 committed by GitHub
parent 8c4d0110b6
commit 8c6333d9d8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 177 additions and 0 deletions

177
swagger.yaml Normal file
View File

@ -0,0 +1,177 @@
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'
/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'
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'
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.