using Nancy.Metadata.Modules; using Nancy.Metadata.Swagger.Core; using Nancy.Metadata.Swagger.Fluent; using Sony.Filtr.AdminAPI.ViewModels.Spotify.Analytics; namespace Sony.Filtr.AdminAPI.Modules.SpotifySpecific { public class SpotifyAnalyticsTrackMetadataModule : MetadataModule { public SpotifyAnalyticsTrackMetadataModule() { var tag = "Spotify analytics"; Describe["GetSpotifyAnalyticsTrackSavesAndSkips"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Get a list of the saves and skips per date for the specified tracks in the date period.", tag) .WithRequestParameter("isrc", description: "Isrc, possible to specify multiple parameters or comma separated values.", loc: "query", required: true) .WithRequestParameter("startDate", description: "Start date of entries, default 30 days ago if not specified", loc: "query", required: false) .WithRequestParameter("endDate", description: "End date of entries, default today if not specified", loc: "query", required: false) .WithRequestParameter("countryCode", description: "Filter by country", loc: "query", required: false) .WithDefaultResponse()); Describe["GetSpotifyAnalyticsTrackDemographics"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Get the streams per demographic and date for the specified tracks in the date period.", tag) .WithRequestParameter("isrc", description: "Isrc, possible to specify multiple parameters or comma separated values.", loc: "query", required: true) .WithRequestParameter("startDate", description: "Start date of entries, default 30 days ago if not specified", loc: "query", required: false) .WithRequestParameter("endDate", description: "End date of entries, default today if not specified", loc: "query", required: false) .WithRequestParameter("countryCode", description: "Filter by country", loc: "query", required: false) .WithDefaultResponse()); Describe["GetSpotifyAnalyticsTrackStreams"] = description => new SwaggerRouteMetadata(description).With(c => c.WithDescription("Gets streams for specified tracks within the date period.", tag) .WithRequestParameter("isrc", description: "Isrc, possible to specify multiple parameter or comma separated values.", loc: "query", required: true) .WithRequestParameter("startDate", description: "Start date of entries, default 30 days ago if not specified", loc: "query", required: false) .WithRequestParameter("endDate", description: "End date of entries, default today if not specified", loc: "query", required: false) .WithRequestParameter("countryCode", description: "Filter by country", loc: "query", required: false) .WithRequestParameter("licensor", description: "Filter by licensor (sony, smej, smejintl, theorchard)", loc: "query", required: false) .WithDefaultResponse()); } } }