// Code generated by smithy-go-codegen DO NOT EDIT.

package bedrockdataautomation

import (
	"context"
	"fmt"
	"github.com/aws/aws-sdk-go-v2/service/bedrockdataautomation/types"
	smithy "github.com/aws/smithy-go"
	"github.com/aws/smithy-go/middleware"
)

type validateOpCreateBlueprint struct {
}

func (*validateOpCreateBlueprint) ID() string {
	return "OperationInputValidation"
}

func (m *validateOpCreateBlueprint) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) (
	out middleware.InitializeOutput, metadata middleware.Metadata, err error,
) {
	input, ok := in.Parameters.(*CreateBlueprintInput)
	if !ok {
		return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters)
	}
	if err := validateOpCreateBlueprintInput(input); err != nil {
		return out, metadata, err
	}
	return next.HandleInitialize(ctx, in)
}

type validateOpCreateBlueprintVersion struct {
}

func (*validateOpCreateBlueprintVersion) ID() string {
	return "OperationInputValidation"
}

func (m *validateOpCreateBlueprintVersion) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) (
	out middleware.InitializeOutput, metadata middleware.Metadata, err error,
) {
	input, ok := in.Parameters.(*CreateBlueprintVersionInput)
	if !ok {
		return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters)
	}
	if err := validateOpCreateBlueprintVersionInput(input); err != nil {
		return out, metadata, err
	}
	return next.HandleInitialize(ctx, in)
}

type validateOpCreateDataAutomationProject struct {
}

func (*validateOpCreateDataAutomationProject) ID() string {
	return "OperationInputValidation"
}

func (m *validateOpCreateDataAutomationProject) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) (
	out middleware.InitializeOutput, metadata middleware.Metadata, err error,
) {
	input, ok := in.Parameters.(*CreateDataAutomationProjectInput)
	if !ok {
		return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters)
	}
	if err := validateOpCreateDataAutomationProjectInput(input); err != nil {
		return out, metadata, err
	}
	return next.HandleInitialize(ctx, in)
}

type validateOpDeleteBlueprint struct {
}

func (*validateOpDeleteBlueprint) ID() string {
	return "OperationInputValidation"
}

func (m *validateOpDeleteBlueprint) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) (
	out middleware.InitializeOutput, metadata middleware.Metadata, err error,
) {
	input, ok := in.Parameters.(*DeleteBlueprintInput)
	if !ok {
		return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters)
	}
	if err := validateOpDeleteBlueprintInput(input); err != nil {
		return out, metadata, err
	}
	return next.HandleInitialize(ctx, in)
}

type validateOpDeleteDataAutomationProject struct {
}

func (*validateOpDeleteDataAutomationProject) ID() string {
	return "OperationInputValidation"
}

func (m *validateOpDeleteDataAutomationProject) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) (
	out middleware.InitializeOutput, metadata middleware.Metadata, err error,
) {
	input, ok := in.Parameters.(*DeleteDataAutomationProjectInput)
	if !ok {
		return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters)
	}
	if err := validateOpDeleteDataAutomationProjectInput(input); err != nil {
		return out, metadata, err
	}
	return next.HandleInitialize(ctx, in)
}

type validateOpGetBlueprint struct {
}

func (*validateOpGetBlueprint) ID() string {
	return "OperationInputValidation"
}

func (m *validateOpGetBlueprint) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) (
	out middleware.InitializeOutput, metadata middleware.Metadata, err error,
) {
	input, ok := in.Parameters.(*GetBlueprintInput)
	if !ok {
		return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters)
	}
	if err := validateOpGetBlueprintInput(input); err != nil {
		return out, metadata, err
	}
	return next.HandleInitialize(ctx, in)
}

type validateOpGetDataAutomationProject struct {
}

func (*validateOpGetDataAutomationProject) ID() string {
	return "OperationInputValidation"
}

func (m *validateOpGetDataAutomationProject) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) (
	out middleware.InitializeOutput, metadata middleware.Metadata, err error,
) {
	input, ok := in.Parameters.(*GetDataAutomationProjectInput)
	if !ok {
		return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters)
	}
	if err := validateOpGetDataAutomationProjectInput(input); err != nil {
		return out, metadata, err
	}
	return next.HandleInitialize(ctx, in)
}

type validateOpListBlueprints struct {
}

func (*validateOpListBlueprints) ID() string {
	return "OperationInputValidation"
}

func (m *validateOpListBlueprints) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) (
	out middleware.InitializeOutput, metadata middleware.Metadata, err error,
) {
	input, ok := in.Parameters.(*ListBlueprintsInput)
	if !ok {
		return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters)
	}
	if err := validateOpListBlueprintsInput(input); err != nil {
		return out, metadata, err
	}
	return next.HandleInitialize(ctx, in)
}

type validateOpListDataAutomationProjects struct {
}

func (*validateOpListDataAutomationProjects) ID() string {
	return "OperationInputValidation"
}

func (m *validateOpListDataAutomationProjects) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) (
	out middleware.InitializeOutput, metadata middleware.Metadata, err error,
) {
	input, ok := in.Parameters.(*ListDataAutomationProjectsInput)
	if !ok {
		return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters)
	}
	if err := validateOpListDataAutomationProjectsInput(input); err != nil {
		return out, metadata, err
	}
	return next.HandleInitialize(ctx, in)
}

type validateOpListTagsForResource struct {
}

func (*validateOpListTagsForResource) ID() string {
	return "OperationInputValidation"
}

func (m *validateOpListTagsForResource) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) (
	out middleware.InitializeOutput, metadata middleware.Metadata, err error,
) {
	input, ok := in.Parameters.(*ListTagsForResourceInput)
	if !ok {
		return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters)
	}
	if err := validateOpListTagsForResourceInput(input); err != nil {
		return out, metadata, err
	}
	return next.HandleInitialize(ctx, in)
}

type validateOpTagResource struct {
}

func (*validateOpTagResource) ID() string {
	return "OperationInputValidation"
}

func (m *validateOpTagResource) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) (
	out middleware.InitializeOutput, metadata middleware.Metadata, err error,
) {
	input, ok := in.Parameters.(*TagResourceInput)
	if !ok {
		return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters)
	}
	if err := validateOpTagResourceInput(input); err != nil {
		return out, metadata, err
	}
	return next.HandleInitialize(ctx, in)
}

type validateOpUntagResource struct {
}

func (*validateOpUntagResource) ID() string {
	return "OperationInputValidation"
}

func (m *validateOpUntagResource) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) (
	out middleware.InitializeOutput, metadata middleware.Metadata, err error,
) {
	input, ok := in.Parameters.(*UntagResourceInput)
	if !ok {
		return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters)
	}
	if err := validateOpUntagResourceInput(input); err != nil {
		return out, metadata, err
	}
	return next.HandleInitialize(ctx, in)
}

type validateOpUpdateBlueprint struct {
}

func (*validateOpUpdateBlueprint) ID() string {
	return "OperationInputValidation"
}

func (m *validateOpUpdateBlueprint) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) (
	out middleware.InitializeOutput, metadata middleware.Metadata, err error,
) {
	input, ok := in.Parameters.(*UpdateBlueprintInput)
	if !ok {
		return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters)
	}
	if err := validateOpUpdateBlueprintInput(input); err != nil {
		return out, metadata, err
	}
	return next.HandleInitialize(ctx, in)
}

type validateOpUpdateDataAutomationProject struct {
}

func (*validateOpUpdateDataAutomationProject) ID() string {
	return "OperationInputValidation"
}

func (m *validateOpUpdateDataAutomationProject) HandleInitialize(ctx context.Context, in middleware.InitializeInput, next middleware.InitializeHandler) (
	out middleware.InitializeOutput, metadata middleware.Metadata, err error,
) {
	input, ok := in.Parameters.(*UpdateDataAutomationProjectInput)
	if !ok {
		return out, metadata, fmt.Errorf("unknown input parameters type %T", in.Parameters)
	}
	if err := validateOpUpdateDataAutomationProjectInput(input); err != nil {
		return out, metadata, err
	}
	return next.HandleInitialize(ctx, in)
}

func addOpCreateBlueprintValidationMiddleware(stack *middleware.Stack) error {
	return stack.Initialize.Add(&validateOpCreateBlueprint{}, middleware.After)
}

func addOpCreateBlueprintVersionValidationMiddleware(stack *middleware.Stack) error {
	return stack.Initialize.Add(&validateOpCreateBlueprintVersion{}, middleware.After)
}

func addOpCreateDataAutomationProjectValidationMiddleware(stack *middleware.Stack) error {
	return stack.Initialize.Add(&validateOpCreateDataAutomationProject{}, middleware.After)
}

func addOpDeleteBlueprintValidationMiddleware(stack *middleware.Stack) error {
	return stack.Initialize.Add(&validateOpDeleteBlueprint{}, middleware.After)
}

func addOpDeleteDataAutomationProjectValidationMiddleware(stack *middleware.Stack) error {
	return stack.Initialize.Add(&validateOpDeleteDataAutomationProject{}, middleware.After)
}

func addOpGetBlueprintValidationMiddleware(stack *middleware.Stack) error {
	return stack.Initialize.Add(&validateOpGetBlueprint{}, middleware.After)
}

func addOpGetDataAutomationProjectValidationMiddleware(stack *middleware.Stack) error {
	return stack.Initialize.Add(&validateOpGetDataAutomationProject{}, middleware.After)
}

func addOpListBlueprintsValidationMiddleware(stack *middleware.Stack) error {
	return stack.Initialize.Add(&validateOpListBlueprints{}, middleware.After)
}

func addOpListDataAutomationProjectsValidationMiddleware(stack *middleware.Stack) error {
	return stack.Initialize.Add(&validateOpListDataAutomationProjects{}, middleware.After)
}

func addOpListTagsForResourceValidationMiddleware(stack *middleware.Stack) error {
	return stack.Initialize.Add(&validateOpListTagsForResource{}, middleware.After)
}

func addOpTagResourceValidationMiddleware(stack *middleware.Stack) error {
	return stack.Initialize.Add(&validateOpTagResource{}, middleware.After)
}

func addOpUntagResourceValidationMiddleware(stack *middleware.Stack) error {
	return stack.Initialize.Add(&validateOpUntagResource{}, middleware.After)
}

func addOpUpdateBlueprintValidationMiddleware(stack *middleware.Stack) error {
	return stack.Initialize.Add(&validateOpUpdateBlueprint{}, middleware.After)
}

func addOpUpdateDataAutomationProjectValidationMiddleware(stack *middleware.Stack) error {
	return stack.Initialize.Add(&validateOpUpdateDataAutomationProject{}, middleware.After)
}

func validateAudioExtractionCategory(v *types.AudioExtractionCategory) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "AudioExtractionCategory"}
	if len(v.State) == 0 {
		invalidParams.Add(smithy.NewErrParamRequired("State"))
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateAudioStandardExtraction(v *types.AudioStandardExtraction) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "AudioStandardExtraction"}
	if v.Category == nil {
		invalidParams.Add(smithy.NewErrParamRequired("Category"))
	} else if v.Category != nil {
		if err := validateAudioExtractionCategory(v.Category); err != nil {
			invalidParams.AddNested("Category", err.(smithy.InvalidParamsError))
		}
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateAudioStandardGenerativeField(v *types.AudioStandardGenerativeField) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "AudioStandardGenerativeField"}
	if len(v.State) == 0 {
		invalidParams.Add(smithy.NewErrParamRequired("State"))
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateAudioStandardOutputConfiguration(v *types.AudioStandardOutputConfiguration) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "AudioStandardOutputConfiguration"}
	if v.Extraction != nil {
		if err := validateAudioStandardExtraction(v.Extraction); err != nil {
			invalidParams.AddNested("Extraction", err.(smithy.InvalidParamsError))
		}
	}
	if v.GenerativeField != nil {
		if err := validateAudioStandardGenerativeField(v.GenerativeField); err != nil {
			invalidParams.AddNested("GenerativeField", err.(smithy.InvalidParamsError))
		}
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateBlueprintFilter(v *types.BlueprintFilter) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "BlueprintFilter"}
	if v.BlueprintArn == nil {
		invalidParams.Add(smithy.NewErrParamRequired("BlueprintArn"))
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateBlueprintItem(v *types.BlueprintItem) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "BlueprintItem"}
	if v.BlueprintArn == nil {
		invalidParams.Add(smithy.NewErrParamRequired("BlueprintArn"))
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateBlueprintItems(v []types.BlueprintItem) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "BlueprintItems"}
	for i := range v {
		if err := validateBlueprintItem(&v[i]); err != nil {
			invalidParams.AddNested(fmt.Sprintf("[%d]", i), err.(smithy.InvalidParamsError))
		}
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateCustomOutputConfiguration(v *types.CustomOutputConfiguration) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "CustomOutputConfiguration"}
	if v.Blueprints != nil {
		if err := validateBlueprintItems(v.Blueprints); err != nil {
			invalidParams.AddNested("Blueprints", err.(smithy.InvalidParamsError))
		}
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateDataAutomationProjectFilter(v *types.DataAutomationProjectFilter) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "DataAutomationProjectFilter"}
	if v.ProjectArn == nil {
		invalidParams.Add(smithy.NewErrParamRequired("ProjectArn"))
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateDocumentBoundingBox(v *types.DocumentBoundingBox) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "DocumentBoundingBox"}
	if len(v.State) == 0 {
		invalidParams.Add(smithy.NewErrParamRequired("State"))
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateDocumentOutputAdditionalFileFormat(v *types.DocumentOutputAdditionalFileFormat) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "DocumentOutputAdditionalFileFormat"}
	if len(v.State) == 0 {
		invalidParams.Add(smithy.NewErrParamRequired("State"))
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateDocumentOutputFormat(v *types.DocumentOutputFormat) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "DocumentOutputFormat"}
	if v.TextFormat == nil {
		invalidParams.Add(smithy.NewErrParamRequired("TextFormat"))
	}
	if v.AdditionalFileFormat == nil {
		invalidParams.Add(smithy.NewErrParamRequired("AdditionalFileFormat"))
	} else if v.AdditionalFileFormat != nil {
		if err := validateDocumentOutputAdditionalFileFormat(v.AdditionalFileFormat); err != nil {
			invalidParams.AddNested("AdditionalFileFormat", err.(smithy.InvalidParamsError))
		}
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateDocumentStandardExtraction(v *types.DocumentStandardExtraction) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "DocumentStandardExtraction"}
	if v.Granularity == nil {
		invalidParams.Add(smithy.NewErrParamRequired("Granularity"))
	}
	if v.BoundingBox == nil {
		invalidParams.Add(smithy.NewErrParamRequired("BoundingBox"))
	} else if v.BoundingBox != nil {
		if err := validateDocumentBoundingBox(v.BoundingBox); err != nil {
			invalidParams.AddNested("BoundingBox", err.(smithy.InvalidParamsError))
		}
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateDocumentStandardGenerativeField(v *types.DocumentStandardGenerativeField) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "DocumentStandardGenerativeField"}
	if len(v.State) == 0 {
		invalidParams.Add(smithy.NewErrParamRequired("State"))
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateDocumentStandardOutputConfiguration(v *types.DocumentStandardOutputConfiguration) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "DocumentStandardOutputConfiguration"}
	if v.Extraction != nil {
		if err := validateDocumentStandardExtraction(v.Extraction); err != nil {
			invalidParams.AddNested("Extraction", err.(smithy.InvalidParamsError))
		}
	}
	if v.GenerativeField != nil {
		if err := validateDocumentStandardGenerativeField(v.GenerativeField); err != nil {
			invalidParams.AddNested("GenerativeField", err.(smithy.InvalidParamsError))
		}
	}
	if v.OutputFormat != nil {
		if err := validateDocumentOutputFormat(v.OutputFormat); err != nil {
			invalidParams.AddNested("OutputFormat", err.(smithy.InvalidParamsError))
		}
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateEncryptionConfiguration(v *types.EncryptionConfiguration) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "EncryptionConfiguration"}
	if v.KmsKeyId == nil {
		invalidParams.Add(smithy.NewErrParamRequired("KmsKeyId"))
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateImageBoundingBox(v *types.ImageBoundingBox) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "ImageBoundingBox"}
	if len(v.State) == 0 {
		invalidParams.Add(smithy.NewErrParamRequired("State"))
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateImageExtractionCategory(v *types.ImageExtractionCategory) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "ImageExtractionCategory"}
	if len(v.State) == 0 {
		invalidParams.Add(smithy.NewErrParamRequired("State"))
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateImageStandardExtraction(v *types.ImageStandardExtraction) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "ImageStandardExtraction"}
	if v.Category == nil {
		invalidParams.Add(smithy.NewErrParamRequired("Category"))
	} else if v.Category != nil {
		if err := validateImageExtractionCategory(v.Category); err != nil {
			invalidParams.AddNested("Category", err.(smithy.InvalidParamsError))
		}
	}
	if v.BoundingBox == nil {
		invalidParams.Add(smithy.NewErrParamRequired("BoundingBox"))
	} else if v.BoundingBox != nil {
		if err := validateImageBoundingBox(v.BoundingBox); err != nil {
			invalidParams.AddNested("BoundingBox", err.(smithy.InvalidParamsError))
		}
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateImageStandardGenerativeField(v *types.ImageStandardGenerativeField) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "ImageStandardGenerativeField"}
	if len(v.State) == 0 {
		invalidParams.Add(smithy.NewErrParamRequired("State"))
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateImageStandardOutputConfiguration(v *types.ImageStandardOutputConfiguration) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "ImageStandardOutputConfiguration"}
	if v.Extraction != nil {
		if err := validateImageStandardExtraction(v.Extraction); err != nil {
			invalidParams.AddNested("Extraction", err.(smithy.InvalidParamsError))
		}
	}
	if v.GenerativeField != nil {
		if err := validateImageStandardGenerativeField(v.GenerativeField); err != nil {
			invalidParams.AddNested("GenerativeField", err.(smithy.InvalidParamsError))
		}
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateStandardOutputConfiguration(v *types.StandardOutputConfiguration) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "StandardOutputConfiguration"}
	if v.Document != nil {
		if err := validateDocumentStandardOutputConfiguration(v.Document); err != nil {
			invalidParams.AddNested("Document", err.(smithy.InvalidParamsError))
		}
	}
	if v.Image != nil {
		if err := validateImageStandardOutputConfiguration(v.Image); err != nil {
			invalidParams.AddNested("Image", err.(smithy.InvalidParamsError))
		}
	}
	if v.Video != nil {
		if err := validateVideoStandardOutputConfiguration(v.Video); err != nil {
			invalidParams.AddNested("Video", err.(smithy.InvalidParamsError))
		}
	}
	if v.Audio != nil {
		if err := validateAudioStandardOutputConfiguration(v.Audio); err != nil {
			invalidParams.AddNested("Audio", err.(smithy.InvalidParamsError))
		}
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateTag(v *types.Tag) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "Tag"}
	if v.Key == nil {
		invalidParams.Add(smithy.NewErrParamRequired("Key"))
	}
	if v.Value == nil {
		invalidParams.Add(smithy.NewErrParamRequired("Value"))
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateTagList(v []types.Tag) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "TagList"}
	for i := range v {
		if err := validateTag(&v[i]); err != nil {
			invalidParams.AddNested(fmt.Sprintf("[%d]", i), err.(smithy.InvalidParamsError))
		}
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateVideoBoundingBox(v *types.VideoBoundingBox) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "VideoBoundingBox"}
	if len(v.State) == 0 {
		invalidParams.Add(smithy.NewErrParamRequired("State"))
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateVideoExtractionCategory(v *types.VideoExtractionCategory) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "VideoExtractionCategory"}
	if len(v.State) == 0 {
		invalidParams.Add(smithy.NewErrParamRequired("State"))
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateVideoStandardExtraction(v *types.VideoStandardExtraction) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "VideoStandardExtraction"}
	if v.Category == nil {
		invalidParams.Add(smithy.NewErrParamRequired("Category"))
	} else if v.Category != nil {
		if err := validateVideoExtractionCategory(v.Category); err != nil {
			invalidParams.AddNested("Category", err.(smithy.InvalidParamsError))
		}
	}
	if v.BoundingBox == nil {
		invalidParams.Add(smithy.NewErrParamRequired("BoundingBox"))
	} else if v.BoundingBox != nil {
		if err := validateVideoBoundingBox(v.BoundingBox); err != nil {
			invalidParams.AddNested("BoundingBox", err.(smithy.InvalidParamsError))
		}
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateVideoStandardGenerativeField(v *types.VideoStandardGenerativeField) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "VideoStandardGenerativeField"}
	if len(v.State) == 0 {
		invalidParams.Add(smithy.NewErrParamRequired("State"))
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateVideoStandardOutputConfiguration(v *types.VideoStandardOutputConfiguration) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "VideoStandardOutputConfiguration"}
	if v.Extraction != nil {
		if err := validateVideoStandardExtraction(v.Extraction); err != nil {
			invalidParams.AddNested("Extraction", err.(smithy.InvalidParamsError))
		}
	}
	if v.GenerativeField != nil {
		if err := validateVideoStandardGenerativeField(v.GenerativeField); err != nil {
			invalidParams.AddNested("GenerativeField", err.(smithy.InvalidParamsError))
		}
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateOpCreateBlueprintInput(v *CreateBlueprintInput) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "CreateBlueprintInput"}
	if v.BlueprintName == nil {
		invalidParams.Add(smithy.NewErrParamRequired("BlueprintName"))
	}
	if len(v.Type) == 0 {
		invalidParams.Add(smithy.NewErrParamRequired("Type"))
	}
	if v.Schema == nil {
		invalidParams.Add(smithy.NewErrParamRequired("Schema"))
	}
	if v.EncryptionConfiguration != nil {
		if err := validateEncryptionConfiguration(v.EncryptionConfiguration); err != nil {
			invalidParams.AddNested("EncryptionConfiguration", err.(smithy.InvalidParamsError))
		}
	}
	if v.Tags != nil {
		if err := validateTagList(v.Tags); err != nil {
			invalidParams.AddNested("Tags", err.(smithy.InvalidParamsError))
		}
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateOpCreateBlueprintVersionInput(v *CreateBlueprintVersionInput) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "CreateBlueprintVersionInput"}
	if v.BlueprintArn == nil {
		invalidParams.Add(smithy.NewErrParamRequired("BlueprintArn"))
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateOpCreateDataAutomationProjectInput(v *CreateDataAutomationProjectInput) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "CreateDataAutomationProjectInput"}
	if v.ProjectName == nil {
		invalidParams.Add(smithy.NewErrParamRequired("ProjectName"))
	}
	if v.StandardOutputConfiguration == nil {
		invalidParams.Add(smithy.NewErrParamRequired("StandardOutputConfiguration"))
	} else if v.StandardOutputConfiguration != nil {
		if err := validateStandardOutputConfiguration(v.StandardOutputConfiguration); err != nil {
			invalidParams.AddNested("StandardOutputConfiguration", err.(smithy.InvalidParamsError))
		}
	}
	if v.CustomOutputConfiguration != nil {
		if err := validateCustomOutputConfiguration(v.CustomOutputConfiguration); err != nil {
			invalidParams.AddNested("CustomOutputConfiguration", err.(smithy.InvalidParamsError))
		}
	}
	if v.EncryptionConfiguration != nil {
		if err := validateEncryptionConfiguration(v.EncryptionConfiguration); err != nil {
			invalidParams.AddNested("EncryptionConfiguration", err.(smithy.InvalidParamsError))
		}
	}
	if v.Tags != nil {
		if err := validateTagList(v.Tags); err != nil {
			invalidParams.AddNested("Tags", err.(smithy.InvalidParamsError))
		}
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateOpDeleteBlueprintInput(v *DeleteBlueprintInput) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "DeleteBlueprintInput"}
	if v.BlueprintArn == nil {
		invalidParams.Add(smithy.NewErrParamRequired("BlueprintArn"))
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateOpDeleteDataAutomationProjectInput(v *DeleteDataAutomationProjectInput) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "DeleteDataAutomationProjectInput"}
	if v.ProjectArn == nil {
		invalidParams.Add(smithy.NewErrParamRequired("ProjectArn"))
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateOpGetBlueprintInput(v *GetBlueprintInput) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "GetBlueprintInput"}
	if v.BlueprintArn == nil {
		invalidParams.Add(smithy.NewErrParamRequired("BlueprintArn"))
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateOpGetDataAutomationProjectInput(v *GetDataAutomationProjectInput) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "GetDataAutomationProjectInput"}
	if v.ProjectArn == nil {
		invalidParams.Add(smithy.NewErrParamRequired("ProjectArn"))
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateOpListBlueprintsInput(v *ListBlueprintsInput) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "ListBlueprintsInput"}
	if v.ProjectFilter != nil {
		if err := validateDataAutomationProjectFilter(v.ProjectFilter); err != nil {
			invalidParams.AddNested("ProjectFilter", err.(smithy.InvalidParamsError))
		}
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateOpListDataAutomationProjectsInput(v *ListDataAutomationProjectsInput) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "ListDataAutomationProjectsInput"}
	if v.BlueprintFilter != nil {
		if err := validateBlueprintFilter(v.BlueprintFilter); err != nil {
			invalidParams.AddNested("BlueprintFilter", err.(smithy.InvalidParamsError))
		}
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateOpListTagsForResourceInput(v *ListTagsForResourceInput) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "ListTagsForResourceInput"}
	if v.ResourceARN == nil {
		invalidParams.Add(smithy.NewErrParamRequired("ResourceARN"))
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateOpTagResourceInput(v *TagResourceInput) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "TagResourceInput"}
	if v.ResourceARN == nil {
		invalidParams.Add(smithy.NewErrParamRequired("ResourceARN"))
	}
	if v.Tags == nil {
		invalidParams.Add(smithy.NewErrParamRequired("Tags"))
	} else if v.Tags != nil {
		if err := validateTagList(v.Tags); err != nil {
			invalidParams.AddNested("Tags", err.(smithy.InvalidParamsError))
		}
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateOpUntagResourceInput(v *UntagResourceInput) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "UntagResourceInput"}
	if v.ResourceARN == nil {
		invalidParams.Add(smithy.NewErrParamRequired("ResourceARN"))
	}
	if v.TagKeys == nil {
		invalidParams.Add(smithy.NewErrParamRequired("TagKeys"))
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateOpUpdateBlueprintInput(v *UpdateBlueprintInput) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "UpdateBlueprintInput"}
	if v.BlueprintArn == nil {
		invalidParams.Add(smithy.NewErrParamRequired("BlueprintArn"))
	}
	if v.Schema == nil {
		invalidParams.Add(smithy.NewErrParamRequired("Schema"))
	}
	if v.EncryptionConfiguration != nil {
		if err := validateEncryptionConfiguration(v.EncryptionConfiguration); err != nil {
			invalidParams.AddNested("EncryptionConfiguration", err.(smithy.InvalidParamsError))
		}
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}

func validateOpUpdateDataAutomationProjectInput(v *UpdateDataAutomationProjectInput) error {
	if v == nil {
		return nil
	}
	invalidParams := smithy.InvalidParamsError{Context: "UpdateDataAutomationProjectInput"}
	if v.ProjectArn == nil {
		invalidParams.Add(smithy.NewErrParamRequired("ProjectArn"))
	}
	if v.StandardOutputConfiguration == nil {
		invalidParams.Add(smithy.NewErrParamRequired("StandardOutputConfiguration"))
	} else if v.StandardOutputConfiguration != nil {
		if err := validateStandardOutputConfiguration(v.StandardOutputConfiguration); err != nil {
			invalidParams.AddNested("StandardOutputConfiguration", err.(smithy.InvalidParamsError))
		}
	}
	if v.CustomOutputConfiguration != nil {
		if err := validateCustomOutputConfiguration(v.CustomOutputConfiguration); err != nil {
			invalidParams.AddNested("CustomOutputConfiguration", err.(smithy.InvalidParamsError))
		}
	}
	if v.EncryptionConfiguration != nil {
		if err := validateEncryptionConfiguration(v.EncryptionConfiguration); err != nil {
			invalidParams.AddNested("EncryptionConfiguration", err.(smithy.InvalidParamsError))
		}
	}
	if invalidParams.Len() > 0 {
		return invalidParams
	} else {
		return nil
	}
}
