docs: def register_service(package_folder):
      """Register a honeycomb service.
  
      :param package_folder: Path to folder with service to load
      :returns: Validated service object
      :rtype: :func:`honeycomb.utils.defs.ServiceType`
      """
      logger.debug("registering service %s", package_folder)
      package_folder = os.path.realpath(package_folder)
      if not os.path.exists(package_folder):
          raise ServiceNotFound(os.path.basename(package_folder))
  
      json_config_path = os.path.join(package_folder, CONFIG_FILE_NAME)
      if not os.path.exists(json_config_path):
          raise ConfigFileNotFound(json_config_path)
  
      with open(json_config_path, "r") as f:
          config_json = json.load(f)
  
      # Validate service and alert config
      config_utils.validate_config(config_json, defs.SERVICE_ALERT_VALIDATE_FIELDS)
  
      config_utils.validate_config(config_json.get(defs.SERVICE_CONFIG_SECTION_KEY, {}),
                                   defs.SERVICE_CONFIG_VALIDATE_FIELDS)
      _validate_supported_platform(config_json)
      _validate_alert_configs(config_json)
      config_utils.validate_config_parameters(config_json,
                                              defs.SERVICE_ALLOWED_PARAMTER_KEYS,
                                              defs.SERVICE_ALLOWED_PARAMTER_TYPES)
  
      service_type = _create_service_object(config_json)
      service_type.alert_types = _create_alert_types(config_json, service_type)
  
      return service_type