123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956(* generated by: awso-codegen generate-all --botocore-data vendor/botocore/botocore/data -o aws --runtime-dir lib/runtime/awso --cli-dir awso-cli *)openAwsoopen!Import[@@@warning"-32"]letservice=Service.bcm_recommended_actionsletapiVersion="2024-11-14"letendpointPrefix="bcm-recommended-actions"letserviceFullName="AWS Billing and Cost Management Recommended Actions"letsignatureVersion="v4"letprotocol="json"letglobalEndpoint=endpointPrefix^".amazonaws.com"lettargetPrefix="AWSBillingAndCostManagementRecommendedActions"letsimple_to_jsonto_valuex=Botodata.Json.value_to_json_scalar(to_valuex)letcomposed_to_jsonto_valuex=Botodata.Json.value_to_json(to_valuex)letto_queryto_valuex=Client.Query.of_value(to_valuex)letstructure_to_value_auxst~f=letfilter=function|(k,Somev)->Some(k,v)|_->Noneinletpairkv=(k,v)inletdefer_value(k,dv)=pairkdvin((List.filter_mapst~f:filter)|>(List.map~f:defer_value))|>(funx->`Structure(fx))letstructure_to_value=structure_to_value_aux~f:Fn.idletstructure_to_wrapped_value~wrapper~response=structure_to_value_aux~f:(funx->[(wrapper,(`Structurex));(response,(`Structure[]))])moduleFilterValue=structtypenonrect=stringletcontext_="FilterValue"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:1024)>>=(fun()->check_patterni~pattern:".*[\\S\\s]*.*")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"FilterValue"jletto_json=simple_to_jsonto_valueendmoduleString_=structtypenonrect=stringletcontext_="String"letmakei=iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"String"jletto_json=simple_to_jsonto_valueendmoduleNextStep=structtypenonrect=stringletcontext_="NextStep"letmakei=iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"NextStep"jletto_json=simple_to_jsonto_valueendmoduleFilterName=structtypenonrect=|FEATURE|SEVERITY|TYPE|Non_static_idofstringletmakei=iletto_string=function|FEATURE->"FEATURE"|SEVERITY->"SEVERITY"|TYPE->"TYPE"|Non_static_ids->sletof_string=function|"FEATURE"->FEATURE|"SEVERITY"->SEVERITY|"TYPE"->TYPE|x->Non_static_idxletto_valuex=`Enum(to_stringx)letto_queryv=to_queryto_valuevletto_headerx=to_stringxletof_xmlxml_arg0=of_string(string_of_xml~kind:"enumeration FilterName"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"FilterName"j)letto_json=simple_to_jsonto_valueendmoduleFilterValues=structtypenonrect=FilterValue.tlistletmakei=letopenResultinok_or_failwith(check_list_mini~min:1);iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:FilterValue.to_value))|>(funx->`Listx)letto_queryv=to_queryto_valuevletto_header_=failwithf"to_header is not implemented for List_shape objects"()letof_xmlx=make(List.map((Xml.all_childrenx)|>(List.filter~f:(function|`Datas->(matchStdlib.String.trimswith|""->false|_->true)|_->true)))~f:FilterValue.of_xml)letof_jsonj=list_of_json~kind:"FilterValues"~of_json:FilterValue.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleMatchOption=structtypenonrect=|EQUALS|NOT_EQUALS|Non_static_idofstringletmakei=iletto_string=function|EQUALS->"EQUALS"|NOT_EQUALS->"NOT_EQUALS"|Non_static_ids->sletof_string=function|"EQUALS"->EQUALS|"NOT_EQUALS"->NOT_EQUALS|x->Non_static_idxletto_valuex=`Enum(to_stringx)letto_queryv=to_queryto_valuevletto_headerx=to_stringxletof_xmlxml_arg0=of_string(string_of_xml~kind:"enumeration MatchOption"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"MatchOption"j)letto_json=simple_to_jsonto_valueendmoduleAccountId=structtypenonrect=stringletcontext_="AccountId"letmakei=letopenResultinok_or_failwith((check_string_mini~min:12)>>=(fun()->(check_string_maxi~max:12)>>=(fun()->check_patterni~pattern:"[0-9]{12}")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"AccountId"jletto_json=simple_to_jsonto_valueendmoduleActionType=structtypenonrect=|ADD_ALTERNATE_BILLING_CONTACT|CREATE_ANOMALY_MONITOR|CREATE_BUDGET|ENABLE_COST_OPTIMIZATION_HUB|MIGRATE_TO_GRANULAR_PERMISSIONS|PAYMENTS_DUE|PAYMENTS_PAST_DUE|REVIEW_ANOMALIES|REVIEW_BUDGET_ALERTS|REVIEW_BUDGETS_EXCEEDED|REVIEW_EXPIRING_RI|REVIEW_EXPIRING_SP|REVIEW_FREETIER_USAGE_ALERTS|REVIEW_FREETIER_CREDITS_REMAINING|REVIEW_FREETIER_DAYS_REMAINING|REVIEW_SAVINGS_OPPORTUNITY_RECOMMENDATIONS|UPDATE_EXPIRED_PAYMENT_METHOD|UPDATE_INVALID_PAYMENT_METHOD|UPDATE_TAX_EXEMPTION_CERTIFICATE|UPDATE_TAX_REGISTRATION_NUMBER|Non_static_idofstringletmakei=iletto_string=function|ADD_ALTERNATE_BILLING_CONTACT->"ADD_ALTERNATE_BILLING_CONTACT"|CREATE_ANOMALY_MONITOR->"CREATE_ANOMALY_MONITOR"|CREATE_BUDGET->"CREATE_BUDGET"|ENABLE_COST_OPTIMIZATION_HUB->"ENABLE_COST_OPTIMIZATION_HUB"|MIGRATE_TO_GRANULAR_PERMISSIONS->"MIGRATE_TO_GRANULAR_PERMISSIONS"|PAYMENTS_DUE->"PAYMENTS_DUE"|PAYMENTS_PAST_DUE->"PAYMENTS_PAST_DUE"|REVIEW_ANOMALIES->"REVIEW_ANOMALIES"|REVIEW_BUDGET_ALERTS->"REVIEW_BUDGET_ALERTS"|REVIEW_BUDGETS_EXCEEDED->"REVIEW_BUDGETS_EXCEEDED"|REVIEW_EXPIRING_RI->"REVIEW_EXPIRING_RI"|REVIEW_EXPIRING_SP->"REVIEW_EXPIRING_SP"|REVIEW_FREETIER_USAGE_ALERTS->"REVIEW_FREETIER_USAGE_ALERTS"|REVIEW_FREETIER_CREDITS_REMAINING->"REVIEW_FREETIER_CREDITS_REMAINING"|REVIEW_FREETIER_DAYS_REMAINING->"REVIEW_FREETIER_DAYS_REMAINING"|REVIEW_SAVINGS_OPPORTUNITY_RECOMMENDATIONS->"REVIEW_SAVINGS_OPPORTUNITY_RECOMMENDATIONS"|UPDATE_EXPIRED_PAYMENT_METHOD->"UPDATE_EXPIRED_PAYMENT_METHOD"|UPDATE_INVALID_PAYMENT_METHOD->"UPDATE_INVALID_PAYMENT_METHOD"|UPDATE_TAX_EXEMPTION_CERTIFICATE->"UPDATE_TAX_EXEMPTION_CERTIFICATE"|UPDATE_TAX_REGISTRATION_NUMBER->"UPDATE_TAX_REGISTRATION_NUMBER"|Non_static_ids->sletof_string=function|"ADD_ALTERNATE_BILLING_CONTACT"->ADD_ALTERNATE_BILLING_CONTACT|"CREATE_ANOMALY_MONITOR"->CREATE_ANOMALY_MONITOR|"CREATE_BUDGET"->CREATE_BUDGET|"ENABLE_COST_OPTIMIZATION_HUB"->ENABLE_COST_OPTIMIZATION_HUB|"MIGRATE_TO_GRANULAR_PERMISSIONS"->MIGRATE_TO_GRANULAR_PERMISSIONS|"PAYMENTS_DUE"->PAYMENTS_DUE|"PAYMENTS_PAST_DUE"->PAYMENTS_PAST_DUE|"REVIEW_ANOMALIES"->REVIEW_ANOMALIES|"REVIEW_BUDGET_ALERTS"->REVIEW_BUDGET_ALERTS|"REVIEW_BUDGETS_EXCEEDED"->REVIEW_BUDGETS_EXCEEDED|"REVIEW_EXPIRING_RI"->REVIEW_EXPIRING_RI|"REVIEW_EXPIRING_SP"->REVIEW_EXPIRING_SP|"REVIEW_FREETIER_USAGE_ALERTS"->REVIEW_FREETIER_USAGE_ALERTS|"REVIEW_FREETIER_CREDITS_REMAINING"->REVIEW_FREETIER_CREDITS_REMAINING|"REVIEW_FREETIER_DAYS_REMAINING"->REVIEW_FREETIER_DAYS_REMAINING|"REVIEW_SAVINGS_OPPORTUNITY_RECOMMENDATIONS"->REVIEW_SAVINGS_OPPORTUNITY_RECOMMENDATIONS|"UPDATE_EXPIRED_PAYMENT_METHOD"->UPDATE_EXPIRED_PAYMENT_METHOD|"UPDATE_INVALID_PAYMENT_METHOD"->UPDATE_INVALID_PAYMENT_METHOD|"UPDATE_TAX_EXEMPTION_CERTIFICATE"->UPDATE_TAX_EXEMPTION_CERTIFICATE|"UPDATE_TAX_REGISTRATION_NUMBER"->UPDATE_TAX_REGISTRATION_NUMBER|x->Non_static_idxletto_valuex=`Enum(to_stringx)letto_queryv=to_queryto_valuevletto_headerx=to_stringxletof_xmlxml_arg0=of_string(string_of_xml~kind:"enumeration ActionType"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ActionType"j)letto_json=simple_to_jsonto_valueendmoduleContext=structtypenonrect=(String_.t*String_.t)listletmakei=iletof_headerxs=make(List.filter_mapxs~f:(fun(k,v)->(Base.String.chop_prefixk~prefix:"x-amz-meta-")|>(Option.map~f:(funchopped->((String_.of_stringchopped),(String_.of_stringv))))))letto_valuexs=(xs|>(List.map~f:(fun(x,y)->(String_.to_valuex)|>(funx->(String_.to_valuey)|>(funy->(x,y))))))|>(funx->`Mapx)letto_queryv=to_queryto_valuevletto_header_=failwithf"to_header is not implemented for Map_shape objects"()letof_xml_=failwith"of_xml_converter_of_shape: Map_shape case not implemented"letof_jsonj=object_of_json~key_of_string:String_.of_string~of_json:String_.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleFeature=structtypenonrect=|ACCOUNT|BUDGETS|COST_ANOMALY_DETECTION|COST_OPTIMIZATION_HUB|FREE_TIER|IAM|PAYMENTS|RESERVATIONS|SAVINGS_PLANS|TAX_SETTINGS|Non_static_idofstringletmakei=iletto_string=function|ACCOUNT->"ACCOUNT"|BUDGETS->"BUDGETS"|COST_ANOMALY_DETECTION->"COST_ANOMALY_DETECTION"|COST_OPTIMIZATION_HUB->"COST_OPTIMIZATION_HUB"|FREE_TIER->"FREE_TIER"|IAM->"IAM"|PAYMENTS->"PAYMENTS"|RESERVATIONS->"RESERVATIONS"|SAVINGS_PLANS->"SAVINGS_PLANS"|TAX_SETTINGS->"TAX_SETTINGS"|Non_static_ids->sletof_string=function|"ACCOUNT"->ACCOUNT|"BUDGETS"->BUDGETS|"COST_ANOMALY_DETECTION"->COST_ANOMALY_DETECTION|"COST_OPTIMIZATION_HUB"->COST_OPTIMIZATION_HUB|"FREE_TIER"->FREE_TIER|"IAM"->IAM|"PAYMENTS"->PAYMENTS|"RESERVATIONS"->RESERVATIONS|"SAVINGS_PLANS"->SAVINGS_PLANS|"TAX_SETTINGS"->TAX_SETTINGS|x->Non_static_idxletto_valuex=`Enum(to_stringx)letto_queryv=to_queryto_valuevletto_headerx=to_stringxletof_xmlxml_arg0=of_string(string_of_xml~kind:"enumeration Feature"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"Feature"j)letto_json=simple_to_jsonto_valueendmoduleNextSteps=structtypenonrect=NextStep.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:NextStep.to_value))|>(funx->`Listx)letto_queryv=to_queryto_valuevletto_header_=failwithf"to_header is not implemented for List_shape objects"()letof_xmlx=make(List.map((Xml.all_childrenx)|>(List.filter~f:(function|`Datas->(matchStdlib.String.trimswith|""->false|_->true)|_->true)))~f:NextStep.of_xml)letof_jsonj=list_of_json~kind:"NextSteps"~of_json:NextStep.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleSeverity=structtypenonrect=|INFO|WARNING|CRITICAL|Non_static_idofstringletmakei=iletto_string=function|INFO->"INFO"|WARNING->"WARNING"|CRITICAL->"CRITICAL"|Non_static_ids->sletof_string=function|"INFO"->INFO|"WARNING"->WARNING|"CRITICAL"->CRITICAL|x->Non_static_idxletto_valuex=`Enum(to_stringx)letto_queryv=to_queryto_valuevletto_headerx=to_stringxletof_xmlxml_arg0=of_string(string_of_xml~kind:"enumeration Severity"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"Severity"j)letto_json=simple_to_jsonto_valueendmoduleValidationExceptionField=structtypenonrect={name:String_.toption[@ocaml.doc"Provides the name of the field that failed validation."];message:String_.toption[@ocaml.doc"Provides a message explaining why the field failed validation."]}letmake?name=fun?message->fun()->{name;message}letto_valuex=structure_to_value[("name",(Option.mapx.name~f:String_.to_value));("message",(Option.mapx.message~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmessage=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"message")inletname=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"name")inmake?message?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmessage=field_mapjson__"message"String_.of_jsoninletname=field_mapjson__"name"String_.of_jsoninmake?message?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Provides specific details about why a particular field failed validation."]moduleActionFilter=structtypenonrect={key:FilterName.t[@ocaml.doc"The category to filter on. Valid values are FEATURE for feature type, SEVERITY for severity level, and TYPE for recommendation type."];matchOption:MatchOption.t[@ocaml.doc"Specifies how to apply the filter. Use EQUALS to include matching results or NOT_EQUALS to exclude matching results."];values:FilterValues.t[@ocaml.doc"One or more values to match against the specified key."]}letcontext_="ActionFilter"letmake~key=fun~matchOption->fun~values->fun()->{key;matchOption;values}letto_valuex=structure_to_value[("key",(Some(FilterName.to_valuex.key)));("matchOption",(Some(MatchOption.to_valuex.matchOption)));("values",(Some(FilterValues.to_valuex.values)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letvalues=FilterValues.of_xml(Xml.child_exn~context:context_xml_arg0"values")inletmatchOption=MatchOption.of_xml(Xml.child_exn~context:context_xml_arg0"matchOption")inletkey=FilterName.of_xml(Xml.child_exn~context:context_xml_arg0"key")inmake~values~matchOption~key()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letvalues=field_map_exnjson__"values"FilterValues.of_jsoninletmatchOption=field_map_exnjson__"matchOption"MatchOption.of_jsoninletkey=field_map_exnjson__"key"FilterName.of_jsoninmake~values~matchOption~key()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Describes a filter that returns a more specific list of recommended actions."]moduleRecommendedAction=structtypenonrect={id:String_.toption[@ocaml.doc"The ID for the recommended action."];type_:ActionType.toption[@ocaml.doc"The type of action you can take by adopting the recommended action."];accountId:AccountId.toption[@ocaml.doc"The account that the recommended action is for."];severity:Severity.toption[@ocaml.doc"The severity associated with the recommended action."];feature:Feature.toption[@ocaml.doc"The feature associated with the recommended action."];context:Context.toption[@ocaml.doc"Context that applies to the recommended action."];nextSteps:NextSteps.toption[@ocaml.doc"The possible next steps to execute the recommended action."];lastUpdatedTimeStamp:String_.toption[@ocaml.doc"The time when the recommended action status was last updated."]}letmake?id=fun?type_->fun?accountId->fun?severity->fun?feature->fun?context->fun?nextSteps->fun?lastUpdatedTimeStamp->fun()->{id;type_;accountId;severity;feature;context;nextSteps;lastUpdatedTimeStamp}letto_valuex=structure_to_value[("id",(Option.mapx.id~f:String_.to_value));("type",(Option.mapx.type_~f:ActionType.to_value));("accountId",(Option.mapx.accountId~f:AccountId.to_value));("severity",(Option.mapx.severity~f:Severity.to_value));("feature",(Option.mapx.feature~f:Feature.to_value));("context",(Option.mapx.context~f:Context.to_value));("nextSteps",(Option.mapx.nextSteps~f:NextSteps.to_value));("lastUpdatedTimeStamp",(Option.mapx.lastUpdatedTimeStamp~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letlastUpdatedTimeStamp=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"lastUpdatedTimeStamp")inletnextSteps=(Option.map~f:NextSteps.of_xml)(Xml.childxml_arg0"nextSteps")inletcontext=(Option.map~f:Context.of_xml)(Xml.childxml_arg0"context")inletfeature=(Option.map~f:Feature.of_xml)(Xml.childxml_arg0"feature")inletseverity=(Option.map~f:Severity.of_xml)(Xml.childxml_arg0"severity")inletaccountId=(Option.map~f:AccountId.of_xml)(Xml.childxml_arg0"accountId")inlettype_=(Option.map~f:ActionType.of_xml)(Xml.childxml_arg0"type")inletid=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"id")inmake?lastUpdatedTimeStamp?nextSteps?context?feature?severity?accountId?type_?id()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letlastUpdatedTimeStamp=field_mapjson__"lastUpdatedTimeStamp"String_.of_jsoninletnextSteps=field_mapjson__"nextSteps"NextSteps.of_jsoninletcontext=field_mapjson__"context"Context.of_jsoninletfeature=field_mapjson__"feature"Feature.of_jsoninletseverity=field_mapjson__"severity"Severity.of_jsoninletaccountId=field_mapjson__"accountId"AccountId.of_jsoninlettype_=field_mapjson__"type"ActionType.of_jsoninletid=field_mapjson__"id"String_.of_jsoninmake?lastUpdatedTimeStamp?nextSteps?context?feature?severity?accountId?type_?id()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Describes a specific recommended action."]moduleValidationExceptionFieldList=structtypenonrect=ValidationExceptionField.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ValidationExceptionField.to_value))|>(funx->`Listx)letto_queryv=to_queryto_valuevletto_header_=failwithf"to_header is not implemented for List_shape objects"()letof_xmlx=make(List.map((Xml.all_childrenx)|>(List.filter~f:(function|`Datas->(matchStdlib.String.trimswith|""->false|_->true)|_->true)))~f:ValidationExceptionField.of_xml)letof_jsonj=list_of_json~kind:"ValidationExceptionFieldList"~of_json:ValidationExceptionField.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleValidationExceptionReason=structtypenonrect=|UnknownOperation|CannotParse|FieldValidationFailed|Other|Non_static_idofstringletmakei=iletto_string=function|UnknownOperation->"unknownOperation"|CannotParse->"cannotParse"|FieldValidationFailed->"fieldValidationFailed"|Other->"other"|Non_static_ids->sletof_string=function|"unknownOperation"->UnknownOperation|"cannotParse"->CannotParse|"fieldValidationFailed"->FieldValidationFailed|"other"->Other|x->Non_static_idxletto_valuex=`Enum(to_stringx)letto_queryv=to_queryto_valuevletto_headerx=to_stringxletof_xmlxml_arg0=of_string(string_of_xml~kind:"enumeration ValidationExceptionReason"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ValidationExceptionReason"j)letto_json=simple_to_jsonto_valueendmoduleActionFilterList=structtypenonrect=ActionFilter.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ActionFilter.to_value))|>(funx->`Listx)letto_queryv=to_queryto_valuevletto_header_=failwithf"to_header is not implemented for List_shape objects"()letof_xmlx=make(List.map((Xml.all_childrenx)|>(List.filter~f:(function|`Datas->(matchStdlib.String.trimswith|""->false|_->true)|_->true)))~f:ActionFilter.of_xml)letof_jsonj=list_of_json~kind:"ActionFilterList"~of_json:ActionFilter.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleAccessDeniedException=structtypenonrect={message:String_.toption}letmake?message=fun()->{message}letto_valuex=structure_to_value[("message",(Option.mapx.message~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmessage=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"message")inmake?message()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmessage=field_mapjson__"message"String_.of_jsoninmake?message()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"You do not have sufficient access to perform this action."]moduleInternalServerException=structtypenonrect={message:String_.toption}letmake?message=fun()->{message}letto_valuex=structure_to_value[("message",(Option.mapx.message~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmessage=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"message")inmake?message()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmessage=field_mapjson__"message"String_.of_jsoninmake?message()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"An unexpected error occurred during the processing of your request."]moduleNextToken=structtypenonrect=stringletcontext_="NextToken"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:8192)>>=(fun()->check_patterni~pattern:"[\\S\\s]*")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"NextToken"jletto_json=simple_to_jsonto_valueendmoduleRecommendedActions=structtypenonrect=RecommendedAction.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:RecommendedAction.to_value))|>(funx->`Listx)letto_queryv=to_queryto_valuevletto_header_=failwithf"to_header is not implemented for List_shape objects"()letof_xmlx=make(List.map((Xml.all_childrenx)|>(List.filter~f:(function|`Datas->(matchStdlib.String.trimswith|""->false|_->true)|_->true)))~f:RecommendedAction.of_xml)letof_jsonj=list_of_json~kind:"RecommendedActions"~of_json:RecommendedAction.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleThrottlingException=structtypenonrect={message:String_.toption}letmake?message=fun()->{message}letto_valuex=structure_to_value[("message",(Option.mapx.message~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmessage=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"message")inmake?message()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmessage=field_mapjson__"message"String_.of_jsoninmake?message()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The request was denied due to request throttling."]moduleValidationException=structtypenonrect={message:String_.toption;reason:ValidationExceptionReason.toption[@ocaml.doc"Provides a single, overarching explanation for the validation failure."];fieldList:ValidationExceptionFieldList.toption[@ocaml.doc"Lists each problematic field and why it failed validation."]}letmake?message=fun?reason->fun?fieldList->fun()->{message;reason;fieldList}letto_valuex=structure_to_value[("message",(Option.mapx.message~f:String_.to_value));("reason",(Option.mapx.reason~f:ValidationExceptionReason.to_value));("fieldList",(Option.mapx.fieldList~f:ValidationExceptionFieldList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letfieldList=(Option.map~f:ValidationExceptionFieldList.of_xml)(Xml.childxml_arg0"fieldList")inletreason=(Option.map~f:ValidationExceptionReason.of_xml)(Xml.childxml_arg0"reason")inletmessage=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"message")inmake?fieldList?reason?message()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letfieldList=field_mapjson__"fieldList"ValidationExceptionFieldList.of_jsoninletreason=field_mapjson__"reason"ValidationExceptionReason.of_jsoninletmessage=field_mapjson__"message"String_.of_jsoninmake?fieldList?reason?message()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The input fails to satisfy the constraints specified by an Amazon Web Services service."]moduleMaxResults=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:1000)>>=(fun()->check_int_mini~min:1));iletof_string=Int.of_stringletto_valuex=`Integerxletto_queryv=to_queryto_valuevletto_headerx=Int.to_stringxletof_xmlxml_arg0=Int.of_string(string_of_xml~kind:"an integer for MaxResults"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleRequestFilter=structtypenonrect={actions:ActionFilterList.toption[@ocaml.doc"A list of action filters that define criteria for filtering results. Each filter specifies a key, match option, and corresponding values to filter on."]}letmake?actions=fun()->{actions}letto_valuex=structure_to_value[("actions",(Option.mapx.actions~f:ActionFilterList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letactions=(Option.map~f:ActionFilterList.of_xml)(Xml.childxml_arg0"actions")inmake?actions()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letactions=field_mapjson__"actions"ActionFilterList.of_jsoninmake?actions()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Enables filtering of results based on specified action criteria. You can define multiple action filters to refine results using combinations of feature type, severity level, and recommendation type."]moduleListRecommendedActionsResponse=structtypenonrect={recommendedActions:RecommendedActions.toption[@ocaml.doc"The list of recommended actions that satisfy the filter criteria."];nextToken:NextToken.toption[@ocaml.doc"The pagination token that indicates the next set of results that you want to retrieve."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?recommendedActions=fun?nextToken->fun()->{recommendedActions;nextToken}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("recommendedActions",(Option.mapx.recommendedActions~f:RecommendedActions.to_value));("nextToken",(Option.mapx.nextToken~f:NextToken.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:NextToken.of_xml)(Xml.childxml_arg0"nextToken")inletrecommendedActions=(Option.map~f:RecommendedActions.of_xml)(Xml.childxml_arg0"recommendedActions")inmake?nextToken?recommendedActions()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"nextToken"NextToken.of_jsoninletrecommendedActions=field_mapjson__"recommendedActions"RecommendedActions.of_jsoninmake?nextToken?recommendedActions()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns a list of recommended actions that match the filter criteria."]moduleListRecommendedActionsRequest=structtypenonrect={filter:RequestFilter.toption[@ocaml.doc"The criteria that you want all returned recommended actions to match."];maxResults:MaxResults.toption[@ocaml.doc"The maximum number of results to return in the response."];nextToken:NextToken.toption[@ocaml.doc"The pagination token that indicates the next set of results that you want to retrieve."]}letmake?filter=fun?maxResults->fun?nextToken->fun()->{filter;maxResults;nextToken}letto_valuex=structure_to_value[("filter",(Option.mapx.filter~f:RequestFilter.to_value));("maxResults",(Option.mapx.maxResults~f:MaxResults.to_value));("nextToken",(Option.mapx.nextToken~f:NextToken.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:NextToken.of_xml)(Xml.childxml_arg0"nextToken")inletmaxResults=(Option.map~f:MaxResults.of_xml)(Xml.childxml_arg0"maxResults")inletfilter=(Option.map~f:RequestFilter.of_xml)(Xml.childxml_arg0"filter")inmake?nextToken?maxResults?filter()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"nextToken"NextToken.of_jsoninletmaxResults=field_mapjson__"maxResults"MaxResults.of_jsoninletfilter=field_mapjson__"filter"RequestFilter.of_jsoninmake?nextToken?maxResults?filter()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns a list of recommended actions that match the filter criteria."]