package com.sequenceiq.cloudbreak.api.endpoint; import java.util.List; import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import com.sequenceiq.cloudbreak.api.model.CloudbreakFlexUsageJson; import com.sequenceiq.cloudbreak.api.model.CloudbreakUsageJson; import com.sequenceiq.cloudbreak.doc.ContentType; import com.sequenceiq.cloudbreak.doc.ControllerDescription; import com.sequenceiq.cloudbreak.doc.Notes; import com.sequenceiq.cloudbreak.doc.OperationDescriptions; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @Path("/usages") @Consumes(MediaType.APPLICATION_JSON) @Api(value = "/usages", description = ControllerDescription.USAGES_DESCRIPTION, protocols = "http,https") public interface UsageEndpoint { @GET @Produces(MediaType.APPLICATION_JSON) @ApiOperation(value = OperationDescriptions.UsagesOpDescription.GET_ALL, produces = ContentType.JSON, notes = Notes.USAGE_NOTES, nickname = "getDeployerUsage") List<CloudbreakUsageJson> getDeployer( @QueryParam("since") Long since, @QueryParam("filterenddate") Long filterEndDate, @QueryParam("user") String userId, @QueryParam("account") String accountId, @QueryParam("cloud") String cloud, @QueryParam("zone") String zone); @GET @Path("account") @Produces(MediaType.APPLICATION_JSON) @ApiOperation(value = OperationDescriptions.UsagesOpDescription.GET_PUBLIC, produces = ContentType.JSON, notes = Notes.USAGE_NOTES, nickname = "getAccountUsage") List<CloudbreakUsageJson> getAccount( @QueryParam("since") Long since, @QueryParam("filterenddate") Long filterEndDate, @QueryParam("user") String userId, @QueryParam("cloud") String cloud, @QueryParam("zone") String zone); @GET @Path("user") @Produces(MediaType.APPLICATION_JSON) @ApiOperation(value = OperationDescriptions.UsagesOpDescription.GET_PRIVATE, produces = ContentType.JSON, notes = Notes.USAGE_NOTES, nickname = "getUserUsage") List<CloudbreakUsageJson> getUser( @QueryParam("since") Long since, @QueryParam("filterenddate") Long filterEndDate, @QueryParam("cloud") String cloud, @QueryParam("zone") String zone); @GET @Path("flex/daily") @Produces(MediaType.APPLICATION_JSON) @ApiOperation(value = OperationDescriptions.UsagesOpDescription.GET_FLEX_DAILY, produces = ContentType.JSON, notes = Notes.USAGE_NOTES, nickname = "getDailyFlexUsage") List<CloudbreakFlexUsageJson> getDailyFlexUsages(); @GET @Path("flex/latest") @Produces(MediaType.APPLICATION_JSON) @ApiOperation(value = OperationDescriptions.UsagesOpDescription.GET_FLEX_LATEST, produces = ContentType.JSON, notes = Notes.USAGE_NOTES, nickname = "getLatestFlexUsage") List<CloudbreakFlexUsageJson> getLatestFlexUsages(); }