code: def create(cls, fqdn, duration, owner, admin, tech, bill, nameserver,
                 extra_parameter, background):
          
          fqdn = fqdn.lower()
          if not background and not cls.intty():
              background = True
  
          result = cls.call('domain.available', [fqdn])
          while result[fqdn] == 'pending':
              time.sleep(1)
              result = cls.call('domain.available', [fqdn])
  
          if result[fqdn] == 'unavailable':
              raise DomainNotAvailable('%s is not available' % fqdn)
  
          # retrieve handle of user and save it to configuration
          user_handle = cls.call('contact.info')['handle']
          cls.configure(True, 'api.handle', user_handle)
  
          owner_ = owner or user_handle
          admin_ = admin or user_handle
          tech_ = tech or user_handle
          bill_ = bill or user_handle
  
          domain_params = {
              'duration': duration,
              'owner': owner_,
              'admin': admin_,
              'tech': tech_,
              'bill': bill_,
          }
  
          if nameserver:
              domain_params['nameservers'] = nameserver
  
          if extra_parameter:
              domain_params['extra'] = {}
              for extra in extra_parameter:
                  domain_params['extra'][extra[0]] = extra[1]
  
          result = cls.call('domain.create', fqdn, domain_params)
          if background:
              return result
  
          # interactive mode, run a progress bar
          cls.echo('Creating your domain.')
          cls.display_progress(result)
          cls.echo('Your domain %s has been created.' % fqdn)
docs: Create a domain.