content: package org.knowm.xchange.coinbase;
  
  import java.io.IOException;
  import java.math.BigDecimal;
  import java.util.List;
  import java.util.Map;
  import javax.ws.rs.Consumes;
  import javax.ws.rs.GET;
  import javax.ws.rs.POST;
  import javax.ws.rs.Path;
  import javax.ws.rs.Produces;
  import javax.ws.rs.QueryParam;
  import javax.ws.rs.core.MediaType;
  import org.knowm.xchange.coinbase.dto.CoinbaseException;
  import org.knowm.xchange.coinbase.dto.account.CoinbaseToken;
  import org.knowm.xchange.coinbase.dto.account.CoinbaseUser;
  import org.knowm.xchange.coinbase.dto.marketdata.CoinbaseCurrency;
  import org.knowm.xchange.coinbase.dto.marketdata.CoinbaseMoney;
  import org.knowm.xchange.coinbase.dto.marketdata.CoinbasePrice;
  
  /** @author jamespedwards42 */
  @Path("api/v1")
  @Produces(MediaType.APPLICATION_JSON)
  public interface Coinbase {
  
    @GET
    @Path("currencies")
    List<CoinbaseCurrency> getCurrencies() throws IOException, CoinbaseException;
  
    @GET
    @Path("currencies/exchange_rates")
    Map<String, BigDecimal> getCurrencyExchangeRates() throws IOException, CoinbaseException;
  
    @GET
    @Path("prices/buy")
    CoinbasePrice getBuyPrice(
        @QueryParam("qty") BigDecimal quantity, @QueryParam("currency") String currency)
        throws IOException, CoinbaseException;
  
    @GET
    @Path("prices/sell")
    CoinbasePrice getSellPrice(
        @QueryParam("qty") BigDecimal quantity, @QueryParam("currency") String currency)
        throws IOException, CoinbaseException;
  
    @GET
    @Path("prices/spot_rate")
    CoinbaseMoney getSpotRate(@QueryParam("currency") String currency)
        throws IOException, CoinbaseException;
  
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    @Path("prices/historical")
    String getHistoricalSpotRates(@QueryParam("page") Integer page)
        throws IOException, CoinbaseException;
  
    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    @Path("users")
    CoinbaseUser createUser(CoinbaseUser user) throws IOException, CoinbaseException;
  
    @POST
    @Path("tokens")
    CoinbaseToken createToken() throws IOException, CoinbaseException;
  }
  