from apollo_utils.service.legacy.schemas.mixins.market import MarketGlobalMixin from apollo_utils.service.schemas.fields.datetime import DateStringField from marshmallow import fields, validate from server.schemas.base.schemas import RequestSchema, Schema class PlaylistsSpotifyPreviousTop: """ Schema(s) for request/response validation of PlaylistsApplePreviousTop. """ class Request(RequestSchema, MarketGlobalMixin): """ Schema for input validation of PlaylistsApplePreviousTop. """ track_ids = fields.List( fields.String(), data_key="tracks", validate=validate.Length(min=1, max=5), required=True ) limit = fields.Integer(validate=validate.Range(min=1, max=250), load_default=None) period = fields.Integer(validate=validate.Range(min=1), load_default=None) class Response(Schema): class PlaylistItem(Schema): class TracksItems(Schema): id = fields.String() name = fields.String() isrc = fields.String() first_date = DateStringField() periods = fields.List(fields.List(DateStringField)) id = fields.String() name = fields.String() streams = fields.Integer() type = fields.String() image_url = fields.Url() tracks = fields.Nested(TracksItems(many=True)) playlists = fields.List(fields.Nested(PlaylistItem))