docs: func (s *EncoderSettings) Validate() error {
  	invalidParams := request.ErrInvalidParams{Context: "EncoderSettings"}
  	if s.AudioDescriptions == nil {
  		invalidParams.Add(request.NewErrParamRequired("AudioDescriptions"))
  	}
  	if s.OutputGroups == nil {
  		invalidParams.Add(request.NewErrParamRequired("OutputGroups"))
  	}
  	if s.TimecodeConfig == nil {
  		invalidParams.Add(request.NewErrParamRequired("TimecodeConfig"))
  	}
  	if s.VideoDescriptions == nil {
  		invalidParams.Add(request.NewErrParamRequired("VideoDescriptions"))
  	}
  	if s.AudioDescriptions != nil {
  		for i, v := range s.AudioDescriptions {
  			if v == nil {
  				continue
  			}
  			if err := v.Validate(); err != nil {
  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "AudioDescriptions", i), err.(request.ErrInvalidParams))
  			}
  		}
  	}
  	if s.AvailBlanking != nil {
  		if err := s.AvailBlanking.Validate(); err != nil {
  			invalidParams.AddNested("AvailBlanking", err.(request.ErrInvalidParams))
  		}
  	}
  	if s.AvailConfiguration != nil {
  		if err := s.AvailConfiguration.Validate(); err != nil {
  			invalidParams.AddNested("AvailConfiguration", err.(request.ErrInvalidParams))
  		}
  	}
  	if s.BlackoutSlate != nil {
  		if err := s.BlackoutSlate.Validate(); err != nil {
  			invalidParams.AddNested("BlackoutSlate", err.(request.ErrInvalidParams))
  		}
  	}
  	if s.CaptionDescriptions != nil {
  		for i, v := range s.CaptionDescriptions {
  			if v == nil {
  				continue
  			}
  			if err := v.Validate(); err != nil {
  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "CaptionDescriptions", i), err.(request.ErrInvalidParams))
  			}
  		}
  	}
  	if s.GlobalConfiguration != nil {
  		if err := s.GlobalConfiguration.Validate(); err != nil {
  			invalidParams.AddNested("GlobalConfiguration", err.(request.ErrInvalidParams))
  		}
  	}
  	if s.OutputGroups != nil {
  		for i, v := range s.OutputGroups {
  			if v == nil {
  				continue
  			}
  			if err := v.Validate(); err != nil {
  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "OutputGroups", i), err.(request.ErrInvalidParams))
  			}
  		}
  	}
  	if s.TimecodeConfig != nil {
  		if err := s.TimecodeConfig.Validate(); err != nil {
  			invalidParams.AddNested("TimecodeConfig", err.(request.ErrInvalidParams))
  		}
  	}
  	if s.VideoDescriptions != nil {
  		for i, v := range s.VideoDescriptions {
  			if v == nil {
  				continue
  			}
  			if err := v.Validate(); err != nil {
  				invalidParams.AddNested(fmt.Sprintf("%s[%v]", "VideoDescriptions", i), err.(request.ErrInvalidParams))
  			}
  		}
  	}
  
  	if invalidParams.Len() > 0 {
  		return invalidParams
  	}
  	return nil
  }