code: function(bid) {
      if (bid && typeof bid.params !== 'object') {
        utils.logError(BIDDER_CODE + ': params is not defined or is incorrect in the bidder settings.');
        return false;
      }
  
      if (!utils.deepAccess(bid, 'mediaTypes.video')) {
        utils.logError(BIDDER_CODE + ': mediaTypes.video is not present in the bidder settings.');
        return false;
      }
  
      const playerSize = utils.deepAccess(bid, 'mediaTypes.video.playerSize');
      if (!playerSize || !utils.isArray(playerSize)) {
        utils.logError(BIDDER_CODE + ': mediaTypes.video.playerSize is not defined in the bidder settings.');
        return false;
      }
  
      if (!utils.getBidIdParameter('channel_id', bid.params)) {
        utils.logError(BIDDER_CODE + ': channel_id is not present in bidder params');
        return false;
      }
  
      if (utils.deepAccess(bid, 'mediaTypes.video.context') == 'outstream' || utils.deepAccess(bid, 'params.ad_unit') == 'outstream') {
        if (!utils.getBidIdParameter('outstream_function', bid.params)) {
          if (!utils.getBidIdParameter('outstream_options', bid.params)) {
            utils.logError(BIDDER_CODE + ': please define outstream_options parameter or override the default SpotX outstream rendering by defining your own Outstream function using field outstream_function.');
            return false;
          }
          if (!utils.getBidIdParameter('slot', bid.params.outstream_options)) {
            utils.logError(BIDDER_CODE + ': please define parameters slot outstream_options object in the configuration.');
            return false;
          }
        }
      }
  
      return true;
    }
docs: Determines whether or not the given bid request is valid.
  From Prebid.js: isBidRequestValid - Verify the the AdUnits.bids, respond with true (valid) or false (invalid).
  
  @param {object} bid The bid to validate.
  @return boolean True if this is a valid bid, and false otherwise.