Skip to content

Instantly share code, notes, and snippets.

@agrojas
Last active May 16, 2024 16:49
Show Gist options
  • Save agrojas/ea2001512de94ce03ebebef797a6cdd0 to your computer and use it in GitHub Desktop.
Save agrojas/ea2001512de94ce03ebebef797a6cdd0 to your computer and use it in GitHub Desktop.
music-shared-api.yaml
---
consumes:
- application/json
definitions:
Album:
properties:
artists:
description: "Listado de artistas que realizaron el album"
items:
$ref: "#/definitions/Artist"
type: array
genres:
description: "Listado de generos a los que pertenece el album"
items:
type: string
type: array
href:
description: "End point del album"
type: string
id:
description: "Id del album"
type: integer
images:
description: "Imagenes relacionadas al cd"
items:
type: string
type: array
name:
description: Nombre
type: string
popularity:
description: "Popularidad del album. Varia entre 1 y 5, dependiendo de la popularidad de los temas del album"
type: integer
release_date:
description: "Fecha de lanzamiento del cd"
type: string
tracks:
description: "Listado de canciones que pertenecen al album"
items:
$ref: "#/definitions/Track_short"
type: array
type: object
Album_short:
properties:
href:
description: "End point del album"
type: string
id:
description: "Id del album"
type: integer
name:
description: Nombre
type: string
type: object
Artist:
properties:
genres:
description: "Listado de generos asociados al artista"
items:
type: string
type: array
href:
description: "End point del artista"
type: string
id:
description: "Id del artista"
type: integer
images:
description: "Imagenes relacionadas al artista"
items:
type: string
type: array
albums:
description: "Albumes del artista"
items:
$ref: "#/definitions/Album_short"
type: array
name:
description: "Nombre del artista"
type: string
popularity:
description: "Popularidad del artista. Varia entre 1 y 5, dependiendo de la popularidad de los temas del artista"
type: integer
type: object
Artist_short:
properties:
href:
description: "End point del artista"
type: string
id:
description: "Id del artistas"
type: integer
name:
description: "Nombre del artista"
type: string
type: object
Error:
properties:
code:
format: int32
type: integer
message:
type: string
type: object
Metadata:
properties:
count:
description: "Cantidad de elementos en la respuesta"
type: integer
version:
description: "Versión de la api"
type: string
type: object
Playlist:
properties:
description:
description: "Descripción de la Playlist"
type: string
href:
description: "End point de la Playlist"
type: string
id:
description: "Id de la playlist"
type: integer
name:
description: "Nombre de la Playlist"
type: string
owner:
$ref: "#/definitions/User_short"
tracks:
description: "Listado de canciones que pertenecen a la Playlist"
items:
$ref: "#/definitions/Track_short"
type: array
type: object
Popularity:
properties:
rate:
description: "Puntuación de una canción"
type: integer
type: object
Track:
properties:
album:
$ref: "#/definitions/Album_short"
artists:
description: "Listado de artistas que realizaron la canción"
items:
$ref: "#/definitions/Artist_short"
type: array
duration:
description: "Duración de la canción en ms"
type: integer
href:
description: "End point de la canción"
type: string
id:
description: "Id de la canción"
type: integer
name:
description: "Nombre de la canción"
type: string
popularity:
$ref: "#/definitions/Popularity"
type: object
Track_short:
properties:
href:
description: "End point de la canción"
type: string
id:
description: "Id de la canción"
type: integer
name:
description: "Nombre de la canción"
type: string
type: object
User:
properties:
id:
description: Identificador del usuario
type: integer
href:
description: End point del usuario
type: string
userName:
description: Nombre del usuario en la aplicación
type: string
firstName:
description: Nombre del usuario
type: string
lastName:
description: Apellido del usuario
type: string
country:
description: Pais del usuario
type: string
email:
description: Email del usuario
type: string
birthdate:
description: Fecha de cumpleaños del usuario
type: string
images:
description: "Imagenes relacionadas al usuario"
items:
type: string
type: array
contacts:
description: Listado de contactos
items:
$ref: "#/definitions/User_short"
type: array
type: object
User_short:
properties:
id:
description: Identificador del usuario
type: integer
href:
description: End point del usuario
type: string
userName:
description: Nombre del usuario en la aplicación
type: string
Token:
properties:
token:
description: Token
type: string
user:
$ref: "#/definitions/User_short"
type: object
host: music.7552.fi.uba.ar
info:
description: "API para el shared server de Music.io"
title: "Music-io - Shared Server API"
version: "1.0.0"
paths:
/users:
get:
description: |
El endpoint */users* devuelve toda la información acerca
de todos los users indicados.
responses:
200:
description: "Todos los users indicados"
schema:
properties:
metadata:
$ref: "#/definitions/Metadata"
users:
items:
$ref: "#/definitions/User"
type: array
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Users - Listado de usuarios"
parameters:
-
description: "Listado de ids"
in: query
name: ids
required: true
type: integer
post:
description: "Endpoint para dar de alta un usuario"
parameters:
-
description: "Datos para dar de alta un usuario"
in: body
name: body
required: true
schema:
properties:
userName:
description: Nombre del usuario en la aplicación
type: string
firstName:
description: Nombre del usuario
type: string
lastName:
description: Apellido del usuario
type: string
country:
description: Pais del usuario
type: string
email:
description: Email del usuario
type: string
birthdate:
description: Fecha de cumpleaños del usuario
type: string
images:
description: "Imagenes relacionadas al usuario"
items:
type: string
type: array
type: object
responses:
201:
description: "Alta correcta"
schema:
$ref: "#/definitions/User"
400:
description: "Incumplimiento de precondiciones (parámetros faltantes)"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Users - Dar de alta un usuario"
/users/{userId}:
delete:
description: "Endpoint para dar de baja un usuario"
parameters:
-
description: "Identificador del usuario"
in: path
name: userId
required: true
type: integer
responses:
204:
description: "Baja correcta"
404:
description: "No existe el recurso solicitado"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Users - Eliminar un user"
get:
description: "El endpoint */users/{userId}* devuelve toda la información del usuario"
parameters:
-
description: "Id del usuario"
in: path
name: userId
required: true
type: integer
responses:
200:
description: "Información del usuario"
examples:
application/json:
user:
id: 1
href: "https://music.7552.fi.uba.ar/v1/users/1"
userName: user1
firstName: User
lastName: User
country: Argentina
email: user@asd.com
birthdate: 17/5/1990
images:
- url1
- url2
contacts:
-
id: 2
href: "https://music.7552.fi.uba.ar/v1/users/2"
userName: user2
-
id: 3
href: "https://music.7552.fi.uba.ar/v1/users/3"
userName: user3
schema:
properties:
metadata:
$ref: "#/definitions/Metadata"
user:
$ref: "#/definitions/User"
404:
description: "user inexistente"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Users - Obtener información de un usuario"
put:
description: "Modificación de los datos de un usuario"
parameters:
-
description: "Id del user"
in: path
name: userId
required: true
type: integer
-
description: "Datos para modificar al usuario"
in: body
name: body
required: true
schema:
properties:
userName:
description: Nombre del usuario en la aplicación
type: string
firstName:
description: Nombre del usuario
type: string
lastName:
description: Apellido del usuario
type: string
country:
description: Pais del usuario
type: string
email:
description: Email del usuario
type: string
birthdate:
description: Fecha de cumpleaños del usuario
type: string
images:
description: "Imagenes relacionadas al usuario"
items:
type: string
type: array
type: object
responses:
200:
description: "Modificación correcta"
schema:
$ref: "#/definitions/User"
400:
description: "Incumplimiento de precondiciones (parámetros faltantes)"
schema:
$ref: "#/definitions/Error"
404:
description: "No existe el recurso solicitado"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Users - Update del información de un usuario"
/users/me:
get:
description: "El endpoint */users/me* devuelve toda la información del usuario"
responses:
200:
description: "Información del usuario"
examples:
application/json:
user:
id: 1
href: "https://music.7552.fi.uba.ar/v1/users/1"
userName: user1
firstName: User
lastName: User
country: Argentina
email: user@asd.com
birthdate: 17/5/1990
images:
- url1
- url2
contacts:
-
id: 2
href: "https://music.7552.fi.uba.ar/v1/users/2"
userName: user2
-
id: 3
href: "https://music.7552.fi.uba.ar/v1/users/3"
userName: user3
schema:
properties:
metadata:
$ref: "#/definitions/Metadata"
user:
$ref: "#/definitions/User"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Users - Obtener información del usuario logueado"
put:
description: "Modificación de los datos de un usuario"
parameters:
-
description: "Datos para modificar al usuario"
in: body
name: body
required: true
schema:
properties:
userName:
description: Nombre del usuario en la aplicación
type: string
firstName:
description: Nombre del usuario
type: string
lastName:
description: Apellido del usuario
type: string
country:
description: Pais del usuario
type: string
email:
description: Email del usuario
type: string
birthdate:
description: Fecha de cumpleaños del usuario
type: string
images:
description: "Imagenes relacionadas al usuario"
items:
type: string
type: array
type: object
responses:
200:
description: "Modificación correcta"
schema:
$ref: "#/definitions/User"
400:
description: "Incumplimiento de precondiciones (parámetros faltantes)"
schema:
$ref: "#/definitions/Error"
404:
description: "No existe el recurso solicitado"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Users - Update del información de un usuario"
/users/me/contacts:
get:
description: "El endpoint */users/me/contacts* devuelve todos los contactos del usuario"
responses:
200:
description: "Todos los contactos del usuario"
examples:
application/json:
contacts:
-
id: 2
href: "https://music.7552.fi.uba.ar/v1/users/2"
userName: user2
-
id: 3
href: "https://music.7552.fi.uba.ar/v1/users/3"
userName: user3
schema:
properties:
metadata:
$ref: "#/definitions/Metadata"
contacts:
items:
$ref: "#/definitions/User"
type: array
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Users - Todos los contactos del usuario"
/artists:
get:
description: |
El endpoint */artists* devuelve toda la información acerca
de todos los artists indicados.
responses:
200:
description: "Todos los artists indicados"
schema:
properties:
metadata:
$ref: "#/definitions/Metadata"
artists:
items:
$ref: "#/definitions/Artist"
type: array
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Artists - Listado de artistas"
parameters:
-
description: "Listado de ids"
in: query
name: ids
required: true
type: integer
post:
description: "Endpoint para dar de alta un artista"
parameters:
-
description: "Datos para dar de alta un artista"
in: body
name: body
required: true
schema:
properties:
name:
description: "Nombre del artista"
type: string
description:
description: "Descripción del artista"
type: string
genres:
description: "Generos asociados al artista"
type: array
items:
type: string
images:
description: "Imagenes relacionadas al artista"
items:
type: string
type: array
type: object
responses:
201:
description: "Alta correcta"
schema:
$ref: "#/definitions/Artist"
400:
description: "Incumplimiento de precondiciones (parámetros faltantes)"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Artists - Dar de alta un artista"
/artists/{artistId}:
delete:
description: "Endpoint para dar de baja un artista"
parameters:
-
description: "Identificador del artista"
in: path
name: artistId
required: true
type: integer
responses:
204:
description: "Baja correcta"
404:
description: "No existe el recurso solicitado"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Artists - Eliminar un artist"
get:
description: "El endpoint */artists/{artistId}* devuelve toda la información del artista"
parameters:
-
description: "Id del artista"
in: path
name: artistId
required: true
type: integer
responses:
200:
description: "Información del artista"
examples:
application/json:
artist:
name: "Megadeth"
href: "https://music.7552.fi.uba.ar/v1/artists/1"
id: 1
popularity: ~
albums:
-
href: "https://music.7552.fi.uba.ar/v1/albums/1"
id: 1
name: "Rust in Peace"
images:
- urlImage1
- urlImage2
genres:
- trashMetal
- speedMetal
schema:
properties:
metadata:
$ref: "#/definitions/Metadata"
artist:
$ref: "#/definitions/Artist"
404:
description: "artist inexistente"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Artists - Obtener información de un artista"
put:
description: "Modificación de los datos de un artista"
parameters:
-
description: "Id del artist"
in: path
name: artistId
required: true
type: integer
-
description: "Datos para modificar al artista"
in: body
name: body
required: true
schema:
properties:
name:
type: string
genres:
type: array
items:
type: string
images:
type: array
items:
type: string
type: object
responses:
200:
description: "Modificación correcta"
schema:
$ref: "#/definitions/Artist"
400:
description: "Incumplimiento de precondiciones (parámetros faltantes)"
schema:
$ref: "#/definitions/Error"
404:
description: "No existe el recurso solicitado"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Artists - Update del información de un artista"
/me/artists/favorites:
get:
description: "El endpoint */me/artists/favorites* devuelve un listado con los artistas favoritos del usuario"
responses:
200:
description: "Listado de artistas favoritos"
schema:
properties:
metadata:
$ref: "#/definitions/Metadata"
artist:
$ref: "#/definitions/Artist_short"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Artists - Obtener artistas favoritos del usuario"
/me/artists/{artistId}/follow:
delete:
description: "Endpoint para dar dejar de seguir un artista"
parameters:
-
description: "Identificador del artista"
in: path
name: artistId
required: true
type: integer
responses:
204:
description: "Baja correcta"
404:
description: "No existe el recurso solicitado"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Artists - Dejar de seguir un artista"
post:
description: "Endpoint para seguir un artista"
parameters:
-
description: "Identificador del artista"
in: path
name: artistId
required: true
type: integer
responses:
201:
description: "Alta correcta"
schema:
$ref: "#/definitions/Artist"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Artists - Seguir un artista"
/artists/{artistId}/tracks:
get:
description: "El endpoint */artists/{artistId}/tracks* devuelve todas las canciones del artista"
parameters:
-
description: "Id del artista"
in: path
name: artistId
required: true
type: integer
responses:
200:
description: "Canciones del artista del artista"
examples:
application/json:
tracks:
-
href: "https://music.7552.fi.uba.ar/v1/tracks/1"
id: 1
name: "Holy Wars...The Punishment Due"
-
href: "https://music.7552.fi.uba.ar/v1/tracks/2"
id: 2
name: "Hangar 18"
schema:
properties:
metadata:
$ref: "#/definitions/Metadata"
tracks:
$ref: "#/definitions/Artist"
404:
description: "artist inexistente"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Artists - Obtener canciones del artista"
/playlists:
get:
description: |
El endpoint */playlists* devuelve toda la información acerca
de todas las playlists indicadas.
responses:
200:
description: "Todas las playlists indicadas"
schema:
properties:
metadata:
$ref: "#/definitions/Metadata"
playlists:
items:
$ref: "#/definitions/Playlist"
type: array
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Playlists - Listado de playlists"
parameters:
-
description: "Listado de ids"
in: query
name: ids
required: true
type: integer
post:
description: "Endpoint para dar de alta una playlist"
parameters:
-
description: "Datos para dar de alta una playlist"
in: body
name: body
required: true
schema:
properties:
name:
description: "Nombre de la playlist"
type: string
description:
description: "Descripción de la playlist"
type: string
ownerId:
description: "Usario creador de la playlist"
type: integer
type: object
responses:
201:
description: "Alta correcta"
schema:
$ref: "#/definitions/Playlist"
400:
description: "Incumplimiento de precondiciones (parámetros faltantes)"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Playlist - Dar de alta una playlist"
/playlists/{playlistId}:
delete:
description: "Endpoint para dar de baja una playlist"
parameters:
-
description: "Identificador de la playlist"
in: path
name: playlistId
required: true
type: integer
responses:
204:
description: "Baja correcta"
404:
description: "No existe el recurso solicitado"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Playlist - Eliminar una playlist"
get:
description: "El endpoint * /playlists/{playlistId}* devuelve toda la información de la playlist"
parameters:
-
description: "Id de la playlist"
in: path
name: playlistId
required: true
type: integer
responses:
200:
description: "Información de la playlist"
examples:
application/json:
playlist:
description: "Trash Metal Playlist"
href: "https://music.7552.fi.uba.ar/v1/playlists/1"
id: 1
owner:
id: 1
userName: user1
href: "https://music.7552.fi.uba.ar/v1/users/1"
tracks:
-
href: "https://music.7552.fi.uba.ar/v1/tracks/1"
id: 1
name: "Holy Wars...The Punishment Due"
-
href: "https://music.7552.fi.uba.ar/v1/tracks/2"
id: 2
name: "Hangar 18"
schema:
properties:
metadata:
$ref: "#/definitions/Metadata"
playlist:
$ref: "#/definitions/Playlist"
404:
description: "Playlist inexistente"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Playlist - Obtener información de una Playlist"
put:
description: "Modificación de los datos de una Playlist"
parameters:
-
description: "Id de la Playlist"
in: path
name: playlistId
required: true
type: integer
-
description: "Datos para modificar la playlist"
in: body
name: body
required: true
schema:
properties:
name:
type: string
description:
type: string
type: object
responses:
200:
description: "Modificación correcta"
schema:
$ref: "#/definitions/Playlist"
400:
description: "Incumplimiento de precondiciones (parámetros faltantes)"
schema:
$ref: "#/definitions/Error"
404:
description: "No existe el recurso solicitado"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Playlist - Update de la información de una playlist"
/playlists/{playlistId}/tracks:
get:
description: "El endpoint * /playlists/{playlistId}/tracks* devuelve todas las canciones de la playlist"
parameters:
-
description: "Id de la playlist"
in: path
name: playlistId
required: true
type: integer
responses:
200:
description: "Todas las canciones de la playlist"
examples:
application/json:
tracks:
-
href: "https://music.7552.fi.uba.ar/v1/tracks/1"
id: 1
name: "Holy Wars...The Punishment Due"
-
href: "https://music.7552.fi.uba.ar/v1/tracks/2"
id: 2
name: "Hangar 18"
schema:
properties:
metadata:
$ref: "#/definitions/Metadata"
tracks:
$ref: "#/definitions/Track_short"
404:
description: "Playlist inexistente"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Playlist - Obtener todas las canciones de una Playlist"
/playlists/{playlistId}/albums:
get:
description: "El endpoint * /playlists/{playlistId}/albums* devuelve todos los albumes de la playlist"
parameters:
-
description: "Id de la playlist"
in: path
name: playlistId
required: true
type: integer
responses:
200:
description: "Todos los albumes de la playlist"
examples:
application/json:
tracks:
-
href: "https://music.7552.fi.uba.ar/v1/albums/1"
id: 1
name: "Rust in Peace"
schema:
properties:
metadata:
$ref: "#/definitions/Metadata"
tracks:
$ref: "#/definitions/Album_short"
404:
description: "Playlist inexistente"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Playlist - Obtener todos los albumes de una Playlist"
/playlists/{playlistId}/albums/{albumId}:
delete:
description: "Endpoint para dar de baja un album en una playlist. Esto implica
eliminar todas las cancions que pertenecen al album de la playlist"
parameters:
-
description: "Identificador de la playlist"
in: path
name: playlistId
required: true
type: integer
-
description: "Id del album"
in: path
name: albumId
required: true
type: integer
responses:
204:
description: "Baja correcta"
404:
description: "No existe el recurso solicitado"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Playlist - Eliminar un album de una playlist"
put:
description: "Endpoint para dar de alto un album en una playlist. Esto implica
agrear todas las cancions que pertenecen al album a la playlist"
parameters:
-
description: "Id de la playlist"
in: path
name: playlistId
required: true
type: integer
-
description: "Id del album"
in: path
name: albumId
required: true
type: integer
responses:
200:
description: "Modificación correcta"
schema:
$ref: "#/definitions/Playlist"
400:
description: "Incumplimiento de precondiciones (parámetros faltantes)"
schema:
$ref: "#/definitions/Error"
404:
description: "No existe el recurso solicitado"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Playlist - Agregar album a la playlist"
/playlists/{playlistId}/tracks/{trackId}:
delete:
description: "Endpoint para eliminar una cancion de una playlist."
parameters:
-
description: "Identificador de la playlist"
in: path
name: playlistId
required: true
type: integer
-
description: "Id de la cancion"
in: path
name: trackId
required: true
type: integer
responses:
204:
description: "Baja correcta"
404:
description: "No existe el recurso solicitado"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Playlist - Eliminar una cancion de una playlist"
put:
parameters:
-
description: "Id de la playlist"
in: path
name: playlistId
required: true
type: integer
-
description: "Id de la cancion"
in: path
name: trackId
required: true
type: integer
responses:
200:
description: "Modificación correcta"
schema:
$ref: "#/definitions/Playlist"
400:
description: "Incumplimiento de precondiciones (parámetros faltantes)"
schema:
$ref: "#/definitions/Error"
404:
description: "No existe el recurso solicitado"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Playlist - Agregar cancion a la playlist"
/token:
post:
description: "Endpoint para generar un token para utilizar en los servicios del sistema (login)"
parameters:
-
description: "Datos para generar token"
in: body
name: body
required: true
schema:
properties:
userName:
type: string
password:
type: string
type: object
responses:
201:
description: "Token generado correctamente"
schema:
$ref: "#/definitions/Token"
400:
description: "Incumplimiento de precondiciones (parámetros faltantes)"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Token - Generar token"
/albums:
get:
description: |
El endpoint */albums* devuelve toda la información acerca
de todos los albumes indicados.
responses:
200:
description: "Todos los albumes indicados"
schema:
properties:
metadata:
$ref: "#/definitions/Metadata"
tracks:
items:
$ref: "#/definitions/Album"
type: array
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Album - Listado de albumes"
parameters:
-
description: "Listado de ids"
in: query
name: ids
required: true
type: integer
post:
description: "Endpoint para dar de alta un album"
parameters:
-
description: "Datos para dar de alta un album"
in: body
name: body
required: true
schema:
properties:
artists:
items:
description: "Listado de ids de artistas"
type: integer
type: array
genres:
items:
type: string
type: array
images:
items:
type: string
type: array
name:
type: string
release_date:
type: string
type: object
responses:
201:
description: "Alta correcta"
schema:
$ref: "#/definitions/Album"
400:
description: "Incumplimiento de precondiciones (parámetros faltantes)"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Album - Dar de alta un album"
/albums/{albumId}:
delete:
description: "Endpoint para dar de baja un album"
parameters:
-
description: "Identificador del album"
in: path
name: albumId
required: true
type: integer
responses:
204:
description: "Baja correcta"
404:
description: "No existe el recurso solicitado"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Album - Eliminar un album"
get:
description: "El endpoint * /albums/{albumId}* devuelve toda la información del álbum"
parameters:
-
description: "Id del álbum"
in: path
name: albumId
required: true
type: integer
responses:
200:
description: "Información del álbum"
examples:
application/json:
album:
-
artists:
-
href: "https://music.7552.fi.uba.ar/v1/artists/1"
id: 1
name: Megadeth
genres:
- "Trash Metal"
- "Speed Metal"
href: "https://music.7552.fi.uba.ar/v1/albums/1"
id: 1
images:
- "http://urlFront"
- "http://urlBack"
name: "Rust in Peace"
popularity: ~
release_date: 24/11/1990
tracks:
-
href: "https://music.7552.fi.uba.ar/v1/tracks/1"
id: 1
name: "Holy Wars...The Punishment Due"
-
href: "https://music.7552.fi.uba.ar/v1/tracks/2"
id: 2
name: "Hangar 18"
schema:
properties:
metadata:
$ref: "#/definitions/Metadata"
tracks:
items:
$ref: "#/definitions/Album"
type: array
404:
description: "Album inexistente"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Album - Obtener información de un álbum"
put:
description: "Modificación de los datos de un album"
parameters:
-
description: "Id del album"
in: path
name: albumId
required: true
type: integer
-
description: "Datos para modificar el album"
in: body
name: body
required: true
schema:
properties:
artists:
items:
description: "Listado de ids de artistas"
type: integer
type: array
genres:
items:
type: string
type: array
images:
items:
type: string
type: array
name:
type: string
release_date:
type: string
type: object
responses:
200:
description: "Modificación correcta"
schema:
$ref: "#/definitions/Album"
400:
description: "Incumplimiento de precondiciones (parámetros faltantes)"
schema:
$ref: "#/definitions/Error"
404:
description: "No existe el recurso solicitado"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Album - Update de la información de un album"
/albums/{albumId}/track/{trackId}:
delete:
description: "Endpoint para eliminar una canción de un album"
parameters:
-
description: "Identificador del album"
in: path
name: albumId
required: true
type: integer
-
description: "Identificador de la cancion"
in: path
name: trackId
required: true
type: integer
responses:
204:
description: "Baja correcta"
404:
description: "No existe el recurso solicitado"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Album - Eliminar una canción de un album"
put:
description: "Modificación de los datos de un album"
parameters:
-
description: "Id del album"
in: path
name: albumId
required: true
type: integer
-
description: "Id de la cancion"
in: path
name: trackId
required: true
type: integer
responses:
200:
description: "Modificación correcta"
schema:
$ref: "#/definitions/Album"
400:
description: "Incumplimiento de precondiciones (parámetros faltantes)"
schema:
$ref: "#/definitions/Error"
404:
description: "No existe el recurso solicitado"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Album - Update de la información de un album"
/me/tracks/favorites:
get:
description: |
El endpoint */me/tracks/favorites* devuelve todas las canciones favoritas
del usuario
responses:
200:
description: "Track - Listado de canciones favoritas"
examples:
application/json:
tracks:
-
album:
href: "https://music.7552.fi.uba.ar/v1/albums/1"
id: 1
name: "Rust in Peace"
artists:
-
href: "https://music.7552.fi.uba.ar/v1/artists/1"
id: 1
name: Megadeth
duration: 390000
href: "https://music.7552.fi.uba.ar/v1/tracks/1"
id: 1
name: "Holy Wars...The Punishment Due"
schema:
properties:
metadata:
$ref: "#/definitions/Metadata"
tracks:
items:
$ref: "#/definitions/Track"
type: array
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Track - Listado de canciones favoritas"
/tracks:
get:
description: |
El endpoint *tracks* devuelve toda la información acerca
de todas las canciones indicadas.
responses:
200:
description: "Todas las canciones indicadas"
examples:
application/json:
metadata:
count: 2
version: 0.1
tracks:
-
album:
href: "https://music.7552.fi.uba.ar/v1/albums/1"
id: 1
name: "Rust in Peace"
artists:
-
href: "https://music.7552.fi.uba.ar/v1/artists/1"
id: 1
name: Megadeth
duration: 390000
href: "https://music.7552.fi.uba.ar/v1/tracks/1"
id: 1
name: "Holy Wars...The Punishment Due"
-
album:
href: "https://music.7552.fi.uba.ar/v1/albums/1"
id: 1
name: "Rust in Peace"
artists:
-
href: "https://music.7552.fi.uba.ar/v1/artists/1"
id: 1
name: Megadeth
duration: 314000
href: "https://music.7552.fi.uba.ar/v1/tracks/2"
id: 2
name: "Hangar 18"
schema:
properties:
metadata:
$ref: "#/definitions/Metadata"
tracks:
items:
$ref: "#/definitions/Track"
type: array
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Track - Listado de canciones"
parameters:
-
description: "Listado de ids"
in: query
name: ids
required: true
type: integer
post:
description: "Endpoint para dar de alta una canción"
parameters:
-
description: "Datos para dar de alta la canción"
in: body
name: body
required: true
schema:
properties:
albumId:
type: integer
artists:
items:
description: "Listado de ids de artistas"
type: integer
type: array
name:
type: string
type: object
responses:
201:
description: "Alta correcta"
schema:
$ref: "#/definitions/Track"
400:
description: "Incumplimiento de precondiciones (parámetros faltantes)"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Track - Dar de alta una canción"
/tracks/{trackId}:
delete:
description: "Endpoint para dar de baja una canción"
parameters:
-
description: "Identificador de la canción"
in: path
name: trackId
required: true
type: integer
responses:
204:
description: "Baja correcta"
404:
description: "No existe el recurso solicitado"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Track - Baja de una canción"
get:
description: |
El endpoint *tracks/{trackId}* devuelve toda la información acerca
de la canción indicada
parameters:
-
description: "Identificador de la canción"
in: path
name: trackId
required: true
type: integer
responses:
200:
description: "Información completa sobre una canción"
examples:
application/json:
track:
-
album:
href: "https://music.7552.fi.uba.ar/v1/albums/1"
id: 1
name: "Rust in Peace"
artists:
-
href: "https://music.7552.fi.uba.ar/v1/artists/1"
id: 1
name: Megadeth
duration: 390000
href: "https://music.7552.fi.uba.ar/v1/tracks/1"
id: 1
name: "Holy Wars...The Punishment Due"
schema:
properties:
metadata:
$ref: "#/definitions/Metadata"
tracks:
items:
$ref: "#/definitions/Track"
type: array
404:
description: "Canción inexistente"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Track - Obtener información completa sobre una canción"
put:
description: "Endpoint para modificar una canción"
parameters:
-
description: "Identificador de la canción"
in: path
name: trackId
required: true
type: integer
-
description: "Datos para modificar la canción"
in: body
name: body
required: true
schema:
properties:
albumId:
type: integer
artists:
items:
description: "Listado de ids de artistas"
type: integer
type: array
name:
type: string
type: object
responses:
200:
description: "Modificación correcta"
schema:
$ref: "#/definitions/Track"
400:
description: "Incumplimiento de precondiciones (parámetros faltantes)"
schema:
$ref: "#/definitions/Error"
404:
description: "No existe el recurso solicitado"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Track - Modificación de una canción"
/tracks/{trackId}/like:
delete:
description: "Endpoint para dar dislike a una canción"
parameters:
-
description: "Identificador de la canción"
in: path
name: trackId
required: true
type: integer
responses:
204:
description: "Baja correcta"
404:
description: "No existe el recurso solicitado"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Track - Dislike a una canción"
post:
description: "Endpoint para dar like a una canción"
parameters:
-
description: "Identificador de la canción"
in: path
name: trackId
required: true
type: integer
responses:
201:
description: "Like correcto"
schema:
$ref: "#/definitions/Track"
400:
description: "Incumplimiento de precondiciones (parámetros faltantes)"
schema:
$ref: "#/definitions/Error"
404:
description: "Canción inexistente"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Track - Like a una canción"
/tracks/{trackId}/popularity:
get:
description: "El endpoint */tracks/{trackId}/popularity* devuelve la puntuación de la canción"
parameters:
-
description: "Identificador de la canción"
in: path
name: trackId
required: true
type: integer
responses:
200:
description: "Puntuación de la canción"
examples:
application/json:
rate: 2
schema:
properties:
metadata:
$ref: "#/definitions/Metadata"
popularity:
$ref: "#/definitions/Popularity"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Track - Obtener puntuación de la canción"
post:
description: "Endpoint para Puntuar una canción"
parameters:
-
description: "Identificador de la canción"
in: path
name: trackId
required: true
type: integer
-
description: "Puntuación de la canción"
in: body
name: body
required: true
schema:
properties:
rate:
type: integer
type: object
responses:
201:
description: "Alta correcta"
schema:
$ref: "#/definitions/Popularity"
400:
description: "Incumplimiento de precondiciones (parámetros faltantes)"
schema:
$ref: "#/definitions/Error"
404:
description: "Canción inexistente"
schema:
$ref: "#/definitions/Error"
500:
description: "Unexpected error"
schema:
$ref: "#/definitions/Error"
summary: "Track - Puntuar una canción"
produces:
- application/json
schemes:
- http
swagger: "2.0"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment