Files
Lazuli/openapi.yaml

202 lines
4.9 KiB
YAML
Raw Normal View History

2024-02-19 10:00:49 -05:00
openapi: 3.0.0
info:
title: Lazuli API
version: 1.0.0
servers:
- url: http://host[:port]/api
paths:
/connections:
get:
summary: Returns connections by ids
tags:
- Connections
parameters:
- in: query
name: ids
schema:
type: array
items:
type: string
description: List of connection ids, comma delimited
required: true
responses:
'200':
description: A JSON array of connections
content:
application/json:
schema:
type: object
required:
- connections
properties:
connections:
type: array
items:
$ref: '#/components/schemas/Connection'
'400':
description: Bad Request
'401':
description: Unauthorized
/connections/{connectionId}/info:
get:
summary: Returns unique info from the specified connection
tags:
- Connections
parameters:
- in: path
name: connectionId
schema:
type: string
description: The id of the connection
required: true
responses:
'200':
description: Any info relevant to the connection, such as username, profile picture, etc.
content:
application/json:
schema:
type: object
required:
- info
properties:
info:
$ref: '#/components/schemas/ConnectionInfo'
'401':
description: Unauthorized
/users/{userId}/connections:
get:
summary: Returns all connections for a specified user
tags:
- Connections
parameters:
- in: path
name: userId
schema:
type: string
description: The user's id
required: true
responses:
'200':
description: A JSON array of connections
content:
application/json:
schema:
type: object
required:
- connections
properties:
connections:
type: array
items:
$ref: '#/components/schemas/Connection'
'401':
description: Unauthorized
/users/{userId}/recommendations:
get:
summary: Returns recommendations for the user from all connections
tags:
- Recommendations
parameters:
- in: path
name: userId
schema:
type: string
description: The user's id
required: true
responses:
'200':
description: A JSON array of media items
content:
application/json:
schema:
type: object
required:
- recommendations
properties:
recommendations:
type: array
items:
$ref: '#/components/schemas/MediaItem'
'401':
description: Unauthorized
components:
schemas:
serviceType:
type: string
enum: ['jellyfin', 'youtube-music']
Service:
type: object
required:
- type
- userId
- urlOrigin
properties:
type:
$ref: '#/components/schemas/serviceType'
userId:
type: string
urlOrigin:
type: string
Connection:
type: object
required:
- id
- userId
- service
- accessToken
properties:
id:
type: string
userId:
type: string
service:
$ref: '#/components/schemas/Service'
accessToken:
type: string
refreshToken:
type: string
expiry:
type: number
ConnectionInfo:
type: object
required:
- connectionId
- serviceType
properties:
connectionId:
type: string
serviceType:
$ref: '#/components/schemas/serviceType'
username:
type: string
serverName:
type: string
profilePicture:
type: string
MediaItem:
type: object
required:
- connectionId
- serviceType
- type
- id
- name
properties:
connectionId:
type: string
serviceType:
$ref: '#/components/schemas/serviceType'
type:
type: string
enum: ['song', 'album', 'playlist', 'artist']
id:
type: string
name:
type: string
thumbnail:
type: string