12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711(* 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.compute_optimizer_automationletapiVersion="2025-09-22"letendpointPrefix="aco-automation"letserviceFullName="Compute Optimizer Automation"letsignatureVersion="v4"letprotocol="json"letglobalEndpoint=endpointPrefix^".amazonaws.com"lettargetPrefix="ComputeOptimizerAutomationService"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[]))])moduleInteger=structtypenonrect=intletmakei=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 Integer"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_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_valueendmoduleDouble=structtypenonrect=floatletmakei=iletof_string=Float.of_stringletto_valuex=`Doublexletto_queryv=to_queryto_valuevletto_headerx=Stdlib.Float.to_stringxletof_xmlxml_arg0=Float.of_string(string_of_xml~kind:"a double"xml_arg0)letof_jsonj=float_of_json~kind:"a double"jletto_json=simple_to_jsonto_valueendmoduleStringCriteriaValue=structtypenonrect=stringletcontext_="StringCriteriaValue"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:512)>>=(fun()->check_patterni~pattern:"[\\w\\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:"StringCriteriaValue"jletto_json=simple_to_jsonto_valueendmoduleEbsVolumeConfiguration=structtypenonrect={type_:String_.toption[@ocaml.doc"The EBS volume type, such as gp2, gp3, io1, io2, st1, or sc1."];sizeInGib:Integer.toption[@ocaml.doc"The size of the EBS volume in gibibytes (GiB)."];iops:Integer.toption[@ocaml.doc"The number of I/O operations per second (IOPS) provisioned for the volume."];throughput:Integer.toption[@ocaml.doc"The throughput in MiB/s provisioned for the volume (applicable to gp3, io1, and io2bx volumes)."]}letmake?type_=fun?sizeInGib->fun?iops->fun?throughput->fun()->{type_;sizeInGib;iops;throughput}letto_valuex=structure_to_value[("type",(Option.mapx.type_~f:String_.to_value));("sizeInGib",(Option.mapx.sizeInGib~f:Integer.to_value));("iops",(Option.mapx.iops~f:Integer.to_value));("throughput",(Option.mapx.throughput~f:Integer.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letthroughput=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"throughput")inletiops=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"iops")inletsizeInGib=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"sizeInGib")inlettype_=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"type")inmake?throughput?iops?sizeInGib?type_()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letthroughput=field_mapjson__"throughput"Integer.of_jsoninletiops=field_mapjson__"iops"Integer.of_jsoninletsizeInGib=field_mapjson__"sizeInGib"Integer.of_jsoninlettype_=field_mapjson__"type"String_.of_jsoninmake?throughput?iops?sizeInGib?type_()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Configuration details for an Amazon EBS volume."]moduleTagKey=structtypenonrect=stringletcontext_="TagKey"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:128)>>=(fun()->check_patterni~pattern:"[\\w\\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:"TagKey"jletto_json=simple_to_jsonto_valueendmoduleTagValue=structtypenonrect=stringletcontext_="TagValue"letmakei=letopenResultinok_or_failwith((check_string_mini~min:0)>>=(fun()->(check_string_maxi~max:256)>>=(fun()->check_patterni~pattern:"[\\w\\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:"TagValue"jletto_json=simple_to_jsonto_valueendmoduleSavingsEstimationMode=structtypenonrect=|BeforeDiscount|AfterDiscount|Non_static_idofstringletmakei=iletto_string=function|BeforeDiscount->"BeforeDiscount"|AfterDiscount->"AfterDiscount"|Non_static_ids->sletof_string=function|"BeforeDiscount"->BeforeDiscount|"AfterDiscount"->AfterDiscount|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 SavingsEstimationMode"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"SavingsEstimationMode"j)letto_json=simple_to_jsonto_valueendmoduleAccountId=structtypenonrect=stringletcontext_="AccountId"letmakei=letopenResultinok_or_failwith(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_valueendmoduleSummaryDimensionKey=structtypenonrect=|EventStatus|Non_static_idofstringletmakei=iletto_string=function|EventStatus->"EventStatus"|Non_static_ids->sletof_string=function|"EventStatus"->EventStatus|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 SummaryDimensionKey"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"SummaryDimensionKey"j)letto_json=simple_to_jsonto_valueendmoduleComparisonOperator=structtypenonrect=|StringEquals|StringNotEquals|StringEqualsIgnoreCase|StringNotEqualsIgnoreCase|StringLike|StringNotLike|NumericEquals|NumericNotEquals|NumericLessThan|NumericLessThanEquals|NumericGreaterThan|NumericGreaterThanEquals|Non_static_idofstringletmakei=iletto_string=function|StringEquals->"StringEquals"|StringNotEquals->"StringNotEquals"|StringEqualsIgnoreCase->"StringEqualsIgnoreCase"|StringNotEqualsIgnoreCase->"StringNotEqualsIgnoreCase"|StringLike->"StringLike"|StringNotLike->"StringNotLike"|NumericEquals->"NumericEquals"|NumericNotEquals->"NumericNotEquals"|NumericLessThan->"NumericLessThan"|NumericLessThanEquals->"NumericLessThanEquals"|NumericGreaterThan->"NumericGreaterThan"|NumericGreaterThanEquals->"NumericGreaterThanEquals"|Non_static_ids->sletof_string=function|"StringEquals"->StringEquals|"StringNotEquals"->StringNotEquals|"StringEqualsIgnoreCase"->StringEqualsIgnoreCase|"StringNotEqualsIgnoreCase"->StringNotEqualsIgnoreCase|"StringLike"->StringLike|"StringNotLike"->StringNotLike|"NumericEquals"->NumericEquals|"NumericNotEquals"->NumericNotEquals|"NumericLessThan"->NumericLessThan|"NumericLessThanEquals"->NumericLessThanEquals|"NumericGreaterThan"->NumericGreaterThan|"NumericGreaterThanEquals"->NumericGreaterThanEquals|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 ComparisonOperator"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ComparisonOperator"j)letto_json=simple_to_jsonto_valueendmoduleDoubleList=structtypenonrect=Double.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:Double.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:Double.of_xml)letof_jsonj=list_of_json~kind:"DoubleList"~of_json:Double.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleIntegerList=structtypenonrect=Integer.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:Integer.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:Integer.of_xml)letof_jsonj=list_of_json~kind:"IntegerList"~of_json:Integer.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleStringCriteriaValues=structtypenonrect=StringCriteriaValue.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:StringCriteriaValue.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:StringCriteriaValue.of_xml)letof_jsonj=list_of_json~kind:"StringCriteriaValues"~of_json:StringCriteriaValue.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleEbsVolume=structtypenonrect={configuration:EbsVolumeConfiguration.toption[@ocaml.doc"The configuration details of the EBS volume, including type, size, IOPS, and throughput."]}letmake?configuration=fun()->{configuration}letto_valuex=structure_to_value[("configuration",(Option.mapx.configuration~f:EbsVolumeConfiguration.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letconfiguration=(Option.map~f:EbsVolumeConfiguration.of_xml)(Xml.childxml_arg0"configuration")inmake?configuration()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letconfiguration=field_mapjson__"configuration"EbsVolumeConfiguration.of_jsoninmake?configuration()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Represents an Amazon EBS volume with its configuration and snapshot usage information."]moduleTag=structtypenonrect={key:TagKey.t[@ocaml.doc"The tag key, which can be up to 128 characters long."];value:TagValue.t[@ocaml.doc"The tag value, which can be up to 256 characters long."]}letcontext_="Tag"letmake~key=fun~value->fun()->{key;value}letto_valuex=structure_to_value[("key",(Some(TagKey.to_valuex.key)));("value",(Some(TagValue.to_valuex.value)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letvalue=TagValue.of_xml(Xml.child_exn~context:context_xml_arg0"value")inletkey=TagKey.of_xml(Xml.child_exn~context:context_xml_arg0"key")inmake~value~key()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letvalue=field_map_exnjson__"value"TagValue.of_jsoninletkey=field_map_exnjson__"key"TagKey.of_jsoninmake~value~key()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A key-value pair used to categorize and organize Amazon Web Services resources and automation rules."]moduleFilterValue=structtypenonrect=stringletcontext_="FilterValue"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:255)>>=(fun()->check_patterni~pattern:"[a-zA-Z0-9\\-_\\.\\*\\?\\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_valueendmoduleEstimatedMonthlySavings=structtypenonrect={currency:String_.toption[@ocaml.doc"The currency of the estimated savings."];beforeDiscountSavings:Double.toption[@ocaml.doc"The estimated monthly savings before applying any discounts."];afterDiscountSavings:Double.toption[@ocaml.doc"The estimated monthly savings after applying any discounts."];savingsEstimationMode:SavingsEstimationMode.toption[@ocaml.doc"The mode used to calculate savings, either BeforeDiscount or AfterDiscount."]}letmake?currency=fun?beforeDiscountSavings->fun?afterDiscountSavings->fun?savingsEstimationMode->fun()->{currency;beforeDiscountSavings;afterDiscountSavings;savingsEstimationMode}letto_valuex=structure_to_value[("currency",(Option.mapx.currency~f:String_.to_value));("beforeDiscountSavings",(Option.mapx.beforeDiscountSavings~f:Double.to_value));("afterDiscountSavings",(Option.mapx.afterDiscountSavings~f:Double.to_value));("savingsEstimationMode",(Option.mapx.savingsEstimationMode~f:SavingsEstimationMode.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letsavingsEstimationMode=(Option.map~f:SavingsEstimationMode.of_xml)(Xml.childxml_arg0"savingsEstimationMode")inletafterDiscountSavings=(Option.map~f:Double.of_xml)(Xml.childxml_arg0"afterDiscountSavings")inletbeforeDiscountSavings=(Option.map~f:Double.of_xml)(Xml.childxml_arg0"beforeDiscountSavings")inletcurrency=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"currency")inmake?savingsEstimationMode?afterDiscountSavings?beforeDiscountSavings?currency()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letsavingsEstimationMode=field_mapjson__"savingsEstimationMode"SavingsEstimationMode.of_jsoninletafterDiscountSavings=field_mapjson__"afterDiscountSavings"Double.of_jsoninletbeforeDiscountSavings=field_mapjson__"beforeDiscountSavings"Double.of_jsoninletcurrency=field_mapjson__"currency"String_.of_jsoninmake?savingsEstimationMode?afterDiscountSavings?beforeDiscountSavings?currency()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about estimated monthly cost savings."]moduleOrganizationConfigurationAccountIds=structtypenonrect=AccountId.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:50)>>=(fun()->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:AccountId.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:AccountId.of_xml)letof_jsonj=list_of_json~kind:"OrganizationConfigurationAccountIds"~of_json:AccountId.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleRuleApplyOrder=structtypenonrect=|BeforeAccountRules|AfterAccountRules|Non_static_idofstringletmakei=iletto_string=function|BeforeAccountRules->"BeforeAccountRules"|AfterAccountRules->"AfterAccountRules"|Non_static_ids->sletof_string=function|"BeforeAccountRules"->BeforeAccountRules|"AfterAccountRules"->AfterAccountRules|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 RuleApplyOrder"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"RuleApplyOrder"j)letto_json=simple_to_jsonto_valueendmoduleRecommendedActionType=structtypenonrect=|SnapshotAndDeleteUnattachedEbsVolume|UpgradeEbsVolumeType|Non_static_idofstringletmakei=iletto_string=function|SnapshotAndDeleteUnattachedEbsVolume->"SnapshotAndDeleteUnattachedEbsVolume"|UpgradeEbsVolumeType->"UpgradeEbsVolumeType"|Non_static_ids->sletof_string=function|"SnapshotAndDeleteUnattachedEbsVolume"->SnapshotAndDeleteUnattachedEbsVolume|"UpgradeEbsVolumeType"->UpgradeEbsVolumeType|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 RecommendedActionType"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"RecommendedActionType"j)letto_json=simple_to_jsonto_valueendmoduleScheduleExecutionWindowInMinutesInteger=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:1440)>>=(fun()->check_int_mini~min:60));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 ScheduleExecutionWindowInMinutesInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleSummaryDimension=structtypenonrect={key:SummaryDimensionKey.toption[@ocaml.doc"The dimension key used for categorizing summary data."];value:String_.toption[@ocaml.doc"The specific value for this dimension key used in the summary grouping."]}letmake?key=fun?value->fun()->{key;value}letto_valuex=structure_to_value[("key",(Option.mapx.key~f:SummaryDimensionKey.to_value));("value",(Option.mapx.value~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letvalue=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"value")inletkey=(Option.map~f:SummaryDimensionKey.of_xml)(Xml.childxml_arg0"key")inmake?value?key()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letvalue=field_mapjson__"value"String_.of_jsoninletkey=field_mapjson__"key"SummaryDimensionKey.of_jsoninmake?value?key()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A key-value pair used to categorize and group summary data for analysis and reporting."]moduleTimestamp=structtypenonrect=stringletmakei=iletof_stringx=xletto_valuex=`Timestampxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=string_of_xml~kind:"a timestamp"letof_json=timestamp_of_jsonletto_json=simple_to_jsonto_valueendmoduleDoubleCriteriaCondition=structtypenonrect={comparison:ComparisonOperator.toption[@ocaml.doc"The comparison operator to use, such as equals, greater than, less than, etc."];values:DoubleList.toption[@ocaml.doc"The list of double values to compare against using the specified comparison operator."]}letmake?comparison=fun?values->fun()->{comparison;values}letto_valuex=structure_to_value[("comparison",(Option.mapx.comparison~f:ComparisonOperator.to_value));("values",(Option.mapx.values~f:DoubleList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letvalues=(Option.map~f:DoubleList.of_xml)(Xml.childxml_arg0"values")inletcomparison=(Option.map~f:ComparisonOperator.of_xml)(Xml.childxml_arg0"comparison")inmake?values?comparison()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letvalues=field_mapjson__"values"DoubleList.of_jsoninletcomparison=field_mapjson__"comparison"ComparisonOperator.of_jsoninmake?values?comparison()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Defines a condition for filtering based on double/floating-point numeric values with comparison operators."]moduleIntegerCriteriaCondition=structtypenonrect={comparison:ComparisonOperator.toption[@ocaml.doc"The comparison operator to use, such as equals, greater than, less than, etc."];values:IntegerList.toption[@ocaml.doc"The list of integer values to compare against using the specified comparison operator."]}letmake?comparison=fun?values->fun()->{comparison;values}letto_valuex=structure_to_value[("comparison",(Option.mapx.comparison~f:ComparisonOperator.to_value));("values",(Option.mapx.values~f:IntegerList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letvalues=(Option.map~f:IntegerList.of_xml)(Xml.childxml_arg0"values")inletcomparison=(Option.map~f:ComparisonOperator.of_xml)(Xml.childxml_arg0"comparison")inmake?values?comparison()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letvalues=field_mapjson__"values"IntegerList.of_jsoninletcomparison=field_mapjson__"comparison"ComparisonOperator.of_jsoninmake?values?comparison()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Defines a condition for filtering based on integer values with comparison operators."]moduleResourceTagsCriteriaCondition=structtypenonrect={comparison:ComparisonOperator.toption[@ocaml.doc"The comparison operator used to evaluate the tag criteria, such as equals, not equals, or contains."];key:StringCriteriaValue.toption[@ocaml.doc"The tag key to use for comparison when filtering resources."];values:StringCriteriaValues.toption[@ocaml.doc"List of tag values to compare against when filtering resources."]}letmake?comparison=fun?key->fun?values->fun()->{comparison;key;values}letto_valuex=structure_to_value[("comparison",(Option.mapx.comparison~f:ComparisonOperator.to_value));("key",(Option.mapx.key~f:StringCriteriaValue.to_value));("values",(Option.mapx.values~f:StringCriteriaValues.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letvalues=(Option.map~f:StringCriteriaValues.of_xml)(Xml.childxml_arg0"values")inletkey=(Option.map~f:StringCriteriaValue.of_xml)(Xml.childxml_arg0"key")inletcomparison=(Option.map~f:ComparisonOperator.of_xml)(Xml.childxml_arg0"comparison")inmake?values?key?comparison()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letvalues=field_mapjson__"values"StringCriteriaValues.of_jsoninletkey=field_mapjson__"key"StringCriteriaValue.of_jsoninletcomparison=field_mapjson__"comparison"ComparisonOperator.of_jsoninmake?values?key?comparison()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Criteria condition for filtering resources based on their tags, including comparison operators and values."]moduleStringCriteriaCondition=structtypenonrect={comparison:ComparisonOperator.toption[@ocaml.doc"The comparison operator used to evaluate the string criteria, such as equals, not equals, or contains."];values:StringCriteriaValues.toption[@ocaml.doc"List of string values to compare against when applying the criteria condition."]}letmake?comparison=fun?values->fun()->{comparison;values}letto_valuex=structure_to_value[("comparison",(Option.mapx.comparison~f:ComparisonOperator.to_value));("values",(Option.mapx.values~f:StringCriteriaValues.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letvalues=(Option.map~f:StringCriteriaValues.of_xml)(Xml.childxml_arg0"values")inletcomparison=(Option.map~f:ComparisonOperator.of_xml)(Xml.childxml_arg0"comparison")inmake?values?comparison()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letvalues=field_mapjson__"values"StringCriteriaValues.of_jsoninletcomparison=field_mapjson__"comparison"ComparisonOperator.of_jsoninmake?values?comparison()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Criteria condition for filtering based on string values, including comparison operators and target values."]moduleBoolean=structtypenonrect=boolletmakei=iletof_string=Bool.of_stringletto_valuex=`Booleanxletto_queryv=to_queryto_valuevletto_headerx=Bool.to_stringxletof_xmlxml_arg0=Bool.of_string(string_of_xml~kind:"a boolean"xml_arg0)letof_json=bool_of_jsonletto_json=simple_to_jsonto_valueendmoduleRecommendedActionId=structtypenonrect=stringletcontext_="RecommendedActionId"letmakei=letopenResultinok_or_failwith(check_patterni~pattern:"[0-9A-Za-z]{16}");iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"RecommendedActionId"jletto_json=simple_to_jsonto_valueendmoduleResourceArn=structtypenonrect=stringletcontext_="ResourceArn"letmakei=letopenResultinok_or_failwith(check_patterni~pattern:"arn:aws[a-z0-9-]*:[a-z0-9-]+:[a-z0-9-]*:[0-9]{0,12}:[a-zA-Z0-9/_.-]+");iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"ResourceArn"jletto_json=simple_to_jsonto_valueendmoduleResourceDetails=structtypenonrect={ebsVolume:EbsVolume.toption[@ocaml.doc"Detailed configuration information specific to EBS volumes, including volume type, size, IOPS, and throughput settings."]}letmake?ebsVolume=fun()->{ebsVolume}letto_valuex=structure_to_value[("ebsVolume",(Option.mapx.ebsVolume~f:EbsVolume.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letebsVolume=(Option.map~f:EbsVolume.of_xml)(Xml.childxml_arg0"ebsVolume")inmake?ebsVolume()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letebsVolume=field_mapjson__"ebsVolume"EbsVolume.of_jsoninmake?ebsVolume()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Detailed configuration information for a specific Amazon Web Services resource, with type-specific details."]moduleResourceId=structtypenonrect=stringletcontext_="ResourceId"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:100)>>=(fun()->check_patterni~pattern:"[a-zA-Z0-9_.-]+")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"ResourceId"jletto_json=simple_to_jsonto_valueendmoduleResourceType=structtypenonrect=|EbsVolume|Non_static_idofstringletmakei=iletto_string=function|EbsVolume->"EbsVolume"|Non_static_ids->sletof_string=function|"EbsVolume"->EbsVolume|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 ResourceType"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ResourceType"j)letto_json=simple_to_jsonto_valueendmoduleTagList=structtypenonrect=Tag.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:200)>>=(fun()->check_list_mini~min:0));iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:Tag.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:Tag.of_xml)letof_jsonj=list_of_json~kind:"TagList"~of_json:Tag.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleFilterValues=structtypenonrect=FilterValue.tlistletmakei=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_valuevendmoduleRecommendedActionFilterName=structtypenonrect=|ResourceType|RecommendedActionType|ResourceId|LookBackPeriodInDays|CurrentResourceDetailsEbsVolumeType|ResourceTagsKey|ResourceTagsValue|AccountId|RestartNeeded|Non_static_idofstringletmakei=iletto_string=function|ResourceType->"ResourceType"|RecommendedActionType->"RecommendedActionType"|ResourceId->"ResourceId"|LookBackPeriodInDays->"LookBackPeriodInDays"|CurrentResourceDetailsEbsVolumeType->"CurrentResourceDetailsEbsVolumeType"|ResourceTagsKey->"ResourceTagsKey"|ResourceTagsValue->"ResourceTagsValue"|AccountId->"AccountId"|RestartNeeded->"RestartNeeded"|Non_static_ids->sletof_string=function|"ResourceType"->ResourceType|"RecommendedActionType"->RecommendedActionType|"ResourceId"->ResourceId|"LookBackPeriodInDays"->LookBackPeriodInDays|"CurrentResourceDetailsEbsVolumeType"->CurrentResourceDetailsEbsVolumeType|"ResourceTagsKey"->ResourceTagsKey|"ResourceTagsValue"->ResourceTagsValue|"AccountId"->AccountId|"RestartNeeded"->RestartNeeded|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 RecommendedActionFilterName"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"RecommendedActionFilterName"j)letto_json=simple_to_jsonto_valueendmoduleRecommendedActionTotal=structtypenonrect={recommendedActionCount:Integer.toption[@ocaml.doc"The total number of recommended actions in this group."];estimatedMonthlySavings:EstimatedMonthlySavings.toption}letmake?recommendedActionCount=fun?estimatedMonthlySavings->fun()->{recommendedActionCount;estimatedMonthlySavings}letto_valuex=structure_to_value[("recommendedActionCount",(Option.mapx.recommendedActionCount~f:Integer.to_value));("estimatedMonthlySavings",(Option.mapx.estimatedMonthlySavings~f:EstimatedMonthlySavings.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letestimatedMonthlySavings=(Option.map~f:EstimatedMonthlySavings.of_xml)(Xml.childxml_arg0"estimatedMonthlySavings")inletrecommendedActionCount=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"recommendedActionCount")inmake?estimatedMonthlySavings?recommendedActionCount()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letestimatedMonthlySavings=field_mapjson__"estimatedMonthlySavings"EstimatedMonthlySavings.of_jsoninletrecommendedActionCount=field_mapjson__"recommendedActionCount"Integer.of_jsoninmake?estimatedMonthlySavings?recommendedActionCount()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Aggregate totals for a group of recommended actions, including count and estimated monthly savings."]moduleLong=structtypenonrect=Int64.tletmakei=iletof_string=Int64.of_stringletto_valuex=`Longxletto_queryv=to_queryto_valuevletto_headerx=Int64.to_stringxletof_xmlxml_arg0=Int64.of_string(string_of_xml~kind:"a long"xml_arg0)letof_jsonj=Int64.of_float(float_of_json~kind:"a long"j)letto_json=simple_to_jsonto_valueendmoduleOrganizationConfiguration=structtypenonrect={ruleApplyOrder:RuleApplyOrder.toption[@ocaml.doc"Specifies when organization rules should be applied relative to account rules."];accountIds:OrganizationConfigurationAccountIds.toption[@ocaml.doc"List of specific Amazon Web Services account IDs where the organization rule should be applied."]}letmake?ruleApplyOrder=fun?accountIds->fun()->{ruleApplyOrder;accountIds}letto_valuex=structure_to_value[("ruleApplyOrder",(Option.mapx.ruleApplyOrder~f:RuleApplyOrder.to_value));("accountIds",(Option.mapx.accountIds~f:OrganizationConfigurationAccountIds.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccountIds=(Option.map~f:OrganizationConfigurationAccountIds.of_xml)(Xml.childxml_arg0"accountIds")inletruleApplyOrder=(Option.map~f:RuleApplyOrder.of_xml)(Xml.childxml_arg0"ruleApplyOrder")inmake?accountIds?ruleApplyOrder()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccountIds=field_mapjson__"accountIds"OrganizationConfigurationAccountIds.of_jsoninletruleApplyOrder=field_mapjson__"ruleApplyOrder"RuleApplyOrder.of_jsoninmake?accountIds?ruleApplyOrder()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Configuration settings for organization-wide automation rules."]moduleRecommendedActionTypeList=structtypenonrect=RecommendedActionType.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:RecommendedActionType.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:RecommendedActionType.of_xml)letof_jsonj=list_of_json~kind:"RecommendedActionTypeList"~of_json:RecommendedActionType.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleRuleArn=structtypenonrect=stringletcontext_="RuleArn"letmakei=letopenResultinok_or_failwith(check_patterni~pattern:"arn:aws:compute-optimizer::[0-9]{12}:automation-rule/[a-zA-Z0-9_-]+");iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"RuleArn"jletto_json=simple_to_jsonto_valueendmoduleRuleId=structtypenonrect=stringletcontext_="RuleId"letmakei=letopenResultinok_or_failwith(check_patterni~pattern:"[0-9A-Za-z]{16}");iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"RuleId"jletto_json=simple_to_jsonto_valueendmoduleRuleName=structtypenonrect=stringletcontext_="RuleName"letmakei=letopenResultinok_or_failwith((check_string_mini~min:0)>>=(fun()->(check_string_maxi~max:128)>>=(fun()->check_patterni~pattern:"[a-zA-Z0-9_-]*")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"RuleName"jletto_json=simple_to_jsonto_valueendmoduleRuleStatus=structtypenonrect=|Active|Inactive|Non_static_idofstringletmakei=iletto_string=function|Active->"Active"|Inactive->"Inactive"|Non_static_ids->sletof_string=function|"Active"->Active|"Inactive"->Inactive|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 RuleStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"RuleStatus"j)letto_json=simple_to_jsonto_valueendmoduleRuleType=structtypenonrect=|OrganizationRule|AccountRule|Non_static_idofstringletmakei=iletto_string=function|OrganizationRule->"OrganizationRule"|AccountRule->"AccountRule"|Non_static_ids->sletof_string=function|"OrganizationRule"->OrganizationRule|"AccountRule"->AccountRule|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 RuleType"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"RuleType"j)letto_json=simple_to_jsonto_valueendmoduleSchedule=structtypenonrect={scheduleExpression:String_.toption[@ocaml.doc"The expression that defines when the schedule runs. cron expression is supported. A cron expression consists of six fields separated by white spaces: (minutes hours day_of_month month day_of_week year) You can schedule rules to run at most once per day. Your cron expression must use specific values (not wildcards) for the minutes and hours fields. For example: (30 12 * * *) runs daily at 12:30 PM UTC."];scheduleExpressionTimezone:String_.toption[@ocaml.doc"The timezone to use when interpreting the schedule expression."];executionWindowInMinutes:ScheduleExecutionWindowInMinutesInteger.toption[@ocaml.doc"The time window in minutes during which the automation rule can start implementing recommended actions."]}letmake?scheduleExpression=fun?scheduleExpressionTimezone->fun?executionWindowInMinutes->fun()->{scheduleExpression;scheduleExpressionTimezone;executionWindowInMinutes}letto_valuex=structure_to_value[("scheduleExpression",(Option.mapx.scheduleExpression~f:String_.to_value));("scheduleExpressionTimezone",(Option.mapx.scheduleExpressionTimezone~f:String_.to_value));("executionWindowInMinutes",(Option.mapx.executionWindowInMinutes~f:ScheduleExecutionWindowInMinutesInteger.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letexecutionWindowInMinutes=(Option.map~f:ScheduleExecutionWindowInMinutesInteger.of_xml)(Xml.childxml_arg0"executionWindowInMinutes")inletscheduleExpressionTimezone=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"scheduleExpressionTimezone")inletscheduleExpression=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"scheduleExpression")inmake?executionWindowInMinutes?scheduleExpressionTimezone?scheduleExpression()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letexecutionWindowInMinutes=field_mapjson__"executionWindowInMinutes"ScheduleExecutionWindowInMinutesInteger.of_jsoninletscheduleExpressionTimezone=field_mapjson__"scheduleExpressionTimezone"String_.of_jsoninletscheduleExpression=field_mapjson__"scheduleExpression"String_.of_jsoninmake?executionWindowInMinutes?scheduleExpressionTimezone?scheduleExpression()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Configuration for scheduling when automation rules should execute, including timing and execution windows."]moduleAutomationRuleFilterName=structtypenonrect=|Name|RecommendedActionType|Status|RuleType|OrganizationConfigurationRuleApplyOrder|AccountId|Non_static_idofstringletmakei=iletto_string=function|Name->"Name"|RecommendedActionType->"RecommendedActionType"|Status->"Status"|RuleType->"RuleType"|OrganizationConfigurationRuleApplyOrder->"OrganizationConfigurationRuleApplyOrder"|AccountId->"AccountId"|Non_static_ids->sletof_string=function|"Name"->Name|"RecommendedActionType"->RecommendedActionType|"Status"->Status|"RuleType"->RuleType|"OrganizationConfigurationRuleApplyOrder"->OrganizationConfigurationRuleApplyOrder|"AccountId"->AccountId|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 AutomationRuleFilterName"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"AutomationRuleFilterName"j)letto_json=simple_to_jsonto_valueendmoduleRulePreviewTotal=structtypenonrect={recommendedActionCount:Integer.toption[@ocaml.doc"The total number of recommended actions matching the rule preview configuration."];estimatedMonthlySavings:EstimatedMonthlySavings.toption}letmake?recommendedActionCount=fun?estimatedMonthlySavings->fun()->{recommendedActionCount;estimatedMonthlySavings}letto_valuex=structure_to_value[("recommendedActionCount",(Option.mapx.recommendedActionCount~f:Integer.to_value));("estimatedMonthlySavings",(Option.mapx.estimatedMonthlySavings~f:EstimatedMonthlySavings.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letestimatedMonthlySavings=(Option.map~f:EstimatedMonthlySavings.of_xml)(Xml.childxml_arg0"estimatedMonthlySavings")inletrecommendedActionCount=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"recommendedActionCount")inmake?estimatedMonthlySavings?recommendedActionCount()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letestimatedMonthlySavings=field_mapjson__"estimatedMonthlySavings"EstimatedMonthlySavings.of_jsoninletrecommendedActionCount=field_mapjson__"recommendedActionCount"Integer.of_jsoninmake?estimatedMonthlySavings?recommendedActionCount()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Aggregate totals for automation rule preview results, including count and estimated savings."]moduleEventId=structtypenonrect=stringletcontext_="EventId"letmakei=letopenResultinok_or_failwith(check_patterni~pattern:"[0-9A-Za-z]{16}");iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"EventId"jletto_json=simple_to_jsonto_valueendmoduleEventStatus=structtypenonrect=|Ready|InProgress|Complete|Failed|Cancelled|RollbackReady|RollbackInProgress|RollbackComplete|RollbackFailed|Non_static_idofstringletmakei=iletto_string=function|Ready->"Ready"|InProgress->"InProgress"|Complete->"Complete"|Failed->"Failed"|Cancelled->"Cancelled"|RollbackReady->"RollbackReady"|RollbackInProgress->"RollbackInProgress"|RollbackComplete->"RollbackComplete"|RollbackFailed->"RollbackFailed"|Non_static_ids->sletof_string=function|"Ready"->Ready|"InProgress"->InProgress|"Complete"->Complete|"Failed"->Failed|"Cancelled"->Cancelled|"RollbackReady"->RollbackReady|"RollbackInProgress"->RollbackInProgress|"RollbackComplete"->RollbackComplete|"RollbackFailed"->RollbackFailed|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 EventStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"EventStatus"j)letto_json=simple_to_jsonto_valueendmoduleEventType=structtypenonrect=|SnapshotAndDeleteUnattachedEbsVolume|UpgradeEbsVolumeType|Non_static_idofstringletmakei=iletto_string=function|SnapshotAndDeleteUnattachedEbsVolume->"SnapshotAndDeleteUnattachedEbsVolume"|UpgradeEbsVolumeType->"UpgradeEbsVolumeType"|Non_static_ids->sletof_string=function|"SnapshotAndDeleteUnattachedEbsVolume"->SnapshotAndDeleteUnattachedEbsVolume|"UpgradeEbsVolumeType"->UpgradeEbsVolumeType|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 EventType"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"EventType"j)letto_json=simple_to_jsonto_valueendmoduleAutomationEventFilterName=structtypenonrect=|AccountId|ResourceType|EventType|EventStatus|Non_static_idofstringletmakei=iletto_string=function|AccountId->"AccountId"|ResourceType->"ResourceType"|EventType->"EventType"|EventStatus->"EventStatus"|Non_static_ids->sletof_string=function|"AccountId"->AccountId|"ResourceType"->ResourceType|"EventType"->EventType|"EventStatus"->EventStatus|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 AutomationEventFilterName"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"AutomationEventFilterName"j)letto_json=simple_to_jsonto_valueendmoduleSummaryDimensions=structtypenonrect=SummaryDimension.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:SummaryDimension.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:SummaryDimension.of_xml)letof_jsonj=list_of_json~kind:"SummaryDimensions"~of_json:SummaryDimension.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleSummaryTotals=structtypenonrect={automationEventCount:Integer.toption[@ocaml.doc"The total number of automation events in this summary group."];estimatedMonthlySavings:EstimatedMonthlySavings.toption}letmake?automationEventCount=fun?estimatedMonthlySavings->fun()->{automationEventCount;estimatedMonthlySavings}letto_valuex=structure_to_value[("automationEventCount",(Option.mapx.automationEventCount~f:Integer.to_value));("estimatedMonthlySavings",(Option.mapx.estimatedMonthlySavings~f:EstimatedMonthlySavings.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letestimatedMonthlySavings=(Option.map~f:EstimatedMonthlySavings.of_xml)(Xml.childxml_arg0"estimatedMonthlySavings")inletautomationEventCount=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"automationEventCount")inmake?estimatedMonthlySavings?automationEventCount()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letestimatedMonthlySavings=field_mapjson__"estimatedMonthlySavings"EstimatedMonthlySavings.of_jsoninletautomationEventCount=field_mapjson__"automationEventCount"Integer.of_jsoninmake?estimatedMonthlySavings?automationEventCount()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Aggregate totals for automation events, including counts and estimated savings."]moduleTimePeriod=structtypenonrect={startTimeInclusive:Timestamp.toption[@ocaml.doc"The start time of the period, inclusive. Events at or after this time are included."];endTimeExclusive:Timestamp.toption[@ocaml.doc"The end time of the period, exclusive. Events before this time are included."]}letmake?startTimeInclusive=fun?endTimeExclusive->fun()->{startTimeInclusive;endTimeExclusive}letto_valuex=structure_to_value[("startTimeInclusive",(Option.mapx.startTimeInclusive~f:Timestamp.to_value));("endTimeExclusive",(Option.mapx.endTimeExclusive~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letendTimeExclusive=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"endTimeExclusive")inletstartTimeInclusive=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"startTimeInclusive")inmake?endTimeExclusive?startTimeInclusive()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letendTimeExclusive=field_mapjson__"endTimeExclusive"Timestamp.of_jsoninletstartTimeInclusive=field_mapjson__"startTimeInclusive"Timestamp.of_jsoninmake?endTimeExclusive?startTimeInclusive()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Defines a time range with inclusive start time and exclusive end time for filtering and analysis."]moduleStepId=structtypenonrect=stringletcontext_="StepId"letmakei=letopenResultinok_or_failwith(check_patterni~pattern:"[0-9A-Za-z]{16}");iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"StepId"jletto_json=simple_to_jsonto_valueendmoduleStepStatus=structtypenonrect=|Ready|InProgress|Complete|Failed|Non_static_idofstringletmakei=iletto_string=function|Ready->"Ready"|InProgress->"InProgress"|Complete->"Complete"|Failed->"Failed"|Non_static_ids->sletof_string=function|"Ready"->Ready|"InProgress"->InProgress|"Complete"->Complete|"Failed"->Failed|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 StepStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"StepStatus"j)letto_json=simple_to_jsonto_valueendmoduleStepType=structtypenonrect=|CreateEbsSnapshot|DeleteEbsVolume|ModifyEbsVolume|CreateEbsVolume|Non_static_idofstringletmakei=iletto_string=function|CreateEbsSnapshot->"CreateEbsSnapshot"|DeleteEbsVolume->"DeleteEbsVolume"|ModifyEbsVolume->"ModifyEbsVolume"|CreateEbsVolume->"CreateEbsVolume"|Non_static_ids->sletof_string=function|"CreateEbsSnapshot"->CreateEbsSnapshot|"DeleteEbsVolume"->DeleteEbsVolume|"ModifyEbsVolume"->ModifyEbsVolume|"CreateEbsVolume"->CreateEbsVolume|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 StepType"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"StepType"j)letto_json=simple_to_jsonto_valueendmoduleEnrollmentStatus=structtypenonrect=|Active|Inactive|Pending|Failed|Non_static_idofstringletmakei=iletto_string=function|Active->"Active"|Inactive->"Inactive"|Pending->"Pending"|Failed->"Failed"|Non_static_ids->sletof_string=function|"Active"->Active|"Inactive"->Inactive|"Pending"->Pending|"Failed"->Failed|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 EnrollmentStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"EnrollmentStatus"j)letto_json=simple_to_jsonto_valueendmoduleOrganizationRuleMode=structtypenonrect=|AnyAllowed|NoneAllowed|Non_static_idofstringletmakei=iletto_string=function|AnyAllowed->"AnyAllowed"|NoneAllowed->"NoneAllowed"|Non_static_ids->sletof_string=function|"AnyAllowed"->AnyAllowed|"NoneAllowed"->NoneAllowed|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 OrganizationRuleMode"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"OrganizationRuleMode"j)letto_json=simple_to_jsonto_valueendmoduleDoubleCriteriaConditionList=structtypenonrect=DoubleCriteriaCondition.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:DoubleCriteriaCondition.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:DoubleCriteriaCondition.of_xml)letof_jsonj=list_of_json~kind:"DoubleCriteriaConditionList"~of_json:DoubleCriteriaCondition.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleIntegerCriteriaConditionList=structtypenonrect=IntegerCriteriaCondition.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:IntegerCriteriaCondition.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:IntegerCriteriaCondition.of_xml)letof_jsonj=list_of_json~kind:"IntegerCriteriaConditionList"~of_json:IntegerCriteriaCondition.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleResourceTagsCriteriaConditionList=structtypenonrect=ResourceTagsCriteriaCondition.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ResourceTagsCriteriaCondition.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:ResourceTagsCriteriaCondition.of_xml)letof_jsonj=list_of_json~kind:"ResourceTagsCriteriaConditionList"~of_json:ResourceTagsCriteriaCondition.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleStringCriteriaConditionList=structtypenonrect=StringCriteriaCondition.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:StringCriteriaCondition.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:StringCriteriaCondition.of_xml)letof_jsonj=list_of_json~kind:"StringCriteriaConditionList"~of_json:StringCriteriaCondition.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleRecommendedAction=structtypenonrect={recommendedActionId:RecommendedActionId.toption[@ocaml.doc"The unique identifier of the recommended action."];resourceArn:ResourceArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the resource that the recommendation applies to."];resourceId:ResourceId.toption[@ocaml.doc"The ID of the resource that the recommendation applies to."];accountId:AccountId.toption[@ocaml.doc"The Amazon Web Services account ID that owns the resource."];region:String_.toption[@ocaml.doc"The Amazon Web Services Region where the resource is located."];resourceType:ResourceType.toption[@ocaml.doc"The type of resource being evaluated."];lookBackPeriodInDays:Integer.toption[@ocaml.doc"The number of days of historical data used to generate the recommendation."];recommendedActionType:RecommendedActionType.toption[@ocaml.doc"The type of action being recommended."];currentResourceSummary:String_.toption[@ocaml.doc"A summary of the resource's current configuration."];currentResourceDetails:ResourceDetails.toption;recommendedResourceSummary:String_.toption[@ocaml.doc"A summary of the resource's recommended configuration."];recommendedResourceDetails:ResourceDetails.toption;restartNeeded:Boolean.toption[@ocaml.doc"Indicates whether implementing the recommended action requires a resource restart."];estimatedMonthlySavings:EstimatedMonthlySavings.toption;resourceTags:TagList.toption[@ocaml.doc"The tags associated with the resource."]}letmake?recommendedActionId=fun?resourceArn->fun?resourceId->fun?accountId->fun?region->fun?resourceType->fun?lookBackPeriodInDays->fun?recommendedActionType->fun?currentResourceSummary->fun?currentResourceDetails->fun?recommendedResourceSummary->fun?recommendedResourceDetails->fun?restartNeeded->fun?estimatedMonthlySavings->fun?resourceTags->fun()->{recommendedActionId;resourceArn;resourceId;accountId;region;resourceType;lookBackPeriodInDays;recommendedActionType;currentResourceSummary;currentResourceDetails;recommendedResourceSummary;recommendedResourceDetails;restartNeeded;estimatedMonthlySavings;resourceTags}letto_valuex=structure_to_value[("recommendedActionId",(Option.mapx.recommendedActionId~f:RecommendedActionId.to_value));("resourceArn",(Option.mapx.resourceArn~f:ResourceArn.to_value));("resourceId",(Option.mapx.resourceId~f:ResourceId.to_value));("accountId",(Option.mapx.accountId~f:AccountId.to_value));("region",(Option.mapx.region~f:String_.to_value));("resourceType",(Option.mapx.resourceType~f:ResourceType.to_value));("lookBackPeriodInDays",(Option.mapx.lookBackPeriodInDays~f:Integer.to_value));("recommendedActionType",(Option.mapx.recommendedActionType~f:RecommendedActionType.to_value));("currentResourceSummary",(Option.mapx.currentResourceSummary~f:String_.to_value));("currentResourceDetails",(Option.mapx.currentResourceDetails~f:ResourceDetails.to_value));("recommendedResourceSummary",(Option.mapx.recommendedResourceSummary~f:String_.to_value));("recommendedResourceDetails",(Option.mapx.recommendedResourceDetails~f:ResourceDetails.to_value));("restartNeeded",(Option.mapx.restartNeeded~f:Boolean.to_value));("estimatedMonthlySavings",(Option.mapx.estimatedMonthlySavings~f:EstimatedMonthlySavings.to_value));("resourceTags",(Option.mapx.resourceTags~f:TagList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letresourceTags=(Option.map~f:TagList.of_xml)(Xml.childxml_arg0"resourceTags")inletestimatedMonthlySavings=(Option.map~f:EstimatedMonthlySavings.of_xml)(Xml.childxml_arg0"estimatedMonthlySavings")inletrestartNeeded=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"restartNeeded")inletrecommendedResourceDetails=(Option.map~f:ResourceDetails.of_xml)(Xml.childxml_arg0"recommendedResourceDetails")inletrecommendedResourceSummary=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"recommendedResourceSummary")inletcurrentResourceDetails=(Option.map~f:ResourceDetails.of_xml)(Xml.childxml_arg0"currentResourceDetails")inletcurrentResourceSummary=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"currentResourceSummary")inletrecommendedActionType=(Option.map~f:RecommendedActionType.of_xml)(Xml.childxml_arg0"recommendedActionType")inletlookBackPeriodInDays=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"lookBackPeriodInDays")inletresourceType=(Option.map~f:ResourceType.of_xml)(Xml.childxml_arg0"resourceType")inletregion=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"region")inletaccountId=(Option.map~f:AccountId.of_xml)(Xml.childxml_arg0"accountId")inletresourceId=(Option.map~f:ResourceId.of_xml)(Xml.childxml_arg0"resourceId")inletresourceArn=(Option.map~f:ResourceArn.of_xml)(Xml.childxml_arg0"resourceArn")inletrecommendedActionId=(Option.map~f:RecommendedActionId.of_xml)(Xml.childxml_arg0"recommendedActionId")inmake?resourceTags?estimatedMonthlySavings?restartNeeded?recommendedResourceDetails?recommendedResourceSummary?currentResourceDetails?currentResourceSummary?recommendedActionType?lookBackPeriodInDays?resourceType?region?accountId?resourceId?resourceArn?recommendedActionId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letresourceTags=field_mapjson__"resourceTags"TagList.of_jsoninletestimatedMonthlySavings=field_mapjson__"estimatedMonthlySavings"EstimatedMonthlySavings.of_jsoninletrestartNeeded=field_mapjson__"restartNeeded"Boolean.of_jsoninletrecommendedResourceDetails=field_mapjson__"recommendedResourceDetails"ResourceDetails.of_jsoninletrecommendedResourceSummary=field_mapjson__"recommendedResourceSummary"String_.of_jsoninletcurrentResourceDetails=field_mapjson__"currentResourceDetails"ResourceDetails.of_jsoninletcurrentResourceSummary=field_mapjson__"currentResourceSummary"String_.of_jsoninletrecommendedActionType=field_mapjson__"recommendedActionType"RecommendedActionType.of_jsoninletlookBackPeriodInDays=field_mapjson__"lookBackPeriodInDays"Integer.of_jsoninletresourceType=field_mapjson__"resourceType"ResourceType.of_jsoninletregion=field_mapjson__"region"String_.of_jsoninletaccountId=field_mapjson__"accountId"AccountId.of_jsoninletresourceId=field_mapjson__"resourceId"ResourceId.of_jsoninletresourceArn=field_mapjson__"resourceArn"ResourceArn.of_jsoninletrecommendedActionId=field_mapjson__"recommendedActionId"RecommendedActionId.of_jsoninmake?resourceTags?estimatedMonthlySavings?restartNeeded?recommendedResourceDetails?recommendedResourceSummary?currentResourceDetails?currentResourceSummary?recommendedActionType?lookBackPeriodInDays?resourceType?region?accountId?resourceId?resourceArn?recommendedActionId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about a recommended action that can be applied to optimize an Amazon Web Services resource."]moduleRecommendedActionFilter=structtypenonrect={name:RecommendedActionFilterName.t[@ocaml.doc"The name of the filter field to apply."];values:FilterValues.t[@ocaml.doc"List of filter values to match against the specified filter name. Used to narrow down recommended actions based on specific criteria."]}letcontext_="RecommendedActionFilter"letmake~name=fun~values->fun()->{name;values}letto_valuex=structure_to_value[("name",(Some(RecommendedActionFilterName.to_valuex.name)));("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")inletname=RecommendedActionFilterName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inmake~values~name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letvalues=field_map_exnjson__"values"FilterValues.of_jsoninletname=field_map_exnjson__"name"RecommendedActionFilterName.of_jsoninmake~values~name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A filter used to narrow down recommended action results based on specific criteria."]moduleRecommendedActionSummary=structtypenonrect={key:String_.toption[@ocaml.doc"The grouping key used to categorize the recommended actions in this summary."];total:RecommendedActionTotal.toption[@ocaml.doc"Aggregate totals for the recommended actions in this group, including count and estimated savings."]}letmake?key=fun?total->fun()->{key;total}letto_valuex=structure_to_value[("key",(Option.mapx.key~f:String_.to_value));("total",(Option.mapx.total~f:RecommendedActionTotal.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettotal=(Option.map~f:RecommendedActionTotal.of_xml)(Xml.childxml_arg0"total")inletkey=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"key")inmake?total?key()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettotal=field_mapjson__"total"RecommendedActionTotal.of_jsoninletkey=field_mapjson__"key"String_.of_jsoninmake?total?key()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Summary information about recommended actions, grouped by specific criteria with totals and counts."]moduleAutomationRule=structtypenonrect={ruleArn:RuleArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the automation rule."];ruleId:RuleId.toption[@ocaml.doc"The unique identifier of the automation rule."];name:RuleName.toption[@ocaml.doc"The name of the automation rule."];description:String_.toption[@ocaml.doc"A description of the automation rule."];ruleType:RuleType.toption[@ocaml.doc"The type of automation rule (OrganizationRule or AccountRule)."];ruleRevision:Long.toption[@ocaml.doc"The revision number of the automation rule."];accountId:AccountId.toption[@ocaml.doc"The 12-digit Amazon Web Services account ID that owns this automation rule."];organizationConfiguration:OrganizationConfiguration.toption[@ocaml.doc"Configuration settings for organization-wide rules."];priority:String_.toption[@ocaml.doc"A string representation of a decimal number between 0 and 1 (having up to 30 digits after the decimal point) that determines the priority of the rule. When multiple rules match the same recommended action, Compute Optimizer assigns the action to the rule with the lowest priority value (highest priority), even if that rule is scheduled to run later than other matching rules."];recommendedActionTypes:RecommendedActionTypeList.toption[@ocaml.doc"List of recommended action types that this rule can execute."];schedule:Schedule.toption[@ocaml.doc"The schedule configuration for when the automation rule should execute."];status:RuleStatus.toption[@ocaml.doc"The current status of the automation rule (Active or Inactive)."];createdTimestamp:Timestamp.toption[@ocaml.doc"The timestamp when the automation rule was created."];lastUpdatedTimestamp:Timestamp.toption[@ocaml.doc"The timestamp when the automation rule was last updated."]}letmake?ruleArn=fun?ruleId->fun?name->fun?description->fun?ruleType->fun?ruleRevision->fun?accountId->fun?organizationConfiguration->fun?priority->fun?recommendedActionTypes->fun?schedule->fun?status->fun?createdTimestamp->fun?lastUpdatedTimestamp->fun()->{ruleArn;ruleId;name;description;ruleType;ruleRevision;accountId;organizationConfiguration;priority;recommendedActionTypes;schedule;status;createdTimestamp;lastUpdatedTimestamp}letto_valuex=structure_to_value[("ruleArn",(Option.mapx.ruleArn~f:RuleArn.to_value));("ruleId",(Option.mapx.ruleId~f:RuleId.to_value));("name",(Option.mapx.name~f:RuleName.to_value));("description",(Option.mapx.description~f:String_.to_value));("ruleType",(Option.mapx.ruleType~f:RuleType.to_value));("ruleRevision",(Option.mapx.ruleRevision~f:Long.to_value));("accountId",(Option.mapx.accountId~f:AccountId.to_value));("organizationConfiguration",(Option.mapx.organizationConfiguration~f:OrganizationConfiguration.to_value));("priority",(Option.mapx.priority~f:String_.to_value));("recommendedActionTypes",(Option.mapx.recommendedActionTypes~f:RecommendedActionTypeList.to_value));("schedule",(Option.mapx.schedule~f:Schedule.to_value));("status",(Option.mapx.status~f:RuleStatus.to_value));("createdTimestamp",(Option.mapx.createdTimestamp~f:Timestamp.to_value));("lastUpdatedTimestamp",(Option.mapx.lastUpdatedTimestamp~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letlastUpdatedTimestamp=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"lastUpdatedTimestamp")inletcreatedTimestamp=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"createdTimestamp")inletstatus=(Option.map~f:RuleStatus.of_xml)(Xml.childxml_arg0"status")inletschedule=(Option.map~f:Schedule.of_xml)(Xml.childxml_arg0"schedule")inletrecommendedActionTypes=(Option.map~f:RecommendedActionTypeList.of_xml)(Xml.childxml_arg0"recommendedActionTypes")inletpriority=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"priority")inletorganizationConfiguration=(Option.map~f:OrganizationConfiguration.of_xml)(Xml.childxml_arg0"organizationConfiguration")inletaccountId=(Option.map~f:AccountId.of_xml)(Xml.childxml_arg0"accountId")inletruleRevision=(Option.map~f:Long.of_xml)(Xml.childxml_arg0"ruleRevision")inletruleType=(Option.map~f:RuleType.of_xml)(Xml.childxml_arg0"ruleType")inletdescription=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"description")inletname=(Option.map~f:RuleName.of_xml)(Xml.childxml_arg0"name")inletruleId=(Option.map~f:RuleId.of_xml)(Xml.childxml_arg0"ruleId")inletruleArn=(Option.map~f:RuleArn.of_xml)(Xml.childxml_arg0"ruleArn")inmake?lastUpdatedTimestamp?createdTimestamp?status?schedule?recommendedActionTypes?priority?organizationConfiguration?accountId?ruleRevision?ruleType?description?name?ruleId?ruleArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letlastUpdatedTimestamp=field_mapjson__"lastUpdatedTimestamp"Timestamp.of_jsoninletcreatedTimestamp=field_mapjson__"createdTimestamp"Timestamp.of_jsoninletstatus=field_mapjson__"status"RuleStatus.of_jsoninletschedule=field_mapjson__"schedule"Schedule.of_jsoninletrecommendedActionTypes=field_mapjson__"recommendedActionTypes"RecommendedActionTypeList.of_jsoninletpriority=field_mapjson__"priority"String_.of_jsoninletorganizationConfiguration=field_mapjson__"organizationConfiguration"OrganizationConfiguration.of_jsoninletaccountId=field_mapjson__"accountId"AccountId.of_jsoninletruleRevision=field_mapjson__"ruleRevision"Long.of_jsoninletruleType=field_mapjson__"ruleType"RuleType.of_jsoninletdescription=field_mapjson__"description"String_.of_jsoninletname=field_mapjson__"name"RuleName.of_jsoninletruleId=field_mapjson__"ruleId"RuleId.of_jsoninletruleArn=field_mapjson__"ruleArn"RuleArn.of_jsoninmake?lastUpdatedTimestamp?createdTimestamp?status?schedule?recommendedActionTypes?priority?organizationConfiguration?accountId?ruleRevision?ruleType?description?name?ruleId?ruleArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Represents a complete automation rule configuration including criteria, schedule, and execution settings."]moduleFilter=structtypenonrect={name:AutomationRuleFilterName.t[@ocaml.doc"The name of the filter field to apply."];values:FilterValues.t[@ocaml.doc"The list of values to filter by for the specified filter field."]}letcontext_="Filter"letmake~name=fun~values->fun()->{name;values}letto_valuex=structure_to_value[("name",(Some(AutomationRuleFilterName.to_valuex.name)));("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")inletname=AutomationRuleFilterName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inmake~values~name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letvalues=field_map_exnjson__"values"FilterValues.of_jsoninletname=field_map_exnjson__"name"AutomationRuleFilterName.of_jsoninmake~values~name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A filter used to narrow down results based on specific criteria."]modulePreviewResultSummary=structtypenonrect={key:String_.toption[@ocaml.doc"The key identifier for this preview result summary."];total:RulePreviewTotal.toption}letmake?key=fun?total->fun()->{key;total}letto_valuex=structure_to_value[("key",(Option.mapx.key~f:String_.to_value));("total",(Option.mapx.total~f:RulePreviewTotal.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettotal=(Option.map~f:RulePreviewTotal.of_xml)(Xml.childxml_arg0"total")inletkey=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"key")inmake?total?key()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettotal=field_mapjson__"total"RulePreviewTotal.of_jsoninletkey=field_mapjson__"key"String_.of_jsoninmake?total?key()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains a summary of preview results for an automation rule."]modulePreviewResult=structtypenonrect={recommendedActionId:RecommendedActionId.toption[@ocaml.doc"The ID of the recommended action being previewed."];resourceArn:ResourceArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the resource affected by the recommended action."];resourceId:ResourceId.toption[@ocaml.doc"The ID of the resource affected by the recommended action."];accountId:AccountId.toption[@ocaml.doc"The Amazon Web Services account ID associated with the resource."];region:String_.toption[@ocaml.doc"The Amazon Web Services Region where the resource is located."];resourceType:ResourceType.toption[@ocaml.doc"The type of resource being evaluated."];lookBackPeriodInDays:Integer.toption[@ocaml.doc"The number of days of historical data used to analyze the resource."];recommendedActionType:RecommendedActionType.toption[@ocaml.doc"The type of recommended action being previewed."];currentResourceSummary:String_.toption[@ocaml.doc"A summary of the resource's current configuration."];currentResourceDetails:ResourceDetails.toption;recommendedResourceSummary:String_.toption[@ocaml.doc"A summary of the resource's recommended configuration."];recommendedResourceDetails:ResourceDetails.toption;restartNeeded:Boolean.toption[@ocaml.doc"Indicates whether implementing the recommended action requires a resource restart."];estimatedMonthlySavings:EstimatedMonthlySavings.toption;resourceTags:TagList.toption[@ocaml.doc"The tags associated with the resource."]}letmake?recommendedActionId=fun?resourceArn->fun?resourceId->fun?accountId->fun?region->fun?resourceType->fun?lookBackPeriodInDays->fun?recommendedActionType->fun?currentResourceSummary->fun?currentResourceDetails->fun?recommendedResourceSummary->fun?recommendedResourceDetails->fun?restartNeeded->fun?estimatedMonthlySavings->fun?resourceTags->fun()->{recommendedActionId;resourceArn;resourceId;accountId;region;resourceType;lookBackPeriodInDays;recommendedActionType;currentResourceSummary;currentResourceDetails;recommendedResourceSummary;recommendedResourceDetails;restartNeeded;estimatedMonthlySavings;resourceTags}letto_valuex=structure_to_value[("recommendedActionId",(Option.mapx.recommendedActionId~f:RecommendedActionId.to_value));("resourceArn",(Option.mapx.resourceArn~f:ResourceArn.to_value));("resourceId",(Option.mapx.resourceId~f:ResourceId.to_value));("accountId",(Option.mapx.accountId~f:AccountId.to_value));("region",(Option.mapx.region~f:String_.to_value));("resourceType",(Option.mapx.resourceType~f:ResourceType.to_value));("lookBackPeriodInDays",(Option.mapx.lookBackPeriodInDays~f:Integer.to_value));("recommendedActionType",(Option.mapx.recommendedActionType~f:RecommendedActionType.to_value));("currentResourceSummary",(Option.mapx.currentResourceSummary~f:String_.to_value));("currentResourceDetails",(Option.mapx.currentResourceDetails~f:ResourceDetails.to_value));("recommendedResourceSummary",(Option.mapx.recommendedResourceSummary~f:String_.to_value));("recommendedResourceDetails",(Option.mapx.recommendedResourceDetails~f:ResourceDetails.to_value));("restartNeeded",(Option.mapx.restartNeeded~f:Boolean.to_value));("estimatedMonthlySavings",(Option.mapx.estimatedMonthlySavings~f:EstimatedMonthlySavings.to_value));("resourceTags",(Option.mapx.resourceTags~f:TagList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letresourceTags=(Option.map~f:TagList.of_xml)(Xml.childxml_arg0"resourceTags")inletestimatedMonthlySavings=(Option.map~f:EstimatedMonthlySavings.of_xml)(Xml.childxml_arg0"estimatedMonthlySavings")inletrestartNeeded=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"restartNeeded")inletrecommendedResourceDetails=(Option.map~f:ResourceDetails.of_xml)(Xml.childxml_arg0"recommendedResourceDetails")inletrecommendedResourceSummary=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"recommendedResourceSummary")inletcurrentResourceDetails=(Option.map~f:ResourceDetails.of_xml)(Xml.childxml_arg0"currentResourceDetails")inletcurrentResourceSummary=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"currentResourceSummary")inletrecommendedActionType=(Option.map~f:RecommendedActionType.of_xml)(Xml.childxml_arg0"recommendedActionType")inletlookBackPeriodInDays=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"lookBackPeriodInDays")inletresourceType=(Option.map~f:ResourceType.of_xml)(Xml.childxml_arg0"resourceType")inletregion=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"region")inletaccountId=(Option.map~f:AccountId.of_xml)(Xml.childxml_arg0"accountId")inletresourceId=(Option.map~f:ResourceId.of_xml)(Xml.childxml_arg0"resourceId")inletresourceArn=(Option.map~f:ResourceArn.of_xml)(Xml.childxml_arg0"resourceArn")inletrecommendedActionId=(Option.map~f:RecommendedActionId.of_xml)(Xml.childxml_arg0"recommendedActionId")inmake?resourceTags?estimatedMonthlySavings?restartNeeded?recommendedResourceDetails?recommendedResourceSummary?currentResourceDetails?currentResourceSummary?recommendedActionType?lookBackPeriodInDays?resourceType?region?accountId?resourceId?resourceArn?recommendedActionId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letresourceTags=field_mapjson__"resourceTags"TagList.of_jsoninletestimatedMonthlySavings=field_mapjson__"estimatedMonthlySavings"EstimatedMonthlySavings.of_jsoninletrestartNeeded=field_mapjson__"restartNeeded"Boolean.of_jsoninletrecommendedResourceDetails=field_mapjson__"recommendedResourceDetails"ResourceDetails.of_jsoninletrecommendedResourceSummary=field_mapjson__"recommendedResourceSummary"String_.of_jsoninletcurrentResourceDetails=field_mapjson__"currentResourceDetails"ResourceDetails.of_jsoninletcurrentResourceSummary=field_mapjson__"currentResourceSummary"String_.of_jsoninletrecommendedActionType=field_mapjson__"recommendedActionType"RecommendedActionType.of_jsoninletlookBackPeriodInDays=field_mapjson__"lookBackPeriodInDays"Integer.of_jsoninletresourceType=field_mapjson__"resourceType"ResourceType.of_jsoninletregion=field_mapjson__"region"String_.of_jsoninletaccountId=field_mapjson__"accountId"AccountId.of_jsoninletresourceId=field_mapjson__"resourceId"ResourceId.of_jsoninletresourceArn=field_mapjson__"resourceArn"ResourceArn.of_jsoninletrecommendedActionId=field_mapjson__"recommendedActionId"RecommendedActionId.of_jsoninmake?resourceTags?estimatedMonthlySavings?restartNeeded?recommendedResourceDetails?recommendedResourceSummary?currentResourceDetails?currentResourceSummary?recommendedActionType?lookBackPeriodInDays?resourceType?region?accountId?resourceId?resourceArn?recommendedActionId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains the results of previewing an automation rule against available recommendations."]moduleAutomationEvent=structtypenonrect={eventId:EventId.toption[@ocaml.doc"The unique identifier for the automation event."];eventDescription:String_.toption[@ocaml.doc"A description of the automation event."];eventType:EventType.toption[@ocaml.doc"The type of automation event."];eventStatus:EventStatus.toption[@ocaml.doc"The current status of the automation event."];eventStatusReason:String_.toption[@ocaml.doc"The reason for the current event status."];resourceArn:ResourceArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the resource affected by the automation event."];resourceId:ResourceId.toption[@ocaml.doc"The ID of the resource affected by the automation event."];recommendedActionId:RecommendedActionId.toption[@ocaml.doc"The ID of the recommended action associated with this automation event."];accountId:AccountId.toption[@ocaml.doc"The Amazon Web Services account ID associated with the automation event."];region:String_.toption[@ocaml.doc"The Amazon Web Services Region where the automation event occurred."];ruleId:RuleId.toption[@ocaml.doc"The ID of the automation rule that triggered this event."];resourceType:ResourceType.toption[@ocaml.doc"The type of resource affected by the automation event."];createdTimestamp:Timestamp.toption[@ocaml.doc"The timestamp when the automation event was created."];completedTimestamp:Timestamp.toption[@ocaml.doc"The timestamp when the automation event completed."];estimatedMonthlySavings:EstimatedMonthlySavings.toption[@ocaml.doc"The estimated monthly cost savings associated with this automation event."]}letmake?eventId=fun?eventDescription->fun?eventType->fun?eventStatus->fun?eventStatusReason->fun?resourceArn->fun?resourceId->fun?recommendedActionId->fun?accountId->fun?region->fun?ruleId->fun?resourceType->fun?createdTimestamp->fun?completedTimestamp->fun?estimatedMonthlySavings->fun()->{eventId;eventDescription;eventType;eventStatus;eventStatusReason;resourceArn;resourceId;recommendedActionId;accountId;region;ruleId;resourceType;createdTimestamp;completedTimestamp;estimatedMonthlySavings}letto_valuex=structure_to_value[("eventId",(Option.mapx.eventId~f:EventId.to_value));("eventDescription",(Option.mapx.eventDescription~f:String_.to_value));("eventType",(Option.mapx.eventType~f:EventType.to_value));("eventStatus",(Option.mapx.eventStatus~f:EventStatus.to_value));("eventStatusReason",(Option.mapx.eventStatusReason~f:String_.to_value));("resourceArn",(Option.mapx.resourceArn~f:ResourceArn.to_value));("resourceId",(Option.mapx.resourceId~f:ResourceId.to_value));("recommendedActionId",(Option.mapx.recommendedActionId~f:RecommendedActionId.to_value));("accountId",(Option.mapx.accountId~f:AccountId.to_value));("region",(Option.mapx.region~f:String_.to_value));("ruleId",(Option.mapx.ruleId~f:RuleId.to_value));("resourceType",(Option.mapx.resourceType~f:ResourceType.to_value));("createdTimestamp",(Option.mapx.createdTimestamp~f:Timestamp.to_value));("completedTimestamp",(Option.mapx.completedTimestamp~f:Timestamp.to_value));("estimatedMonthlySavings",(Option.mapx.estimatedMonthlySavings~f:EstimatedMonthlySavings.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letestimatedMonthlySavings=(Option.map~f:EstimatedMonthlySavings.of_xml)(Xml.childxml_arg0"estimatedMonthlySavings")inletcompletedTimestamp=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"completedTimestamp")inletcreatedTimestamp=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"createdTimestamp")inletresourceType=(Option.map~f:ResourceType.of_xml)(Xml.childxml_arg0"resourceType")inletruleId=(Option.map~f:RuleId.of_xml)(Xml.childxml_arg0"ruleId")inletregion=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"region")inletaccountId=(Option.map~f:AccountId.of_xml)(Xml.childxml_arg0"accountId")inletrecommendedActionId=(Option.map~f:RecommendedActionId.of_xml)(Xml.childxml_arg0"recommendedActionId")inletresourceId=(Option.map~f:ResourceId.of_xml)(Xml.childxml_arg0"resourceId")inletresourceArn=(Option.map~f:ResourceArn.of_xml)(Xml.childxml_arg0"resourceArn")inleteventStatusReason=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"eventStatusReason")inleteventStatus=(Option.map~f:EventStatus.of_xml)(Xml.childxml_arg0"eventStatus")inleteventType=(Option.map~f:EventType.of_xml)(Xml.childxml_arg0"eventType")inleteventDescription=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"eventDescription")inleteventId=(Option.map~f:EventId.of_xml)(Xml.childxml_arg0"eventId")inmake?estimatedMonthlySavings?completedTimestamp?createdTimestamp?resourceType?ruleId?region?accountId?recommendedActionId?resourceId?resourceArn?eventStatusReason?eventStatus?eventType?eventDescription?eventId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letestimatedMonthlySavings=field_mapjson__"estimatedMonthlySavings"EstimatedMonthlySavings.of_jsoninletcompletedTimestamp=field_mapjson__"completedTimestamp"Timestamp.of_jsoninletcreatedTimestamp=field_mapjson__"createdTimestamp"Timestamp.of_jsoninletresourceType=field_mapjson__"resourceType"ResourceType.of_jsoninletruleId=field_mapjson__"ruleId"RuleId.of_jsoninletregion=field_mapjson__"region"String_.of_jsoninletaccountId=field_mapjson__"accountId"AccountId.of_jsoninletrecommendedActionId=field_mapjson__"recommendedActionId"RecommendedActionId.of_jsoninletresourceId=field_mapjson__"resourceId"ResourceId.of_jsoninletresourceArn=field_mapjson__"resourceArn"ResourceArn.of_jsoninleteventStatusReason=field_mapjson__"eventStatusReason"String_.of_jsoninleteventStatus=field_mapjson__"eventStatus"EventStatus.of_jsoninleteventType=field_mapjson__"eventType"EventType.of_jsoninleteventDescription=field_mapjson__"eventDescription"String_.of_jsoninleteventId=field_mapjson__"eventId"EventId.of_jsoninmake?estimatedMonthlySavings?completedTimestamp?createdTimestamp?resourceType?ruleId?region?accountId?recommendedActionId?resourceId?resourceArn?eventStatusReason?eventStatus?eventType?eventDescription?eventId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about an automation event."]moduleAutomationEventFilter=structtypenonrect={name:AutomationEventFilterName.t[@ocaml.doc"The name of the filter to apply."];values:FilterValues.t[@ocaml.doc"The values to use for the specified filter."]}letcontext_="AutomationEventFilter"letmake~name=fun~values->fun()->{name;values}letto_valuex=structure_to_value[("name",(Some(AutomationEventFilterName.to_valuex.name)));("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")inletname=AutomationEventFilterName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inmake~values~name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letvalues=field_map_exnjson__"values"FilterValues.of_jsoninletname=field_map_exnjson__"name"AutomationEventFilterName.of_jsoninmake~values~name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A filter to apply when listing automation events."]moduleAutomationEventSummary=structtypenonrect={key:String_.toption[@ocaml.doc"The key identifier for this summary grouping."];dimensions:SummaryDimensions.toption[@ocaml.doc"The dimensions used to group this summary, such as event status."];timePeriod:TimePeriod.toption[@ocaml.doc"The time period covered by this summary, with inclusive start time and exclusive end time."];total:SummaryTotals.toption[@ocaml.doc"The aggregated totals for this summary, including event count and estimated savings."]}letmake?key=fun?dimensions->fun?timePeriod->fun?total->fun()->{key;dimensions;timePeriod;total}letto_valuex=structure_to_value[("key",(Option.mapx.key~f:String_.to_value));("dimensions",(Option.mapx.dimensions~f:SummaryDimensions.to_value));("timePeriod",(Option.mapx.timePeriod~f:TimePeriod.to_value));("total",(Option.mapx.total~f:SummaryTotals.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettotal=(Option.map~f:SummaryTotals.of_xml)(Xml.childxml_arg0"total")inlettimePeriod=(Option.map~f:TimePeriod.of_xml)(Xml.childxml_arg0"timePeriod")inletdimensions=(Option.map~f:SummaryDimensions.of_xml)(Xml.childxml_arg0"dimensions")inletkey=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"key")inmake?total?timePeriod?dimensions?key()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettotal=field_mapjson__"total"SummaryTotals.of_jsoninlettimePeriod=field_mapjson__"timePeriod"TimePeriod.of_jsoninletdimensions=field_mapjson__"dimensions"SummaryDimensions.of_jsoninletkey=field_mapjson__"key"String_.of_jsoninmake?total?timePeriod?dimensions?key()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A summary of automation events grouped by specified dimensions."]moduleAutomationEventStep=structtypenonrect={eventId:EventId.toption[@ocaml.doc"The ID of the automation event this step belongs to."];stepId:StepId.toption[@ocaml.doc"The unique identifier for this step."];stepType:StepType.toption[@ocaml.doc"The type of step."];stepStatus:StepStatus.toption[@ocaml.doc"The current status of the step."];resourceId:ResourceId.toption[@ocaml.doc"The unique identifier of the resource being acted upon in this step."];startTimestamp:Timestamp.toption[@ocaml.doc"The timestamp when this automation event step started execution."];completedTimestamp:Timestamp.toption[@ocaml.doc"The timestamp when this automation event step completed execution."];estimatedMonthlySavings:EstimatedMonthlySavings.toption}letmake?eventId=fun?stepId->fun?stepType->fun?stepStatus->fun?resourceId->fun?startTimestamp->fun?completedTimestamp->fun?estimatedMonthlySavings->fun()->{eventId;stepId;stepType;stepStatus;resourceId;startTimestamp;completedTimestamp;estimatedMonthlySavings}letto_valuex=structure_to_value[("eventId",(Option.mapx.eventId~f:EventId.to_value));("stepId",(Option.mapx.stepId~f:StepId.to_value));("stepType",(Option.mapx.stepType~f:StepType.to_value));("stepStatus",(Option.mapx.stepStatus~f:StepStatus.to_value));("resourceId",(Option.mapx.resourceId~f:ResourceId.to_value));("startTimestamp",(Option.mapx.startTimestamp~f:Timestamp.to_value));("completedTimestamp",(Option.mapx.completedTimestamp~f:Timestamp.to_value));("estimatedMonthlySavings",(Option.mapx.estimatedMonthlySavings~f:EstimatedMonthlySavings.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letestimatedMonthlySavings=(Option.map~f:EstimatedMonthlySavings.of_xml)(Xml.childxml_arg0"estimatedMonthlySavings")inletcompletedTimestamp=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"completedTimestamp")inletstartTimestamp=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"startTimestamp")inletresourceId=(Option.map~f:ResourceId.of_xml)(Xml.childxml_arg0"resourceId")inletstepStatus=(Option.map~f:StepStatus.of_xml)(Xml.childxml_arg0"stepStatus")inletstepType=(Option.map~f:StepType.of_xml)(Xml.childxml_arg0"stepType")inletstepId=(Option.map~f:StepId.of_xml)(Xml.childxml_arg0"stepId")inleteventId=(Option.map~f:EventId.of_xml)(Xml.childxml_arg0"eventId")inmake?estimatedMonthlySavings?completedTimestamp?startTimestamp?resourceId?stepStatus?stepType?stepId?eventId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letestimatedMonthlySavings=field_mapjson__"estimatedMonthlySavings"EstimatedMonthlySavings.of_jsoninletcompletedTimestamp=field_mapjson__"completedTimestamp"Timestamp.of_jsoninletstartTimestamp=field_mapjson__"startTimestamp"Timestamp.of_jsoninletresourceId=field_mapjson__"resourceId"ResourceId.of_jsoninletstepStatus=field_mapjson__"stepStatus"StepStatus.of_jsoninletstepType=field_mapjson__"stepType"StepType.of_jsoninletstepId=field_mapjson__"stepId"StepId.of_jsoninleteventId=field_mapjson__"eventId"EventId.of_jsoninmake?estimatedMonthlySavings?completedTimestamp?startTimestamp?resourceId?stepStatus?stepType?stepId?eventId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about a step in an automation event."]moduleAccountInfo=structtypenonrect={accountId:AccountId.toption[@ocaml.doc"The ID of the Amazon Web Services account."];status:EnrollmentStatus.toption[@ocaml.doc"The enrollment status of the account: Active, Inactive, Pending, or Failed."];organizationRuleMode:OrganizationRuleMode.toption[@ocaml.doc"Specifies whether the management account can create Automation rules that implement optimization actions for this account."];statusReason:String_.toption[@ocaml.doc"The reason for the current Automation enrollment status."];lastUpdatedTimestamp:Timestamp.toption[@ocaml.doc"The timestamp when the account's Automation enrollment status was last updated."]}letmake?accountId=fun?status->fun?organizationRuleMode->fun?statusReason->fun?lastUpdatedTimestamp->fun()->{accountId;status;organizationRuleMode;statusReason;lastUpdatedTimestamp}letto_valuex=structure_to_value[("accountId",(Option.mapx.accountId~f:AccountId.to_value));("status",(Option.mapx.status~f:EnrollmentStatus.to_value));("organizationRuleMode",(Option.mapx.organizationRuleMode~f:OrganizationRuleMode.to_value));("statusReason",(Option.mapx.statusReason~f:String_.to_value));("lastUpdatedTimestamp",(Option.mapx.lastUpdatedTimestamp~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letlastUpdatedTimestamp=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"lastUpdatedTimestamp")inletstatusReason=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"statusReason")inletorganizationRuleMode=(Option.map~f:OrganizationRuleMode.of_xml)(Xml.childxml_arg0"organizationRuleMode")inletstatus=(Option.map~f:EnrollmentStatus.of_xml)(Xml.childxml_arg0"status")inletaccountId=(Option.map~f:AccountId.of_xml)(Xml.childxml_arg0"accountId")inmake?lastUpdatedTimestamp?statusReason?organizationRuleMode?status?accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letlastUpdatedTimestamp=field_mapjson__"lastUpdatedTimestamp"Timestamp.of_jsoninletstatusReason=field_mapjson__"statusReason"String_.of_jsoninletorganizationRuleMode=field_mapjson__"organizationRuleMode"OrganizationRuleMode.of_jsoninletstatus=field_mapjson__"status"EnrollmentStatus.of_jsoninletaccountId=field_mapjson__"accountId"AccountId.of_jsoninmake?lastUpdatedTimestamp?statusReason?organizationRuleMode?status?accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about an Amazon Web Services account's enrollment and association status with Compute Optimizer Automation."]moduleAccessDeniedException=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 permissions to perform this action."]moduleForbiddenException=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 are not authorized to perform this action."]moduleIdempotencyTokenInUseException=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 specified client token is already in use."]moduleIdempotentParameterMismatchException=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"Exception thrown when the same client token is used with different parameters, indicating a mismatch in idempotent request parameters."]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 internal error occurred while processing the request."]moduleInvalidParameterValueException=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"One or more parameter values are not valid."]moduleNotManagementAccountException=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 operation can only be performed by a management account."]moduleOptInRequiredException=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 account must be opted in to Compute Optimizer Automation before performing this action."]moduleResourceNotFoundException=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 specified resource was not found."]moduleServiceUnavailableException=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 service is temporarily unavailable."]moduleThrottlingException=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."]moduleClientToken=structtypenonrect=stringletcontext_="ClientToken"letmakei=letopenResultinok_or_failwith(check_patterni~pattern:"[a-zA-Z0-9_-]{1,64}");iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"ClientToken"jletto_json=simple_to_jsonto_valueendmoduleCriteria=structtypenonrect={region:StringCriteriaConditionList.toption[@ocaml.doc"Filter criteria for Amazon Web Services regions where resources must be located."];resourceArn:StringCriteriaConditionList.toption[@ocaml.doc"Filter criteria for specific resource ARNs to include or exclude."];ebsVolumeType:StringCriteriaConditionList.toption[@ocaml.doc"Filter criteria for EBS volume types, such as gp2, gp3, io1, io2, st1, or sc1."];ebsVolumeSizeInGib:IntegerCriteriaConditionList.toption[@ocaml.doc"Filter criteria for EBS volume sizes in gibibytes (GiB)."];estimatedMonthlySavings:DoubleCriteriaConditionList.toption[@ocaml.doc"Filter criteria for estimated monthly cost savings from the recommended action."];resourceTag:ResourceTagsCriteriaConditionList.toption[@ocaml.doc"Filter criteria for resource tags, allowing filtering by tag key and value combinations."];lookBackPeriodInDays:IntegerCriteriaConditionList.toption[@ocaml.doc"Filter criteria for the lookback period in days used to analyze resource utilization."];restartNeeded:StringCriteriaConditionList.toption[@ocaml.doc"Filter criteria indicating whether the recommended action requires a resource restart."]}letmake?region=fun?resourceArn->fun?ebsVolumeType->fun?ebsVolumeSizeInGib->fun?estimatedMonthlySavings->fun?resourceTag->fun?lookBackPeriodInDays->fun?restartNeeded->fun()->{region;resourceArn;ebsVolumeType;ebsVolumeSizeInGib;estimatedMonthlySavings;resourceTag;lookBackPeriodInDays;restartNeeded}letto_valuex=structure_to_value[("region",(Option.mapx.region~f:StringCriteriaConditionList.to_value));("resourceArn",(Option.mapx.resourceArn~f:StringCriteriaConditionList.to_value));("ebsVolumeType",(Option.mapx.ebsVolumeType~f:StringCriteriaConditionList.to_value));("ebsVolumeSizeInGib",(Option.mapx.ebsVolumeSizeInGib~f:IntegerCriteriaConditionList.to_value));("estimatedMonthlySavings",(Option.mapx.estimatedMonthlySavings~f:DoubleCriteriaConditionList.to_value));("resourceTag",(Option.mapx.resourceTag~f:ResourceTagsCriteriaConditionList.to_value));("lookBackPeriodInDays",(Option.mapx.lookBackPeriodInDays~f:IntegerCriteriaConditionList.to_value));("restartNeeded",(Option.mapx.restartNeeded~f:StringCriteriaConditionList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letrestartNeeded=(Option.map~f:StringCriteriaConditionList.of_xml)(Xml.childxml_arg0"restartNeeded")inletlookBackPeriodInDays=(Option.map~f:IntegerCriteriaConditionList.of_xml)(Xml.childxml_arg0"lookBackPeriodInDays")inletresourceTag=(Option.map~f:ResourceTagsCriteriaConditionList.of_xml)(Xml.childxml_arg0"resourceTag")inletestimatedMonthlySavings=(Option.map~f:DoubleCriteriaConditionList.of_xml)(Xml.childxml_arg0"estimatedMonthlySavings")inletebsVolumeSizeInGib=(Option.map~f:IntegerCriteriaConditionList.of_xml)(Xml.childxml_arg0"ebsVolumeSizeInGib")inletebsVolumeType=(Option.map~f:StringCriteriaConditionList.of_xml)(Xml.childxml_arg0"ebsVolumeType")inletresourceArn=(Option.map~f:StringCriteriaConditionList.of_xml)(Xml.childxml_arg0"resourceArn")inletregion=(Option.map~f:StringCriteriaConditionList.of_xml)(Xml.childxml_arg0"region")inmake?restartNeeded?lookBackPeriodInDays?resourceTag?estimatedMonthlySavings?ebsVolumeSizeInGib?ebsVolumeType?resourceArn?region()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letrestartNeeded=field_mapjson__"restartNeeded"StringCriteriaConditionList.of_jsoninletlookBackPeriodInDays=field_mapjson__"lookBackPeriodInDays"IntegerCriteriaConditionList.of_jsoninletresourceTag=field_mapjson__"resourceTag"ResourceTagsCriteriaConditionList.of_jsoninletestimatedMonthlySavings=field_mapjson__"estimatedMonthlySavings"DoubleCriteriaConditionList.of_jsoninletebsVolumeSizeInGib=field_mapjson__"ebsVolumeSizeInGib"IntegerCriteriaConditionList.of_jsoninletebsVolumeType=field_mapjson__"ebsVolumeType"StringCriteriaConditionList.of_jsoninletresourceArn=field_mapjson__"resourceArn"StringCriteriaConditionList.of_jsoninletregion=field_mapjson__"region"StringCriteriaConditionList.of_jsoninmake?restartNeeded?lookBackPeriodInDays?resourceTag?estimatedMonthlySavings?ebsVolumeSizeInGib?ebsVolumeType?resourceArn?region()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A set of conditions that specify which recommended action qualify for implementation. When a rule is active and a recommended action matches these criteria, Compute Optimizer implements the action at the scheduled run time. You can specify up to 20 conditions per filter criteria and 20 values per condition."]moduleRuleDescription=structtypenonrect=stringletcontext_="RuleDescription"letmakei=letopenResultinok_or_failwith((check_string_mini~min:0)>>=(fun()->(check_string_maxi~max:1024)>>=(fun()->check_patterni~pattern:"[a-zA-Z0-9_\\-\\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:"RuleDescription"jletto_json=simple_to_jsonto_valueendmoduleTagKeyList=structtypenonrect=String_.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:String_.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:String_.of_xml)letof_jsonj=list_of_json~kind:"TagKeyList"~of_json:String_.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleServiceQuotaExceededException=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 would exceed service quotas."]moduleNextToken=structtypenonrect=stringletcontext_="NextToken"letmakei=letopenResultinok_or_failwith(check_patterni~pattern:"[A-Za-z0-9+/=]+");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_valuevendmoduleListRecommendedActionsRequestMaxResultsInteger=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:100)>>=(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 ListRecommendedActionsRequestMaxResultsInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleRecommendedActionFilterList=structtypenonrect=RecommendedActionFilter.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:RecommendedActionFilter.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:RecommendedActionFilter.of_xml)letof_jsonj=list_of_json~kind:"RecommendedActionFilterList"~of_json:RecommendedActionFilter.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleRecommendedActionSummaries=structtypenonrect=RecommendedActionSummary.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:RecommendedActionSummary.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:RecommendedActionSummary.of_xml)letof_jsonj=list_of_json~kind:"RecommendedActionSummaries"~of_json:RecommendedActionSummary.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleListRecommendedActionSummariesRequestMaxResultsInteger=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:100)>>=(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 ListRecommendedActionSummariesRequestMaxResultsInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleAutomationRules=structtypenonrect=AutomationRule.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:AutomationRule.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:AutomationRule.of_xml)letof_jsonj=list_of_json~kind:"AutomationRules"~of_json:AutomationRule.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleFilterList=structtypenonrect=Filter.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:Filter.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:Filter.of_xml)letof_jsonj=list_of_json~kind:"FilterList"~of_json:Filter.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleListAutomationRulesRequestMaxResultsInteger=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:100)>>=(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 ListAutomationRulesRequestMaxResultsInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmodulePreviewResultSummaries=structtypenonrect=PreviewResultSummary.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:PreviewResultSummary.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:PreviewResultSummary.of_xml)letof_jsonj=list_of_json~kind:"PreviewResultSummaries"~of_json:PreviewResultSummary.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleListAutomationRulePreviewSummariesRequestMaxResultsInteger=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:100)>>=(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 ListAutomationRulePreviewSummariesRequestMaxResultsInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleOrganizationScope=structtypenonrect={accountIds:OrganizationConfigurationAccountIds.toption[@ocaml.doc"List of Amazon Web Services account IDs to include in the organization scope."]}letmake?accountIds=fun()->{accountIds}letto_valuex=structure_to_value[("accountIds",(Option.mapx.accountIds~f:OrganizationConfigurationAccountIds.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccountIds=(Option.map~f:OrganizationConfigurationAccountIds.of_xml)(Xml.childxml_arg0"accountIds")inmake?accountIds()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccountIds=field_mapjson__"accountIds"OrganizationConfigurationAccountIds.of_jsoninmake?accountIds()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Defines the scope for organization-level rules when previewing matching actions."]modulePreviewResults=structtypenonrect=PreviewResult.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:PreviewResult.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:PreviewResult.of_xml)letof_jsonj=list_of_json~kind:"PreviewResults"~of_json:PreviewResult.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleListAutomationRulePreviewRequestMaxResultsInteger=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:100)>>=(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 ListAutomationRulePreviewRequestMaxResultsInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleAutomationEvents=structtypenonrect=AutomationEvent.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:AutomationEvent.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:AutomationEvent.of_xml)letof_jsonj=list_of_json~kind:"AutomationEvents"~of_json:AutomationEvent.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleAutomationEventFilterList=structtypenonrect=AutomationEventFilter.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:AutomationEventFilter.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:AutomationEventFilter.of_xml)letof_jsonj=list_of_json~kind:"AutomationEventFilterList"~of_json:AutomationEventFilter.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleListAutomationEventsRequestMaxResultsInteger=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:100)>>=(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 ListAutomationEventsRequestMaxResultsInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleAutomationEventSummaryList=structtypenonrect=AutomationEventSummary.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:AutomationEventSummary.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:AutomationEventSummary.of_xml)letof_jsonj=list_of_json~kind:"AutomationEventSummaryList"~of_json:AutomationEventSummary.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleListAutomationEventSummariesRequestMaxResultsInteger=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:100)>>=(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 ListAutomationEventSummariesRequestMaxResultsInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleAutomationEventSteps=structtypenonrect=AutomationEventStep.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:AutomationEventStep.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:AutomationEventStep.of_xml)letof_jsonj=list_of_json~kind:"AutomationEventSteps"~of_json:AutomationEventStep.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleListAutomationEventStepsRequestMaxResultsInteger=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:100)>>=(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 ListAutomationEventStepsRequestMaxResultsInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleAccountInfoList=structtypenonrect=AccountInfo.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:AccountInfo.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:AccountInfo.of_xml)letof_jsonj=list_of_json~kind:"AccountInfoList"~of_json:AccountInfo.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleListAccountsRequestMaxResultsInteger=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 ListAccountsRequestMaxResultsInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleAccountIdList=structtypenonrect=AccountId.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:AccountId.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:AccountId.of_xml)letof_jsonj=list_of_json~kind:"AccountIdList"~of_json:AccountId.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleStringList=structtypenonrect=String_.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:String_.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:String_.of_xml)letof_jsonj=list_of_json~kind:"StringList"~of_json:String_.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleUpdateEnrollmentConfigurationResponse=structtypenonrect={status:EnrollmentStatus.toption[@ocaml.doc"The updated enrollment status."];statusReason:String_.toption[@ocaml.doc"The reason for the updated enrollment status."];lastUpdatedTimestamp:Timestamp.toption[@ocaml.doc"The timestamp when the enrollment configuration was last updated."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`ForbiddenExceptionofForbiddenException.t|`IdempotencyTokenInUseExceptionofIdempotencyTokenInUseException.t|`IdempotentParameterMismatchExceptionofIdempotentParameterMismatchException.t|`InternalServerExceptionofInternalServerException.t|`InvalidParameterValueExceptionofInvalidParameterValueException.t|`NotManagementAccountExceptionofNotManagementAccountException.t|`OptInRequiredExceptionofOptInRequiredException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ServiceUnavailableExceptionofServiceUnavailableException.t|`ThrottlingExceptionofThrottlingException.t|`Unknown_operation_errorof(string*stringoption)]letmake?status=fun?statusReason->fun?lastUpdatedTimestamp->fun()->{status;statusReason;lastUpdatedTimestamp}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_jsonjson)|"IdempotencyTokenInUseException"->`IdempotencyTokenInUseException(IdempotencyTokenInUseException.of_jsonjson)|"IdempotentParameterMismatchException"->`IdempotentParameterMismatchException(IdempotentParameterMismatchException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_jsonjson)|"NotManagementAccountException"->`NotManagementAccountException(NotManagementAccountException.of_jsonjson)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_xmlxml)|"IdempotencyTokenInUseException"->`IdempotencyTokenInUseException(IdempotencyTokenInUseException.of_xmlxml)|"IdempotentParameterMismatchException"->`IdempotentParameterMismatchException(IdempotentParameterMismatchException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_xmlxml)|"NotManagementAccountException"->`NotManagementAccountException(NotManagementAccountException.of_xmlxml)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.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))]|`ForbiddenExceptione->`Assoc[("error",(`String"ForbiddenException"));("details",(ForbiddenException.to_jsone))]|`IdempotencyTokenInUseExceptione->`Assoc[("error",(`String"IdempotencyTokenInUseException"));("details",(IdempotencyTokenInUseException.to_jsone))]|`IdempotentParameterMismatchExceptione->`Assoc[("error",(`String"IdempotentParameterMismatchException"));("details",(IdempotentParameterMismatchException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`InvalidParameterValueExceptione->`Assoc[("error",(`String"InvalidParameterValueException"));("details",(InvalidParameterValueException.to_jsone))]|`NotManagementAccountExceptione->`Assoc[("error",(`String"NotManagementAccountException"));("details",(NotManagementAccountException.to_jsone))]|`OptInRequiredExceptione->`Assoc[("error",(`String"OptInRequiredException"));("details",(OptInRequiredException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ServiceUnavailableExceptione->`Assoc[("error",(`String"ServiceUnavailableException"));("details",(ServiceUnavailableException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("status",(Option.mapx.status~f:EnrollmentStatus.to_value));("statusReason",(Option.mapx.statusReason~f:String_.to_value));("lastUpdatedTimestamp",(Option.mapx.lastUpdatedTimestamp~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letlastUpdatedTimestamp=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"lastUpdatedTimestamp")inletstatusReason=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"statusReason")inletstatus=(Option.map~f:EnrollmentStatus.of_xml)(Xml.childxml_arg0"status")inmake?lastUpdatedTimestamp?statusReason?status()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letlastUpdatedTimestamp=field_mapjson__"lastUpdatedTimestamp"Timestamp.of_jsoninletstatusReason=field_mapjson__"statusReason"String_.of_jsoninletstatus=field_mapjson__"status"EnrollmentStatus.of_jsoninmake?lastUpdatedTimestamp?statusReason?status()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Updates your account\226\128\153s Compute Optimizer Automation enrollment configuration."]moduleUpdateEnrollmentConfigurationRequest=structtypenonrect={status:EnrollmentStatus.t[@ocaml.doc"The desired enrollment status. Active - Enables the Automation feature for your account. Inactive - Disables the Automation feature for your account and stops all of your automation rules. If you opt in again later, all rules will be inactive, and you must enable the rules you want to run. You must wait at least 24 hours after opting out to opt in again. The Pending and Failed options cannot be used to update the enrollment status of an account. They are returned in the response of a request to update the enrollment status of an account. If you are a member account, your account must be disassociated from your organization\226\128\153s management account before you can disable Automation. Contact your administrator to make this change."];clientToken:ClientToken.toption[@ocaml.doc"A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Must be 1-64 characters long and contain only alphanumeric characters, underscores, and hyphens."]}letcontext_="UpdateEnrollmentConfigurationRequest"letmake?clientToken=fun~status->fun()->{clientToken;status}letto_valuex=structure_to_value[("status",(Some(EnrollmentStatus.to_valuex.status)));("clientToken",(Option.mapx.clientToken~f:ClientToken.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letclientToken=(Option.map~f:ClientToken.of_xml)(Xml.childxml_arg0"clientToken")inletstatus=EnrollmentStatus.of_xml(Xml.child_exn~context:context_xml_arg0"status")inmake?clientToken~status()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letclientToken=field_mapjson__"clientToken"ClientToken.of_jsoninletstatus=field_map_exnjson__"status"EnrollmentStatus.of_jsoninmake?clientToken~status()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Updates your account\226\128\153s Compute Optimizer Automation enrollment configuration."]moduleUpdateAutomationRuleResponse=structtypenonrect={ruleArn:RuleArn.toption[@ocaml.doc"The ARN of the updated rule."];ruleRevision:Long.toption[@ocaml.doc"The new revision number of the updated rule."];name:RuleName.toption[@ocaml.doc"The updated name of the automation rule."];description:String_.toption[@ocaml.doc"The updated description of the automation rule."];ruleType:RuleType.toption[@ocaml.doc"The updated type of automation rule."];organizationConfiguration:OrganizationConfiguration.toption[@ocaml.doc"The updated organization configuration settings."];priority:String_.toption[@ocaml.doc"The updated priority level of the automation rule."];recommendedActionTypes:RecommendedActionTypeList.toption[@ocaml.doc"The updated list of recommended action types."];criteria:Criteria.toption;schedule:Schedule.toption[@ocaml.doc"The updated schedule configuration."];status:RuleStatus.toption[@ocaml.doc"The updated status of the automation rule."];createdTimestamp:Timestamp.toption[@ocaml.doc"The timestamp when the automation rule was originally created."];lastUpdatedTimestamp:Timestamp.toption[@ocaml.doc"The timestamp when the automation rule was last updated."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`ForbiddenExceptionofForbiddenException.t|`IdempotencyTokenInUseExceptionofIdempotencyTokenInUseException.t|`IdempotentParameterMismatchExceptionofIdempotentParameterMismatchException.t|`InternalServerExceptionofInternalServerException.t|`InvalidParameterValueExceptionofInvalidParameterValueException.t|`OptInRequiredExceptionofOptInRequiredException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ServiceUnavailableExceptionofServiceUnavailableException.t|`ThrottlingExceptionofThrottlingException.t|`Unknown_operation_errorof(string*stringoption)]letmake?ruleArn=fun?ruleRevision->fun?name->fun?description->fun?ruleType->fun?organizationConfiguration->fun?priority->fun?recommendedActionTypes->fun?criteria->fun?schedule->fun?status->fun?createdTimestamp->fun?lastUpdatedTimestamp->fun()->{ruleArn;ruleRevision;name;description;ruleType;organizationConfiguration;priority;recommendedActionTypes;criteria;schedule;status;createdTimestamp;lastUpdatedTimestamp}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_jsonjson)|"IdempotencyTokenInUseException"->`IdempotencyTokenInUseException(IdempotencyTokenInUseException.of_jsonjson)|"IdempotentParameterMismatchException"->`IdempotentParameterMismatchException(IdempotentParameterMismatchException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_jsonjson)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_xmlxml)|"IdempotencyTokenInUseException"->`IdempotencyTokenInUseException(IdempotencyTokenInUseException.of_xmlxml)|"IdempotentParameterMismatchException"->`IdempotentParameterMismatchException(IdempotentParameterMismatchException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_xmlxml)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.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))]|`ForbiddenExceptione->`Assoc[("error",(`String"ForbiddenException"));("details",(ForbiddenException.to_jsone))]|`IdempotencyTokenInUseExceptione->`Assoc[("error",(`String"IdempotencyTokenInUseException"));("details",(IdempotencyTokenInUseException.to_jsone))]|`IdempotentParameterMismatchExceptione->`Assoc[("error",(`String"IdempotentParameterMismatchException"));("details",(IdempotentParameterMismatchException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`InvalidParameterValueExceptione->`Assoc[("error",(`String"InvalidParameterValueException"));("details",(InvalidParameterValueException.to_jsone))]|`OptInRequiredExceptione->`Assoc[("error",(`String"OptInRequiredException"));("details",(OptInRequiredException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ServiceUnavailableExceptione->`Assoc[("error",(`String"ServiceUnavailableException"));("details",(ServiceUnavailableException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("ruleArn",(Option.mapx.ruleArn~f:RuleArn.to_value));("ruleRevision",(Option.mapx.ruleRevision~f:Long.to_value));("name",(Option.mapx.name~f:RuleName.to_value));("description",(Option.mapx.description~f:String_.to_value));("ruleType",(Option.mapx.ruleType~f:RuleType.to_value));("organizationConfiguration",(Option.mapx.organizationConfiguration~f:OrganizationConfiguration.to_value));("priority",(Option.mapx.priority~f:String_.to_value));("recommendedActionTypes",(Option.mapx.recommendedActionTypes~f:RecommendedActionTypeList.to_value));("criteria",(Option.mapx.criteria~f:Criteria.to_value));("schedule",(Option.mapx.schedule~f:Schedule.to_value));("status",(Option.mapx.status~f:RuleStatus.to_value));("createdTimestamp",(Option.mapx.createdTimestamp~f:Timestamp.to_value));("lastUpdatedTimestamp",(Option.mapx.lastUpdatedTimestamp~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letlastUpdatedTimestamp=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"lastUpdatedTimestamp")inletcreatedTimestamp=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"createdTimestamp")inletstatus=(Option.map~f:RuleStatus.of_xml)(Xml.childxml_arg0"status")inletschedule=(Option.map~f:Schedule.of_xml)(Xml.childxml_arg0"schedule")inletcriteria=(Option.map~f:Criteria.of_xml)(Xml.childxml_arg0"criteria")inletrecommendedActionTypes=(Option.map~f:RecommendedActionTypeList.of_xml)(Xml.childxml_arg0"recommendedActionTypes")inletpriority=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"priority")inletorganizationConfiguration=(Option.map~f:OrganizationConfiguration.of_xml)(Xml.childxml_arg0"organizationConfiguration")inletruleType=(Option.map~f:RuleType.of_xml)(Xml.childxml_arg0"ruleType")inletdescription=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"description")inletname=(Option.map~f:RuleName.of_xml)(Xml.childxml_arg0"name")inletruleRevision=(Option.map~f:Long.of_xml)(Xml.childxml_arg0"ruleRevision")inletruleArn=(Option.map~f:RuleArn.of_xml)(Xml.childxml_arg0"ruleArn")inmake?lastUpdatedTimestamp?createdTimestamp?status?schedule?criteria?recommendedActionTypes?priority?organizationConfiguration?ruleType?description?name?ruleRevision?ruleArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letlastUpdatedTimestamp=field_mapjson__"lastUpdatedTimestamp"Timestamp.of_jsoninletcreatedTimestamp=field_mapjson__"createdTimestamp"Timestamp.of_jsoninletstatus=field_mapjson__"status"RuleStatus.of_jsoninletschedule=field_mapjson__"schedule"Schedule.of_jsoninletcriteria=field_mapjson__"criteria"Criteria.of_jsoninletrecommendedActionTypes=field_mapjson__"recommendedActionTypes"RecommendedActionTypeList.of_jsoninletpriority=field_mapjson__"priority"String_.of_jsoninletorganizationConfiguration=field_mapjson__"organizationConfiguration"OrganizationConfiguration.of_jsoninletruleType=field_mapjson__"ruleType"RuleType.of_jsoninletdescription=field_mapjson__"description"String_.of_jsoninletname=field_mapjson__"name"RuleName.of_jsoninletruleRevision=field_mapjson__"ruleRevision"Long.of_jsoninletruleArn=field_mapjson__"ruleArn"RuleArn.of_jsoninmake?lastUpdatedTimestamp?createdTimestamp?status?schedule?criteria?recommendedActionTypes?priority?organizationConfiguration?ruleType?description?name?ruleRevision?ruleArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Updates an existing automation rule."]moduleUpdateAutomationRuleRequest=structtypenonrect={ruleArn:RuleArn.t[@ocaml.doc"The ARN of the rule to update."];ruleRevision:Long.t[@ocaml.doc"The revision number of the rule to update."];name:RuleName.toption[@ocaml.doc"The updated name of the automation rule. Must be 1-128 characters long and contain only alphanumeric characters, underscores, and hyphens."];description:RuleDescription.toption[@ocaml.doc"The updated description of the automation rule. Can be up to 1024 characters long and contain alphanumeric characters, underscores, hyphens, spaces, and certain special characters."];ruleType:RuleType.toption[@ocaml.doc"The updated type of automation rule. Can be either OrganizationRule for organization-wide rules or AccountRule for account-specific rules."];organizationConfiguration:OrganizationConfiguration.toption[@ocaml.doc"Updated configuration settings for organization-wide rules, including rule application order and target account IDs."];priority:String_.toption[@ocaml.doc"The updated priority level of the automation rule, used to determine execution order when multiple rules apply to the same resource."];recommendedActionTypes:RecommendedActionTypeList.toption[@ocaml.doc"Updated list of recommended action types that this rule can execute, such as SnapshotAndDeleteUnattachedEbsVolume or UpgradeEbsVolumeType."];criteria:Criteria.toption;schedule:Schedule.toption[@ocaml.doc"The updated schedule configuration for when the automation rule should execute, including cron expression, timezone, and execution window."];status:RuleStatus.toption[@ocaml.doc"The updated status of the automation rule. Can be Active or Inactive."];clientToken:ClientToken.toption[@ocaml.doc"A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Must be 1-64 characters long and contain only alphanumeric characters, underscores, and hyphens."]}letcontext_="UpdateAutomationRuleRequest"letmake?name=fun?description->fun?ruleType->fun?organizationConfiguration->fun?priority->fun?recommendedActionTypes->fun?criteria->fun?schedule->fun?status->fun?clientToken->fun~ruleArn->fun~ruleRevision->fun()->{name;description;ruleType;organizationConfiguration;priority;recommendedActionTypes;criteria;schedule;status;clientToken;ruleArn;ruleRevision}letto_valuex=structure_to_value[("ruleArn",(Some(RuleArn.to_valuex.ruleArn)));("ruleRevision",(Some(Long.to_valuex.ruleRevision)));("name",(Option.mapx.name~f:RuleName.to_value));("description",(Option.mapx.description~f:RuleDescription.to_value));("ruleType",(Option.mapx.ruleType~f:RuleType.to_value));("organizationConfiguration",(Option.mapx.organizationConfiguration~f:OrganizationConfiguration.to_value));("priority",(Option.mapx.priority~f:String_.to_value));("recommendedActionTypes",(Option.mapx.recommendedActionTypes~f:RecommendedActionTypeList.to_value));("criteria",(Option.mapx.criteria~f:Criteria.to_value));("schedule",(Option.mapx.schedule~f:Schedule.to_value));("status",(Option.mapx.status~f:RuleStatus.to_value));("clientToken",(Option.mapx.clientToken~f:ClientToken.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letclientToken=(Option.map~f:ClientToken.of_xml)(Xml.childxml_arg0"clientToken")inletstatus=(Option.map~f:RuleStatus.of_xml)(Xml.childxml_arg0"status")inletschedule=(Option.map~f:Schedule.of_xml)(Xml.childxml_arg0"schedule")inletcriteria=(Option.map~f:Criteria.of_xml)(Xml.childxml_arg0"criteria")inletrecommendedActionTypes=(Option.map~f:RecommendedActionTypeList.of_xml)(Xml.childxml_arg0"recommendedActionTypes")inletpriority=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"priority")inletorganizationConfiguration=(Option.map~f:OrganizationConfiguration.of_xml)(Xml.childxml_arg0"organizationConfiguration")inletruleType=(Option.map~f:RuleType.of_xml)(Xml.childxml_arg0"ruleType")inletdescription=(Option.map~f:RuleDescription.of_xml)(Xml.childxml_arg0"description")inletname=(Option.map~f:RuleName.of_xml)(Xml.childxml_arg0"name")inletruleRevision=Long.of_xml(Xml.child_exn~context:context_xml_arg0"ruleRevision")inletruleArn=RuleArn.of_xml(Xml.child_exn~context:context_xml_arg0"ruleArn")inmake?clientToken?status?schedule?criteria?recommendedActionTypes?priority?organizationConfiguration?ruleType?description?name~ruleRevision~ruleArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letclientToken=field_mapjson__"clientToken"ClientToken.of_jsoninletstatus=field_mapjson__"status"RuleStatus.of_jsoninletschedule=field_mapjson__"schedule"Schedule.of_jsoninletcriteria=field_mapjson__"criteria"Criteria.of_jsoninletrecommendedActionTypes=field_mapjson__"recommendedActionTypes"RecommendedActionTypeList.of_jsoninletpriority=field_mapjson__"priority"String_.of_jsoninletorganizationConfiguration=field_mapjson__"organizationConfiguration"OrganizationConfiguration.of_jsoninletruleType=field_mapjson__"ruleType"RuleType.of_jsoninletdescription=field_mapjson__"description"RuleDescription.of_jsoninletname=field_mapjson__"name"RuleName.of_jsoninletruleRevision=field_map_exnjson__"ruleRevision"Long.of_jsoninletruleArn=field_map_exnjson__"ruleArn"RuleArn.of_jsoninmake?clientToken?status?schedule?criteria?recommendedActionTypes?priority?organizationConfiguration?ruleType?description?name~ruleRevision~ruleArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Updates an existing automation rule."]moduleUntagResourceResponse=structtypenonrect=unittypenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`ForbiddenExceptionofForbiddenException.t|`IdempotencyTokenInUseExceptionofIdempotencyTokenInUseException.t|`IdempotentParameterMismatchExceptionofIdempotentParameterMismatchException.t|`InternalServerExceptionofInternalServerException.t|`InvalidParameterValueExceptionofInvalidParameterValueException.t|`OptInRequiredExceptionofOptInRequiredException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ServiceUnavailableExceptionofServiceUnavailableException.t|`ThrottlingExceptionofThrottlingException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_jsonjson)|"IdempotencyTokenInUseException"->`IdempotencyTokenInUseException(IdempotencyTokenInUseException.of_jsonjson)|"IdempotentParameterMismatchException"->`IdempotentParameterMismatchException(IdempotentParameterMismatchException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_jsonjson)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_xmlxml)|"IdempotencyTokenInUseException"->`IdempotencyTokenInUseException(IdempotencyTokenInUseException.of_xmlxml)|"IdempotentParameterMismatchException"->`IdempotentParameterMismatchException(IdempotentParameterMismatchException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_xmlxml)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.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))]|`ForbiddenExceptione->`Assoc[("error",(`String"ForbiddenException"));("details",(ForbiddenException.to_jsone))]|`IdempotencyTokenInUseExceptione->`Assoc[("error",(`String"IdempotencyTokenInUseException"));("details",(IdempotencyTokenInUseException.to_jsone))]|`IdempotentParameterMismatchExceptione->`Assoc[("error",(`String"IdempotentParameterMismatchException"));("details",(IdempotentParameterMismatchException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`InvalidParameterValueExceptione->`Assoc[("error",(`String"InvalidParameterValueException"));("details",(InvalidParameterValueException.to_jsone))]|`OptInRequiredExceptione->`Assoc[("error",(`String"OptInRequiredException"));("details",(OptInRequiredException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ServiceUnavailableExceptione->`Assoc[("error",(`String"ServiceUnavailableException"));("details",(ServiceUnavailableException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letof_header_and_body=((fun(xs,pipe)->make())[@warning"-27"])letto_value_=`Structure[]letto_queryv=to_queryto_valuevletof_xml_=make()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_json_=make()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Removes tags from the specified resource."]moduleUntagResourceRequest=structtypenonrect={resourceArn:RuleArn.t[@ocaml.doc"The ARN of the resource to untag."];ruleRevision:Long.t[@ocaml.doc"The revision number of the automation rule to untag. This ensures you're untagging the correct version of the rule."];tagKeys:TagKeyList.t[@ocaml.doc"The keys of the tags to remove from the resource."];clientToken:ClientToken.toption[@ocaml.doc"A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Must be 1-64 characters long and contain only alphanumeric characters, underscores, and hyphens."]}letcontext_="UntagResourceRequest"letmake?clientToken=fun~resourceArn->fun~ruleRevision->fun~tagKeys->fun()->{clientToken;resourceArn;ruleRevision;tagKeys}letto_valuex=structure_to_value[("resourceArn",(Some(RuleArn.to_valuex.resourceArn)));("ruleRevision",(Some(Long.to_valuex.ruleRevision)));("tagKeys",(Some(TagKeyList.to_valuex.tagKeys)));("clientToken",(Option.mapx.clientToken~f:ClientToken.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letclientToken=(Option.map~f:ClientToken.of_xml)(Xml.childxml_arg0"clientToken")inlettagKeys=TagKeyList.of_xml(Xml.child_exn~context:context_xml_arg0"tagKeys")inletruleRevision=Long.of_xml(Xml.child_exn~context:context_xml_arg0"ruleRevision")inletresourceArn=RuleArn.of_xml(Xml.child_exn~context:context_xml_arg0"resourceArn")inmake?clientToken~tagKeys~ruleRevision~resourceArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letclientToken=field_mapjson__"clientToken"ClientToken.of_jsoninlettagKeys=field_map_exnjson__"tagKeys"TagKeyList.of_jsoninletruleRevision=field_map_exnjson__"ruleRevision"Long.of_jsoninletresourceArn=field_map_exnjson__"resourceArn"RuleArn.of_jsoninmake?clientToken~tagKeys~ruleRevision~resourceArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Removes tags from the specified resource."]moduleTagResourceResponse=structtypenonrect=unittypenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`ForbiddenExceptionofForbiddenException.t|`IdempotencyTokenInUseExceptionofIdempotencyTokenInUseException.t|`IdempotentParameterMismatchExceptionofIdempotentParameterMismatchException.t|`InternalServerExceptionofInternalServerException.t|`InvalidParameterValueExceptionofInvalidParameterValueException.t|`OptInRequiredExceptionofOptInRequiredException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ServiceUnavailableExceptionofServiceUnavailableException.t|`ThrottlingExceptionofThrottlingException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_jsonjson)|"IdempotencyTokenInUseException"->`IdempotencyTokenInUseException(IdempotencyTokenInUseException.of_jsonjson)|"IdempotentParameterMismatchException"->`IdempotentParameterMismatchException(IdempotentParameterMismatchException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_jsonjson)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_xmlxml)|"IdempotencyTokenInUseException"->`IdempotencyTokenInUseException(IdempotencyTokenInUseException.of_xmlxml)|"IdempotentParameterMismatchException"->`IdempotentParameterMismatchException(IdempotentParameterMismatchException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_xmlxml)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.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))]|`ForbiddenExceptione->`Assoc[("error",(`String"ForbiddenException"));("details",(ForbiddenException.to_jsone))]|`IdempotencyTokenInUseExceptione->`Assoc[("error",(`String"IdempotencyTokenInUseException"));("details",(IdempotencyTokenInUseException.to_jsone))]|`IdempotentParameterMismatchExceptione->`Assoc[("error",(`String"IdempotentParameterMismatchException"));("details",(IdempotentParameterMismatchException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`InvalidParameterValueExceptione->`Assoc[("error",(`String"InvalidParameterValueException"));("details",(InvalidParameterValueException.to_jsone))]|`OptInRequiredExceptione->`Assoc[("error",(`String"OptInRequiredException"));("details",(OptInRequiredException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ServiceUnavailableExceptione->`Assoc[("error",(`String"ServiceUnavailableException"));("details",(ServiceUnavailableException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letof_header_and_body=((fun(xs,pipe)->make())[@warning"-27"])letto_value_=`Structure[]letto_queryv=to_queryto_valuevletof_xml_=make()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_json_=make()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Adds tags to the specified resource."]moduleTagResourceRequest=structtypenonrect={resourceArn:RuleArn.t[@ocaml.doc"The ARN of the resource to tag."];ruleRevision:Long.t[@ocaml.doc"The revision number of the automation rule to tag. This ensures you're tagging the correct version of the rule."];tags:TagList.t[@ocaml.doc"The tags to add to the resource."];clientToken:ClientToken.toption[@ocaml.doc"A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Must be 1-64 characters long and contain only alphanumeric characters, underscores, and hyphens."]}letcontext_="TagResourceRequest"letmake?clientToken=fun~resourceArn->fun~ruleRevision->fun~tags->fun()->{clientToken;resourceArn;ruleRevision;tags}letto_valuex=structure_to_value[("resourceArn",(Some(RuleArn.to_valuex.resourceArn)));("ruleRevision",(Some(Long.to_valuex.ruleRevision)));("tags",(Some(TagList.to_valuex.tags)));("clientToken",(Option.mapx.clientToken~f:ClientToken.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letclientToken=(Option.map~f:ClientToken.of_xml)(Xml.childxml_arg0"clientToken")inlettags=TagList.of_xml(Xml.child_exn~context:context_xml_arg0"tags")inletruleRevision=Long.of_xml(Xml.child_exn~context:context_xml_arg0"ruleRevision")inletresourceArn=RuleArn.of_xml(Xml.child_exn~context:context_xml_arg0"resourceArn")inmake?clientToken~tags~ruleRevision~resourceArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letclientToken=field_mapjson__"clientToken"ClientToken.of_jsoninlettags=field_map_exnjson__"tags"TagList.of_jsoninletruleRevision=field_map_exnjson__"ruleRevision"Long.of_jsoninletresourceArn=field_map_exnjson__"resourceArn"RuleArn.of_jsoninmake?clientToken~tags~ruleRevision~resourceArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Adds tags to the specified resource."]moduleStartAutomationEventResponse=structtypenonrect={recommendedActionId:RecommendedActionId.toption[@ocaml.doc"The ID of the recommended action being automated."];eventId:EventId.toption[@ocaml.doc"The ID of the automation event."];eventStatus:EventStatus.toption[@ocaml.doc"The current status of the automation event."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`ForbiddenExceptionofForbiddenException.t|`IdempotencyTokenInUseExceptionofIdempotencyTokenInUseException.t|`IdempotentParameterMismatchExceptionofIdempotentParameterMismatchException.t|`InternalServerExceptionofInternalServerException.t|`InvalidParameterValueExceptionofInvalidParameterValueException.t|`OptInRequiredExceptionofOptInRequiredException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ServiceQuotaExceededExceptionofServiceQuotaExceededException.t|`ServiceUnavailableExceptionofServiceUnavailableException.t|`ThrottlingExceptionofThrottlingException.t|`Unknown_operation_errorof(string*stringoption)]letmake?recommendedActionId=fun?eventId->fun?eventStatus->fun()->{recommendedActionId;eventId;eventStatus}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_jsonjson)|"IdempotencyTokenInUseException"->`IdempotencyTokenInUseException(IdempotencyTokenInUseException.of_jsonjson)|"IdempotentParameterMismatchException"->`IdempotentParameterMismatchException(IdempotentParameterMismatchException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_jsonjson)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ServiceQuotaExceededException"->`ServiceQuotaExceededException(ServiceQuotaExceededException.of_jsonjson)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_xmlxml)|"IdempotencyTokenInUseException"->`IdempotencyTokenInUseException(IdempotencyTokenInUseException.of_xmlxml)|"IdempotentParameterMismatchException"->`IdempotentParameterMismatchException(IdempotentParameterMismatchException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_xmlxml)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ServiceQuotaExceededException"->`ServiceQuotaExceededException(ServiceQuotaExceededException.of_xmlxml)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.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))]|`ForbiddenExceptione->`Assoc[("error",(`String"ForbiddenException"));("details",(ForbiddenException.to_jsone))]|`IdempotencyTokenInUseExceptione->`Assoc[("error",(`String"IdempotencyTokenInUseException"));("details",(IdempotencyTokenInUseException.to_jsone))]|`IdempotentParameterMismatchExceptione->`Assoc[("error",(`String"IdempotentParameterMismatchException"));("details",(IdempotentParameterMismatchException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`InvalidParameterValueExceptione->`Assoc[("error",(`String"InvalidParameterValueException"));("details",(InvalidParameterValueException.to_jsone))]|`OptInRequiredExceptione->`Assoc[("error",(`String"OptInRequiredException"));("details",(OptInRequiredException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ServiceQuotaExceededExceptione->`Assoc[("error",(`String"ServiceQuotaExceededException"));("details",(ServiceQuotaExceededException.to_jsone))]|`ServiceUnavailableExceptione->`Assoc[("error",(`String"ServiceUnavailableException"));("details",(ServiceUnavailableException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("recommendedActionId",(Option.mapx.recommendedActionId~f:RecommendedActionId.to_value));("eventId",(Option.mapx.eventId~f:EventId.to_value));("eventStatus",(Option.mapx.eventStatus~f:EventStatus.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=leteventStatus=(Option.map~f:EventStatus.of_xml)(Xml.childxml_arg0"eventStatus")inleteventId=(Option.map~f:EventId.of_xml)(Xml.childxml_arg0"eventId")inletrecommendedActionId=(Option.map~f:RecommendedActionId.of_xml)(Xml.childxml_arg0"recommendedActionId")inmake?eventStatus?eventId?recommendedActionId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=leteventStatus=field_mapjson__"eventStatus"EventStatus.of_jsoninleteventId=field_mapjson__"eventId"EventId.of_jsoninletrecommendedActionId=field_mapjson__"recommendedActionId"RecommendedActionId.of_jsoninmake?eventStatus?eventId?recommendedActionId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Initiates a one-time, on-demand automation for the specified recommended action. Management accounts and delegated administrators can only initiate recommended actions for associated member accounts. You can associate a member account using AssociateAccounts."]moduleStartAutomationEventRequest=structtypenonrect={recommendedActionId:RecommendedActionId.t[@ocaml.doc"The ID of the recommended action to automate."];clientToken:ClientToken.toption[@ocaml.doc"A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Must be 1-64 characters long and contain only alphanumeric characters, underscores, and hyphens."]}letcontext_="StartAutomationEventRequest"letmake?clientToken=fun~recommendedActionId->fun()->{clientToken;recommendedActionId}letto_valuex=structure_to_value[("recommendedActionId",(Some(RecommendedActionId.to_valuex.recommendedActionId)));("clientToken",(Option.mapx.clientToken~f:ClientToken.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letclientToken=(Option.map~f:ClientToken.of_xml)(Xml.childxml_arg0"clientToken")inletrecommendedActionId=RecommendedActionId.of_xml(Xml.child_exn~context:context_xml_arg0"recommendedActionId")inmake?clientToken~recommendedActionId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letclientToken=field_mapjson__"clientToken"ClientToken.of_jsoninletrecommendedActionId=field_map_exnjson__"recommendedActionId"RecommendedActionId.of_jsoninmake?clientToken~recommendedActionId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Initiates a one-time, on-demand automation for the specified recommended action. Management accounts and delegated administrators can only initiate recommended actions for associated member accounts. You can associate a member account using AssociateAccounts."]moduleRollbackAutomationEventResponse=structtypenonrect={eventId:EventId.toption[@ocaml.doc"The ID of the automation event being rolled back."];eventStatus:EventStatus.toption[@ocaml.doc"The current status of the rollback operation."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`ForbiddenExceptionofForbiddenException.t|`IdempotencyTokenInUseExceptionofIdempotencyTokenInUseException.t|`IdempotentParameterMismatchExceptionofIdempotentParameterMismatchException.t|`InternalServerExceptionofInternalServerException.t|`InvalidParameterValueExceptionofInvalidParameterValueException.t|`OptInRequiredExceptionofOptInRequiredException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ServiceUnavailableExceptionofServiceUnavailableException.t|`ThrottlingExceptionofThrottlingException.t|`Unknown_operation_errorof(string*stringoption)]letmake?eventId=fun?eventStatus->fun()->{eventId;eventStatus}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_jsonjson)|"IdempotencyTokenInUseException"->`IdempotencyTokenInUseException(IdempotencyTokenInUseException.of_jsonjson)|"IdempotentParameterMismatchException"->`IdempotentParameterMismatchException(IdempotentParameterMismatchException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_jsonjson)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_xmlxml)|"IdempotencyTokenInUseException"->`IdempotencyTokenInUseException(IdempotencyTokenInUseException.of_xmlxml)|"IdempotentParameterMismatchException"->`IdempotentParameterMismatchException(IdempotentParameterMismatchException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_xmlxml)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.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))]|`ForbiddenExceptione->`Assoc[("error",(`String"ForbiddenException"));("details",(ForbiddenException.to_jsone))]|`IdempotencyTokenInUseExceptione->`Assoc[("error",(`String"IdempotencyTokenInUseException"));("details",(IdempotencyTokenInUseException.to_jsone))]|`IdempotentParameterMismatchExceptione->`Assoc[("error",(`String"IdempotentParameterMismatchException"));("details",(IdempotentParameterMismatchException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`InvalidParameterValueExceptione->`Assoc[("error",(`String"InvalidParameterValueException"));("details",(InvalidParameterValueException.to_jsone))]|`OptInRequiredExceptione->`Assoc[("error",(`String"OptInRequiredException"));("details",(OptInRequiredException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ServiceUnavailableExceptione->`Assoc[("error",(`String"ServiceUnavailableException"));("details",(ServiceUnavailableException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("eventId",(Option.mapx.eventId~f:EventId.to_value));("eventStatus",(Option.mapx.eventStatus~f:EventStatus.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=leteventStatus=(Option.map~f:EventStatus.of_xml)(Xml.childxml_arg0"eventStatus")inleteventId=(Option.map~f:EventId.of_xml)(Xml.childxml_arg0"eventId")inmake?eventStatus?eventId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=leteventStatus=field_mapjson__"eventStatus"EventStatus.of_jsoninleteventId=field_mapjson__"eventId"EventId.of_jsoninmake?eventStatus?eventId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Initiates a rollback for a completed automation event. Management accounts and delegated administrators can only initiate a rollback for events belonging to associated member accounts. You can associate a member account using AssociateAccounts."]moduleRollbackAutomationEventRequest=structtypenonrect={eventId:EventId.t[@ocaml.doc"The ID of the automation event to roll back."];clientToken:ClientToken.toption[@ocaml.doc"A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Must be 1-64 characters long and contain only alphanumeric characters, underscores, and hyphens."]}letcontext_="RollbackAutomationEventRequest"letmake?clientToken=fun~eventId->fun()->{clientToken;eventId}letto_valuex=structure_to_value[("eventId",(Some(EventId.to_valuex.eventId)));("clientToken",(Option.mapx.clientToken~f:ClientToken.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letclientToken=(Option.map~f:ClientToken.of_xml)(Xml.childxml_arg0"clientToken")inleteventId=EventId.of_xml(Xml.child_exn~context:context_xml_arg0"eventId")inmake?clientToken~eventId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letclientToken=field_mapjson__"clientToken"ClientToken.of_jsoninleteventId=field_map_exnjson__"eventId"EventId.of_jsoninmake?clientToken~eventId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Initiates a rollback for a completed automation event. Management accounts and delegated administrators can only initiate a rollback for events belonging to associated member accounts. You can associate a member account using AssociateAccounts."]moduleListTagsForResourceResponse=structtypenonrect={tags:TagList.toption[@ocaml.doc"The list of tags associated with the specified resource."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`ForbiddenExceptionofForbiddenException.t|`InternalServerExceptionofInternalServerException.t|`InvalidParameterValueExceptionofInvalidParameterValueException.t|`OptInRequiredExceptionofOptInRequiredException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ServiceUnavailableExceptionofServiceUnavailableException.t|`ThrottlingExceptionofThrottlingException.t|`Unknown_operation_errorof(string*stringoption)]letmake?tags=fun()->{tags}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_jsonjson)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_xmlxml)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.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))]|`ForbiddenExceptione->`Assoc[("error",(`String"ForbiddenException"));("details",(ForbiddenException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`InvalidParameterValueExceptione->`Assoc[("error",(`String"InvalidParameterValueException"));("details",(InvalidParameterValueException.to_jsone))]|`OptInRequiredExceptione->`Assoc[("error",(`String"OptInRequiredException"));("details",(OptInRequiredException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ServiceUnavailableExceptione->`Assoc[("error",(`String"ServiceUnavailableException"));("details",(ServiceUnavailableException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("tags",(Option.mapx.tags~f:TagList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:TagList.of_xml)(Xml.childxml_arg0"tags")inmake?tags()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"tags"TagList.of_jsoninmake?tags()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists the tags for a specified resource."]moduleListTagsForResourceRequest=structtypenonrect={resourceArn:RuleArn.t[@ocaml.doc"The ARN of the resource to list tags for."]}letcontext_="ListTagsForResourceRequest"letmake~resourceArn=fun()->{resourceArn}letto_valuex=structure_to_value[("resourceArn",(Some(RuleArn.to_valuex.resourceArn)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letresourceArn=RuleArn.of_xml(Xml.child_exn~context:context_xml_arg0"resourceArn")inmake~resourceArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letresourceArn=field_map_exnjson__"resourceArn"RuleArn.of_jsoninmake~resourceArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists the tags for a specified resource."]moduleListRecommendedActionsResponse=structtypenonrect={recommendedActions:RecommendedActions.toption[@ocaml.doc"The list of recommended actions that match the specified criteria."];nextToken:NextToken.toption[@ocaml.doc"A token used for pagination. If present, indicates there are more results available and can be used in subsequent requests."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`ForbiddenExceptionofForbiddenException.t|`InternalServerExceptionofInternalServerException.t|`InvalidParameterValueExceptionofInvalidParameterValueException.t|`OptInRequiredExceptionofOptInRequiredException.t|`ServiceUnavailableExceptionofServiceUnavailableException.t|`ThrottlingExceptionofThrottlingException.t|`Unknown_operation_errorof(string*stringoption)]letmake?recommendedActions=fun?nextToken->fun()->{recommendedActions;nextToken}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_jsonjson)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_jsonjson)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_xmlxml)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_xmlxml)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.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))]|`ForbiddenExceptione->`Assoc[("error",(`String"ForbiddenException"));("details",(ForbiddenException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`InvalidParameterValueExceptione->`Assoc[("error",(`String"InvalidParameterValueException"));("details",(InvalidParameterValueException.to_jsone))]|`OptInRequiredExceptione->`Assoc[("error",(`String"OptInRequiredException"));("details",(OptInRequiredException.to_jsone))]|`ServiceUnavailableExceptione->`Assoc[("error",(`String"ServiceUnavailableException"));("details",(ServiceUnavailableException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.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"Lists the recommended actions based that match specified filters. Management accounts and delegated administrators can retrieve recommended actions that include associated member accounts. You can associate a member account using AssociateAccounts."]moduleListRecommendedActionsRequest=structtypenonrect={filters:RecommendedActionFilterList.toption[@ocaml.doc"The filters to apply to the list of recommended actions."];maxResults:ListRecommendedActionsRequestMaxResultsInteger.toption[@ocaml.doc"The maximum number of recommended actions to return in a single response. Valid range is 1-1000."];nextToken:NextToken.toption[@ocaml.doc"A token used for pagination to retrieve the next set of results when the response is truncated."]}letmake?filters=fun?maxResults->fun?nextToken->fun()->{filters;maxResults;nextToken}letto_valuex=structure_to_value[("filters",(Option.mapx.filters~f:RecommendedActionFilterList.to_value));("maxResults",(Option.mapx.maxResults~f:ListRecommendedActionsRequestMaxResultsInteger.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:ListRecommendedActionsRequestMaxResultsInteger.of_xml)(Xml.childxml_arg0"maxResults")inletfilters=(Option.map~f:RecommendedActionFilterList.of_xml)(Xml.childxml_arg0"filters")inmake?nextToken?maxResults?filters()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"nextToken"NextToken.of_jsoninletmaxResults=field_mapjson__"maxResults"ListRecommendedActionsRequestMaxResultsInteger.of_jsoninletfilters=field_mapjson__"filters"RecommendedActionFilterList.of_jsoninmake?nextToken?maxResults?filters()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists the recommended actions based that match specified filters. Management accounts and delegated administrators can retrieve recommended actions that include associated member accounts. You can associate a member account using AssociateAccounts."]moduleListRecommendedActionSummariesResponse=structtypenonrect={recommendedActionSummaries:RecommendedActionSummaries.toption[@ocaml.doc"The summary of recommended actions that match the specified criteria."];nextToken:NextToken.toption[@ocaml.doc"A token used for pagination. If present, indicates there are more results available and can be used in subsequent requests."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`ForbiddenExceptionofForbiddenException.t|`InternalServerExceptionofInternalServerException.t|`InvalidParameterValueExceptionofInvalidParameterValueException.t|`OptInRequiredExceptionofOptInRequiredException.t|`ServiceUnavailableExceptionofServiceUnavailableException.t|`ThrottlingExceptionofThrottlingException.t|`Unknown_operation_errorof(string*stringoption)]letmake?recommendedActionSummaries=fun?nextToken->fun()->{recommendedActionSummaries;nextToken}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_jsonjson)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_jsonjson)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_xmlxml)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_xmlxml)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.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))]|`ForbiddenExceptione->`Assoc[("error",(`String"ForbiddenException"));("details",(ForbiddenException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`InvalidParameterValueExceptione->`Assoc[("error",(`String"InvalidParameterValueException"));("details",(InvalidParameterValueException.to_jsone))]|`OptInRequiredExceptione->`Assoc[("error",(`String"OptInRequiredException"));("details",(OptInRequiredException.to_jsone))]|`ServiceUnavailableExceptione->`Assoc[("error",(`String"ServiceUnavailableException"));("details",(ServiceUnavailableException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("recommendedActionSummaries",(Option.mapx.recommendedActionSummaries~f:RecommendedActionSummaries.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")inletrecommendedActionSummaries=(Option.map~f:RecommendedActionSummaries.of_xml)(Xml.childxml_arg0"recommendedActionSummaries")inmake?nextToken?recommendedActionSummaries()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"nextToken"NextToken.of_jsoninletrecommendedActionSummaries=field_mapjson__"recommendedActionSummaries"RecommendedActionSummaries.of_jsoninmake?nextToken?recommendedActionSummaries()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Provides a summary of recommended actions based on specified filters. Management accounts and delegated administrators can retrieve recommended actions that include associated member accounts. You can associate a member account using AssociateAccounts."]moduleListRecommendedActionSummariesRequest=structtypenonrect={filters:RecommendedActionFilterList.toption[@ocaml.doc"A list of filters to apply when retrieving recommended action summaries. Filters can be based on resource type, action type, account ID, and other criteria."];maxResults:ListRecommendedActionSummariesRequestMaxResultsInteger.toption[@ocaml.doc"The maximum number of recommended action summaries to return in a single response. Valid range is 1-1000."];nextToken:NextToken.toption[@ocaml.doc"A token used for pagination to retrieve the next set of results when the response is truncated."]}letmake?filters=fun?maxResults->fun?nextToken->fun()->{filters;maxResults;nextToken}letto_valuex=structure_to_value[("filters",(Option.mapx.filters~f:RecommendedActionFilterList.to_value));("maxResults",(Option.mapx.maxResults~f:ListRecommendedActionSummariesRequestMaxResultsInteger.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:ListRecommendedActionSummariesRequestMaxResultsInteger.of_xml)(Xml.childxml_arg0"maxResults")inletfilters=(Option.map~f:RecommendedActionFilterList.of_xml)(Xml.childxml_arg0"filters")inmake?nextToken?maxResults?filters()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"nextToken"NextToken.of_jsoninletmaxResults=field_mapjson__"maxResults"ListRecommendedActionSummariesRequestMaxResultsInteger.of_jsoninletfilters=field_mapjson__"filters"RecommendedActionFilterList.of_jsoninmake?nextToken?maxResults?filters()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Provides a summary of recommended actions based on specified filters. Management accounts and delegated administrators can retrieve recommended actions that include associated member accounts. You can associate a member account using AssociateAccounts."]moduleListAutomationRulesResponse=structtypenonrect={automationRules:AutomationRules.toption[@ocaml.doc"The list of automation rules that match the specified criteria."];nextToken:NextToken.toption[@ocaml.doc"A token used for pagination. If present, indicates there are more results available and can be used in subsequent requests."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`ForbiddenExceptionofForbiddenException.t|`InternalServerExceptionofInternalServerException.t|`InvalidParameterValueExceptionofInvalidParameterValueException.t|`OptInRequiredExceptionofOptInRequiredException.t|`ServiceUnavailableExceptionofServiceUnavailableException.t|`ThrottlingExceptionofThrottlingException.t|`Unknown_operation_errorof(string*stringoption)]letmake?automationRules=fun?nextToken->fun()->{automationRules;nextToken}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_jsonjson)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_jsonjson)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_xmlxml)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_xmlxml)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.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))]|`ForbiddenExceptione->`Assoc[("error",(`String"ForbiddenException"));("details",(ForbiddenException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`InvalidParameterValueExceptione->`Assoc[("error",(`String"InvalidParameterValueException"));("details",(InvalidParameterValueException.to_jsone))]|`OptInRequiredExceptione->`Assoc[("error",(`String"OptInRequiredException"));("details",(OptInRequiredException.to_jsone))]|`ServiceUnavailableExceptione->`Assoc[("error",(`String"ServiceUnavailableException"));("details",(ServiceUnavailableException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("automationRules",(Option.mapx.automationRules~f:AutomationRules.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")inletautomationRules=(Option.map~f:AutomationRules.of_xml)(Xml.childxml_arg0"automationRules")inmake?nextToken?automationRules()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"nextToken"NextToken.of_jsoninletautomationRules=field_mapjson__"automationRules"AutomationRules.of_jsoninmake?nextToken?automationRules()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists the automation rules that match specified filters."]moduleListAutomationRulesRequest=structtypenonrect={filters:FilterList.toption[@ocaml.doc"The filters to apply to the list of automation rules."];maxResults:ListAutomationRulesRequestMaxResultsInteger.toption[@ocaml.doc"The maximum number of automation rules to return in a single response. Valid range is 1-1000."];nextToken:NextToken.toption[@ocaml.doc"A token used for pagination to retrieve the next set of results when the response is truncated."]}letmake?filters=fun?maxResults->fun?nextToken->fun()->{filters;maxResults;nextToken}letto_valuex=structure_to_value[("filters",(Option.mapx.filters~f:FilterList.to_value));("maxResults",(Option.mapx.maxResults~f:ListAutomationRulesRequestMaxResultsInteger.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:ListAutomationRulesRequestMaxResultsInteger.of_xml)(Xml.childxml_arg0"maxResults")inletfilters=(Option.map~f:FilterList.of_xml)(Xml.childxml_arg0"filters")inmake?nextToken?maxResults?filters()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"nextToken"NextToken.of_jsoninletmaxResults=field_mapjson__"maxResults"ListAutomationRulesRequestMaxResultsInteger.of_jsoninletfilters=field_mapjson__"filters"FilterList.of_jsoninmake?nextToken?maxResults?filters()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists the automation rules that match specified filters."]moduleListAutomationRulePreviewSummariesResponse=structtypenonrect={previewResultSummaries:PreviewResultSummaries.toption[@ocaml.doc"The list of automation rule preview summaries that match the specified criteria."];nextToken:NextToken.toption[@ocaml.doc"A token used for pagination. If present, indicates there are more results available and can be used in subsequent requests."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`ForbiddenExceptionofForbiddenException.t|`InternalServerExceptionofInternalServerException.t|`InvalidParameterValueExceptionofInvalidParameterValueException.t|`OptInRequiredExceptionofOptInRequiredException.t|`ServiceUnavailableExceptionofServiceUnavailableException.t|`ThrottlingExceptionofThrottlingException.t|`Unknown_operation_errorof(string*stringoption)]letmake?previewResultSummaries=fun?nextToken->fun()->{previewResultSummaries;nextToken}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_jsonjson)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_jsonjson)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_xmlxml)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_xmlxml)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.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))]|`ForbiddenExceptione->`Assoc[("error",(`String"ForbiddenException"));("details",(ForbiddenException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`InvalidParameterValueExceptione->`Assoc[("error",(`String"InvalidParameterValueException"));("details",(InvalidParameterValueException.to_jsone))]|`OptInRequiredExceptione->`Assoc[("error",(`String"OptInRequiredException"));("details",(OptInRequiredException.to_jsone))]|`ServiceUnavailableExceptione->`Assoc[("error",(`String"ServiceUnavailableException"));("details",(ServiceUnavailableException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("previewResultSummaries",(Option.mapx.previewResultSummaries~f:PreviewResultSummaries.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")inletpreviewResultSummaries=(Option.map~f:PreviewResultSummaries.of_xml)(Xml.childxml_arg0"previewResultSummaries")inmake?nextToken?previewResultSummaries()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"nextToken"NextToken.of_jsoninletpreviewResultSummaries=field_mapjson__"previewResultSummaries"PreviewResultSummaries.of_jsoninmake?nextToken?previewResultSummaries()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns a summary of the recommended actions that match your rule preview configuration and criteria."]moduleListAutomationRulePreviewSummariesRequest=structtypenonrect={ruleType:RuleType.t[@ocaml.doc"The type of rule."];organizationScope:OrganizationScope.toption[@ocaml.doc"The organizational scope for the rule preview."];recommendedActionTypes:RecommendedActionTypeList.t[@ocaml.doc"The types of recommended actions to include in the preview."];criteria:Criteria.toption;maxResults:ListAutomationRulePreviewSummariesRequestMaxResultsInteger.toption[@ocaml.doc"The maximum number of automation rule preview summaries to return in a single response. Valid range is 1-1000."];nextToken:NextToken.toption[@ocaml.doc"A token used for pagination to retrieve the next set of results when the response is truncated."]}letcontext_="ListAutomationRulePreviewSummariesRequest"letmake?organizationScope=fun?criteria->fun?maxResults->fun?nextToken->fun~ruleType->fun~recommendedActionTypes->fun()->{organizationScope;criteria;maxResults;nextToken;ruleType;recommendedActionTypes}letto_valuex=structure_to_value[("ruleType",(Some(RuleType.to_valuex.ruleType)));("organizationScope",(Option.mapx.organizationScope~f:OrganizationScope.to_value));("recommendedActionTypes",(Some(RecommendedActionTypeList.to_valuex.recommendedActionTypes)));("criteria",(Option.mapx.criteria~f:Criteria.to_value));("maxResults",(Option.mapx.maxResults~f:ListAutomationRulePreviewSummariesRequestMaxResultsInteger.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:ListAutomationRulePreviewSummariesRequestMaxResultsInteger.of_xml)(Xml.childxml_arg0"maxResults")inletcriteria=(Option.map~f:Criteria.of_xml)(Xml.childxml_arg0"criteria")inletrecommendedActionTypes=RecommendedActionTypeList.of_xml(Xml.child_exn~context:context_xml_arg0"recommendedActionTypes")inletorganizationScope=(Option.map~f:OrganizationScope.of_xml)(Xml.childxml_arg0"organizationScope")inletruleType=RuleType.of_xml(Xml.child_exn~context:context_xml_arg0"ruleType")inmake?nextToken?maxResults?criteria~recommendedActionTypes?organizationScope~ruleType()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"nextToken"NextToken.of_jsoninletmaxResults=field_mapjson__"maxResults"ListAutomationRulePreviewSummariesRequestMaxResultsInteger.of_jsoninletcriteria=field_mapjson__"criteria"Criteria.of_jsoninletrecommendedActionTypes=field_map_exnjson__"recommendedActionTypes"RecommendedActionTypeList.of_jsoninletorganizationScope=field_mapjson__"organizationScope"OrganizationScope.of_jsoninletruleType=field_map_exnjson__"ruleType"RuleType.of_jsoninmake?nextToken?maxResults?criteria~recommendedActionTypes?organizationScope~ruleType()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns a summary of the recommended actions that match your rule preview configuration and criteria."]moduleListAutomationRulePreviewResponse=structtypenonrect={previewResults:PreviewResults.toption[@ocaml.doc"The list of actions that would be taken based on the specified criteria."];nextToken:NextToken.toption[@ocaml.doc"A token used for pagination. If present, indicates there are more results available and can be used in subsequent requests."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`ForbiddenExceptionofForbiddenException.t|`InternalServerExceptionofInternalServerException.t|`InvalidParameterValueExceptionofInvalidParameterValueException.t|`OptInRequiredExceptionofOptInRequiredException.t|`ServiceUnavailableExceptionofServiceUnavailableException.t|`ThrottlingExceptionofThrottlingException.t|`Unknown_operation_errorof(string*stringoption)]letmake?previewResults=fun?nextToken->fun()->{previewResults;nextToken}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_jsonjson)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_jsonjson)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_xmlxml)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_xmlxml)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.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))]|`ForbiddenExceptione->`Assoc[("error",(`String"ForbiddenException"));("details",(ForbiddenException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`InvalidParameterValueExceptione->`Assoc[("error",(`String"InvalidParameterValueException"));("details",(InvalidParameterValueException.to_jsone))]|`OptInRequiredExceptione->`Assoc[("error",(`String"OptInRequiredException"));("details",(OptInRequiredException.to_jsone))]|`ServiceUnavailableExceptione->`Assoc[("error",(`String"ServiceUnavailableException"));("details",(ServiceUnavailableException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("previewResults",(Option.mapx.previewResults~f:PreviewResults.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")inletpreviewResults=(Option.map~f:PreviewResults.of_xml)(Xml.childxml_arg0"previewResults")inmake?nextToken?previewResults()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"nextToken"NextToken.of_jsoninletpreviewResults=field_mapjson__"previewResults"PreviewResults.of_jsoninmake?nextToken?previewResults()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns a preview of the recommended actions that match your Automation rule's configuration and criteria."]moduleListAutomationRulePreviewRequest=structtypenonrect={ruleType:RuleType.t[@ocaml.doc"The type of rule. Only the management account or a delegated administrator can set the ruleType to be OrganizationRule."];organizationScope:OrganizationScope.toption[@ocaml.doc"The organizational scope for the rule preview."];recommendedActionTypes:RecommendedActionTypeList.t[@ocaml.doc"The types of recommended actions to include in the preview."];criteria:Criteria.toption[@ocaml.doc"A set of conditions that specify which recommended action qualify for implementation. When a rule is active and a recommended action matches these criteria, Compute Optimizer implements the action at the scheduled run time."];maxResults:ListAutomationRulePreviewRequestMaxResultsInteger.toption[@ocaml.doc"The maximum number of automation rule preview results to return in a single response. Valid range is 1-1000."];nextToken:NextToken.toption[@ocaml.doc"A token used for pagination to retrieve the next set of results when the response is truncated."]}letcontext_="ListAutomationRulePreviewRequest"letmake?organizationScope=fun?criteria->fun?maxResults->fun?nextToken->fun~ruleType->fun~recommendedActionTypes->fun()->{organizationScope;criteria;maxResults;nextToken;ruleType;recommendedActionTypes}letto_valuex=structure_to_value[("ruleType",(Some(RuleType.to_valuex.ruleType)));("organizationScope",(Option.mapx.organizationScope~f:OrganizationScope.to_value));("recommendedActionTypes",(Some(RecommendedActionTypeList.to_valuex.recommendedActionTypes)));("criteria",(Option.mapx.criteria~f:Criteria.to_value));("maxResults",(Option.mapx.maxResults~f:ListAutomationRulePreviewRequestMaxResultsInteger.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:ListAutomationRulePreviewRequestMaxResultsInteger.of_xml)(Xml.childxml_arg0"maxResults")inletcriteria=(Option.map~f:Criteria.of_xml)(Xml.childxml_arg0"criteria")inletrecommendedActionTypes=RecommendedActionTypeList.of_xml(Xml.child_exn~context:context_xml_arg0"recommendedActionTypes")inletorganizationScope=(Option.map~f:OrganizationScope.of_xml)(Xml.childxml_arg0"organizationScope")inletruleType=RuleType.of_xml(Xml.child_exn~context:context_xml_arg0"ruleType")inmake?nextToken?maxResults?criteria~recommendedActionTypes?organizationScope~ruleType()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"nextToken"NextToken.of_jsoninletmaxResults=field_mapjson__"maxResults"ListAutomationRulePreviewRequestMaxResultsInteger.of_jsoninletcriteria=field_mapjson__"criteria"Criteria.of_jsoninletrecommendedActionTypes=field_map_exnjson__"recommendedActionTypes"RecommendedActionTypeList.of_jsoninletorganizationScope=field_mapjson__"organizationScope"OrganizationScope.of_jsoninletruleType=field_map_exnjson__"ruleType"RuleType.of_jsoninmake?nextToken?maxResults?criteria~recommendedActionTypes?organizationScope~ruleType()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns a preview of the recommended actions that match your Automation rule's configuration and criteria."]moduleListAutomationEventsResponse=structtypenonrect={automationEvents:AutomationEvents.toption[@ocaml.doc"The list of automation events that match the specified criteria."];nextToken:NextToken.toption[@ocaml.doc"The token to use to retrieve the next page of results."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`ForbiddenExceptionofForbiddenException.t|`InternalServerExceptionofInternalServerException.t|`InvalidParameterValueExceptionofInvalidParameterValueException.t|`OptInRequiredExceptionofOptInRequiredException.t|`ServiceUnavailableExceptionofServiceUnavailableException.t|`ThrottlingExceptionofThrottlingException.t|`Unknown_operation_errorof(string*stringoption)]letmake?automationEvents=fun?nextToken->fun()->{automationEvents;nextToken}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_jsonjson)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_jsonjson)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_xmlxml)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_xmlxml)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.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))]|`ForbiddenExceptione->`Assoc[("error",(`String"ForbiddenException"));("details",(ForbiddenException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`InvalidParameterValueExceptione->`Assoc[("error",(`String"InvalidParameterValueException"));("details",(InvalidParameterValueException.to_jsone))]|`OptInRequiredExceptione->`Assoc[("error",(`String"OptInRequiredException"));("details",(OptInRequiredException.to_jsone))]|`ServiceUnavailableExceptione->`Assoc[("error",(`String"ServiceUnavailableException"));("details",(ServiceUnavailableException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("automationEvents",(Option.mapx.automationEvents~f:AutomationEvents.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")inletautomationEvents=(Option.map~f:AutomationEvents.of_xml)(Xml.childxml_arg0"automationEvents")inmake?nextToken?automationEvents()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"nextToken"NextToken.of_jsoninletautomationEvents=field_mapjson__"automationEvents"AutomationEvents.of_jsoninmake?nextToken?automationEvents()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists automation events based on specified filters. You can retrieve events that were created within the past year."]moduleListAutomationEventsRequest=structtypenonrect={filters:AutomationEventFilterList.toption[@ocaml.doc"The filters to apply to the list of automation events."];startTimeInclusive:Timestamp.toption[@ocaml.doc"The start of the time range to query for events."];endTimeExclusive:Timestamp.toption[@ocaml.doc"The end of the time range to query for events."];maxResults:ListAutomationEventsRequestMaxResultsInteger.toption[@ocaml.doc"The maximum number of results to return in a single call."];nextToken:NextToken.toption[@ocaml.doc"The token for the next page of results."]}letmake?filters=fun?startTimeInclusive->fun?endTimeExclusive->fun?maxResults->fun?nextToken->fun()->{filters;startTimeInclusive;endTimeExclusive;maxResults;nextToken}letto_valuex=structure_to_value[("filters",(Option.mapx.filters~f:AutomationEventFilterList.to_value));("startTimeInclusive",(Option.mapx.startTimeInclusive~f:Timestamp.to_value));("endTimeExclusive",(Option.mapx.endTimeExclusive~f:Timestamp.to_value));("maxResults",(Option.mapx.maxResults~f:ListAutomationEventsRequestMaxResultsInteger.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:ListAutomationEventsRequestMaxResultsInteger.of_xml)(Xml.childxml_arg0"maxResults")inletendTimeExclusive=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"endTimeExclusive")inletstartTimeInclusive=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"startTimeInclusive")inletfilters=(Option.map~f:AutomationEventFilterList.of_xml)(Xml.childxml_arg0"filters")inmake?nextToken?maxResults?endTimeExclusive?startTimeInclusive?filters()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"nextToken"NextToken.of_jsoninletmaxResults=field_mapjson__"maxResults"ListAutomationEventsRequestMaxResultsInteger.of_jsoninletendTimeExclusive=field_mapjson__"endTimeExclusive"Timestamp.of_jsoninletstartTimeInclusive=field_mapjson__"startTimeInclusive"Timestamp.of_jsoninletfilters=field_mapjson__"filters"AutomationEventFilterList.of_jsoninmake?nextToken?maxResults?endTimeExclusive?startTimeInclusive?filters()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists automation events based on specified filters. You can retrieve events that were created within the past year."]moduleListAutomationEventSummariesResponse=structtypenonrect={automationEventSummaries:AutomationEventSummaryList.toption[@ocaml.doc"The list of automation event summaries that match the specified criteria."];nextToken:NextToken.toption[@ocaml.doc"A token used for pagination. If present, indicates there are more results available and can be used in subsequent requests."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`ForbiddenExceptionofForbiddenException.t|`InternalServerExceptionofInternalServerException.t|`InvalidParameterValueExceptionofInvalidParameterValueException.t|`OptInRequiredExceptionofOptInRequiredException.t|`ServiceUnavailableExceptionofServiceUnavailableException.t|`ThrottlingExceptionofThrottlingException.t|`Unknown_operation_errorof(string*stringoption)]letmake?automationEventSummaries=fun?nextToken->fun()->{automationEventSummaries;nextToken}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_jsonjson)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_jsonjson)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_xmlxml)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_xmlxml)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.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))]|`ForbiddenExceptione->`Assoc[("error",(`String"ForbiddenException"));("details",(ForbiddenException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`InvalidParameterValueExceptione->`Assoc[("error",(`String"InvalidParameterValueException"));("details",(InvalidParameterValueException.to_jsone))]|`OptInRequiredExceptione->`Assoc[("error",(`String"OptInRequiredException"));("details",(OptInRequiredException.to_jsone))]|`ServiceUnavailableExceptione->`Assoc[("error",(`String"ServiceUnavailableException"));("details",(ServiceUnavailableException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("automationEventSummaries",(Option.mapx.automationEventSummaries~f:AutomationEventSummaryList.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")inletautomationEventSummaries=(Option.map~f:AutomationEventSummaryList.of_xml)(Xml.childxml_arg0"automationEventSummaries")inmake?nextToken?automationEventSummaries()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"nextToken"NextToken.of_jsoninletautomationEventSummaries=field_mapjson__"automationEventSummaries"AutomationEventSummaryList.of_jsoninmake?nextToken?automationEventSummaries()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Provides a summary of automation events based on specified filters. Only events created within the past year will be included in the summary."]moduleListAutomationEventSummariesRequest=structtypenonrect={filters:AutomationEventFilterList.toption[@ocaml.doc"The filters to apply to the list of automation event summaries."];startDateInclusive:String_.toption[@ocaml.doc"The start date for filtering automation event summaries, inclusive. Events created on or after this date will be included."];endDateExclusive:String_.toption[@ocaml.doc"The end date for filtering automation event summaries, exclusive. Events created before this date will be included."];maxResults:ListAutomationEventSummariesRequestMaxResultsInteger.toption[@ocaml.doc"The maximum number of automation event summaries to return in a single response. Valid range is 1-1000."];nextToken:NextToken.toption[@ocaml.doc"A token used for pagination to retrieve the next set of results when the response is truncated."]}letmake?filters=fun?startDateInclusive->fun?endDateExclusive->fun?maxResults->fun?nextToken->fun()->{filters;startDateInclusive;endDateExclusive;maxResults;nextToken}letto_valuex=structure_to_value[("filters",(Option.mapx.filters~f:AutomationEventFilterList.to_value));("startDateInclusive",(Option.mapx.startDateInclusive~f:String_.to_value));("endDateExclusive",(Option.mapx.endDateExclusive~f:String_.to_value));("maxResults",(Option.mapx.maxResults~f:ListAutomationEventSummariesRequestMaxResultsInteger.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:ListAutomationEventSummariesRequestMaxResultsInteger.of_xml)(Xml.childxml_arg0"maxResults")inletendDateExclusive=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"endDateExclusive")inletstartDateInclusive=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"startDateInclusive")inletfilters=(Option.map~f:AutomationEventFilterList.of_xml)(Xml.childxml_arg0"filters")inmake?nextToken?maxResults?endDateExclusive?startDateInclusive?filters()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"nextToken"NextToken.of_jsoninletmaxResults=field_mapjson__"maxResults"ListAutomationEventSummariesRequestMaxResultsInteger.of_jsoninletendDateExclusive=field_mapjson__"endDateExclusive"String_.of_jsoninletstartDateInclusive=field_mapjson__"startDateInclusive"String_.of_jsoninletfilters=field_mapjson__"filters"AutomationEventFilterList.of_jsoninmake?nextToken?maxResults?endDateExclusive?startDateInclusive?filters()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Provides a summary of automation events based on specified filters. Only events created within the past year will be included in the summary."]moduleListAutomationEventStepsResponse=structtypenonrect={automationEventSteps:AutomationEventSteps.toption[@ocaml.doc"The list of steps for the specified automation event."];nextToken:NextToken.toption[@ocaml.doc"A token used for pagination. If present, indicates there are more results available and can be used in subsequent requests."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`ForbiddenExceptionofForbiddenException.t|`InternalServerExceptionofInternalServerException.t|`InvalidParameterValueExceptionofInvalidParameterValueException.t|`OptInRequiredExceptionofOptInRequiredException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ServiceUnavailableExceptionofServiceUnavailableException.t|`ThrottlingExceptionofThrottlingException.t|`Unknown_operation_errorof(string*stringoption)]letmake?automationEventSteps=fun?nextToken->fun()->{automationEventSteps;nextToken}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_jsonjson)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_xmlxml)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.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))]|`ForbiddenExceptione->`Assoc[("error",(`String"ForbiddenException"));("details",(ForbiddenException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`InvalidParameterValueExceptione->`Assoc[("error",(`String"InvalidParameterValueException"));("details",(InvalidParameterValueException.to_jsone))]|`OptInRequiredExceptione->`Assoc[("error",(`String"OptInRequiredException"));("details",(OptInRequiredException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ServiceUnavailableExceptione->`Assoc[("error",(`String"ServiceUnavailableException"));("details",(ServiceUnavailableException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("automationEventSteps",(Option.mapx.automationEventSteps~f:AutomationEventSteps.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")inletautomationEventSteps=(Option.map~f:AutomationEventSteps.of_xml)(Xml.childxml_arg0"automationEventSteps")inmake?nextToken?automationEventSteps()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"nextToken"NextToken.of_jsoninletautomationEventSteps=field_mapjson__"automationEventSteps"AutomationEventSteps.of_jsoninmake?nextToken?automationEventSteps()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists the steps for a specific automation event. You can only list steps for events created within the past year."]moduleListAutomationEventStepsRequest=structtypenonrect={eventId:EventId.t[@ocaml.doc"The ID of the automation event."];maxResults:ListAutomationEventStepsRequestMaxResultsInteger.toption[@ocaml.doc"The maximum number of automation event steps to return in a single response. Valid range is 1-1000."];nextToken:NextToken.toption[@ocaml.doc"A token used for pagination to retrieve the next set of results when the response is truncated."]}letcontext_="ListAutomationEventStepsRequest"letmake?maxResults=fun?nextToken->fun~eventId->fun()->{maxResults;nextToken;eventId}letto_valuex=structure_to_value[("eventId",(Some(EventId.to_valuex.eventId)));("maxResults",(Option.mapx.maxResults~f:ListAutomationEventStepsRequestMaxResultsInteger.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:ListAutomationEventStepsRequestMaxResultsInteger.of_xml)(Xml.childxml_arg0"maxResults")inleteventId=EventId.of_xml(Xml.child_exn~context:context_xml_arg0"eventId")inmake?nextToken?maxResults~eventId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"nextToken"NextToken.of_jsoninletmaxResults=field_mapjson__"maxResults"ListAutomationEventStepsRequestMaxResultsInteger.of_jsoninleteventId=field_map_exnjson__"eventId"EventId.of_jsoninmake?nextToken?maxResults~eventId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists the steps for a specific automation event. You can only list steps for events created within the past year."]moduleListAccountsResponse=structtypenonrect={accounts:AccountInfoList.toption[@ocaml.doc"The list of accounts in your organization enrolled in Compute Optimizer"];nextToken:NextToken.toption[@ocaml.doc"The token to use to retrieve the next page of results."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`ForbiddenExceptionofForbiddenException.t|`InternalServerExceptionofInternalServerException.t|`InvalidParameterValueExceptionofInvalidParameterValueException.t|`NotManagementAccountExceptionofNotManagementAccountException.t|`OptInRequiredExceptionofOptInRequiredException.t|`ServiceUnavailableExceptionofServiceUnavailableException.t|`ThrottlingExceptionofThrottlingException.t|`Unknown_operation_errorof(string*stringoption)]letmake?accounts=fun?nextToken->fun()->{accounts;nextToken}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_jsonjson)|"NotManagementAccountException"->`NotManagementAccountException(NotManagementAccountException.of_jsonjson)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_jsonjson)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_xmlxml)|"NotManagementAccountException"->`NotManagementAccountException(NotManagementAccountException.of_xmlxml)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_xmlxml)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.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))]|`ForbiddenExceptione->`Assoc[("error",(`String"ForbiddenException"));("details",(ForbiddenException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`InvalidParameterValueExceptione->`Assoc[("error",(`String"InvalidParameterValueException"));("details",(InvalidParameterValueException.to_jsone))]|`NotManagementAccountExceptione->`Assoc[("error",(`String"NotManagementAccountException"));("details",(NotManagementAccountException.to_jsone))]|`OptInRequiredExceptione->`Assoc[("error",(`String"OptInRequiredException"));("details",(OptInRequiredException.to_jsone))]|`ServiceUnavailableExceptione->`Assoc[("error",(`String"ServiceUnavailableException"));("details",(ServiceUnavailableException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("accounts",(Option.mapx.accounts~f:AccountInfoList.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")inletaccounts=(Option.map~f:AccountInfoList.of_xml)(Xml.childxml_arg0"accounts")inmake?nextToken?accounts()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"nextToken"NextToken.of_jsoninletaccounts=field_mapjson__"accounts"AccountInfoList.of_jsoninmake?nextToken?accounts()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists the accounts in your organization that are enrolled in Compute Optimizer and whether they have enabled Automation. Only the management account or a delegated administrator can perform this action."]moduleListAccountsRequest=structtypenonrect={maxResults:ListAccountsRequestMaxResultsInteger.toption[@ocaml.doc"The maximum number of results to return in a single call."];nextToken:NextToken.toption[@ocaml.doc"The token for the next page of results."]}letmake?maxResults=fun?nextToken->fun()->{maxResults;nextToken}letto_valuex=structure_to_value[("maxResults",(Option.mapx.maxResults~f:ListAccountsRequestMaxResultsInteger.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:ListAccountsRequestMaxResultsInteger.of_xml)(Xml.childxml_arg0"maxResults")inmake?nextToken?maxResults()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"nextToken"NextToken.of_jsoninletmaxResults=field_mapjson__"maxResults"ListAccountsRequestMaxResultsInteger.of_jsoninmake?nextToken?maxResults()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists the accounts in your organization that are enrolled in Compute Optimizer and whether they have enabled Automation. Only the management account or a delegated administrator can perform this action."]moduleGetEnrollmentConfigurationResponse=structtypenonrect={status:EnrollmentStatus.toption[@ocaml.doc"The current enrollment status."];statusReason:String_.toption[@ocaml.doc"The reason for the current enrollment status."];organizationRuleMode:OrganizationRuleMode.toption[@ocaml.doc"Specifies whether the management account can create Automation rules that implement optimization actions for this account."];lastUpdatedTimestamp:Timestamp.toption[@ocaml.doc"The timestamp of the last update to the enrollment configuration."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`ForbiddenExceptionofForbiddenException.t|`InternalServerExceptionofInternalServerException.t|`InvalidParameterValueExceptionofInvalidParameterValueException.t|`OptInRequiredExceptionofOptInRequiredException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ServiceUnavailableExceptionofServiceUnavailableException.t|`ThrottlingExceptionofThrottlingException.t|`Unknown_operation_errorof(string*stringoption)]letmake?status=fun?statusReason->fun?organizationRuleMode->fun?lastUpdatedTimestamp->fun()->{status;statusReason;organizationRuleMode;lastUpdatedTimestamp}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_jsonjson)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_xmlxml)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.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))]|`ForbiddenExceptione->`Assoc[("error",(`String"ForbiddenException"));("details",(ForbiddenException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`InvalidParameterValueExceptione->`Assoc[("error",(`String"InvalidParameterValueException"));("details",(InvalidParameterValueException.to_jsone))]|`OptInRequiredExceptione->`Assoc[("error",(`String"OptInRequiredException"));("details",(OptInRequiredException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ServiceUnavailableExceptione->`Assoc[("error",(`String"ServiceUnavailableException"));("details",(ServiceUnavailableException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("status",(Option.mapx.status~f:EnrollmentStatus.to_value));("statusReason",(Option.mapx.statusReason~f:String_.to_value));("organizationRuleMode",(Option.mapx.organizationRuleMode~f:OrganizationRuleMode.to_value));("lastUpdatedTimestamp",(Option.mapx.lastUpdatedTimestamp~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letlastUpdatedTimestamp=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"lastUpdatedTimestamp")inletorganizationRuleMode=(Option.map~f:OrganizationRuleMode.of_xml)(Xml.childxml_arg0"organizationRuleMode")inletstatusReason=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"statusReason")inletstatus=(Option.map~f:EnrollmentStatus.of_xml)(Xml.childxml_arg0"status")inmake?lastUpdatedTimestamp?organizationRuleMode?statusReason?status()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letlastUpdatedTimestamp=field_mapjson__"lastUpdatedTimestamp"Timestamp.of_jsoninletorganizationRuleMode=field_mapjson__"organizationRuleMode"OrganizationRuleMode.of_jsoninletstatusReason=field_mapjson__"statusReason"String_.of_jsoninletstatus=field_mapjson__"status"EnrollmentStatus.of_jsoninmake?lastUpdatedTimestamp?organizationRuleMode?statusReason?status()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves the current enrollment configuration for Compute Optimizer Automation."]moduleGetEnrollmentConfigurationRequest=structtypenonrect=unitletmake()=()letof_header_and_body=((fun(xs,pipe)->make())[@warning"-27"])letto_value_=`Structure[]letto_queryv=to_queryto_valuevletof_xml_=make()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_json_=make()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves the current enrollment configuration for Compute Optimizer Automation."]moduleGetAutomationRuleResponse=structtypenonrect={ruleArn:RuleArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the automation rule."];ruleId:RuleId.toption[@ocaml.doc"The unique identifier of the automation rule."];name:RuleName.toption[@ocaml.doc"The name of the automation rule."];description:String_.toption[@ocaml.doc"A description of the automation rule."];ruleType:RuleType.toption[@ocaml.doc"The type of automation rule."];ruleRevision:Long.toption[@ocaml.doc"The revision number of the automation rule."];accountId:AccountId.toption[@ocaml.doc"The 12-digit Amazon Web Services account ID that owns this automation rule."];organizationConfiguration:OrganizationConfiguration.toption;priority:String_.toption[@ocaml.doc"A string representation of a decimal number between 0 and 1 (having up to 30 digits after the decimal point) that determines the priority of the rule."];recommendedActionTypes:RecommendedActionTypeList.toption[@ocaml.doc"List of recommended action types that this rule can execute."];criteria:Criteria.toption;schedule:Schedule.toption;status:RuleStatus.toption[@ocaml.doc"The current status of the automation rule (Active or Inactive)."];tags:TagList.toption[@ocaml.doc"The tags associated with the automation rule."];createdTimestamp:Timestamp.toption[@ocaml.doc"The timestamp when the automation rule was created."];lastUpdatedTimestamp:Timestamp.toption[@ocaml.doc"The timestamp when the automation rule was last updated."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`ForbiddenExceptionofForbiddenException.t|`InternalServerExceptionofInternalServerException.t|`InvalidParameterValueExceptionofInvalidParameterValueException.t|`OptInRequiredExceptionofOptInRequiredException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ServiceUnavailableExceptionofServiceUnavailableException.t|`ThrottlingExceptionofThrottlingException.t|`Unknown_operation_errorof(string*stringoption)]letmake?ruleArn=fun?ruleId->fun?name->fun?description->fun?ruleType->fun?ruleRevision->fun?accountId->fun?organizationConfiguration->fun?priority->fun?recommendedActionTypes->fun?criteria->fun?schedule->fun?status->fun?tags->fun?createdTimestamp->fun?lastUpdatedTimestamp->fun()->{ruleArn;ruleId;name;description;ruleType;ruleRevision;accountId;organizationConfiguration;priority;recommendedActionTypes;criteria;schedule;status;tags;createdTimestamp;lastUpdatedTimestamp}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_jsonjson)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_xmlxml)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.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))]|`ForbiddenExceptione->`Assoc[("error",(`String"ForbiddenException"));("details",(ForbiddenException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`InvalidParameterValueExceptione->`Assoc[("error",(`String"InvalidParameterValueException"));("details",(InvalidParameterValueException.to_jsone))]|`OptInRequiredExceptione->`Assoc[("error",(`String"OptInRequiredException"));("details",(OptInRequiredException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ServiceUnavailableExceptione->`Assoc[("error",(`String"ServiceUnavailableException"));("details",(ServiceUnavailableException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("ruleArn",(Option.mapx.ruleArn~f:RuleArn.to_value));("ruleId",(Option.mapx.ruleId~f:RuleId.to_value));("name",(Option.mapx.name~f:RuleName.to_value));("description",(Option.mapx.description~f:String_.to_value));("ruleType",(Option.mapx.ruleType~f:RuleType.to_value));("ruleRevision",(Option.mapx.ruleRevision~f:Long.to_value));("accountId",(Option.mapx.accountId~f:AccountId.to_value));("organizationConfiguration",(Option.mapx.organizationConfiguration~f:OrganizationConfiguration.to_value));("priority",(Option.mapx.priority~f:String_.to_value));("recommendedActionTypes",(Option.mapx.recommendedActionTypes~f:RecommendedActionTypeList.to_value));("criteria",(Option.mapx.criteria~f:Criteria.to_value));("schedule",(Option.mapx.schedule~f:Schedule.to_value));("status",(Option.mapx.status~f:RuleStatus.to_value));("tags",(Option.mapx.tags~f:TagList.to_value));("createdTimestamp",(Option.mapx.createdTimestamp~f:Timestamp.to_value));("lastUpdatedTimestamp",(Option.mapx.lastUpdatedTimestamp~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letlastUpdatedTimestamp=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"lastUpdatedTimestamp")inletcreatedTimestamp=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"createdTimestamp")inlettags=(Option.map~f:TagList.of_xml)(Xml.childxml_arg0"tags")inletstatus=(Option.map~f:RuleStatus.of_xml)(Xml.childxml_arg0"status")inletschedule=(Option.map~f:Schedule.of_xml)(Xml.childxml_arg0"schedule")inletcriteria=(Option.map~f:Criteria.of_xml)(Xml.childxml_arg0"criteria")inletrecommendedActionTypes=(Option.map~f:RecommendedActionTypeList.of_xml)(Xml.childxml_arg0"recommendedActionTypes")inletpriority=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"priority")inletorganizationConfiguration=(Option.map~f:OrganizationConfiguration.of_xml)(Xml.childxml_arg0"organizationConfiguration")inletaccountId=(Option.map~f:AccountId.of_xml)(Xml.childxml_arg0"accountId")inletruleRevision=(Option.map~f:Long.of_xml)(Xml.childxml_arg0"ruleRevision")inletruleType=(Option.map~f:RuleType.of_xml)(Xml.childxml_arg0"ruleType")inletdescription=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"description")inletname=(Option.map~f:RuleName.of_xml)(Xml.childxml_arg0"name")inletruleId=(Option.map~f:RuleId.of_xml)(Xml.childxml_arg0"ruleId")inletruleArn=(Option.map~f:RuleArn.of_xml)(Xml.childxml_arg0"ruleArn")inmake?lastUpdatedTimestamp?createdTimestamp?tags?status?schedule?criteria?recommendedActionTypes?priority?organizationConfiguration?accountId?ruleRevision?ruleType?description?name?ruleId?ruleArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letlastUpdatedTimestamp=field_mapjson__"lastUpdatedTimestamp"Timestamp.of_jsoninletcreatedTimestamp=field_mapjson__"createdTimestamp"Timestamp.of_jsoninlettags=field_mapjson__"tags"TagList.of_jsoninletstatus=field_mapjson__"status"RuleStatus.of_jsoninletschedule=field_mapjson__"schedule"Schedule.of_jsoninletcriteria=field_mapjson__"criteria"Criteria.of_jsoninletrecommendedActionTypes=field_mapjson__"recommendedActionTypes"RecommendedActionTypeList.of_jsoninletpriority=field_mapjson__"priority"String_.of_jsoninletorganizationConfiguration=field_mapjson__"organizationConfiguration"OrganizationConfiguration.of_jsoninletaccountId=field_mapjson__"accountId"AccountId.of_jsoninletruleRevision=field_mapjson__"ruleRevision"Long.of_jsoninletruleType=field_mapjson__"ruleType"RuleType.of_jsoninletdescription=field_mapjson__"description"String_.of_jsoninletname=field_mapjson__"name"RuleName.of_jsoninletruleId=field_mapjson__"ruleId"RuleId.of_jsoninletruleArn=field_mapjson__"ruleArn"RuleArn.of_jsoninmake?lastUpdatedTimestamp?createdTimestamp?tags?status?schedule?criteria?recommendedActionTypes?priority?organizationConfiguration?accountId?ruleRevision?ruleType?description?name?ruleId?ruleArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves details about a specific automation rule."]moduleGetAutomationRuleRequest=structtypenonrect={ruleArn:RuleArn.t[@ocaml.doc"The ARN of the rule to retrieve."]}letcontext_="GetAutomationRuleRequest"letmake~ruleArn=fun()->{ruleArn}letto_valuex=structure_to_value[("ruleArn",(Some(RuleArn.to_valuex.ruleArn)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letruleArn=RuleArn.of_xml(Xml.child_exn~context:context_xml_arg0"ruleArn")inmake~ruleArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letruleArn=field_map_exnjson__"ruleArn"RuleArn.of_jsoninmake~ruleArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves details about a specific automation rule."]moduleGetAutomationEventResponse=structtypenonrect={eventId:EventId.toption[@ocaml.doc"The ID of the automation event to retrieve."];eventDescription:String_.toption[@ocaml.doc"A description of the automation event."];eventType:EventType.toption[@ocaml.doc"The type of automation event."];eventStatus:EventStatus.toption[@ocaml.doc"The current status of the automation event."];eventStatusReason:String_.toption[@ocaml.doc"The reason for the current event status."];resourceArn:ResourceArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the resource affected by the automation event."];resourceId:ResourceId.toption[@ocaml.doc"The ID of the resource affected by the automation event."];recommendedActionId:RecommendedActionId.toption[@ocaml.doc"The ID of the recommended action associated with this automation event."];accountId:AccountId.toption[@ocaml.doc"The Amazon Web Services account ID associated with the automation event."];region:String_.toption[@ocaml.doc"The Amazon Web Services Region where the automation event occurred."];ruleId:RuleId.toption[@ocaml.doc"The ID of the automation rule that triggered this event."];resourceType:ResourceType.toption[@ocaml.doc"The type of resource affected by the automation event."];createdTimestamp:Timestamp.toption[@ocaml.doc"The timestamp when the automation event was created."];completedTimestamp:Timestamp.toption[@ocaml.doc"The timestamp when the automation event completed."];estimatedMonthlySavings:EstimatedMonthlySavings.toption}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`ForbiddenExceptionofForbiddenException.t|`InternalServerExceptionofInternalServerException.t|`InvalidParameterValueExceptionofInvalidParameterValueException.t|`OptInRequiredExceptionofOptInRequiredException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ServiceUnavailableExceptionofServiceUnavailableException.t|`ThrottlingExceptionofThrottlingException.t|`Unknown_operation_errorof(string*stringoption)]letmake?eventId=fun?eventDescription->fun?eventType->fun?eventStatus->fun?eventStatusReason->fun?resourceArn->fun?resourceId->fun?recommendedActionId->fun?accountId->fun?region->fun?ruleId->fun?resourceType->fun?createdTimestamp->fun?completedTimestamp->fun?estimatedMonthlySavings->fun()->{eventId;eventDescription;eventType;eventStatus;eventStatusReason;resourceArn;resourceId;recommendedActionId;accountId;region;ruleId;resourceType;createdTimestamp;completedTimestamp;estimatedMonthlySavings}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_jsonjson)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_xmlxml)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.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))]|`ForbiddenExceptione->`Assoc[("error",(`String"ForbiddenException"));("details",(ForbiddenException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`InvalidParameterValueExceptione->`Assoc[("error",(`String"InvalidParameterValueException"));("details",(InvalidParameterValueException.to_jsone))]|`OptInRequiredExceptione->`Assoc[("error",(`String"OptInRequiredException"));("details",(OptInRequiredException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ServiceUnavailableExceptione->`Assoc[("error",(`String"ServiceUnavailableException"));("details",(ServiceUnavailableException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("eventId",(Option.mapx.eventId~f:EventId.to_value));("eventDescription",(Option.mapx.eventDescription~f:String_.to_value));("eventType",(Option.mapx.eventType~f:EventType.to_value));("eventStatus",(Option.mapx.eventStatus~f:EventStatus.to_value));("eventStatusReason",(Option.mapx.eventStatusReason~f:String_.to_value));("resourceArn",(Option.mapx.resourceArn~f:ResourceArn.to_value));("resourceId",(Option.mapx.resourceId~f:ResourceId.to_value));("recommendedActionId",(Option.mapx.recommendedActionId~f:RecommendedActionId.to_value));("accountId",(Option.mapx.accountId~f:AccountId.to_value));("region",(Option.mapx.region~f:String_.to_value));("ruleId",(Option.mapx.ruleId~f:RuleId.to_value));("resourceType",(Option.mapx.resourceType~f:ResourceType.to_value));("createdTimestamp",(Option.mapx.createdTimestamp~f:Timestamp.to_value));("completedTimestamp",(Option.mapx.completedTimestamp~f:Timestamp.to_value));("estimatedMonthlySavings",(Option.mapx.estimatedMonthlySavings~f:EstimatedMonthlySavings.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letestimatedMonthlySavings=(Option.map~f:EstimatedMonthlySavings.of_xml)(Xml.childxml_arg0"estimatedMonthlySavings")inletcompletedTimestamp=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"completedTimestamp")inletcreatedTimestamp=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"createdTimestamp")inletresourceType=(Option.map~f:ResourceType.of_xml)(Xml.childxml_arg0"resourceType")inletruleId=(Option.map~f:RuleId.of_xml)(Xml.childxml_arg0"ruleId")inletregion=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"region")inletaccountId=(Option.map~f:AccountId.of_xml)(Xml.childxml_arg0"accountId")inletrecommendedActionId=(Option.map~f:RecommendedActionId.of_xml)(Xml.childxml_arg0"recommendedActionId")inletresourceId=(Option.map~f:ResourceId.of_xml)(Xml.childxml_arg0"resourceId")inletresourceArn=(Option.map~f:ResourceArn.of_xml)(Xml.childxml_arg0"resourceArn")inleteventStatusReason=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"eventStatusReason")inleteventStatus=(Option.map~f:EventStatus.of_xml)(Xml.childxml_arg0"eventStatus")inleteventType=(Option.map~f:EventType.of_xml)(Xml.childxml_arg0"eventType")inleteventDescription=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"eventDescription")inleteventId=(Option.map~f:EventId.of_xml)(Xml.childxml_arg0"eventId")inmake?estimatedMonthlySavings?completedTimestamp?createdTimestamp?resourceType?ruleId?region?accountId?recommendedActionId?resourceId?resourceArn?eventStatusReason?eventStatus?eventType?eventDescription?eventId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letestimatedMonthlySavings=field_mapjson__"estimatedMonthlySavings"EstimatedMonthlySavings.of_jsoninletcompletedTimestamp=field_mapjson__"completedTimestamp"Timestamp.of_jsoninletcreatedTimestamp=field_mapjson__"createdTimestamp"Timestamp.of_jsoninletresourceType=field_mapjson__"resourceType"ResourceType.of_jsoninletruleId=field_mapjson__"ruleId"RuleId.of_jsoninletregion=field_mapjson__"region"String_.of_jsoninletaccountId=field_mapjson__"accountId"AccountId.of_jsoninletrecommendedActionId=field_mapjson__"recommendedActionId"RecommendedActionId.of_jsoninletresourceId=field_mapjson__"resourceId"ResourceId.of_jsoninletresourceArn=field_mapjson__"resourceArn"ResourceArn.of_jsoninleteventStatusReason=field_mapjson__"eventStatusReason"String_.of_jsoninleteventStatus=field_mapjson__"eventStatus"EventStatus.of_jsoninleteventType=field_mapjson__"eventType"EventType.of_jsoninleteventDescription=field_mapjson__"eventDescription"String_.of_jsoninleteventId=field_mapjson__"eventId"EventId.of_jsoninmake?estimatedMonthlySavings?completedTimestamp?createdTimestamp?resourceType?ruleId?region?accountId?recommendedActionId?resourceId?resourceArn?eventStatusReason?eventStatus?eventType?eventDescription?eventId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves details about a specific automation event."]moduleGetAutomationEventRequest=structtypenonrect={eventId:EventId.t[@ocaml.doc"The ID of the automation event to retrieve."]}letcontext_="GetAutomationEventRequest"letmake~eventId=fun()->{eventId}letto_valuex=structure_to_value[("eventId",(Some(EventId.to_valuex.eventId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=leteventId=EventId.of_xml(Xml.child_exn~context:context_xml_arg0"eventId")inmake~eventId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=leteventId=field_map_exnjson__"eventId"EventId.of_jsoninmake~eventId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves details about a specific automation event."]moduleDisassociateAccountsResponse=structtypenonrect={accountIds:AccountIdList.toption[@ocaml.doc"The IDs of the member accounts that were successfully disassociated."];errors:StringList.toption[@ocaml.doc"Any errors that occurred during the disassociation process."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`ForbiddenExceptionofForbiddenException.t|`IdempotencyTokenInUseExceptionofIdempotencyTokenInUseException.t|`IdempotentParameterMismatchExceptionofIdempotentParameterMismatchException.t|`InternalServerExceptionofInternalServerException.t|`InvalidParameterValueExceptionofInvalidParameterValueException.t|`NotManagementAccountExceptionofNotManagementAccountException.t|`OptInRequiredExceptionofOptInRequiredException.t|`ServiceUnavailableExceptionofServiceUnavailableException.t|`ThrottlingExceptionofThrottlingException.t|`Unknown_operation_errorof(string*stringoption)]letmake?accountIds=fun?errors->fun()->{accountIds;errors}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_jsonjson)|"IdempotencyTokenInUseException"->`IdempotencyTokenInUseException(IdempotencyTokenInUseException.of_jsonjson)|"IdempotentParameterMismatchException"->`IdempotentParameterMismatchException(IdempotentParameterMismatchException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_jsonjson)|"NotManagementAccountException"->`NotManagementAccountException(NotManagementAccountException.of_jsonjson)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_jsonjson)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_xmlxml)|"IdempotencyTokenInUseException"->`IdempotencyTokenInUseException(IdempotencyTokenInUseException.of_xmlxml)|"IdempotentParameterMismatchException"->`IdempotentParameterMismatchException(IdempotentParameterMismatchException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_xmlxml)|"NotManagementAccountException"->`NotManagementAccountException(NotManagementAccountException.of_xmlxml)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_xmlxml)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.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))]|`ForbiddenExceptione->`Assoc[("error",(`String"ForbiddenException"));("details",(ForbiddenException.to_jsone))]|`IdempotencyTokenInUseExceptione->`Assoc[("error",(`String"IdempotencyTokenInUseException"));("details",(IdempotencyTokenInUseException.to_jsone))]|`IdempotentParameterMismatchExceptione->`Assoc[("error",(`String"IdempotentParameterMismatchException"));("details",(IdempotentParameterMismatchException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`InvalidParameterValueExceptione->`Assoc[("error",(`String"InvalidParameterValueException"));("details",(InvalidParameterValueException.to_jsone))]|`NotManagementAccountExceptione->`Assoc[("error",(`String"NotManagementAccountException"));("details",(NotManagementAccountException.to_jsone))]|`OptInRequiredExceptione->`Assoc[("error",(`String"OptInRequiredException"));("details",(OptInRequiredException.to_jsone))]|`ServiceUnavailableExceptione->`Assoc[("error",(`String"ServiceUnavailableException"));("details",(ServiceUnavailableException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("accountIds",(Option.mapx.accountIds~f:AccountIdList.to_value));("errors",(Option.mapx.errors~f:StringList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=leterrors=(Option.map~f:StringList.of_xml)(Xml.childxml_arg0"errors")inletaccountIds=(Option.map~f:AccountIdList.of_xml)(Xml.childxml_arg0"accountIds")inmake?errors?accountIds()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=leterrors=field_mapjson__"errors"StringList.of_jsoninletaccountIds=field_mapjson__"accountIds"AccountIdList.of_jsoninmake?errors?accountIds()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Disassociates member accounts from your organization's management account, removing centralized automation capabilities. Once disassociated, organization rules no longer apply to the member account, and the management account (or delegated administrator) cannot create Automation rules for that account. Only the management account or a delegated administrator can perform this action."]moduleDisassociateAccountsRequest=structtypenonrect={accountIds:AccountIdList.t[@ocaml.doc"The IDs of the member accounts to disassociate."];clientToken:ClientToken.toption[@ocaml.doc"A unique identifier to ensure idempotency of the request."]}letcontext_="DisassociateAccountsRequest"letmake?clientToken=fun~accountIds->fun()->{clientToken;accountIds}letto_valuex=structure_to_value[("accountIds",(Some(AccountIdList.to_valuex.accountIds)));("clientToken",(Option.mapx.clientToken~f:ClientToken.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letclientToken=(Option.map~f:ClientToken.of_xml)(Xml.childxml_arg0"clientToken")inletaccountIds=AccountIdList.of_xml(Xml.child_exn~context:context_xml_arg0"accountIds")inmake?clientToken~accountIds()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letclientToken=field_mapjson__"clientToken"ClientToken.of_jsoninletaccountIds=field_map_exnjson__"accountIds"AccountIdList.of_jsoninmake?clientToken~accountIds()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Disassociates member accounts from your organization's management account, removing centralized automation capabilities. Once disassociated, organization rules no longer apply to the member account, and the management account (or delegated administrator) cannot create Automation rules for that account. Only the management account or a delegated administrator can perform this action."]moduleDeleteAutomationRuleResponse=structtypenonrect=unittypenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`ForbiddenExceptionofForbiddenException.t|`IdempotencyTokenInUseExceptionofIdempotencyTokenInUseException.t|`IdempotentParameterMismatchExceptionofIdempotentParameterMismatchException.t|`InternalServerExceptionofInternalServerException.t|`InvalidParameterValueExceptionofInvalidParameterValueException.t|`OptInRequiredExceptionofOptInRequiredException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ServiceUnavailableExceptionofServiceUnavailableException.t|`ThrottlingExceptionofThrottlingException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_jsonjson)|"IdempotencyTokenInUseException"->`IdempotencyTokenInUseException(IdempotencyTokenInUseException.of_jsonjson)|"IdempotentParameterMismatchException"->`IdempotentParameterMismatchException(IdempotentParameterMismatchException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_jsonjson)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_xmlxml)|"IdempotencyTokenInUseException"->`IdempotencyTokenInUseException(IdempotencyTokenInUseException.of_xmlxml)|"IdempotentParameterMismatchException"->`IdempotentParameterMismatchException(IdempotentParameterMismatchException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_xmlxml)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.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))]|`ForbiddenExceptione->`Assoc[("error",(`String"ForbiddenException"));("details",(ForbiddenException.to_jsone))]|`IdempotencyTokenInUseExceptione->`Assoc[("error",(`String"IdempotencyTokenInUseException"));("details",(IdempotencyTokenInUseException.to_jsone))]|`IdempotentParameterMismatchExceptione->`Assoc[("error",(`String"IdempotentParameterMismatchException"));("details",(IdempotentParameterMismatchException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`InvalidParameterValueExceptione->`Assoc[("error",(`String"InvalidParameterValueException"));("details",(InvalidParameterValueException.to_jsone))]|`OptInRequiredExceptione->`Assoc[("error",(`String"OptInRequiredException"));("details",(OptInRequiredException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ServiceUnavailableExceptione->`Assoc[("error",(`String"ServiceUnavailableException"));("details",(ServiceUnavailableException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letof_header_and_body=((fun(xs,pipe)->make())[@warning"-27"])letto_value_=`Structure[]letto_queryv=to_queryto_valuevletof_xml_=make()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_json_=make()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Deletes an existing automation rule."]moduleDeleteAutomationRuleRequest=structtypenonrect={ruleArn:RuleArn.t[@ocaml.doc"The ARN of the rule to delete."];ruleRevision:Long.t[@ocaml.doc"The revision number of the rule to delete."];clientToken:ClientToken.toption[@ocaml.doc"A unique identifier to ensure idempotency of the request."]}letcontext_="DeleteAutomationRuleRequest"letmake?clientToken=fun~ruleArn->fun~ruleRevision->fun()->{clientToken;ruleArn;ruleRevision}letto_valuex=structure_to_value[("ruleArn",(Some(RuleArn.to_valuex.ruleArn)));("ruleRevision",(Some(Long.to_valuex.ruleRevision)));("clientToken",(Option.mapx.clientToken~f:ClientToken.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letclientToken=(Option.map~f:ClientToken.of_xml)(Xml.childxml_arg0"clientToken")inletruleRevision=Long.of_xml(Xml.child_exn~context:context_xml_arg0"ruleRevision")inletruleArn=RuleArn.of_xml(Xml.child_exn~context:context_xml_arg0"ruleArn")inmake?clientToken~ruleRevision~ruleArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letclientToken=field_mapjson__"clientToken"ClientToken.of_jsoninletruleRevision=field_map_exnjson__"ruleRevision"Long.of_jsoninletruleArn=field_map_exnjson__"ruleArn"RuleArn.of_jsoninmake?clientToken~ruleRevision~ruleArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Deletes an existing automation rule."]moduleCreateAutomationRuleResponse=structtypenonrect={ruleArn:RuleArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the created rule."];ruleId:RuleId.toption[@ocaml.doc"The unique identifier of the created rule."];name:RuleName.toption[@ocaml.doc"The name of the automation rule. Must be 1-128 characters long and contain only alphanumeric characters, underscores, and hyphens."];description:String_.toption[@ocaml.doc"A description of the automation rule. Can be up to 1024 characters long and contain alphanumeric characters, underscores, hyphens, spaces, and certain special characters."];ruleType:RuleType.toption[@ocaml.doc"The type of automation rule. Can be either OrganizationRule for organization-wide rules or AccountRule for account-specific rules."];ruleRevision:Long.toption[@ocaml.doc"The revision number of the automation rule. This is incremented each time the rule is updated."];organizationConfiguration:OrganizationConfiguration.toption[@ocaml.doc"Configuration settings for organization-wide rules, including rule application order and target account IDs."];priority:String_.toption[@ocaml.doc"The priority level of the automation rule, used to determine execution order when multiple rules apply to the same resource."];recommendedActionTypes:RecommendedActionTypeList.toption[@ocaml.doc"List of recommended action types that this rule can execute, such as SnapshotAndDeleteUnattachedEbsVolume or UpgradeEbsVolumeType."];criteria:Criteria.toption;schedule:Schedule.toption[@ocaml.doc"The schedule configuration for when the automation rule should execute, including cron expression, timezone, and execution window."];status:RuleStatus.toption[@ocaml.doc"The current status of the automation rule. Can be Active or Inactive."];tags:TagList.toption[@ocaml.doc"A list of key-value pairs used to categorize and organize the automation rule. Maximum of 200 tags allowed."];createdTimestamp:Timestamp.toption[@ocaml.doc"The timestamp when the automation rule was created."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`ForbiddenExceptionofForbiddenException.t|`IdempotencyTokenInUseExceptionofIdempotencyTokenInUseException.t|`IdempotentParameterMismatchExceptionofIdempotentParameterMismatchException.t|`InternalServerExceptionofInternalServerException.t|`InvalidParameterValueExceptionofInvalidParameterValueException.t|`OptInRequiredExceptionofOptInRequiredException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ServiceQuotaExceededExceptionofServiceQuotaExceededException.t|`ServiceUnavailableExceptionofServiceUnavailableException.t|`ThrottlingExceptionofThrottlingException.t|`Unknown_operation_errorof(string*stringoption)]letmake?ruleArn=fun?ruleId->fun?name->fun?description->fun?ruleType->fun?ruleRevision->fun?organizationConfiguration->fun?priority->fun?recommendedActionTypes->fun?criteria->fun?schedule->fun?status->fun?tags->fun?createdTimestamp->fun()->{ruleArn;ruleId;name;description;ruleType;ruleRevision;organizationConfiguration;priority;recommendedActionTypes;criteria;schedule;status;tags;createdTimestamp}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_jsonjson)|"IdempotencyTokenInUseException"->`IdempotencyTokenInUseException(IdempotencyTokenInUseException.of_jsonjson)|"IdempotentParameterMismatchException"->`IdempotentParameterMismatchException(IdempotentParameterMismatchException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_jsonjson)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ServiceQuotaExceededException"->`ServiceQuotaExceededException(ServiceQuotaExceededException.of_jsonjson)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_xmlxml)|"IdempotencyTokenInUseException"->`IdempotencyTokenInUseException(IdempotencyTokenInUseException.of_xmlxml)|"IdempotentParameterMismatchException"->`IdempotentParameterMismatchException(IdempotentParameterMismatchException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_xmlxml)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ServiceQuotaExceededException"->`ServiceQuotaExceededException(ServiceQuotaExceededException.of_xmlxml)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.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))]|`ForbiddenExceptione->`Assoc[("error",(`String"ForbiddenException"));("details",(ForbiddenException.to_jsone))]|`IdempotencyTokenInUseExceptione->`Assoc[("error",(`String"IdempotencyTokenInUseException"));("details",(IdempotencyTokenInUseException.to_jsone))]|`IdempotentParameterMismatchExceptione->`Assoc[("error",(`String"IdempotentParameterMismatchException"));("details",(IdempotentParameterMismatchException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`InvalidParameterValueExceptione->`Assoc[("error",(`String"InvalidParameterValueException"));("details",(InvalidParameterValueException.to_jsone))]|`OptInRequiredExceptione->`Assoc[("error",(`String"OptInRequiredException"));("details",(OptInRequiredException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ServiceQuotaExceededExceptione->`Assoc[("error",(`String"ServiceQuotaExceededException"));("details",(ServiceQuotaExceededException.to_jsone))]|`ServiceUnavailableExceptione->`Assoc[("error",(`String"ServiceUnavailableException"));("details",(ServiceUnavailableException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("ruleArn",(Option.mapx.ruleArn~f:RuleArn.to_value));("ruleId",(Option.mapx.ruleId~f:RuleId.to_value));("name",(Option.mapx.name~f:RuleName.to_value));("description",(Option.mapx.description~f:String_.to_value));("ruleType",(Option.mapx.ruleType~f:RuleType.to_value));("ruleRevision",(Option.mapx.ruleRevision~f:Long.to_value));("organizationConfiguration",(Option.mapx.organizationConfiguration~f:OrganizationConfiguration.to_value));("priority",(Option.mapx.priority~f:String_.to_value));("recommendedActionTypes",(Option.mapx.recommendedActionTypes~f:RecommendedActionTypeList.to_value));("criteria",(Option.mapx.criteria~f:Criteria.to_value));("schedule",(Option.mapx.schedule~f:Schedule.to_value));("status",(Option.mapx.status~f:RuleStatus.to_value));("tags",(Option.mapx.tags~f:TagList.to_value));("createdTimestamp",(Option.mapx.createdTimestamp~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcreatedTimestamp=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"createdTimestamp")inlettags=(Option.map~f:TagList.of_xml)(Xml.childxml_arg0"tags")inletstatus=(Option.map~f:RuleStatus.of_xml)(Xml.childxml_arg0"status")inletschedule=(Option.map~f:Schedule.of_xml)(Xml.childxml_arg0"schedule")inletcriteria=(Option.map~f:Criteria.of_xml)(Xml.childxml_arg0"criteria")inletrecommendedActionTypes=(Option.map~f:RecommendedActionTypeList.of_xml)(Xml.childxml_arg0"recommendedActionTypes")inletpriority=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"priority")inletorganizationConfiguration=(Option.map~f:OrganizationConfiguration.of_xml)(Xml.childxml_arg0"organizationConfiguration")inletruleRevision=(Option.map~f:Long.of_xml)(Xml.childxml_arg0"ruleRevision")inletruleType=(Option.map~f:RuleType.of_xml)(Xml.childxml_arg0"ruleType")inletdescription=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"description")inletname=(Option.map~f:RuleName.of_xml)(Xml.childxml_arg0"name")inletruleId=(Option.map~f:RuleId.of_xml)(Xml.childxml_arg0"ruleId")inletruleArn=(Option.map~f:RuleArn.of_xml)(Xml.childxml_arg0"ruleArn")inmake?createdTimestamp?tags?status?schedule?criteria?recommendedActionTypes?priority?organizationConfiguration?ruleRevision?ruleType?description?name?ruleId?ruleArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcreatedTimestamp=field_mapjson__"createdTimestamp"Timestamp.of_jsoninlettags=field_mapjson__"tags"TagList.of_jsoninletstatus=field_mapjson__"status"RuleStatus.of_jsoninletschedule=field_mapjson__"schedule"Schedule.of_jsoninletcriteria=field_mapjson__"criteria"Criteria.of_jsoninletrecommendedActionTypes=field_mapjson__"recommendedActionTypes"RecommendedActionTypeList.of_jsoninletpriority=field_mapjson__"priority"String_.of_jsoninletorganizationConfiguration=field_mapjson__"organizationConfiguration"OrganizationConfiguration.of_jsoninletruleRevision=field_mapjson__"ruleRevision"Long.of_jsoninletruleType=field_mapjson__"ruleType"RuleType.of_jsoninletdescription=field_mapjson__"description"String_.of_jsoninletname=field_mapjson__"name"RuleName.of_jsoninletruleId=field_mapjson__"ruleId"RuleId.of_jsoninletruleArn=field_mapjson__"ruleArn"RuleArn.of_jsoninmake?createdTimestamp?tags?status?schedule?criteria?recommendedActionTypes?priority?organizationConfiguration?ruleRevision?ruleType?description?name?ruleId?ruleArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates a new automation rule to apply recommended actions to resources based on specified criteria."]moduleCreateAutomationRuleRequest=structtypenonrect={name:RuleName.t[@ocaml.doc"The name of the automation rule."];description:RuleDescription.toption[@ocaml.doc"A description of the automation rule."];ruleType:RuleType.t[@ocaml.doc"The type of rule. Only the management account or a delegated administrator can set the ruleType to be OrganizationRule."];organizationConfiguration:OrganizationConfiguration.toption[@ocaml.doc"Configuration for organization-level rules. Required for OrganizationRule type."];priority:String_.toption[@ocaml.doc"A string representation of a decimal number between 0 and 1 (having up to 30 digits after the decimal point) that determines the priority of the rule. When multiple rules match the same recommended action, Compute Optimizer assigns the action to the rule with the lowest priority value (highest priority), even if that rule is scheduled to run later than other matching rules."];recommendedActionTypes:RecommendedActionTypeList.t[@ocaml.doc"The types of recommended actions this rule will automate."];criteria:Criteria.toption[@ocaml.doc"A set of conditions that specify which recommended action qualify for implementation. When a rule is active and a recommended action matches these criteria, Compute Optimizer implements the action at the scheduled run time."];schedule:Schedule.t[@ocaml.doc"The schedule for when the rule should run."];status:RuleStatus.t[@ocaml.doc"The status of the rule"];tags:TagList.toption[@ocaml.doc"The tags to associate with the rule."];clientToken:ClientToken.toption[@ocaml.doc"A unique identifier to ensure idempotency of the request."]}letcontext_="CreateAutomationRuleRequest"letmake?description=fun?organizationConfiguration->fun?priority->fun?criteria->fun?tags->fun?clientToken->fun~name->fun~ruleType->fun~recommendedActionTypes->fun~schedule->fun~status->fun()->{description;organizationConfiguration;priority;criteria;tags;clientToken;name;ruleType;recommendedActionTypes;schedule;status}letto_valuex=structure_to_value[("name",(Some(RuleName.to_valuex.name)));("description",(Option.mapx.description~f:RuleDescription.to_value));("ruleType",(Some(RuleType.to_valuex.ruleType)));("organizationConfiguration",(Option.mapx.organizationConfiguration~f:OrganizationConfiguration.to_value));("priority",(Option.mapx.priority~f:String_.to_value));("recommendedActionTypes",(Some(RecommendedActionTypeList.to_valuex.recommendedActionTypes)));("criteria",(Option.mapx.criteria~f:Criteria.to_value));("schedule",(Some(Schedule.to_valuex.schedule)));("status",(Some(RuleStatus.to_valuex.status)));("tags",(Option.mapx.tags~f:TagList.to_value));("clientToken",(Option.mapx.clientToken~f:ClientToken.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letclientToken=(Option.map~f:ClientToken.of_xml)(Xml.childxml_arg0"clientToken")inlettags=(Option.map~f:TagList.of_xml)(Xml.childxml_arg0"tags")inletstatus=RuleStatus.of_xml(Xml.child_exn~context:context_xml_arg0"status")inletschedule=Schedule.of_xml(Xml.child_exn~context:context_xml_arg0"schedule")inletcriteria=(Option.map~f:Criteria.of_xml)(Xml.childxml_arg0"criteria")inletrecommendedActionTypes=RecommendedActionTypeList.of_xml(Xml.child_exn~context:context_xml_arg0"recommendedActionTypes")inletpriority=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"priority")inletorganizationConfiguration=(Option.map~f:OrganizationConfiguration.of_xml)(Xml.childxml_arg0"organizationConfiguration")inletruleType=RuleType.of_xml(Xml.child_exn~context:context_xml_arg0"ruleType")inletdescription=(Option.map~f:RuleDescription.of_xml)(Xml.childxml_arg0"description")inletname=RuleName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inmake?clientToken?tags~status~schedule?criteria~recommendedActionTypes?priority?organizationConfiguration~ruleType?description~name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letclientToken=field_mapjson__"clientToken"ClientToken.of_jsoninlettags=field_mapjson__"tags"TagList.of_jsoninletstatus=field_map_exnjson__"status"RuleStatus.of_jsoninletschedule=field_map_exnjson__"schedule"Schedule.of_jsoninletcriteria=field_mapjson__"criteria"Criteria.of_jsoninletrecommendedActionTypes=field_map_exnjson__"recommendedActionTypes"RecommendedActionTypeList.of_jsoninletpriority=field_mapjson__"priority"String_.of_jsoninletorganizationConfiguration=field_mapjson__"organizationConfiguration"OrganizationConfiguration.of_jsoninletruleType=field_map_exnjson__"ruleType"RuleType.of_jsoninletdescription=field_mapjson__"description"RuleDescription.of_jsoninletname=field_map_exnjson__"name"RuleName.of_jsoninmake?clientToken?tags~status~schedule?criteria~recommendedActionTypes?priority?organizationConfiguration~ruleType?description~name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates a new automation rule to apply recommended actions to resources based on specified criteria."]moduleAssociateAccountsResponse=structtypenonrect={accountIds:AccountIdList.toption[@ocaml.doc"The IDs of the member accounts that were successfully associated."];errors:StringList.toption[@ocaml.doc"Any errors that occurred during the association process."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`ForbiddenExceptionofForbiddenException.t|`IdempotencyTokenInUseExceptionofIdempotencyTokenInUseException.t|`IdempotentParameterMismatchExceptionofIdempotentParameterMismatchException.t|`InternalServerExceptionofInternalServerException.t|`InvalidParameterValueExceptionofInvalidParameterValueException.t|`NotManagementAccountExceptionofNotManagementAccountException.t|`OptInRequiredExceptionofOptInRequiredException.t|`ServiceUnavailableExceptionofServiceUnavailableException.t|`ThrottlingExceptionofThrottlingException.t|`Unknown_operation_errorof(string*stringoption)]letmake?accountIds=fun?errors->fun()->{accountIds;errors}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_jsonjson)|"IdempotencyTokenInUseException"->`IdempotencyTokenInUseException(IdempotencyTokenInUseException.of_jsonjson)|"IdempotentParameterMismatchException"->`IdempotentParameterMismatchException(IdempotentParameterMismatchException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_jsonjson)|"NotManagementAccountException"->`NotManagementAccountException(NotManagementAccountException.of_jsonjson)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_jsonjson)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"ForbiddenException"->`ForbiddenException(ForbiddenException.of_xmlxml)|"IdempotencyTokenInUseException"->`IdempotencyTokenInUseException(IdempotencyTokenInUseException.of_xmlxml)|"IdempotentParameterMismatchException"->`IdempotentParameterMismatchException(IdempotentParameterMismatchException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"InvalidParameterValueException"->`InvalidParameterValueException(InvalidParameterValueException.of_xmlxml)|"NotManagementAccountException"->`NotManagementAccountException(NotManagementAccountException.of_xmlxml)|"OptInRequiredException"->`OptInRequiredException(OptInRequiredException.of_xmlxml)|"ServiceUnavailableException"->`ServiceUnavailableException(ServiceUnavailableException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.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))]|`ForbiddenExceptione->`Assoc[("error",(`String"ForbiddenException"));("details",(ForbiddenException.to_jsone))]|`IdempotencyTokenInUseExceptione->`Assoc[("error",(`String"IdempotencyTokenInUseException"));("details",(IdempotencyTokenInUseException.to_jsone))]|`IdempotentParameterMismatchExceptione->`Assoc[("error",(`String"IdempotentParameterMismatchException"));("details",(IdempotentParameterMismatchException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`InvalidParameterValueExceptione->`Assoc[("error",(`String"InvalidParameterValueException"));("details",(InvalidParameterValueException.to_jsone))]|`NotManagementAccountExceptione->`Assoc[("error",(`String"NotManagementAccountException"));("details",(NotManagementAccountException.to_jsone))]|`OptInRequiredExceptione->`Assoc[("error",(`String"OptInRequiredException"));("details",(OptInRequiredException.to_jsone))]|`ServiceUnavailableExceptione->`Assoc[("error",(`String"ServiceUnavailableException"));("details",(ServiceUnavailableException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("accountIds",(Option.mapx.accountIds~f:AccountIdList.to_value));("errors",(Option.mapx.errors~f:StringList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=leterrors=(Option.map~f:StringList.of_xml)(Xml.childxml_arg0"errors")inletaccountIds=(Option.map~f:AccountIdList.of_xml)(Xml.childxml_arg0"accountIds")inmake?errors?accountIds()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=leterrors=field_mapjson__"errors"StringList.of_jsoninletaccountIds=field_mapjson__"accountIds"AccountIdList.of_jsoninmake?errors?accountIds()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Associates one or more member accounts with your organization's management account, enabling centralized implementation of optimization actions across those accounts. Once associated, the management account (or a delegated administrator) can apply recommended actions to the member account. When you associate a member account, its organization rule mode is automatically set to \"Any allowed,\" which permits the management account to create Automation rules that automatically apply actions to that account. If the member account has not previously enabled the Automation feature, the association process automatically enables it. Only the management account or a delegated administrator can perform this action."]moduleAssociateAccountsRequest=structtypenonrect={accountIds:AccountIdList.t[@ocaml.doc"The IDs of the member accounts to associate. You can specify up to 50 account IDs."];clientToken:ClientToken.toption[@ocaml.doc"A unique identifier to ensure idempotency of the request. Valid for 24 hours after creation."]}letcontext_="AssociateAccountsRequest"letmake?clientToken=fun~accountIds->fun()->{clientToken;accountIds}letto_valuex=structure_to_value[("accountIds",(Some(AccountIdList.to_valuex.accountIds)));("clientToken",(Option.mapx.clientToken~f:ClientToken.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letclientToken=(Option.map~f:ClientToken.of_xml)(Xml.childxml_arg0"clientToken")inletaccountIds=AccountIdList.of_xml(Xml.child_exn~context:context_xml_arg0"accountIds")inmake?clientToken~accountIds()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letclientToken=field_mapjson__"clientToken"ClientToken.of_jsoninletaccountIds=field_map_exnjson__"accountIds"AccountIdList.of_jsoninmake?clientToken~accountIds()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Associates one or more member accounts with your organization's management account, enabling centralized implementation of optimization actions across those accounts. Once associated, the management account (or a delegated administrator) can apply recommended actions to the member account. When you associate a member account, its organization rule mode is automatically set to \"Any allowed,\" which permits the management account to create Automation rules that automatically apply actions to that account. If the member account has not previously enabled the Automation feature, the association process automatically enables it. Only the management account or a delegated administrator can perform this action."]