docs: def request(
          minion_id,
          dns_name=None,
          zone='default',
          request_id=None,
          country='US',
          state='California',
          loc='Palo Alto',
          org='Beta Organization',
          org_unit='Beta Group',
          password=None,
          zone_id=None,
      ):
      '''
      Request a new certificate
  
      Uses the following command:
  
      .. code-block:: bash
  
          VCert enroll -z <zone> -k <api key> -cn <domain name>
  
      CLI Example:
  
      .. code-block:: bash
  
          salt-run venafi.request <minion_id> <dns_name>
      '''
      if password is not None:
          if password.startswith('sdb://'):
              password = __salt__['sdb.get'](password)
  
      if zone_id is None:
          zone_id = __opts__.get('venafi', {}).get('zone_id')
  
      if zone_id is None and zone is not None:
          zone_id = get_zone_id(zone)
  
      if zone_id is None:
          raise CommandExecutionError(
              'Either a zone or a zone_id must be passed in or '
              'configured in the master file. This id can be retreived using '
              'venafi.show_company <domain>'
          )
  
      private_key = gen_key(minion_id, dns_name, zone, password)
  
      csr = gen_csr(
          minion_id,
          dns_name,
          zone=zone,
          country=country,
          state=state,
          loc=loc,
          org=org,
          org_unit=org_unit,
          password=password,
      )
  
      pdata = salt.utils.json.dumps({
          'zoneId': zone_id,
          'certificateSigningRequest': csr,
      })
  
      qdata = __utils__['http.query'](
          '{0}/certificaterequests'.format(_base_url()),
          method='POST',
          data=pdata,
          decode=True,
          decode_type='json',
          header_dict={
              'tppl-api-key': _api_key(),
              'Content-Type': 'application/json',
          },
      )
  
      request_id = qdata['dict']['certificateRequests'][0]['id']
      ret = {
          'request_id': request_id,
          'private_key': private_key,
          'csr': csr,
          'zone': zone,
      }
  
      bank = 'venafi/domains'
      cache = salt.cache.Cache(__opts__, syspaths.CACHE_DIR)
      data = cache.fetch(bank, dns_name)
      if data is None:
          data = {}
      data.update({
          'minion_id': minion_id,
          'request_id': request_id,
          'private_key': private_key,
          'zone': zone,
          'csr': csr,
      })
      cache.store(bank, dns_name, data)
      _id_map(minion_id, dns_name)
  
      return ret