code: func UnmarshalNamespace(data []byte, opts ...MarshalOption) (*Namespace, error) {
  	if len(data) == 0 {
  		return nil, trace.BadParameter("missing namespace data")
  	}
  
  	cfg, err := collectOptions(opts)
  	if err != nil {
  		return nil, trace.Wrap(err)
  	}
  
  	// always skip schema validation on namespaces unmarshal
  	// the namespace is always created by teleport now
  	var namespace Namespace
  	if err := utils.FastUnmarshal(data, &namespace); err != nil {
  		return nil, trace.BadParameter(err.Error())
  	}
  
  	if err := namespace.CheckAndSetDefaults(); err != nil {
  		return nil, trace.Wrap(err)
  	}
  
  	if cfg.ID != 0 {
  		namespace.Metadata.ID = cfg.ID
  	}
  	if !cfg.Expires.IsZero() {
  		namespace.Metadata.Expires = &cfg.Expires
  	}
  
  	return &namespace, nil
  }
docs: // UnmarshalNamespace unmarshals role from JSON or YAML,
  // sets defaults and checks the schema