title: Coinbase API returning "product not found" for valid product ID
body: <p>I'm using the sandbox API at the moment, and I can query the products, including individually, but if I try and place a buy order, the response I get is <code>{ message: 'Product not found' }</code>.</p>
  <p>Here's my code:</p>
  <pre><code>async function cb_request( method, path, headers = {}, body = ''){
  
    var apiKey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxx',
        apiSecret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxx',
        apiPass = 'xxxxxxxxxxxxxxxxxxxxxxxxxxx';
  
    //get unix time in seconds
    var timestamp = Math.floor(Date.now() / 1000);
  
    // set the request message
    var message = timestamp + method + path + body;
  
    //create a hexedecimal encoded SHA256 signature of the message
    var key = Buffer.from(apiSecret, 'base64');
    var signature = crypto.createHmac('sha256', key).update(message).digest('base64');
  
    //create the request options object
    var baseUrl = 'https://api-public.sandbox.pro.coinbase.com';
  
    headers = Object.assign({},headers,{
        'CB-ACCESS-SIGN': signature,
        'CB-ACCESS-TIMESTAMP': timestamp,
        'CB-ACCESS-KEY': apiKey,
        'CB-ACCESS-PASSPHRASE': apiPass,
        'USER-AGENT': 'request'
    });
  
    // Logging the headers here to ensure they're sent properly
    console.log(headers);
  
    var options = {
        baseUrl: baseUrl,
        url: path,
        method: method,
        headers: headers
    };
  
    return new Promise((resolve,reject)=&gt;{
      request( options, function(err, response, body){
        if (err) reject(err);
        resolve(JSON.parse(response.body));
      });
    });
  
  }
  
  async function main() {
    
    // This queries a product by id (successfully)
    try {
       console.log( await cb_request('GET','/products/BTC-USD') );
    }
    catch(e) {
       console.log(e);
    }
  
    // Trying to place a buy order here (using the same id as above) returns { message: 'Product not found' }
    var buyParams = {
      'type': 'market',
      'side': 'buy',
      'funds': '100',
      'product_id': 'BTC-USD'
    };
  
    try {
      var buy = await cb_request('POST','/orders',buyParams);
      console.log(buy);
    }
    catch(e) {
       console.log(e);
    }
  
  }
  
  main();
  </code></pre>
  <p>I've tried sending the params in the body, which responds with <code>invalid signature</code>, even when stringified. I've also tried using the <a href="https://docs.pro.coinbase.com/?javascript#place-a-new-order" rel="noreferrer">params shown in the API docs</a>, but that responds with <code>product not found</code> too.</p>
  <p>Any ideas? TIA</p>