code: func (s *DescribeDimensionKeysInput) Validate() error {
  	invalidParams := request.ErrInvalidParams{Context: "DescribeDimensionKeysInput"}
  	if s.EndTime == nil {
  		invalidParams.Add(request.NewErrParamRequired("EndTime"))
  	}
  	if s.GroupBy == nil {
  		invalidParams.Add(request.NewErrParamRequired("GroupBy"))
  	}
  	if s.Identifier == nil {
  		invalidParams.Add(request.NewErrParamRequired("Identifier"))
  	}
  	if s.Metric == nil {
  		invalidParams.Add(request.NewErrParamRequired("Metric"))
  	}
  	if s.ServiceType == nil {
  		invalidParams.Add(request.NewErrParamRequired("ServiceType"))
  	}
  	if s.StartTime == nil {
  		invalidParams.Add(request.NewErrParamRequired("StartTime"))
  	}
  	if s.GroupBy != nil {
  		if err := s.GroupBy.Validate(); err != nil {
  			invalidParams.AddNested("GroupBy", err.(request.ErrInvalidParams))
  		}
  	}
  	if s.PartitionBy != nil {
  		if err := s.PartitionBy.Validate(); err != nil {
  			invalidParams.AddNested("PartitionBy", err.(request.ErrInvalidParams))
  		}
  	}
  
  	if invalidParams.Len() > 0 {
  		return invalidParams
  	}
  	return nil
  }
docs: // Validate inspects the fields of the type to determine if they are valid.