12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344934593469347934893499350935193529353935493559356935793589359936093619362936393649365936693679368936993709371937293739374937593769377937893799380938193829383938493859386938793889389939093919392939393949395939693979398939994009401940294039404940594069407940894099410941194129413941494159416941794189419942094219422942394249425942694279428942994309431943294339434943594369437943894399440944194429443944494459446944794489449945094519452945394549455945694579458945994609461946294639464946594669467946894699470947194729473947494759476947794789479948094819482948394849485948694879488948994909491949294939494949594969497949894999500950195029503950495059506950795089509951095119512951395149515951695179518951995209521952295239524952595269527952895299530953195329533953495359536953795389539954095419542954395449545954695479548954995509551955295539554955595569557955895599560956195629563956495659566956795689569957095719572957395749575957695779578957995809581958295839584958595869587958895899590959195929593959495959596959795989599960096019602960396049605960696079608960996109611961296139614961596169617961896199620962196229623962496259626962796289629963096319632963396349635963696379638963996409641964296439644964596469647964896499650965196529653965496559656965796589659966096619662966396649665966696679668966996709671967296739674967596769677967896799680968196829683968496859686968796889689969096919692969396949695969696979698969997009701970297039704970597069707970897099710971197129713971497159716971797189719972097219722972397249725972697279728972997309731973297339734973597369737973897399740974197429743974497459746974797489749975097519752975397549755975697579758975997609761976297639764976597669767976897699770977197729773977497759776977797789779978097819782978397849785978697879788978997909791979297939794979597969797979897999800980198029803980498059806980798089809981098119812981398149815981698179818981998209821982298239824982598269827982898299830983198329833983498359836983798389839984098419842984398449845984698479848984998509851985298539854985598569857985898599860986198629863986498659866986798689869987098719872987398749875987698779878987998809881988298839884988598869887988898899890989198929893989498959896989798989899990099019902990399049905990699079908990999109911991299139914991599169917991899199920992199229923992499259926992799289929993099319932993399349935993699379938993999409941994299439944994599469947994899499950995199529953995499559956995799589959996099619962996399649965996699679968996999709971997299739974997599769977997899799980998199829983998499859986998799889989999099919992999399949995999699979998999910000100011000210003100041000510006100071000810009100101001110012100131001410015100161001710018100191002010021100221002310024100251002610027100281002910030100311003210033100341003510036100371003810039100401004110042100431004410045100461004710048100491005010051100521005310054100551005610057100581005910060100611006210063100641006510066100671006810069100701007110072100731007410075100761007710078100791008010081100821008310084100851008610087100881008910090100911009210093100941009510096100971009810099101001010110102101031010410105101061010710108101091011010111101121011310114101151011610117101181011910120101211012210123101241012510126101271012810129101301013110132101331013410135101361013710138101391014010141101421014310144101451014610147101481014910150101511015210153101541015510156101571015810159101601016110162101631016410165101661016710168101691017010171101721017310174101751017610177101781017910180101811018210183101841018510186101871018810189101901019110192101931019410195101961019710198101991020010201102021020310204102051020610207102081020910210102111021210213102141021510216102171021810219102201022110222102231022410225102261022710228102291023010231102321023310234102351023610237102381023910240102411024210243102441024510246102471024810249102501025110252102531025410255102561025710258102591026010261102621026310264102651026610267102681026910270102711027210273102741027510276102771027810279102801028110282102831028410285102861028710288102891029010291102921029310294102951029610297102981029910300103011030210303103041030510306103071030810309103101031110312103131031410315103161031710318103191032010321103221032310324103251032610327103281032910330103311033210333103341033510336103371033810339103401034110342103431034410345103461034710348103491035010351103521035310354103551035610357103581035910360103611036210363103641036510366103671036810369103701037110372103731037410375103761037710378103791038010381103821038310384103851038610387103881038910390103911039210393103941039510396103971039810399104001040110402104031040410405104061040710408104091041010411104121041310414104151041610417104181041910420104211042210423104241042510426104271042810429104301043110432104331043410435104361043710438104391044010441104421044310444104451044610447104481044910450104511045210453104541045510456104571045810459104601046110462104631046410465104661046710468104691047010471104721047310474104751047610477104781047910480104811048210483104841048510486104871048810489104901049110492104931049410495104961049710498104991050010501105021050310504105051050610507105081050910510105111051210513105141051510516105171051810519105201052110522105231052410525105261052710528105291053010531105321053310534105351053610537105381053910540105411054210543105441054510546105471054810549105501055110552105531055410555105561055710558105591056010561105621056310564105651056610567105681056910570105711057210573105741057510576105771057810579105801058110582105831058410585105861058710588105891059010591105921059310594105951059610597105981059910600106011060210603106041060510606106071060810609106101061110612106131061410615106161061710618106191062010621106221062310624106251062610627106281062910630106311063210633106341063510636106371063810639106401064110642106431064410645106461064710648106491065010651106521065310654106551065610657106581065910660106611066210663106641066510666106671066810669106701067110672106731067410675106761067710678106791068010681106821068310684106851068610687106881068910690106911069210693106941069510696106971069810699107001070110702107031070410705107061070710708107091071010711107121071310714107151071610717107181071910720107211072210723107241072510726107271072810729107301073110732107331073410735107361073710738107391074010741107421074310744107451074610747107481074910750107511075210753107541075510756107571075810759107601076110762107631076410765107661076710768107691077010771107721077310774107751077610777107781077910780107811078210783107841078510786107871078810789107901079110792107931079410795107961079710798107991080010801108021080310804108051080610807108081080910810108111081210813108141081510816108171081810819108201082110822108231082410825108261082710828108291083010831108321083310834108351083610837108381083910840108411084210843108441084510846108471084810849108501085110852108531085410855108561085710858108591086010861108621086310864108651086610867108681086910870108711087210873108741087510876108771087810879108801088110882108831088410885108861088710888108891089010891108921089310894108951089610897108981089910900109011090210903109041090510906109071090810909109101091110912109131091410915109161091710918109191092010921109221092310924109251092610927109281092910930109311093210933109341093510936109371093810939109401094110942109431094410945109461094710948109491095010951109521095310954109551095610957109581095910960109611096210963109641096510966109671096810969109701097110972109731097410975109761097710978109791098010981109821098310984109851098610987109881098910990109911099210993109941099510996109971099810999110001100111002110031100411005110061100711008110091101011011110121101311014110151101611017110181101911020110211102211023110241102511026110271102811029110301103111032110331103411035110361103711038110391104011041110421104311044110451104611047110481104911050110511105211053110541105511056110571105811059110601106111062110631106411065110661106711068110691107011071110721107311074110751107611077110781107911080110811108211083110841108511086110871108811089110901109111092110931109411095110961109711098110991110011101111021110311104111051110611107111081110911110111111111211113111141111511116111171111811119111201112111122111231112411125111261112711128111291113011131111321113311134111351113611137111381113911140111411114211143111441114511146111471114811149111501115111152111531115411155111561115711158111591116011161111621116311164111651116611167111681116911170111711117211173111741117511176111771117811179111801118111182111831118411185111861118711188111891119011191111921119311194111951119611197111981119911200112011120211203112041120511206112071120811209112101121111212112131121411215112161121711218112191122011221112221122311224112251122611227112281122911230112311123211233112341123511236112371123811239112401124111242112431124411245112461124711248112491125011251112521125311254112551125611257112581125911260112611126211263112641126511266112671126811269112701127111272112731127411275112761127711278112791128011281112821128311284112851128611287112881128911290112911129211293112941129511296112971129811299113001130111302113031130411305113061130711308113091131011311113121131311314113151131611317113181131911320113211132211323113241132511326113271132811329113301133111332113331133411335113361133711338113391134011341113421134311344113451134611347113481134911350113511135211353113541135511356113571135811359113601136111362113631136411365113661136711368113691137011371113721137311374113751137611377113781137911380113811138211383113841138511386113871138811389113901139111392113931139411395113961139711398113991140011401114021140311404114051140611407114081140911410114111141211413114141141511416114171141811419114201142111422114231142411425114261142711428114291143011431114321143311434114351143611437114381143911440114411144211443114441144511446114471144811449114501145111452114531145411455114561145711458114591146011461114621146311464114651146611467114681146911470114711147211473114741147511476114771147811479114801148111482114831148411485114861148711488114891149011491114921149311494114951149611497114981149911500115011150211503115041150511506115071150811509115101151111512115131151411515115161151711518115191152011521115221152311524115251152611527115281152911530115311153211533115341153511536115371153811539115401154111542115431154411545115461154711548115491155011551115521155311554115551155611557115581155911560115611156211563115641156511566115671156811569115701157111572115731157411575115761157711578115791158011581115821158311584115851158611587115881158911590115911159211593115941159511596115971159811599116001160111602116031160411605116061160711608116091161011611116121161311614116151161611617116181161911620116211162211623116241162511626116271162811629116301163111632116331163411635116361163711638116391164011641116421164311644116451164611647116481164911650116511165211653116541165511656116571165811659116601166111662116631166411665116661166711668116691167011671116721167311674116751167611677116781167911680116811168211683116841168511686116871168811689116901169111692116931169411695116961169711698116991170011701117021170311704117051170611707117081170911710117111171211713117141171511716117171171811719117201172111722117231172411725117261172711728117291173011731117321173311734117351173611737117381173911740117411174211743117441174511746117471174811749117501175111752117531175411755117561175711758117591176011761117621176311764117651176611767117681176911770117711177211773117741177511776117771177811779117801178111782117831178411785117861178711788117891179011791117921179311794117951179611797117981179911800118011180211803118041180511806118071180811809118101181111812118131181411815118161181711818118191182011821118221182311824118251182611827118281182911830118311183211833118341183511836118371183811839118401184111842118431184411845118461184711848118491185011851118521185311854118551185611857118581185911860118611186211863118641186511866118671186811869118701187111872118731187411875118761187711878118791188011881118821188311884118851188611887118881188911890118911189211893118941189511896118971189811899119001190111902119031190411905119061190711908119091191011911119121191311914119151191611917119181191911920119211192211923119241192511926119271192811929119301193111932119331193411935119361193711938119391194011941119421194311944119451194611947119481194911950119511195211953119541195511956119571195811959119601196111962119631196411965119661196711968119691197011971119721197311974119751197611977119781197911980119811198211983119841198511986119871198811989119901199111992119931199411995119961199711998119991200012001120021200312004120051200612007120081200912010120111201212013120141201512016120171201812019120201202112022120231202412025120261202712028120291203012031120321203312034120351203612037120381203912040120411204212043120441204512046120471204812049120501205112052120531205412055120561205712058120591206012061120621206312064120651206612067120681206912070120711207212073120741207512076120771207812079120801208112082120831208412085120861208712088120891209012091120921209312094120951209612097120981209912100121011210212103121041210512106121071210812109121101211112112121131211412115121161211712118121191212012121121221212312124121251212612127121281212912130121311213212133121341213512136121371213812139121401214112142121431214412145121461214712148121491215012151121521215312154121551215612157121581215912160121611216212163121641216512166121671216812169121701217112172121731217412175121761217712178121791218012181121821218312184121851218612187121881218912190121911219212193121941219512196121971219812199122001220112202122031220412205122061220712208122091221012211122121221312214122151221612217122181221912220122211222212223122241222512226122271222812229122301223112232122331223412235122361223712238122391224012241122421224312244122451224612247122481224912250122511225212253122541225512256122571225812259122601226112262122631226412265122661226712268122691227012271122721227312274122751227612277122781227912280122811228212283122841228512286122871228812289122901229112292122931229412295122961229712298122991230012301123021230312304123051230612307123081230912310123111231212313123141231512316123171231812319123201232112322123231232412325123261232712328123291233012331123321233312334123351233612337123381233912340123411234212343123441234512346123471234812349123501235112352123531235412355123561235712358123591236012361123621236312364123651236612367123681236912370123711237212373123741237512376123771237812379123801238112382123831238412385123861238712388123891239012391123921239312394123951239612397123981239912400124011240212403124041240512406124071240812409124101241112412124131241412415124161241712418124191242012421124221242312424124251242612427124281242912430124311243212433124341243512436124371243812439124401244112442124431244412445124461244712448124491245012451124521245312454124551245612457124581245912460124611246212463124641246512466124671246812469124701247112472124731247412475124761247712478124791248012481124821248312484124851248612487124881248912490124911249212493124941249512496124971249812499125001250112502125031250412505125061250712508125091251012511125121251312514125151251612517125181251912520125211252212523125241252512526125271252812529125301253112532125331253412535125361253712538125391254012541125421254312544125451254612547125481254912550125511255212553125541255512556125571255812559125601256112562125631256412565125661256712568125691257012571125721257312574125751257612577125781257912580125811258212583125841258512586125871258812589125901259112592125931259412595125961259712598125991260012601126021260312604126051260612607126081260912610126111261212613126141261512616126171261812619126201262112622126231262412625126261262712628126291263012631126321263312634126351263612637126381263912640126411264212643126441264512646126471264812649126501265112652126531265412655126561265712658126591266012661126621266312664126651266612667126681266912670126711267212673126741267512676126771267812679126801268112682126831268412685126861268712688126891269012691126921269312694126951269612697126981269912700127011270212703127041270512706127071270812709127101271112712127131271412715127161271712718127191272012721127221272312724127251272612727127281272912730127311273212733127341273512736127371273812739127401274112742127431274412745127461274712748127491275012751127521275312754127551275612757127581275912760127611276212763127641276512766127671276812769127701277112772127731277412775127761277712778127791278012781127821278312784127851278612787127881278912790127911279212793127941279512796127971279812799128001280112802128031280412805128061280712808128091281012811128121281312814128151281612817128181281912820128211282212823128241282512826128271282812829128301283112832128331283412835128361283712838128391284012841128421284312844128451284612847128481284912850128511285212853128541285512856128571285812859128601286112862128631286412865128661286712868128691287012871128721287312874128751287612877128781287912880128811288212883128841288512886128871288812889128901289112892128931289412895128961289712898128991290012901129021290312904129051290612907129081290912910129111291212913129141291512916129171291812919129201292112922129231292412925129261292712928129291293012931129321293312934129351293612937129381293912940129411294212943129441294512946129471294812949129501295112952129531295412955129561295712958129591296012961129621296312964129651296612967129681296912970129711297212973129741297512976129771297812979129801298112982129831298412985129861298712988129891299012991129921299312994129951299612997129981299913000130011300213003130041300513006130071300813009130101301113012130131301413015130161301713018130191302013021130221302313024130251302613027130281302913030130311303213033130341303513036130371303813039130401304113042130431304413045130461304713048130491305013051130521305313054130551305613057130581305913060130611306213063130641306513066130671306813069130701307113072130731307413075130761307713078130791308013081130821308313084130851308613087130881308913090130911309213093130941309513096130971309813099131001310113102131031310413105131061310713108131091311013111131121311313114131151311613117131181311913120131211312213123131241312513126131271312813129131301313113132131331313413135131361313713138131391314013141131421314313144131451314613147131481314913150131511315213153131541315513156131571315813159131601316113162131631316413165131661316713168131691317013171131721317313174131751317613177131781317913180131811318213183131841318513186131871318813189131901319113192131931319413195131961319713198131991320013201132021320313204132051320613207132081320913210132111321213213132141321513216132171321813219132201322113222132231322413225132261322713228132291323013231132321323313234132351323613237132381323913240132411324213243132441324513246132471324813249132501325113252132531325413255132561325713258132591326013261132621326313264132651326613267132681326913270132711327213273132741327513276132771327813279132801328113282132831328413285132861328713288132891329013291132921329313294132951329613297132981329913300133011330213303133041330513306133071330813309133101331113312133131331413315133161331713318133191332013321133221332313324133251332613327133281332913330133311333213333133341333513336133371333813339133401334113342133431334413345133461334713348133491335013351133521335313354133551335613357133581335913360133611336213363133641336513366133671336813369133701337113372133731337413375133761337713378133791338013381133821338313384133851338613387133881338913390133911339213393133941339513396133971339813399134001340113402134031340413405134061340713408134091341013411134121341313414134151341613417134181341913420134211342213423134241342513426134271342813429134301343113432134331343413435134361343713438134391344013441134421344313444134451344613447134481344913450134511345213453134541345513456134571345813459134601346113462134631346413465134661346713468134691347013471134721347313474134751347613477134781347913480134811348213483134841348513486134871348813489134901349113492134931349413495134961349713498134991350013501135021350313504135051350613507135081350913510135111351213513135141351513516135171351813519135201352113522135231352413525135261352713528135291353013531135321353313534135351353613537135381353913540135411354213543135441354513546135471354813549135501355113552135531355413555135561355713558135591356013561135621356313564135651356613567135681356913570135711357213573135741357513576135771357813579135801358113582135831358413585135861358713588135891359013591135921359313594135951359613597135981359913600136011360213603136041360513606136071360813609136101361113612136131361413615136161361713618136191362013621136221362313624136251362613627136281362913630136311363213633136341363513636136371363813639136401364113642136431364413645136461364713648136491365013651136521365313654136551365613657136581365913660136611366213663136641366513666136671366813669136701367113672136731367413675136761367713678136791368013681136821368313684136851368613687136881368913690136911369213693136941369513696136971369813699137001370113702137031370413705137061370713708137091371013711137121371313714137151371613717137181371913720137211372213723137241372513726137271372813729137301373113732137331373413735137361373713738137391374013741137421374313744137451374613747137481374913750137511375213753137541375513756137571375813759137601376113762137631376413765137661376713768137691377013771137721377313774137751377613777137781377913780137811378213783137841378513786137871378813789137901379113792137931379413795137961379713798137991380013801138021380313804138051380613807138081380913810138111381213813138141381513816138171381813819138201382113822138231382413825138261382713828138291383013831138321383313834138351383613837138381383913840138411384213843138441384513846138471384813849138501385113852138531385413855138561385713858138591386013861138621386313864138651386613867138681386913870138711387213873138741387513876138771387813879138801388113882138831388413885138861388713888138891389013891138921389313894138951389613897138981389913900139011390213903139041390513906139071390813909139101391113912139131391413915139161391713918139191392013921139221392313924139251392613927139281392913930139311393213933139341393513936139371393813939139401394113942139431394413945139461394713948139491395013951139521395313954139551395613957139581395913960139611396213963139641396513966139671396813969139701397113972139731397413975139761397713978139791398013981139821398313984139851398613987139881398913990139911399213993139941399513996139971399813999140001400114002140031400414005140061400714008140091401014011140121401314014140151401614017140181401914020140211402214023140241402514026140271402814029140301403114032140331403414035140361403714038140391404014041140421404314044140451404614047140481404914050140511405214053140541405514056140571405814059140601406114062140631406414065140661406714068140691407014071140721407314074140751407614077140781407914080140811408214083140841408514086140871408814089140901409114092140931409414095140961409714098140991410014101141021410314104141051410614107141081410914110141111411214113141141411514116141171411814119141201412114122141231412414125141261412714128141291413014131141321413314134141351413614137141381413914140141411414214143141441414514146141471414814149141501415114152141531415414155141561415714158141591416014161141621416314164141651416614167141681416914170141711417214173141741417514176141771417814179141801418114182141831418414185141861418714188141891419014191141921419314194141951419614197141981419914200142011420214203142041420514206142071420814209142101421114212142131421414215142161421714218142191422014221142221422314224142251422614227142281422914230142311423214233142341423514236142371423814239142401424114242142431424414245142461424714248142491425014251142521425314254142551425614257142581425914260142611426214263142641426514266142671426814269142701427114272142731427414275142761427714278142791428014281142821428314284142851428614287142881428914290142911429214293142941429514296142971429814299143001430114302143031430414305143061430714308143091431014311143121431314314143151431614317143181431914320143211432214323143241432514326143271432814329143301433114332143331433414335143361433714338143391434014341143421434314344143451434614347143481434914350143511435214353143541435514356143571435814359143601436114362143631436414365143661436714368143691437014371143721437314374143751437614377143781437914380143811438214383143841438514386143871438814389143901439114392143931439414395143961439714398143991440014401144021440314404144051440614407144081440914410144111441214413144141441514416144171441814419144201442114422144231442414425144261442714428144291443014431144321443314434144351443614437144381443914440144411444214443144441444514446144471444814449144501445114452144531445414455144561445714458144591446014461144621446314464144651446614467144681446914470144711447214473144741447514476144771447814479144801448114482144831448414485144861448714488144891449014491144921449314494144951449614497144981449914500145011450214503145041450514506145071450814509145101451114512145131451414515145161451714518145191452014521145221452314524145251452614527145281452914530145311453214533145341453514536145371453814539145401454114542145431454414545145461454714548145491455014551145521455314554145551455614557145581455914560145611456214563145641456514566145671456814569145701457114572145731457414575145761457714578145791458014581145821458314584145851458614587145881458914590145911459214593145941459514596145971459814599146001460114602146031460414605146061460714608146091461014611146121461314614146151461614617146181461914620146211462214623146241462514626146271462814629146301463114632146331463414635146361463714638146391464014641146421464314644146451464614647146481464914650146511465214653146541465514656146571465814659146601466114662146631466414665146661466714668146691467014671146721467314674146751467614677146781467914680146811468214683146841468514686146871468814689146901469114692146931469414695146961469714698146991470014701147021470314704147051470614707147081470914710147111471214713147141471514716147171471814719147201472114722147231472414725147261472714728147291473014731147321473314734147351473614737147381473914740147411474214743147441474514746147471474814749147501475114752147531475414755147561475714758147591476014761147621476314764147651476614767147681476914770147711477214773147741477514776147771477814779147801478114782147831478414785147861478714788147891479014791147921479314794147951479614797147981479914800148011480214803148041480514806148071480814809148101481114812148131481414815148161481714818148191482014821148221482314824148251482614827148281482914830148311483214833148341483514836148371483814839148401484114842148431484414845148461484714848148491485014851148521485314854148551485614857148581485914860148611486214863148641486514866148671486814869148701487114872148731487414875148761487714878148791488014881148821488314884148851488614887148881488914890148911489214893148941489514896148971489814899149001490114902149031490414905149061490714908149091491014911149121491314914149151491614917149181491914920149211492214923149241492514926149271492814929149301493114932149331493414935149361493714938149391494014941149421494314944149451494614947149481494914950149511495214953149541495514956149571495814959149601496114962149631496414965149661496714968149691497014971149721497314974149751497614977149781497914980149811498214983149841498514986149871498814989149901499114992149931499414995149961499714998149991500015001150021500315004150051500615007150081500915010150111501215013150141501515016150171501815019150201502115022150231502415025150261502715028150291503015031150321503315034150351503615037150381503915040150411504215043150441504515046150471504815049150501505115052150531505415055150561505715058150591506015061150621506315064150651506615067150681506915070150711507215073150741507515076150771507815079150801508115082150831508415085150861508715088150891509015091150921509315094150951509615097150981509915100151011510215103151041510515106151071510815109151101511115112151131511415115151161511715118151191512015121151221512315124151251512615127151281512915130151311513215133151341513515136151371513815139151401514115142151431514415145151461514715148151491515015151151521515315154151551515615157151581515915160151611516215163151641516515166151671516815169151701517115172151731517415175151761517715178151791518015181151821518315184151851518615187151881518915190151911519215193151941519515196151971519815199152001520115202152031520415205152061520715208152091521015211152121521315214152151521615217152181521915220152211522215223152241522515226152271522815229152301523115232152331523415235152361523715238152391524015241152421524315244152451524615247152481524915250152511525215253152541525515256152571525815259152601526115262152631526415265152661526715268152691527015271152721527315274152751527615277152781527915280152811528215283152841528515286152871528815289152901529115292152931529415295152961529715298152991530015301153021530315304153051530615307153081530915310153111531215313153141531515316153171531815319153201532115322153231532415325153261532715328153291533015331153321533315334153351533615337153381533915340153411534215343153441534515346153471534815349153501535115352153531535415355153561535715358153591536015361153621536315364153651536615367153681536915370153711537215373153741537515376153771537815379153801538115382153831538415385153861538715388153891539015391153921539315394153951539615397153981539915400154011540215403154041540515406154071540815409154101541115412154131541415415154161541715418154191542015421154221542315424154251542615427154281542915430154311543215433154341543515436154371543815439154401544115442154431544415445154461544715448154491545015451154521545315454154551545615457154581545915460154611546215463154641546515466154671546815469154701547115472154731547415475154761547715478154791548015481154821548315484154851548615487154881548915490154911549215493154941549515496154971549815499155001550115502155031550415505155061550715508155091551015511155121551315514155151551615517155181551915520155211552215523155241552515526155271552815529155301553115532155331553415535155361553715538155391554015541155421554315544155451554615547155481554915550155511555215553155541555515556155571555815559155601556115562155631556415565155661556715568155691557015571155721557315574155751557615577155781557915580155811558215583155841558515586155871558815589155901559115592155931559415595155961559715598155991560015601156021560315604156051560615607156081560915610156111561215613156141561515616156171561815619156201562115622156231562415625156261562715628156291563015631156321563315634156351563615637156381563915640156411564215643156441564515646156471564815649156501565115652156531565415655156561565715658156591566015661156621566315664156651566615667156681566915670156711567215673156741567515676156771567815679156801568115682156831568415685156861568715688156891569015691156921569315694156951569615697156981569915700157011570215703157041570515706157071570815709157101571115712157131571415715157161571715718157191572015721157221572315724157251572615727157281572915730157311573215733157341573515736157371573815739157401574115742157431574415745157461574715748157491575015751157521575315754157551575615757157581575915760157611576215763157641576515766157671576815769157701577115772157731577415775157761577715778157791578015781157821578315784157851578615787157881578915790157911579215793157941579515796157971579815799158001580115802158031580415805158061580715808158091581015811158121581315814158151581615817158181581915820158211582215823158241582515826158271582815829158301583115832158331583415835158361583715838158391584015841158421584315844158451584615847158481584915850158511585215853158541585515856158571585815859158601586115862158631586415865158661586715868158691587015871158721587315874158751587615877158781587915880158811588215883158841588515886158871588815889158901589115892158931589415895158961589715898158991590015901159021590315904159051590615907159081590915910159111591215913159141591515916159171591815919159201592115922159231592415925159261592715928159291593015931159321593315934159351593615937159381593915940159411594215943159441594515946159471594815949159501595115952159531595415955159561595715958159591596015961159621596315964159651596615967159681596915970159711597215973159741597515976159771597815979159801598115982159831598415985159861598715988159891599015991159921599315994159951599615997159981599916000160011600216003160041600516006160071600816009160101601116012160131601416015160161601716018160191602016021160221602316024160251602616027160281602916030160311603216033160341603516036160371603816039160401604116042160431604416045160461604716048160491605016051160521605316054160551605616057160581605916060160611606216063160641606516066160671606816069160701607116072160731607416075160761607716078160791608016081160821608316084160851608616087160881608916090160911609216093160941609516096160971609816099161001610116102161031610416105161061610716108161091611016111161121611316114161151611616117161181611916120161211612216123161241612516126161271612816129161301613116132161331613416135161361613716138161391614016141161421614316144161451614616147161481614916150161511615216153161541615516156161571615816159161601616116162161631616416165161661616716168161691617016171161721617316174161751617616177161781617916180161811618216183161841618516186161871618816189161901619116192161931619416195161961619716198161991620016201162021620316204162051620616207162081620916210162111621216213162141621516216162171621816219162201622116222162231622416225162261622716228162291623016231162321623316234162351623616237162381623916240162411624216243162441624516246162471624816249162501625116252162531625416255162561625716258162591626016261162621626316264162651626616267162681626916270162711627216273162741627516276162771627816279162801628116282162831628416285162861628716288162891629016291162921629316294162951629616297162981629916300163011630216303163041630516306163071630816309163101631116312163131631416315163161631716318163191632016321163221632316324163251632616327163281632916330163311633216333163341633516336163371633816339163401634116342163431634416345163461634716348163491635016351163521635316354163551635616357163581635916360163611636216363163641636516366163671636816369163701637116372163731637416375163761637716378163791638016381163821638316384163851638616387163881638916390163911639216393163941639516396163971639816399164001640116402164031640416405164061640716408164091641016411164121641316414164151641616417164181641916420164211642216423164241642516426164271642816429164301643116432164331643416435164361643716438164391644016441164421644316444164451644616447164481644916450164511645216453164541645516456164571645816459164601646116462164631646416465164661646716468164691647016471164721647316474164751647616477164781647916480164811648216483164841648516486164871648816489164901649116492164931649416495164961649716498164991650016501165021650316504165051650616507165081650916510165111651216513165141651516516165171651816519165201652116522165231652416525165261652716528165291653016531165321653316534165351653616537165381653916540165411654216543165441654516546165471654816549165501655116552165531655416555165561655716558165591656016561165621656316564165651656616567165681656916570165711657216573165741657516576165771657816579165801658116582165831658416585165861658716588165891659016591165921659316594165951659616597165981659916600166011660216603166041660516606166071660816609166101661116612166131661416615166161661716618166191662016621166221662316624166251662616627166281662916630166311663216633166341663516636166371663816639166401664116642166431664416645166461664716648166491665016651166521665316654166551665616657166581665916660166611666216663166641666516666166671666816669166701667116672166731667416675166761667716678166791668016681166821668316684166851668616687166881668916690166911669216693166941669516696166971669816699167001670116702167031670416705167061670716708167091671016711167121671316714167151671616717167181671916720167211672216723167241672516726167271672816729167301673116732167331673416735167361673716738167391674016741167421674316744167451674616747167481674916750167511675216753167541675516756167571675816759167601676116762167631676416765167661676716768167691677016771167721677316774167751677616777167781677916780167811678216783167841678516786167871678816789167901679116792167931679416795167961679716798167991680016801168021680316804168051680616807168081680916810168111681216813168141681516816168171681816819168201682116822168231682416825168261682716828168291683016831168321683316834168351683616837168381683916840168411684216843168441684516846168471684816849168501685116852168531685416855168561685716858168591686016861168621686316864168651686616867168681686916870168711687216873168741687516876168771687816879168801688116882168831688416885168861688716888168891689016891168921689316894168951689616897168981689916900169011690216903169041690516906169071690816909169101691116912169131691416915169161691716918169191692016921169221692316924169251692616927169281692916930169311693216933169341693516936169371693816939169401694116942169431694416945169461694716948169491695016951169521695316954169551695616957169581695916960169611696216963169641696516966169671696816969169701697116972169731697416975169761697716978169791698016981169821698316984169851698616987169881698916990169911699216993169941699516996169971699816999170001700117002170031700417005170061700717008170091701017011170121701317014170151701617017170181701917020170211702217023170241702517026170271702817029170301703117032170331703417035170361703717038170391704017041170421704317044170451704617047170481704917050170511705217053170541705517056170571705817059170601706117062170631706417065170661706717068170691707017071170721707317074170751707617077170781707917080170811708217083170841708517086170871708817089170901709117092170931709417095170961709717098170991710017101171021710317104171051710617107171081710917110171111711217113171141711517116171171711817119171201712117122171231712417125171261712717128171291713017131171321713317134171351713617137171381713917140171411714217143171441714517146171471714817149171501715117152171531715417155171561715717158171591716017161171621716317164171651716617167171681716917170171711717217173171741717517176171771717817179171801718117182171831718417185171861718717188171891719017191171921719317194171951719617197171981719917200172011720217203172041720517206172071720817209172101721117212172131721417215172161721717218172191722017221172221722317224172251722617227172281722917230172311723217233172341723517236172371723817239172401724117242172431724417245172461724717248172491725017251172521725317254172551725617257172581725917260172611726217263172641726517266172671726817269172701727117272172731727417275172761727717278172791728017281172821728317284172851728617287172881728917290172911729217293172941729517296172971729817299173001730117302173031730417305173061730717308173091731017311173121731317314173151731617317173181731917320173211732217323173241732517326173271732817329173301733117332173331733417335173361733717338173391734017341173421734317344173451734617347173481734917350173511735217353173541735517356173571735817359173601736117362173631736417365173661736717368173691737017371173721737317374173751737617377173781737917380173811738217383173841738517386173871738817389173901739117392173931739417395173961739717398173991740017401174021740317404174051740617407174081740917410174111741217413174141741517416174171741817419174201742117422174231742417425174261742717428174291743017431174321743317434174351743617437174381743917440174411744217443174441744517446174471744817449174501745117452174531745417455174561745717458174591746017461174621746317464174651746617467174681746917470174711747217473174741747517476174771747817479174801748117482174831748417485174861748717488174891749017491174921749317494174951749617497174981749917500175011750217503175041750517506175071750817509175101751117512175131751417515175161751717518175191752017521175221752317524175251752617527175281752917530175311753217533175341753517536175371753817539175401754117542175431754417545175461754717548175491755017551175521755317554175551755617557175581755917560175611756217563175641756517566175671756817569175701757117572175731757417575175761757717578175791758017581175821758317584175851758617587175881758917590175911759217593175941759517596175971759817599176001760117602176031760417605176061760717608176091761017611176121761317614176151761617617176181761917620176211762217623176241762517626176271762817629176301763117632176331763417635176361763717638176391764017641176421764317644176451764617647176481764917650176511765217653176541765517656176571765817659176601766117662176631766417665176661766717668176691767017671176721767317674176751767617677176781767917680176811768217683176841768517686176871768817689176901769117692176931769417695176961769717698176991770017701177021770317704177051770617707177081770917710177111771217713177141771517716177171771817719177201772117722177231772417725177261772717728177291773017731177321773317734177351773617737177381773917740177411774217743177441774517746177471774817749177501775117752177531775417755177561775717758177591776017761177621776317764177651776617767177681776917770177711777217773177741777517776177771777817779177801778117782177831778417785177861778717788177891779017791177921779317794177951779617797177981779917800178011780217803178041780517806178071780817809178101781117812178131781417815178161781717818178191782017821178221782317824178251782617827178281782917830178311783217833178341783517836178371783817839178401784117842178431784417845178461784717848178491785017851178521785317854178551785617857178581785917860178611786217863178641786517866178671786817869178701787117872178731787417875178761787717878178791788017881178821788317884178851788617887178881788917890178911789217893178941789517896178971789817899179001790117902179031790417905179061790717908179091791017911179121791317914179151791617917179181791917920179211792217923179241792517926179271792817929179301793117932179331793417935179361793717938179391794017941179421794317944179451794617947179481794917950179511795217953179541795517956179571795817959179601796117962179631796417965179661796717968179691797017971179721797317974179751797617977179781797917980179811798217983179841798517986179871798817989179901799117992179931799417995179961799717998179991800018001180021800318004180051800618007180081800918010180111801218013180141801518016180171801818019180201802118022180231802418025180261802718028180291803018031180321803318034180351803618037180381803918040180411804218043180441804518046180471804818049180501805118052180531805418055180561805718058180591806018061180621806318064180651806618067180681806918070180711807218073180741807518076180771807818079180801808118082180831808418085180861808718088180891809018091180921809318094180951809618097180981809918100181011810218103181041810518106181071810818109181101811118112181131811418115181161811718118181191812018121181221812318124181251812618127181281812918130181311813218133181341813518136181371813818139181401814118142181431814418145181461814718148181491815018151181521815318154181551815618157181581815918160181611816218163181641816518166181671816818169181701817118172181731817418175181761817718178181791818018181181821818318184181851818618187181881818918190181911819218193181941819518196181971819818199182001820118202182031820418205182061820718208182091821018211182121821318214182151821618217182181821918220182211822218223182241822518226182271822818229182301823118232182331823418235182361823718238182391824018241182421824318244182451824618247182481824918250182511825218253182541825518256182571825818259182601826118262182631826418265182661826718268182691827018271182721827318274182751827618277182781827918280182811828218283182841828518286182871828818289182901829118292182931829418295182961829718298182991830018301183021830318304183051830618307183081830918310183111831218313183141831518316183171831818319183201832118322183231832418325183261832718328183291833018331183321833318334183351833618337183381833918340183411834218343183441834518346183471834818349183501835118352183531835418355183561835718358183591836018361183621836318364183651836618367183681836918370183711837218373183741837518376183771837818379183801838118382183831838418385183861838718388183891839018391183921839318394183951839618397183981839918400184011840218403184041840518406184071840818409184101841118412184131841418415184161841718418184191842018421184221842318424184251842618427184281842918430184311843218433184341843518436184371843818439184401844118442184431844418445184461844718448184491845018451184521845318454184551845618457184581845918460184611846218463184641846518466184671846818469184701847118472184731847418475184761847718478184791848018481184821848318484184851848618487184881848918490184911849218493184941849518496184971849818499185001850118502185031850418505185061850718508185091851018511185121851318514185151851618517185181851918520185211852218523185241852518526185271852818529185301853118532185331853418535185361853718538185391854018541185421854318544185451854618547185481854918550185511855218553185541855518556185571855818559185601856118562185631856418565185661856718568185691857018571185721857318574185751857618577185781857918580185811858218583185841858518586185871858818589185901859118592185931859418595185961859718598185991860018601186021860318604186051860618607186081860918610186111861218613186141861518616186171861818619186201862118622186231862418625186261862718628186291863018631186321863318634186351863618637186381863918640186411864218643186441864518646186471864818649186501865118652186531865418655186561865718658186591866018661186621866318664186651866618667186681866918670186711867218673186741867518676186771867818679186801868118682186831868418685186861868718688186891869018691186921869318694186951869618697186981869918700187011870218703187041870518706187071870818709187101871118712187131871418715187161871718718187191872018721187221872318724187251872618727187281872918730187311873218733187341873518736187371873818739187401874118742187431874418745187461874718748187491875018751187521875318754187551875618757187581875918760187611876218763187641876518766187671876818769187701877118772187731877418775187761877718778187791878018781187821878318784187851878618787187881878918790187911879218793187941879518796187971879818799188001880118802188031880418805188061880718808188091881018811188121881318814188151881618817188181881918820188211882218823188241882518826188271882818829188301883118832188331883418835188361883718838188391884018841188421884318844188451884618847188481884918850188511885218853188541885518856188571885818859188601886118862188631886418865188661886718868188691887018871188721887318874188751887618877188781887918880188811888218883188841888518886188871888818889188901889118892188931889418895188961889718898188991890018901189021890318904189051890618907189081890918910189111891218913189141891518916189171891818919189201892118922189231892418925189261892718928189291893018931189321893318934189351893618937189381893918940189411894218943189441894518946189471894818949189501895118952189531895418955189561895718958189591896018961189621896318964189651896618967189681896918970189711897218973189741897518976189771897818979189801898118982189831898418985189861898718988189891899018991189921899318994189951899618997189981899919000190011900219003190041900519006190071900819009190101901119012190131901419015190161901719018190191902019021190221902319024190251902619027190281902919030190311903219033190341903519036190371903819039190401904119042190431904419045190461904719048190491905019051190521905319054190551905619057190581905919060190611906219063190641906519066190671906819069190701907119072190731907419075190761907719078190791908019081190821908319084190851908619087190881908919090190911909219093190941909519096190971909819099191001910119102191031910419105191061910719108191091911019111191121911319114191151911619117191181911919120191211912219123191241912519126191271912819129191301913119132191331913419135191361913719138191391914019141191421914319144191451914619147191481914919150191511915219153191541915519156191571915819159191601916119162191631916419165191661916719168191691917019171191721917319174191751917619177191781917919180191811918219183191841918519186191871918819189191901919119192191931919419195191961919719198191991920019201192021920319204192051920619207192081920919210192111921219213192141921519216192171921819219192201922119222192231922419225192261922719228192291923019231192321923319234192351923619237192381923919240192411924219243192441924519246192471924819249192501925119252192531925419255192561925719258192591926019261192621926319264192651926619267192681926919270192711927219273192741927519276192771927819279192801928119282192831928419285192861928719288192891929019291192921929319294192951929619297192981929919300193011930219303193041930519306193071930819309193101931119312193131931419315193161931719318193191932019321193221932319324193251932619327193281932919330193311933219333193341933519336193371933819339193401934119342193431934419345193461934719348193491935019351193521935319354193551935619357193581935919360193611936219363193641936519366193671936819369193701937119372193731937419375193761937719378193791938019381193821938319384193851938619387193881938919390193911939219393193941939519396193971939819399194001940119402194031940419405194061940719408194091941019411194121941319414194151941619417194181941919420194211942219423194241942519426194271942819429194301943119432194331943419435194361943719438194391944019441194421944319444194451944619447194481944919450194511945219453194541945519456194571945819459194601946119462194631946419465194661946719468194691947019471194721947319474194751947619477194781947919480194811948219483194841948519486194871948819489194901949119492194931949419495194961949719498194991950019501195021950319504195051950619507195081950919510195111951219513195141951519516195171951819519195201952119522195231952419525195261952719528195291953019531195321953319534195351953619537195381953919540195411954219543195441954519546195471954819549195501955119552195531955419555195561955719558195591956019561195621956319564195651956619567195681956919570195711957219573195741957519576195771957819579195801958119582195831958419585195861958719588195891959019591195921959319594195951959619597195981959919600196011960219603196041960519606196071960819609196101961119612196131961419615196161961719618196191962019621196221962319624196251962619627196281962919630196311963219633196341963519636196371963819639196401964119642196431964419645196461964719648196491965019651196521965319654196551965619657196581965919660196611966219663196641966519666196671966819669196701967119672196731967419675196761967719678196791968019681196821968319684196851968619687196881968919690196911969219693196941969519696196971969819699197001970119702197031970419705197061970719708197091971019711197121971319714197151971619717197181971919720197211972219723197241972519726197271972819729197301973119732197331973419735197361973719738197391974019741197421974319744197451974619747197481974919750197511975219753197541975519756197571975819759197601976119762197631976419765197661976719768197691977019771197721977319774197751977619777197781977919780197811978219783197841978519786197871978819789197901979119792197931979419795197961979719798197991980019801198021980319804198051980619807198081980919810198111981219813198141981519816198171981819819198201982119822198231982419825198261982719828198291983019831198321983319834198351983619837198381983919840198411984219843198441984519846198471984819849198501985119852198531985419855198561985719858198591986019861198621986319864198651986619867198681986919870198711987219873198741987519876198771987819879198801988119882198831988419885198861988719888198891989019891198921989319894198951989619897198981989919900199011990219903199041990519906199071990819909199101991119912199131991419915199161991719918199191992019921199221992319924199251992619927199281992919930199311993219933199341993519936199371993819939199401994119942199431994419945199461994719948199491995019951199521995319954199551995619957199581995919960199611996219963199641996519966199671996819969199701997119972199731997419975199761997719978199791998019981199821998319984199851998619987199881998919990199911999219993199941999519996199971999819999200002000120002200032000420005200062000720008200092001020011200122001320014200152001620017200182001920020200212002220023200242002520026200272002820029200302003120032200332003420035200362003720038200392004020041200422004320044200452004620047200482004920050200512005220053200542005520056200572005820059200602006120062200632006420065200662006720068200692007020071200722007320074200752007620077200782007920080200812008220083200842008520086200872008820089200902009120092200932009420095200962009720098200992010020101201022010320104201052010620107201082010920110201112011220113201142011520116201172011820119201202012120122201232012420125201262012720128201292013020131201322013320134201352013620137201382013920140201412014220143201442014520146201472014820149201502015120152201532015420155201562015720158201592016020161201622016320164201652016620167201682016920170201712017220173201742017520176201772017820179201802018120182201832018420185201862018720188201892019020191201922019320194201952019620197201982019920200202012020220203202042020520206202072020820209202102021120212202132021420215202162021720218202192022020221202222022320224202252022620227202282022920230202312023220233202342023520236202372023820239202402024120242202432024420245202462024720248202492025020251202522025320254202552025620257202582025920260202612026220263202642026520266202672026820269202702027120272202732027420275202762027720278202792028020281202822028320284202852028620287202882028920290202912029220293202942029520296202972029820299203002030120302203032030420305203062030720308203092031020311203122031320314203152031620317203182031920320203212032220323203242032520326203272032820329203302033120332203332033420335203362033720338203392034020341203422034320344203452034620347203482034920350203512035220353203542035520356203572035820359203602036120362203632036420365203662036720368203692037020371203722037320374203752037620377203782037920380203812038220383203842038520386203872038820389203902039120392203932039420395203962039720398203992040020401204022040320404204052040620407204082040920410204112041220413204142041520416204172041820419204202042120422204232042420425204262042720428204292043020431204322043320434204352043620437204382043920440204412044220443204442044520446204472044820449204502045120452204532045420455204562045720458204592046020461204622046320464204652046620467204682046920470204712047220473204742047520476204772047820479204802048120482204832048420485204862048720488204892049020491204922049320494204952049620497204982049920500205012050220503205042050520506205072050820509205102051120512205132051420515205162051720518205192052020521205222052320524205252052620527205282052920530205312053220533205342053520536205372053820539205402054120542205432054420545205462054720548205492055020551205522055320554205552055620557205582055920560205612056220563205642056520566205672056820569205702057120572205732057420575205762057720578205792058020581205822058320584205852058620587205882058920590205912059220593205942059520596205972059820599206002060120602206032060420605206062060720608206092061020611206122061320614206152061620617206182061920620206212062220623206242062520626206272062820629206302063120632206332063420635206362063720638206392064020641206422064320644206452064620647206482064920650206512065220653206542065520656206572065820659206602066120662206632066420665206662066720668206692067020671206722067320674206752067620677206782067920680206812068220683206842068520686206872068820689206902069120692206932069420695206962069720698206992070020701207022070320704207052070620707207082070920710207112071220713207142071520716207172071820719207202072120722207232072420725207262072720728207292073020731207322073320734207352073620737207382073920740207412074220743207442074520746207472074820749207502075120752207532075420755207562075720758207592076020761207622076320764207652076620767207682076920770207712077220773207742077520776207772077820779207802078120782207832078420785207862078720788207892079020791207922079320794207952079620797207982079920800208012080220803208042080520806208072080820809208102081120812208132081420815208162081720818208192082020821208222082320824208252082620827208282082920830208312083220833208342083520836208372083820839208402084120842208432084420845208462084720848208492085020851208522085320854208552085620857208582085920860208612086220863208642086520866208672086820869208702087120872208732087420875208762087720878208792088020881208822088320884208852088620887208882088920890208912089220893208942089520896208972089820899209002090120902209032090420905209062090720908209092091020911209122091320914209152091620917209182091920920209212092220923209242092520926209272092820929209302093120932209332093420935209362093720938209392094020941209422094320944209452094620947209482094920950209512095220953209542095520956209572095820959209602096120962209632096420965209662096720968209692097020971209722097320974209752097620977209782097920980209812098220983209842098520986209872098820989209902099120992209932099420995209962099720998209992100021001210022100321004210052100621007210082100921010210112101221013210142101521016210172101821019210202102121022210232102421025210262102721028210292103021031210322103321034210352103621037210382103921040210412104221043210442104521046210472104821049210502105121052210532105421055210562105721058210592106021061210622106321064210652106621067210682106921070210712107221073210742107521076210772107821079210802108121082210832108421085210862108721088210892109021091210922109321094210952109621097210982109921100211012110221103211042110521106211072110821109211102111121112211132111421115211162111721118211192112021121211222112321124211252112621127211282112921130211312113221133211342113521136211372113821139211402114121142211432114421145211462114721148211492115021151211522115321154211552115621157211582115921160211612116221163211642116521166211672116821169211702117121172211732117421175211762117721178211792118021181211822118321184211852118621187211882118921190211912119221193211942119521196211972119821199212002120121202212032120421205212062120721208212092121021211212122121321214212152121621217212182121921220212212122221223212242122521226212272122821229212302123121232212332123421235212362123721238212392124021241212422124321244212452124621247212482124921250212512125221253212542125521256212572125821259212602126121262212632126421265212662126721268212692127021271212722127321274212752127621277212782127921280212812128221283212842128521286212872128821289212902129121292212932129421295212962129721298212992130021301213022130321304213052130621307213082130921310213112131221313213142131521316213172131821319213202132121322213232132421325213262132721328213292133021331213322133321334213352133621337213382133921340213412134221343213442134521346213472134821349213502135121352213532135421355213562135721358213592136021361213622136321364213652136621367213682136921370213712137221373213742137521376213772137821379213802138121382213832138421385213862138721388213892139021391213922139321394213952139621397213982139921400214012140221403214042140521406214072140821409214102141121412214132141421415214162141721418214192142021421214222142321424214252142621427214282142921430214312143221433214342143521436214372143821439214402144121442214432144421445214462144721448214492145021451214522145321454214552145621457214582145921460214612146221463214642146521466214672146821469214702147121472214732147421475214762147721478214792148021481214822148321484214852148621487214882148921490214912149221493214942149521496214972149821499215002150121502215032150421505215062150721508215092151021511215122151321514215152151621517215182151921520215212152221523215242152521526215272152821529215302153121532215332153421535215362153721538215392154021541215422154321544215452154621547215482154921550215512155221553215542155521556215572155821559215602156121562215632156421565215662156721568215692157021571215722157321574215752157621577215782157921580215812158221583215842158521586215872158821589215902159121592215932159421595215962159721598215992160021601216022160321604216052160621607216082160921610216112161221613216142161521616216172161821619216202162121622216232162421625216262162721628216292163021631216322163321634216352163621637216382163921640216412164221643216442164521646216472164821649216502165121652216532165421655216562165721658216592166021661216622166321664216652166621667216682166921670216712167221673216742167521676216772167821679216802168121682216832168421685216862168721688216892169021691216922169321694216952169621697216982169921700217012170221703217042170521706217072170821709217102171121712217132171421715217162171721718217192172021721217222172321724217252172621727217282172921730217312173221733217342173521736217372173821739217402174121742217432174421745217462174721748217492175021751217522175321754217552175621757217582175921760217612176221763217642176521766217672176821769217702177121772217732177421775217762177721778217792178021781217822178321784217852178621787217882178921790217912179221793217942179521796217972179821799218002180121802218032180421805218062180721808218092181021811218122181321814218152181621817218182181921820218212182221823218242182521826218272182821829218302183121832218332183421835218362183721838218392184021841218422184321844218452184621847218482184921850218512185221853218542185521856218572185821859218602186121862218632186421865218662186721868218692187021871218722187321874218752187621877218782187921880218812188221883218842188521886218872188821889218902189121892218932189421895218962189721898218992190021901219022190321904219052190621907219082190921910219112191221913219142191521916219172191821919219202192121922219232192421925219262192721928219292193021931219322193321934219352193621937219382193921940219412194221943219442194521946219472194821949219502195121952219532195421955219562195721958219592196021961219622196321964219652196621967219682196921970219712197221973219742197521976219772197821979219802198121982219832198421985219862198721988219892199021991219922199321994219952199621997219982199922000220012200222003220042200522006220072200822009220102201122012220132201422015220162201722018220192202022021220222202322024220252202622027220282202922030220312203222033220342203522036220372203822039220402204122042220432204422045220462204722048220492205022051220522205322054220552205622057220582205922060220612206222063220642206522066220672206822069220702207122072220732207422075220762207722078220792208022081220822208322084220852208622087220882208922090220912209222093220942209522096220972209822099221002210122102221032210422105221062210722108221092211022111221122211322114221152211622117221182211922120221212212222123221242212522126221272212822129221302213122132221332213422135221362213722138221392214022141221422214322144221452214622147221482214922150221512215222153221542215522156221572215822159221602216122162221632216422165221662216722168221692217022171221722217322174221752217622177221782217922180221812218222183221842218522186221872218822189221902219122192221932219422195221962219722198221992220022201222022220322204222052220622207222082220922210222112221222213222142221522216222172221822219222202222122222222232222422225222262222722228222292223022231222322223322234222352223622237222382223922240222412224222243222442224522246222472224822249222502225122252222532225422255222562225722258222592226022261222622226322264222652226622267222682226922270222712227222273222742227522276222772227822279222802228122282222832228422285222862228722288222892229022291222922229322294222952229622297222982229922300223012230222303223042230522306223072230822309223102231122312223132231422315223162231722318223192232022321223222232322324223252232622327223282232922330223312233222333223342233522336223372233822339223402234122342223432234422345223462234722348223492235022351223522235322354223552235622357223582235922360223612236222363223642236522366223672236822369223702237122372223732237422375223762237722378223792238022381223822238322384223852238622387223882238922390223912239222393223942239522396223972239822399224002240122402224032240422405224062240722408224092241022411224122241322414224152241622417224182241922420224212242222423224242242522426224272242822429224302243122432224332243422435224362243722438224392244022441224422244322444224452244622447224482244922450224512245222453224542245522456224572245822459224602246122462224632246422465224662246722468224692247022471224722247322474224752247622477224782247922480224812248222483224842248522486224872248822489224902249122492224932249422495224962249722498224992250022501225022250322504225052250622507225082250922510225112251222513225142251522516225172251822519225202252122522225232252422525225262252722528225292253022531225322253322534225352253622537225382253922540225412254222543225442254522546225472254822549225502255122552225532255422555225562255722558225592256022561225622256322564225652256622567225682256922570225712257222573225742257522576225772257822579225802258122582225832258422585225862258722588225892259022591225922259322594225952259622597225982259922600226012260222603226042260522606226072260822609226102261122612226132261422615226162261722618226192262022621226222262322624226252262622627226282262922630226312263222633226342263522636226372263822639226402264122642226432264422645226462264722648226492265022651226522265322654226552265622657226582265922660226612266222663226642266522666226672266822669226702267122672226732267422675226762267722678226792268022681226822268322684226852268622687226882268922690226912269222693226942269522696226972269822699227002270122702227032270422705227062270722708227092271022711227122271322714227152271622717227182271922720227212272222723227242272522726227272272822729227302273122732227332273422735227362273722738227392274022741227422274322744227452274622747227482274922750227512275222753227542275522756227572275822759227602276122762227632276422765227662276722768227692277022771227722277322774227752277622777227782277922780227812278222783227842278522786227872278822789227902279122792227932279422795227962279722798227992280022801228022280322804228052280622807228082280922810228112281222813228142281522816228172281822819228202282122822228232282422825228262282722828228292283022831228322283322834228352283622837228382283922840228412284222843228442284522846228472284822849228502285122852228532285422855228562285722858228592286022861228622286322864228652286622867228682286922870228712287222873228742287522876228772287822879228802288122882228832288422885228862288722888228892289022891228922289322894228952289622897228982289922900229012290222903229042290522906229072290822909229102291122912229132291422915229162291722918229192292022921229222292322924229252292622927229282292922930229312293222933229342293522936229372293822939229402294122942229432294422945229462294722948229492295022951229522295322954229552295622957229582295922960229612296222963229642296522966229672296822969229702297122972229732297422975229762297722978229792298022981229822298322984229852298622987229882298922990229912299222993229942299522996229972299822999230002300123002230032300423005230062300723008230092301023011230122301323014230152301623017230182301923020230212302223023230242302523026230272302823029230302303123032230332303423035230362303723038230392304023041230422304323044230452304623047230482304923050230512305223053230542305523056230572305823059230602306123062230632306423065230662306723068230692307023071230722307323074230752307623077230782307923080230812308223083230842308523086230872308823089230902309123092230932309423095230962309723098230992310023101231022310323104231052310623107231082310923110231112311223113231142311523116231172311823119231202312123122231232312423125231262312723128231292313023131231322313323134231352313623137231382313923140231412314223143231442314523146231472314823149231502315123152231532315423155231562315723158231592316023161231622316323164231652316623167231682316923170231712317223173231742317523176231772317823179231802318123182231832318423185231862318723188231892319023191231922319323194231952319623197231982319923200232012320223203232042320523206232072320823209232102321123212232132321423215232162321723218232192322023221232222322323224232252322623227232282322923230232312323223233232342323523236232372323823239232402324123242232432324423245232462324723248232492325023251232522325323254232552325623257232582325923260232612326223263232642326523266232672326823269232702327123272232732327423275232762327723278232792328023281232822328323284232852328623287232882328923290232912329223293232942329523296232972329823299233002330123302233032330423305233062330723308233092331023311233122331323314233152331623317233182331923320233212332223323233242332523326233272332823329233302333123332233332333423335233362333723338233392334023341233422334323344233452334623347233482334923350233512335223353233542335523356233572335823359233602336123362233632336423365233662336723368233692337023371233722337323374233752337623377233782337923380233812338223383233842338523386233872338823389233902339123392233932339423395233962339723398233992340023401234022340323404234052340623407234082340923410234112341223413234142341523416234172341823419234202342123422234232342423425234262342723428234292343023431234322343323434234352343623437234382343923440234412344223443234442344523446234472344823449234502345123452234532345423455234562345723458234592346023461234622346323464234652346623467234682346923470234712347223473234742347523476234772347823479234802348123482234832348423485234862348723488234892349023491234922349323494234952349623497234982349923500235012350223503235042350523506235072350823509235102351123512235132351423515235162351723518235192352023521235222352323524235252352623527235282352923530235312353223533235342353523536235372353823539235402354123542235432354423545235462354723548235492355023551235522355323554235552355623557235582355923560235612356223563235642356523566235672356823569235702357123572235732357423575235762357723578235792358023581235822358323584235852358623587235882358923590235912359223593235942359523596235972359823599236002360123602236032360423605236062360723608236092361023611236122361323614236152361623617236182361923620236212362223623236242362523626236272362823629236302363123632236332363423635236362363723638236392364023641236422364323644236452364623647236482364923650236512365223653236542365523656236572365823659236602366123662236632366423665236662366723668236692367023671236722367323674236752367623677236782367923680236812368223683236842368523686236872368823689236902369123692236932369423695236962369723698236992370023701237022370323704237052370623707237082370923710237112371223713237142371523716237172371823719237202372123722237232372423725237262372723728237292373023731237322373323734237352373623737237382373923740237412374223743237442374523746237472374823749237502375123752237532375423755237562375723758237592376023761237622376323764237652376623767237682376923770237712377223773237742377523776237772377823779237802378123782237832378423785237862378723788237892379023791237922379323794237952379623797237982379923800238012380223803238042380523806238072380823809238102381123812238132381423815238162381723818238192382023821238222382323824238252382623827238282382923830238312383223833238342383523836238372383823839238402384123842238432384423845238462384723848238492385023851238522385323854238552385623857238582385923860238612386223863238642386523866238672386823869238702387123872238732387423875238762387723878238792388023881238822388323884238852388623887238882388923890238912389223893238942389523896238972389823899239002390123902239032390423905239062390723908239092391023911239122391323914239152391623917239182391923920239212392223923239242392523926239272392823929239302393123932239332393423935239362393723938239392394023941239422394323944239452394623947239482394923950239512395223953239542395523956239572395823959239602396123962239632396423965239662396723968239692397023971239722397323974239752397623977239782397923980239812398223983239842398523986239872398823989239902399123992239932399423995239962399723998239992400024001240022400324004240052400624007240082400924010240112401224013240142401524016240172401824019240202402124022240232402424025240262402724028240292403024031240322403324034240352403624037240382403924040240412404224043240442404524046240472404824049240502405124052240532405424055240562405724058240592406024061240622406324064240652406624067240682406924070240712407224073240742407524076240772407824079240802408124082240832408424085240862408724088240892409024091240922409324094240952409624097240982409924100241012410224103241042410524106241072410824109241102411124112241132411424115241162411724118241192412024121241222412324124241252412624127241282412924130241312413224133241342413524136241372413824139241402414124142241432414424145241462414724148241492415024151241522415324154241552415624157241582415924160241612416224163241642416524166241672416824169241702417124172241732417424175241762417724178241792418024181241822418324184241852418624187241882418924190241912419224193241942419524196241972419824199242002420124202242032420424205242062420724208242092421024211242122421324214242152421624217242182421924220242212422224223242242422524226242272422824229242302423124232242332423424235242362423724238242392424024241242422424324244242452424624247242482424924250242512425224253242542425524256242572425824259242602426124262242632426424265242662426724268242692427024271242722427324274242752427624277242782427924280242812428224283242842428524286242872428824289242902429124292242932429424295242962429724298242992430024301243022430324304243052430624307243082430924310243112431224313243142431524316243172431824319243202432124322243232432424325243262432724328243292433024331243322433324334243352433624337243382433924340243412434224343243442434524346243472434824349243502435124352243532435424355243562435724358243592436024361243622436324364243652436624367243682436924370243712437224373243742437524376243772437824379243802438124382243832438424385243862438724388243892439024391243922439324394243952439624397243982439924400244012440224403244042440524406244072440824409244102441124412244132441424415244162441724418244192442024421244222442324424244252442624427244282442924430244312443224433244342443524436244372443824439244402444124442244432444424445244462444724448244492445024451244522445324454244552445624457244582445924460244612446224463244642446524466244672446824469244702447124472244732447424475244762447724478244792448024481244822448324484244852448624487244882448924490244912449224493244942449524496244972449824499245002450124502245032450424505245062450724508245092451024511245122451324514245152451624517245182451924520245212452224523245242452524526245272452824529245302453124532245332453424535245362453724538245392454024541245422454324544245452454624547245482454924550245512455224553245542455524556245572455824559245602456124562245632456424565245662456724568245692457024571245722457324574245752457624577245782457924580245812458224583245842458524586245872458824589245902459124592245932459424595245962459724598245992460024601246022460324604246052460624607246082460924610246112461224613246142461524616246172461824619246202462124622246232462424625246262462724628246292463024631246322463324634246352463624637246382463924640246412464224643246442464524646246472464824649246502465124652246532465424655246562465724658246592466024661246622466324664246652466624667246682466924670246712467224673246742467524676246772467824679246802468124682246832468424685246862468724688246892469024691246922469324694246952469624697246982469924700247012470224703247042470524706247072470824709247102471124712247132471424715247162471724718247192472024721247222472324724247252472624727247282472924730247312473224733247342473524736247372473824739247402474124742247432474424745247462474724748247492475024751247522475324754247552475624757247582475924760247612476224763247642476524766247672476824769247702477124772247732477424775247762477724778247792478024781247822478324784247852478624787247882478924790247912479224793247942479524796247972479824799248002480124802248032480424805248062480724808248092481024811248122481324814248152481624817248182481924820248212482224823248242482524826248272482824829248302483124832248332483424835248362483724838248392484024841248422484324844248452484624847248482484924850248512485224853248542485524856248572485824859248602486124862248632486424865248662486724868248692487024871248722487324874248752487624877248782487924880248812488224883248842488524886248872488824889248902489124892248932489424895248962489724898248992490024901249022490324904249052490624907249082490924910249112491224913249142491524916249172491824919249202492124922249232492424925249262492724928249292493024931249322493324934249352493624937249382493924940249412494224943249442494524946249472494824949249502495124952249532495424955249562495724958249592496024961249622496324964249652496624967249682496924970249712497224973249742497524976249772497824979249802498124982249832498424985249862498724988249892499024991249922499324994249952499624997249982499925000250012500225003250042500525006250072500825009250102501125012250132501425015250162501725018250192502025021250222502325024250252502625027250282502925030250312503225033250342503525036250372503825039250402504125042250432504425045250462504725048250492505025051250522505325054250552505625057250582505925060250612506225063250642506525066250672506825069250702507125072250732507425075250762507725078250792508025081250822508325084250852508625087250882508925090250912509225093250942509525096250972509825099251002510125102251032510425105251062510725108251092511025111251122511325114251152511625117251182511925120251212512225123251242512525126251272512825129251302513125132251332513425135251362513725138251392514025141251422514325144251452514625147251482514925150251512515225153251542515525156251572515825159251602516125162251632516425165251662516725168251692517025171251722517325174251752517625177251782517925180251812518225183251842518525186251872518825189251902519125192251932519425195251962519725198251992520025201252022520325204252052520625207252082520925210252112521225213252142521525216252172521825219252202522125222252232522425225252262522725228252292523025231252322523325234252352523625237252382523925240252412524225243252442524525246252472524825249252502525125252252532525425255252562525725258252592526025261252622526325264252652526625267252682526925270252712527225273252742527525276252772527825279252802528125282252832528425285252862528725288252892529025291252922529325294252952529625297252982529925300253012530225303253042530525306253072530825309253102531125312253132531425315253162531725318253192532025321253222532325324253252532625327253282532925330253312533225333253342533525336253372533825339253402534125342253432534425345253462534725348253492535025351253522535325354253552535625357253582535925360253612536225363253642536525366253672536825369253702537125372253732537425375253762537725378253792538025381253822538325384253852538625387253882538925390253912539225393253942539525396253972539825399254002540125402254032540425405254062540725408254092541025411254122541325414254152541625417254182541925420254212542225423254242542525426254272542825429254302543125432254332543425435254362543725438254392544025441254422544325444254452544625447254482544925450254512545225453254542545525456254572545825459254602546125462254632546425465254662546725468254692547025471254722547325474254752547625477254782547925480254812548225483254842548525486254872548825489254902549125492254932549425495254962549725498254992550025501255022550325504255052550625507255082550925510255112551225513255142551525516255172551825519255202552125522255232552425525255262552725528255292553025531255322553325534255352553625537255382553925540255412554225543255442554525546255472554825549255502555125552255532555425555255562555725558255592556025561255622556325564255652556625567255682556925570255712557225573255742557525576255772557825579255802558125582255832558425585255862558725588255892559025591255922559325594255952559625597255982559925600256012560225603256042560525606256072560825609256102561125612256132561425615256162561725618256192562025621256222562325624256252562625627256282562925630256312563225633256342563525636256372563825639256402564125642256432564425645256462564725648256492565025651256522565325654256552565625657256582565925660256612566225663256642566525666256672566825669256702567125672256732567425675256762567725678256792568025681256822568325684256852568625687256882568925690256912569225693256942569525696256972569825699257002570125702257032570425705257062570725708257092571025711257122571325714257152571625717257182571925720257212572225723257242572525726257272572825729257302573125732257332573425735257362573725738257392574025741257422574325744257452574625747257482574925750257512575225753257542575525756257572575825759257602576125762257632576425765257662576725768257692577025771257722577325774257752577625777257782577925780257812578225783257842578525786257872578825789257902579125792257932579425795257962579725798257992580025801258022580325804258052580625807258082580925810258112581225813258142581525816258172581825819258202582125822258232582425825258262582725828258292583025831258322583325834258352583625837258382583925840258412584225843258442584525846258472584825849258502585125852258532585425855258562585725858258592586025861258622586325864258652586625867258682586925870258712587225873258742587525876258772587825879258802588125882258832588425885258862588725888258892589025891258922589325894258952589625897258982589925900259012590225903259042590525906259072590825909259102591125912259132591425915259162591725918259192592025921259222592325924259252592625927259282592925930259312593225933259342593525936259372593825939259402594125942259432594425945259462594725948259492595025951259522595325954259552595625957259582595925960259612596225963259642596525966259672596825969259702597125972259732597425975259762597725978259792598025981259822598325984259852598625987259882598925990259912599225993259942599525996259972599825999260002600126002260032600426005260062600726008260092601026011260122601326014260152601626017260182601926020260212602226023260242602526026260272602826029260302603126032260332603426035260362603726038260392604026041260422604326044260452604626047260482604926050260512605226053260542605526056260572605826059260602606126062260632606426065260662606726068260692607026071260722607326074260752607626077260782607926080260812608226083260842608526086260872608826089260902609126092260932609426095260962609726098260992610026101261022610326104261052610626107261082610926110261112611226113261142611526116261172611826119261202612126122261232612426125261262612726128261292613026131261322613326134261352613626137261382613926140261412614226143261442614526146261472614826149261502615126152261532615426155261562615726158261592616026161261622616326164261652616626167261682616926170261712617226173261742617526176261772617826179261802618126182261832618426185261862618726188261892619026191261922619326194261952619626197261982619926200262012620226203262042620526206262072620826209262102621126212262132621426215262162621726218262192622026221262222622326224262252622626227262282622926230262312623226233262342623526236262372623826239262402624126242262432624426245262462624726248262492625026251262522625326254262552625626257262582625926260262612626226263262642626526266262672626826269262702627126272262732627426275262762627726278262792628026281262822628326284262852628626287262882628926290262912629226293262942629526296262972629826299263002630126302263032630426305263062630726308263092631026311263122631326314263152631626317263182631926320263212632226323263242632526326263272632826329263302633126332263332633426335263362633726338263392634026341263422634326344263452634626347263482634926350263512635226353263542635526356263572635826359263602636126362263632636426365263662636726368263692637026371263722637326374263752637626377263782637926380263812638226383263842638526386263872638826389263902639126392263932639426395263962639726398263992640026401264022640326404264052640626407264082640926410264112641226413264142641526416264172641826419264202642126422264232642426425264262642726428264292643026431264322643326434264352643626437264382643926440264412644226443264442644526446264472644826449264502645126452264532645426455264562645726458264592646026461264622646326464264652646626467264682646926470264712647226473264742647526476264772647826479264802648126482264832648426485264862648726488264892649026491264922649326494264952649626497264982649926500265012650226503265042650526506265072650826509265102651126512265132651426515265162651726518265192652026521265222652326524265252652626527265282652926530265312653226533265342653526536265372653826539265402654126542265432654426545265462654726548265492655026551265522655326554265552655626557265582655926560265612656226563265642656526566265672656826569265702657126572265732657426575265762657726578265792658026581265822658326584265852658626587265882658926590265912659226593265942659526596265972659826599266002660126602266032660426605266062660726608266092661026611266122661326614266152661626617266182661926620266212662226623266242662526626266272662826629266302663126632266332663426635266362663726638266392664026641266422664326644266452664626647266482664926650266512665226653266542665526656266572665826659266602666126662266632666426665266662666726668266692667026671266722667326674266752667626677266782667926680266812668226683266842668526686266872668826689266902669126692266932669426695266962669726698266992670026701267022670326704267052670626707267082670926710267112671226713267142671526716267172671826719267202672126722267232672426725267262672726728267292673026731267322673326734267352673626737267382673926740267412674226743267442674526746267472674826749267502675126752267532675426755267562675726758267592676026761267622676326764267652676626767267682676926770267712677226773267742677526776267772677826779267802678126782267832678426785267862678726788267892679026791267922679326794267952679626797267982679926800268012680226803268042680526806268072680826809268102681126812268132681426815268162681726818268192682026821268222682326824268252682626827268282682926830268312683226833268342683526836268372683826839268402684126842268432684426845268462684726848268492685026851268522685326854268552685626857268582685926860268612686226863268642686526866268672686826869268702687126872268732687426875268762687726878268792688026881268822688326884268852688626887268882688926890268912689226893268942689526896268972689826899269002690126902269032690426905269062690726908269092691026911269122691326914269152691626917269182691926920269212692226923269242692526926269272692826929269302693126932269332693426935269362693726938269392694026941269422694326944269452694626947269482694926950269512695226953269542695526956269572695826959269602696126962269632696426965269662696726968269692697026971269722697326974269752697626977269782697926980269812698226983269842698526986269872698826989269902699126992269932699426995269962699726998269992700027001270022700327004270052700627007270082700927010270112701227013270142701527016270172701827019270202702127022270232702427025270262702727028270292703027031270322703327034270352703627037270382703927040270412704227043270442704527046270472704827049270502705127052270532705427055270562705727058270592706027061270622706327064270652706627067270682706927070270712707227073270742707527076270772707827079270802708127082270832708427085270862708727088270892709027091270922709327094270952709627097270982709927100271012710227103271042710527106271072710827109271102711127112271132711427115271162711727118271192712027121271222712327124271252712627127271282712927130271312713227133271342713527136271372713827139271402714127142271432714427145271462714727148271492715027151271522715327154271552715627157271582715927160271612716227163271642716527166271672716827169271702717127172271732717427175271762717727178271792718027181271822718327184271852718627187271882718927190271912719227193271942719527196271972719827199272002720127202272032720427205272062720727208272092721027211272122721327214272152721627217272182721927220272212722227223272242722527226272272722827229272302723127232272332723427235272362723727238272392724027241272422724327244272452724627247272482724927250272512725227253272542725527256272572725827259272602726127262272632726427265272662726727268272692727027271272722727327274272752727627277272782727927280272812728227283272842728527286272872728827289272902729127292272932729427295272962729727298272992730027301273022730327304273052730627307273082730927310273112731227313273142731527316273172731827319273202732127322273232732427325273262732727328273292733027331273322733327334273352733627337273382733927340273412734227343273442734527346273472734827349273502735127352273532735427355273562735727358273592736027361273622736327364273652736627367273682736927370273712737227373273742737527376273772737827379273802738127382273832738427385273862738727388273892739027391273922739327394273952739627397273982739927400274012740227403274042740527406274072740827409274102741127412274132741427415274162741727418274192742027421274222742327424274252742627427274282742927430274312743227433274342743527436274372743827439274402744127442274432744427445274462744727448274492745027451274522745327454274552745627457274582745927460274612746227463274642746527466274672746827469274702747127472274732747427475274762747727478274792748027481274822748327484274852748627487274882748927490274912749227493274942749527496274972749827499275002750127502275032750427505275062750727508275092751027511275122751327514275152751627517275182751927520275212752227523275242752527526275272752827529275302753127532275332753427535275362753727538275392754027541275422754327544275452754627547275482754927550275512755227553275542755527556275572755827559275602756127562275632756427565275662756727568275692757027571275722757327574275752757627577275782757927580275812758227583275842758527586275872758827589275902759127592275932759427595275962759727598275992760027601276022760327604276052760627607276082760927610276112761227613276142761527616276172761827619276202762127622276232762427625276262762727628276292763027631276322763327634276352763627637276382763927640276412764227643276442764527646276472764827649276502765127652276532765427655276562765727658276592766027661276622766327664276652766627667276682766927670276712767227673276742767527676276772767827679276802768127682276832768427685276862768727688276892769027691276922769327694276952769627697276982769927700277012770227703277042770527706277072770827709277102771127712277132771427715277162771727718277192772027721277222772327724277252772627727277282772927730277312773227733277342773527736277372773827739277402774127742277432774427745277462774727748277492775027751277522775327754277552775627757277582775927760277612776227763277642776527766277672776827769277702777127772277732777427775277762777727778277792778027781277822778327784277852778627787277882778927790277912779227793277942779527796277972779827799278002780127802278032780427805278062780727808278092781027811278122781327814278152781627817278182781927820278212782227823278242782527826278272782827829278302783127832278332783427835278362783727838278392784027841278422784327844278452784627847278482784927850278512785227853278542785527856278572785827859278602786127862278632786427865278662786727868278692787027871278722787327874278752787627877278782787927880278812788227883278842788527886278872788827889278902789127892278932789427895278962789727898278992790027901279022790327904279052790627907279082790927910279112791227913279142791527916279172791827919279202792127922279232792427925279262792727928279292793027931279322793327934279352793627937279382793927940279412794227943279442794527946279472794827949279502795127952279532795427955279562795727958279592796027961279622796327964279652796627967279682796927970279712797227973279742797527976279772797827979279802798127982279832798427985279862798727988279892799027991279922799327994279952799627997279982799928000280012800228003280042800528006280072800828009280102801128012280132801428015280162801728018280192802028021280222802328024280252802628027280282802928030280312803228033280342803528036280372803828039280402804128042280432804428045280462804728048280492805028051280522805328054280552805628057280582805928060280612806228063280642806528066280672806828069280702807128072280732807428075280762807728078280792808028081280822808328084280852808628087280882808928090280912809228093280942809528096280972809828099281002810128102281032810428105281062810728108281092811028111281122811328114281152811628117281182811928120281212812228123281242812528126281272812828129281302813128132281332813428135281362813728138281392814028141281422814328144281452814628147281482814928150281512815228153281542815528156281572815828159281602816128162281632816428165281662816728168281692817028171281722817328174281752817628177281782817928180281812818228183281842818528186281872818828189281902819128192281932819428195281962819728198281992820028201282022820328204282052820628207282082820928210282112821228213282142821528216282172821828219282202822128222282232822428225282262822728228282292823028231282322823328234282352823628237282382823928240282412824228243282442824528246282472824828249282502825128252282532825428255282562825728258282592826028261282622826328264282652826628267282682826928270282712827228273282742827528276282772827828279282802828128282282832828428285282862828728288282892829028291282922829328294282952829628297282982829928300283012830228303283042830528306283072830828309283102831128312283132831428315283162831728318283192832028321283222832328324283252832628327283282832928330283312833228333283342833528336283372833828339283402834128342283432834428345283462834728348283492835028351283522835328354283552835628357283582835928360283612836228363283642836528366283672836828369283702837128372283732837428375283762837728378283792838028381283822838328384283852838628387283882838928390283912839228393283942839528396283972839828399284002840128402284032840428405284062840728408284092841028411284122841328414284152841628417284182841928420284212842228423284242842528426284272842828429284302843128432284332843428435284362843728438284392844028441284422844328444284452844628447284482844928450284512845228453284542845528456284572845828459284602846128462284632846428465284662846728468284692847028471284722847328474284752847628477284782847928480284812848228483284842848528486284872848828489284902849128492284932849428495284962849728498284992850028501285022850328504285052850628507285082850928510285112851228513285142851528516285172851828519285202852128522285232852428525285262852728528285292853028531285322853328534285352853628537285382853928540285412854228543285442854528546285472854828549285502855128552285532855428555285562855728558285592856028561285622856328564285652856628567285682856928570285712857228573285742857528576285772857828579285802858128582285832858428585285862858728588285892859028591285922859328594285952859628597285982859928600286012860228603286042860528606286072860828609286102861128612286132861428615286162861728618286192862028621286222862328624286252862628627286282862928630286312863228633286342863528636286372863828639286402864128642286432864428645286462864728648286492865028651286522865328654286552865628657286582865928660286612866228663286642866528666286672866828669286702867128672286732867428675286762867728678286792868028681286822868328684286852868628687286882868928690286912869228693286942869528696286972869828699287002870128702287032870428705287062870728708287092871028711287122871328714287152871628717287182871928720287212872228723287242872528726287272872828729287302873128732287332873428735287362873728738287392874028741287422874328744287452874628747287482874928750287512875228753287542875528756287572875828759287602876128762287632876428765287662876728768287692877028771287722877328774287752877628777287782877928780287812878228783287842878528786287872878828789287902879128792287932879428795287962879728798287992880028801288022880328804288052880628807288082880928810288112881228813288142881528816288172881828819288202882128822288232882428825288262882728828288292883028831288322883328834288352883628837288382883928840288412884228843288442884528846288472884828849288502885128852288532885428855288562885728858288592886028861288622886328864288652886628867288682886928870288712887228873288742887528876288772887828879288802888128882288832888428885288862888728888288892889028891288922889328894288952889628897288982889928900289012890228903289042890528906289072890828909289102891128912289132891428915289162891728918289192892028921289222892328924289252892628927289282892928930289312893228933289342893528936289372893828939289402894128942289432894428945289462894728948289492895028951289522895328954289552895628957289582895928960289612896228963289642896528966289672896828969289702897128972289732897428975289762897728978289792898028981289822898328984289852898628987289882898928990289912899228993289942899528996289972899828999290002900129002290032900429005290062900729008290092901029011290122901329014290152901629017290182901929020290212902229023290242902529026290272902829029290302903129032290332903429035290362903729038290392904029041290422904329044290452904629047290482904929050290512905229053290542905529056290572905829059290602906129062290632906429065290662906729068(* 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.guarddutyletapiVersion="2017-11-28"letendpointPrefix="guardduty"letserviceFullName="Amazon GuardDuty"letsignatureVersion="v4"letprotocol="rest_json"letglobalEndpoint=endpointPrefix^".amazonaws.com"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[]))])moduleString_=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_valueendmoduleSensitiveString=structtypenonrect=stringletcontext_="SensitiveString"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:"SensitiveString"jletto_json=simple_to_jsonto_valueendmoduleObservationTexts=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:"ObservationTexts"~of_json:String_.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleEc2InstanceUid=structtypenonrect=stringletcontext_="Ec2InstanceUid"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:256)>>=(fun()->check_string_mini~min:0));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"Ec2InstanceUid"jletto_json=simple_to_jsonto_valueendmoduleProductCode=structtypenonrect={code:String_.toption[@ocaml.doc"The product code information."];productType:String_.toption[@ocaml.doc"The product code type."]}letmake?code=fun?productType->fun()->{code;productType}letto_valuex=structure_to_value[("productCodeId",(Option.mapx.code~f:String_.to_value));("productCodeType",(Option.mapx.productType~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letproductType=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"productCodeType")inletcode=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"productCodeId")inmake?productType?code()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letproductType=field_mapjson__"ProductType"String_.of_jsoninletcode=field_mapjson__"Code"String_.of_jsoninmake?productType?code()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the product code for the EC2 instance."]modulePrivateIpAddressDetails=structtypenonrect={privateDnsName:String_.toption[@ocaml.doc"The private DNS name of the EC2 instance."];privateIpAddress:SensitiveString.toption[@ocaml.doc"The private IP address of the EC2 instance."]}letmake?privateDnsName=fun?privateIpAddress->fun()->{privateDnsName;privateIpAddress}letto_valuex=structure_to_value[("privateDnsName",(Option.mapx.privateDnsName~f:String_.to_value));("privateIpAddress",(Option.mapx.privateIpAddress~f:SensitiveString.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letprivateIpAddress=(Option.map~f:SensitiveString.of_xml)(Xml.childxml_arg0"privateIpAddress")inletprivateDnsName=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"privateDnsName")inmake?privateIpAddress?privateDnsName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letprivateIpAddress=field_mapjson__"PrivateIpAddress"SensitiveString.of_jsoninletprivateDnsName=field_mapjson__"PrivateDnsName"String_.of_jsoninmake?privateIpAddress?privateDnsName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains other private IP address information of the EC2 instance."]moduleSecurityGroup=structtypenonrect={groupId:String_.toption[@ocaml.doc"The security group ID of the EC2 instance."];groupName:String_.toption[@ocaml.doc"The security group name of the EC2 instance."]}letmake?groupId=fun?groupName->fun()->{groupId;groupName}letto_valuex=structure_to_value[("groupId",(Option.mapx.groupId~f:String_.to_value));("groupName",(Option.mapx.groupName~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letgroupName=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"groupName")inletgroupId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"groupId")inmake?groupName?groupId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letgroupName=field_mapjson__"GroupName"String_.of_jsoninletgroupId=field_mapjson__"GroupId"String_.of_jsoninmake?groupName?groupId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the security groups associated with the EC2 instance."]moduleContainerUid=structtypenonrect=stringletcontext_="ContainerUid"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:256)>>=(fun()->check_string_mini~min:0));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"ContainerUid"jletto_json=simple_to_jsonto_valueendmodulePublicAccessStatus=structtypenonrect=|BLOCKED|ALLOWED|Non_static_idofstringletmakei=iletto_string=function|BLOCKED->"BLOCKED"|ALLOWED->"ALLOWED"|Non_static_ids->sletof_string=function|"BLOCKED"->BLOCKED|"ALLOWED"->ALLOWED|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 PublicAccessStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"PublicAccessStatus"j)letto_json=simple_to_jsonto_valueendmodulePublicAclIgnoreBehavior=structtypenonrect=|IGNORED|NOT_IGNORED|Non_static_idofstringletmakei=iletto_string=function|IGNORED->"IGNORED"|NOT_IGNORED->"NOT_IGNORED"|Non_static_ids->sletof_string=function|"IGNORED"->IGNORED|"NOT_IGNORED"->NOT_IGNORED|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 PublicAclIgnoreBehavior"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"PublicAclIgnoreBehavior"j)letto_json=simple_to_jsonto_valueendmodulePublicBucketRestrictBehavior=structtypenonrect=|RESTRICTED|NOT_RESTRICTED|Non_static_idofstringletmakei=iletto_string=function|RESTRICTED->"RESTRICTED"|NOT_RESTRICTED->"NOT_RESTRICTED"|Non_static_ids->sletof_string=function|"RESTRICTED"->RESTRICTED|"NOT_RESTRICTED"->NOT_RESTRICTED|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 PublicBucketRestrictBehavior"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"PublicBucketRestrictBehavior"j)letto_json=simple_to_jsonto_valueendmoduleIndicatorValueString=structtypenonrect=stringletcontext_="IndicatorValueString"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:256)>>=(fun()->check_string_mini~min:1));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"IndicatorValueString"jletto_json=simple_to_jsonto_valueendmoduleBoolean=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_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_valueendmoduleObservations=structtypenonrect={text:ObservationTexts.toption[@ocaml.doc"The text that was unusual."]}letmake?text=fun()->{text}letto_valuex=structure_to_value[("text",(Option.mapx.text~f:ObservationTexts.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettext=(Option.map~f:ObservationTexts.of_xml)(Xml.childxml_arg0"text")inmake?text()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettext=field_mapjson__"Text"ObservationTexts.of_jsoninmake?text()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the observed behavior."]moduleProfileSubtype=structtypenonrect=|FREQUENT|INFREQUENT|UNSEEN|RARE|Non_static_idofstringletmakei=iletto_string=function|FREQUENT->"FREQUENT"|INFREQUENT->"INFREQUENT"|UNSEEN->"UNSEEN"|RARE->"RARE"|Non_static_ids->sletof_string=function|"FREQUENT"->FREQUENT|"INFREQUENT"->INFREQUENT|"UNSEEN"->UNSEEN|"RARE"->RARE|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 ProfileSubtype"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ProfileSubtype"j)letto_json=simple_to_jsonto_valueendmoduleProfileType=structtypenonrect=|FREQUENCY|Non_static_idofstringletmakei=iletto_string=function|FREQUENCY->"FREQUENCY"|Non_static_ids->sletof_string=function|"FREQUENCY"->FREQUENCY|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 ProfileType"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ProfileType"j)letto_json=simple_to_jsonto_valueendmoduleEc2InstanceUids=structtypenonrect=Ec2InstanceUid.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:25)>>=(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:Ec2InstanceUid.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:Ec2InstanceUid.of_xml)letof_jsonj=list_of_json~kind:"Ec2InstanceUids"~of_json:Ec2InstanceUid.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleContainerImageUid=structtypenonrect=stringletcontext_="ContainerImageUid"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:1024)>>=(fun()->check_string_mini~min:1));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"ContainerImageUid"jletto_json=simple_to_jsonto_valueendmoduleEc2NetworkInterfaceUids=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:"Ec2NetworkInterfaceUids"~of_json:String_.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleIamInstanceProfile=structtypenonrect={arn:String_.toption[@ocaml.doc"The profile ARN of the EC2 instance."];id:String_.toption[@ocaml.doc"The profile ID of the EC2 instance."]}letmake?arn=fun?id->fun()->{arn;id}letto_valuex=structure_to_value[("arn",(Option.mapx.arn~f:String_.to_value));("id",(Option.mapx.id~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letid=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"id")inletarn=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"arn")inmake?id?arn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letid=field_mapjson__"Id"String_.of_jsoninletarn=field_mapjson__"Arn"String_.of_jsoninmake?id?arn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the EC2 instance profile."]moduleProductCodes=structtypenonrect=ProductCode.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ProductCode.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:ProductCode.of_xml)letof_jsonj=list_of_json~kind:"ProductCodes"~of_json:ProductCode.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleLaunchTemplateVersion=structtypenonrect=stringletcontext_="LaunchTemplateVersion"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:256)>>=(fun()->check_string_mini~min:0));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"LaunchTemplateVersion"jletto_json=simple_to_jsonto_valueendmoduleIpv6Addresses=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:"Ipv6Addresses"~of_json:String_.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmodulePrivateIpAddresses=structtypenonrect=PrivateIpAddressDetails.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:PrivateIpAddressDetails.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:PrivateIpAddressDetails.of_xml)letof_jsonj=list_of_json~kind:"PrivateIpAddresses"~of_json:PrivateIpAddressDetails.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleSecurityGroups=structtypenonrect=SecurityGroup.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:SecurityGroup.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:SecurityGroup.of_xml)letof_jsonj=list_of_json~kind:"SecurityGroups"~of_json:SecurityGroup.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleEcsClusterStatus=structtypenonrect=|ACTIVE|PROVISIONING|DEPROVISIONING|FAILED|INACTIVE|Non_static_idofstringletmakei=iletto_string=function|ACTIVE->"ACTIVE"|PROVISIONING->"PROVISIONING"|DEPROVISIONING->"DEPROVISIONING"|FAILED->"FAILED"|INACTIVE->"INACTIVE"|Non_static_ids->sletof_string=function|"ACTIVE"->ACTIVE|"PROVISIONING"->PROVISIONING|"DEPROVISIONING"->DEPROVISIONING|"FAILED"->FAILED|"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 EcsClusterStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"EcsClusterStatus"j)letto_json=simple_to_jsonto_valueendmoduleContainerUids=structtypenonrect=ContainerUid.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ContainerUid.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:ContainerUid.of_xml)letof_jsonj=list_of_json~kind:"ContainerUids"~of_json:ContainerUid.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleEcsLaunchType=structtypenonrect=|FARGATE|EC2|Non_static_idofstringletmakei=iletto_string=function|FARGATE->"FARGATE"|EC2->"EC2"|Non_static_ids->sletof_string=function|"FARGATE"->FARGATE|"EC2"->EC2|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 EcsLaunchType"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"EcsLaunchType"j)letto_json=simple_to_jsonto_valueendmoduleTimestamp=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_valueendmoduleClusterStatus=structtypenonrect=|CREATING|ACTIVE|DELETING|FAILED|UPDATING|PENDING|Non_static_idofstringletmakei=iletto_string=function|CREATING->"CREATING"|ACTIVE->"ACTIVE"|DELETING->"DELETING"|FAILED->"FAILED"|UPDATING->"UPDATING"|PENDING->"PENDING"|Non_static_ids->sletof_string=function|"CREATING"->CREATING|"ACTIVE"->ACTIVE|"DELETING"->DELETING|"FAILED"->FAILED|"UPDATING"->UPDATING|"PENDING"->PENDING|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 ClusterStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ClusterStatus"j)letto_json=simple_to_jsonto_valueendmoduleKubernetesResourcesTypes=structtypenonrect=|PODS|JOBS|CRONJOBS|DEPLOYMENTS|DAEMONSETS|STATEFULSETS|REPLICASETS|REPLICATIONCONTROLLERS|Non_static_idofstringletmakei=iletto_string=function|PODS->"PODS"|JOBS->"JOBS"|CRONJOBS->"CRONJOBS"|DEPLOYMENTS->"DEPLOYMENTS"|DAEMONSETS->"DAEMONSETS"|STATEFULSETS->"STATEFULSETS"|REPLICASETS->"REPLICASETS"|REPLICATIONCONTROLLERS->"REPLICATIONCONTROLLERS"|Non_static_ids->sletof_string=function|"PODS"->PODS|"JOBS"->JOBS|"CRONJOBS"->CRONJOBS|"DEPLOYMENTS"->DEPLOYMENTS|"DAEMONSETS"->DAEMONSETS|"STATEFULSETS"->STATEFULSETS|"REPLICASETS"->REPLICASETS|"REPLICATIONCONTROLLERS"->REPLICATIONCONTROLLERS|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 KubernetesResourcesTypes"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"KubernetesResourcesTypes"j)letto_json=simple_to_jsonto_valueendmodulePublicAccessConfiguration=structtypenonrect={publicAclAccess:PublicAccessStatus.toption[@ocaml.doc"Indicates whether or not there is a setting that allows public access to the Amazon S3 buckets through access control lists (ACLs)."];publicPolicyAccess:PublicAccessStatus.toption[@ocaml.doc"Indicates whether or not there is a setting that allows public access to the Amazon S3 bucket policy."];publicAclIgnoreBehavior:PublicAclIgnoreBehavior.toption[@ocaml.doc"Indicates whether or not there is a setting that ignores all public access control lists (ACLs) on the Amazon S3 bucket and the objects that it contains."];publicBucketRestrictBehavior:PublicBucketRestrictBehavior.toption[@ocaml.doc"Indicates whether or not there is a setting that restricts access to the bucket with specified policies."]}letmake?publicAclAccess=fun?publicPolicyAccess->fun?publicAclIgnoreBehavior->fun?publicBucketRestrictBehavior->fun()->{publicAclAccess;publicPolicyAccess;publicAclIgnoreBehavior;publicBucketRestrictBehavior}letto_valuex=structure_to_value[("publicAclAccess",(Option.mapx.publicAclAccess~f:PublicAccessStatus.to_value));("publicPolicyAccess",(Option.mapx.publicPolicyAccess~f:PublicAccessStatus.to_value));("publicAclIgnoreBehavior",(Option.mapx.publicAclIgnoreBehavior~f:PublicAclIgnoreBehavior.to_value));("publicBucketRestrictBehavior",(Option.mapx.publicBucketRestrictBehavior~f:PublicBucketRestrictBehavior.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letpublicBucketRestrictBehavior=(Option.map~f:PublicBucketRestrictBehavior.of_xml)(Xml.childxml_arg0"publicBucketRestrictBehavior")inletpublicAclIgnoreBehavior=(Option.map~f:PublicAclIgnoreBehavior.of_xml)(Xml.childxml_arg0"publicAclIgnoreBehavior")inletpublicPolicyAccess=(Option.map~f:PublicAccessStatus.of_xml)(Xml.childxml_arg0"publicPolicyAccess")inletpublicAclAccess=(Option.map~f:PublicAccessStatus.of_xml)(Xml.childxml_arg0"publicAclAccess")inmake?publicBucketRestrictBehavior?publicAclIgnoreBehavior?publicPolicyAccess?publicAclAccess()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letpublicBucketRestrictBehavior=field_mapjson__"PublicBucketRestrictBehavior"PublicBucketRestrictBehavior.of_jsoninletpublicAclIgnoreBehavior=field_mapjson__"PublicAclIgnoreBehavior"PublicAclIgnoreBehavior.of_jsoninletpublicPolicyAccess=field_mapjson__"PublicPolicyAccess"PublicAccessStatus.of_jsoninletpublicAclAccess=field_mapjson__"PublicAclAccess"PublicAccessStatus.of_jsoninmake?publicBucketRestrictBehavior?publicAclIgnoreBehavior?publicPolicyAccess?publicAclAccess()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Describes public access policies that apply to the Amazon S3 bucket. For information about each of the following settings, see Blocking public access to your Amazon S3 storage in the Amazon S3 User Guide."]moduleS3ObjectUids=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:"S3ObjectUids"~of_json:String_.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleIndicatorTitle=structtypenonrect=stringletcontext_="IndicatorTitle"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:256)>>=(fun()->check_string_mini~min:1));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"IndicatorTitle"jletto_json=simple_to_jsonto_valueendmoduleIndicatorType=structtypenonrect=|SUSPICIOUS_USER_AGENT|SUSPICIOUS_NETWORK|MALICIOUS_IP|TOR_IP|ATTACK_TACTIC|HIGH_RISK_API|ATTACK_TECHNIQUE|UNUSUAL_API_FOR_ACCOUNT|UNUSUAL_ASN_FOR_ACCOUNT|UNUSUAL_ASN_FOR_USER|SUSPICIOUS_PROCESS|MALICIOUS_DOMAIN|MALICIOUS_PROCESS|CRYPTOMINING_IP|CRYPTOMINING_DOMAIN|CRYPTOMINING_PROCESS|MALICIOUS_FILE|Non_static_idofstringletmakei=iletto_string=function|SUSPICIOUS_USER_AGENT->"SUSPICIOUS_USER_AGENT"|SUSPICIOUS_NETWORK->"SUSPICIOUS_NETWORK"|MALICIOUS_IP->"MALICIOUS_IP"|TOR_IP->"TOR_IP"|ATTACK_TACTIC->"ATTACK_TACTIC"|HIGH_RISK_API->"HIGH_RISK_API"|ATTACK_TECHNIQUE->"ATTACK_TECHNIQUE"|UNUSUAL_API_FOR_ACCOUNT->"UNUSUAL_API_FOR_ACCOUNT"|UNUSUAL_ASN_FOR_ACCOUNT->"UNUSUAL_ASN_FOR_ACCOUNT"|UNUSUAL_ASN_FOR_USER->"UNUSUAL_ASN_FOR_USER"|SUSPICIOUS_PROCESS->"SUSPICIOUS_PROCESS"|MALICIOUS_DOMAIN->"MALICIOUS_DOMAIN"|MALICIOUS_PROCESS->"MALICIOUS_PROCESS"|CRYPTOMINING_IP->"CRYPTOMINING_IP"|CRYPTOMINING_DOMAIN->"CRYPTOMINING_DOMAIN"|CRYPTOMINING_PROCESS->"CRYPTOMINING_PROCESS"|MALICIOUS_FILE->"MALICIOUS_FILE"|Non_static_ids->sletof_string=function|"SUSPICIOUS_USER_AGENT"->SUSPICIOUS_USER_AGENT|"SUSPICIOUS_NETWORK"->SUSPICIOUS_NETWORK|"MALICIOUS_IP"->MALICIOUS_IP|"TOR_IP"->TOR_IP|"ATTACK_TACTIC"->ATTACK_TACTIC|"HIGH_RISK_API"->HIGH_RISK_API|"ATTACK_TECHNIQUE"->ATTACK_TECHNIQUE|"UNUSUAL_API_FOR_ACCOUNT"->UNUSUAL_API_FOR_ACCOUNT|"UNUSUAL_ASN_FOR_ACCOUNT"->UNUSUAL_ASN_FOR_ACCOUNT|"UNUSUAL_ASN_FOR_USER"->UNUSUAL_ASN_FOR_USER|"SUSPICIOUS_PROCESS"->SUSPICIOUS_PROCESS|"MALICIOUS_DOMAIN"->MALICIOUS_DOMAIN|"MALICIOUS_PROCESS"->MALICIOUS_PROCESS|"CRYPTOMINING_IP"->CRYPTOMINING_IP|"CRYPTOMINING_DOMAIN"->CRYPTOMINING_DOMAIN|"CRYPTOMINING_PROCESS"->CRYPTOMINING_PROCESS|"MALICIOUS_FILE"->MALICIOUS_FILE|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 IndicatorType"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"IndicatorType"j)letto_json=simple_to_jsonto_valueendmoduleIndicatorValues=structtypenonrect=IndicatorValueString.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:400)>>=(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:IndicatorValueString.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:IndicatorValueString.of_xml)letof_jsonj=list_of_json~kind:"IndicatorValues"~of_json:IndicatorValueString.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleScanFilePath=structtypenonrect={filePath:String_.toption[@ocaml.doc"The file path of the infected file."];volumeArn:String_.toption[@ocaml.doc"EBS volume ARN details of the infected file."];hash:String_.toption[@ocaml.doc"The hash value of the infected file."];fileName:String_.toption[@ocaml.doc"File name of the infected file."]}letmake?filePath=fun?volumeArn->fun?hash->fun?fileName->fun()->{filePath;volumeArn;hash;fileName}letto_valuex=structure_to_value[("filePath",(Option.mapx.filePath~f:String_.to_value));("volumeArn",(Option.mapx.volumeArn~f:String_.to_value));("hash",(Option.mapx.hash~f:String_.to_value));("fileName",(Option.mapx.fileName~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letfileName=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"fileName")inlethash=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"hash")inletvolumeArn=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"volumeArn")inletfilePath=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"filePath")inmake?fileName?hash?volumeArn?filePath()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letfileName=field_mapjson__"FileName"String_.of_jsoninlethash=field_mapjson__"Hash"String_.of_jsoninletvolumeArn=field_mapjson__"VolumeArn"String_.of_jsoninletfilePath=field_mapjson__"FilePath"String_.of_jsoninmake?fileName?hash?volumeArn?filePath()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains details of infected file including name, file path and hash."]moduleNonEmptyString=structtypenonrect=stringletcontext_="NonEmptyString"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:200)>>=(fun()->check_string_mini~min:1));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"NonEmptyString"jletto_json=simple_to_jsonto_valueendmoduleVolumeMount=structtypenonrect={name:String_.toption[@ocaml.doc"Volume mount name."];mountPath:String_.toption[@ocaml.doc"Volume mount path."]}letmake?name=fun?mountPath->fun()->{name;mountPath}letto_valuex=structure_to_value[("name",(Option.mapx.name~f:String_.to_value));("mountPath",(Option.mapx.mountPath~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmountPath=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"mountPath")inletname=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"name")inmake?mountPath?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmountPath=field_mapjson__"MountPath"String_.of_jsoninletname=field_mapjson__"Name"String_.of_jsoninmake?mountPath?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Container volume mount."]moduleBlockPublicAccess=structtypenonrect={ignorePublicAcls:Boolean.toption[@ocaml.doc"Indicates if S3 Block Public Access is set to IgnorePublicAcls."];restrictPublicBuckets:Boolean.toption[@ocaml.doc"Indicates if S3 Block Public Access is set to RestrictPublicBuckets."];blockPublicAcls:Boolean.toption[@ocaml.doc"Indicates if S3 Block Public Access is set to BlockPublicAcls."];blockPublicPolicy:Boolean.toption[@ocaml.doc"Indicates if S3 Block Public Access is set to BlockPublicPolicy."]}letmake?ignorePublicAcls=fun?restrictPublicBuckets->fun?blockPublicAcls->fun?blockPublicPolicy->fun()->{ignorePublicAcls;restrictPublicBuckets;blockPublicAcls;blockPublicPolicy}letto_valuex=structure_to_value[("ignorePublicAcls",(Option.mapx.ignorePublicAcls~f:Boolean.to_value));("restrictPublicBuckets",(Option.mapx.restrictPublicBuckets~f:Boolean.to_value));("blockPublicAcls",(Option.mapx.blockPublicAcls~f:Boolean.to_value));("blockPublicPolicy",(Option.mapx.blockPublicPolicy~f:Boolean.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letblockPublicPolicy=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"blockPublicPolicy")inletblockPublicAcls=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"blockPublicAcls")inletrestrictPublicBuckets=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"restrictPublicBuckets")inletignorePublicAcls=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"ignorePublicAcls")inmake?blockPublicPolicy?blockPublicAcls?restrictPublicBuckets?ignorePublicAcls()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letblockPublicPolicy=field_mapjson__"BlockPublicPolicy"Boolean.of_jsoninletblockPublicAcls=field_mapjson__"BlockPublicAcls"Boolean.of_jsoninletrestrictPublicBuckets=field_mapjson__"RestrictPublicBuckets"Boolean.of_jsoninletignorePublicAcls=field_mapjson__"IgnorePublicAcls"Boolean.of_jsoninmake?blockPublicPolicy?blockPublicAcls?restrictPublicBuckets?ignorePublicAcls()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information on how the bucker owner's S3 Block Public Access settings are being applied to the S3 bucket. See S3 Block Public Access for more information."]moduleAccessControlList=structtypenonrect={allowsPublicReadAccess:Boolean.toption[@ocaml.doc"A value that indicates whether public read access for the bucket is enabled through an Access Control List (ACL)."];allowsPublicWriteAccess:Boolean.toption[@ocaml.doc"A value that indicates whether public write access for the bucket is enabled through an Access Control List (ACL)."]}letmake?allowsPublicReadAccess=fun?allowsPublicWriteAccess->fun()->{allowsPublicReadAccess;allowsPublicWriteAccess}letto_valuex=structure_to_value[("allowsPublicReadAccess",(Option.mapx.allowsPublicReadAccess~f:Boolean.to_value));("allowsPublicWriteAccess",(Option.mapx.allowsPublicWriteAccess~f:Boolean.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letallowsPublicWriteAccess=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"allowsPublicWriteAccess")inletallowsPublicReadAccess=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"allowsPublicReadAccess")inmake?allowsPublicWriteAccess?allowsPublicReadAccess()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letallowsPublicWriteAccess=field_mapjson__"AllowsPublicWriteAccess"Boolean.of_jsoninletallowsPublicReadAccess=field_mapjson__"AllowsPublicReadAccess"Boolean.of_jsoninmake?allowsPublicWriteAccess?allowsPublicReadAccess()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information on the current access control policies for the bucket."]moduleBucketPolicy=structtypenonrect={allowsPublicReadAccess:Boolean.toption[@ocaml.doc"A value that indicates whether public read access for the bucket is enabled through a bucket policy."];allowsPublicWriteAccess:Boolean.toption[@ocaml.doc"A value that indicates whether public write access for the bucket is enabled through a bucket policy."]}letmake?allowsPublicReadAccess=fun?allowsPublicWriteAccess->fun()->{allowsPublicReadAccess;allowsPublicWriteAccess}letto_valuex=structure_to_value[("allowsPublicReadAccess",(Option.mapx.allowsPublicReadAccess~f:Boolean.to_value));("allowsPublicWriteAccess",(Option.mapx.allowsPublicWriteAccess~f:Boolean.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letallowsPublicWriteAccess=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"allowsPublicWriteAccess")inletallowsPublicReadAccess=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"allowsPublicReadAccess")inmake?allowsPublicWriteAccess?allowsPublicReadAccess()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letallowsPublicWriteAccess=field_mapjson__"AllowsPublicWriteAccess"Boolean.of_jsoninletallowsPublicReadAccess=field_mapjson__"AllowsPublicReadAccess"Boolean.of_jsoninmake?allowsPublicWriteAccess?allowsPublicReadAccess()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information on the current bucket policies for the S3 bucket."]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_valueendmoduleCity=structtypenonrect={cityName:String_.toption[@ocaml.doc"The city name of the remote IP address."]}letmake?cityName=fun()->{cityName}letto_valuex=structure_to_value[("cityName",(Option.mapx.cityName~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcityName=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"cityName")inmake?cityName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcityName=field_mapjson__"CityName"String_.of_jsoninmake?cityName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the city associated with the IP address."]moduleCountry=structtypenonrect={countryCode:String_.toption[@ocaml.doc"The country code of the remote IP address."];countryName:String_.toption[@ocaml.doc"The country name of the remote IP address."]}letmake?countryCode=fun?countryName->fun()->{countryCode;countryName}letto_valuex=structure_to_value[("countryCode",(Option.mapx.countryCode~f:String_.to_value));("countryName",(Option.mapx.countryName~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcountryName=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"countryName")inletcountryCode=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"countryCode")inmake?countryName?countryCode()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcountryName=field_mapjson__"CountryName"String_.of_jsoninletcountryCode=field_mapjson__"CountryCode"String_.of_jsoninmake?countryName?countryCode()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the country where the remote IP address is located."]moduleGeoLocation=structtypenonrect={lat:Double.toption[@ocaml.doc"The latitude information of the remote IP address."];lon:Double.toption[@ocaml.doc"The longitude information of the remote IP address."]}letmake?lat=fun?lon->fun()->{lat;lon}letto_valuex=structure_to_value[("lat",(Option.mapx.lat~f:Double.to_value));("lon",(Option.mapx.lon~f:Double.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letlon=(Option.map~f:Double.of_xml)(Xml.childxml_arg0"lon")inletlat=(Option.map~f:Double.of_xml)(Xml.childxml_arg0"lat")inmake?lon?lat()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letlon=field_mapjson__"Lon"Double.of_jsoninletlat=field_mapjson__"Lat"Double.of_jsoninmake?lon?lat()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the location of the remote IP address. By default, GuardDuty returns Geolocation with Lat and Lon as 0.0."]moduleOrganization=structtypenonrect={asn:String_.toption[@ocaml.doc"The Autonomous System Number (ASN) of the internet provider of the remote IP address."];asnOrg:String_.toption[@ocaml.doc"The organization that registered this ASN."];isp:String_.toption[@ocaml.doc"The ISP information for the internet provider."];org:String_.toption[@ocaml.doc"The name of the internet provider."]}letmake?asn=fun?asnOrg->fun?isp->fun?org->fun()->{asn;asnOrg;isp;org}letto_valuex=structure_to_value[("asn",(Option.mapx.asn~f:String_.to_value));("asnOrg",(Option.mapx.asnOrg~f:String_.to_value));("isp",(Option.mapx.isp~f:String_.to_value));("org",(Option.mapx.org~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letorg=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"org")inletisp=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"isp")inletasnOrg=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"asnOrg")inletasn=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"asn")inmake?org?isp?asnOrg?asn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letorg=field_mapjson__"Org"String_.of_jsoninletisp=field_mapjson__"Isp"String_.of_jsoninletasnOrg=field_mapjson__"AsnOrg"String_.of_jsoninletasn=field_mapjson__"Asn"String_.of_jsoninmake?org?isp?asnOrg?asn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the ISP organization of the remote IP address."]moduleAnomalyObject=structtypenonrect={profileType:ProfileType.toption[@ocaml.doc"The type of behavior of the profile."];profileSubtype:ProfileSubtype.toption[@ocaml.doc"The frequency of the anomaly."];observations:Observations.toption[@ocaml.doc"The recorded value."]}letmake?profileType=fun?profileSubtype->fun?observations->fun()->{profileType;profileSubtype;observations}letto_valuex=structure_to_value[("profileType",(Option.mapx.profileType~f:ProfileType.to_value));("profileSubtype",(Option.mapx.profileSubtype~f:ProfileSubtype.to_value));("observations",(Option.mapx.observations~f:Observations.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letobservations=(Option.map~f:Observations.of_xml)(Xml.childxml_arg0"observations")inletprofileSubtype=(Option.map~f:ProfileSubtype.of_xml)(Xml.childxml_arg0"profileSubtype")inletprofileType=(Option.map~f:ProfileType.of_xml)(Xml.childxml_arg0"profileType")inmake?observations?profileSubtype?profileType()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letobservations=field_mapjson__"Observations"Observations.of_jsoninletprofileSubtype=field_mapjson__"ProfileSubtype"ProfileSubtype.of_jsoninletprofileType=field_mapjson__"ProfileType"ProfileType.of_jsoninmake?observations?profileSubtype?profileType()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the unusual anomalies."]moduleProcessName=structtypenonrect=stringletcontext_="ProcessName"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:4096)>>=(fun()->check_string_mini~min:0));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"ProcessName"jletto_json=simple_to_jsonto_valueendmoduleProcessPath=structtypenonrect=stringletcontext_="ProcessPath"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:4096)>>=(fun()->check_string_mini~min:0));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"ProcessPath"jletto_json=simple_to_jsonto_valueendmoduleProcessSha256=structtypenonrect=stringletcontext_="ProcessSha256"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:1024)>>=(fun()->check_string_mini~min:0));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"ProcessSha256"jletto_json=simple_to_jsonto_valueendmoduleMfaStatus=structtypenonrect=|ENABLED|DISABLED|Non_static_idofstringletmakei=iletto_string=function|ENABLED->"ENABLED"|DISABLED->"DISABLED"|Non_static_ids->sletof_string=function|"ENABLED"->ENABLED|"DISABLED"->DISABLED|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 MfaStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"MfaStatus"j)letto_json=simple_to_jsonto_valueendmoduleAccount=structtypenonrect={uid:String_.toption[@ocaml.doc"The Amazon Web Services account ID within which the activity took place. This may differ from the account that owns the user identity."];name:String_.toption[@ocaml.doc"Name of the member's Amazon Web Services account."]}letmake?uid=fun?name->fun()->{uid;name}letto_valuex=structure_to_value[("uid",(Option.mapx.uid~f:String_.to_value));("account",(Option.mapx.name~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letname=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"account")inletuid=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"uid")inmake?name?uid()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letname=field_mapjson__"Name"String_.of_jsoninletuid=field_mapjson__"Uid"String_.of_jsoninmake?name?uid()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the Amazon Web Services account within which the activity took place."]moduleNetworkDirection=structtypenonrect=|INBOUND|OUTBOUND|Non_static_idofstringletmakei=iletto_string=function|INBOUND->"INBOUND"|OUTBOUND->"OUTBOUND"|Non_static_ids->sletof_string=function|"INBOUND"->INBOUND|"OUTBOUND"->OUTBOUND|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 NetworkDirection"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"NetworkDirection"j)letto_json=simple_to_jsonto_valueendmoduleAccessKey=structtypenonrect={principalId:String_.toption[@ocaml.doc"Principal ID of the user."];userName:String_.toption[@ocaml.doc"Name of the user."];userType:String_.toption[@ocaml.doc"Type of the user."]}letmake?principalId=fun?userName->fun?userType->fun()->{principalId;userName;userType}letto_valuex=structure_to_value[("principalId",(Option.mapx.principalId~f:String_.to_value));("userName",(Option.mapx.userName~f:String_.to_value));("userType",(Option.mapx.userType~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letuserType=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"userType")inletuserName=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"userName")inletprincipalId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"principalId")inmake?userType?userName?principalId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letuserType=field_mapjson__"UserType"String_.of_jsoninletuserName=field_mapjson__"UserName"String_.of_jsoninletprincipalId=field_mapjson__"PrincipalId"String_.of_jsoninmake?userType?userName?principalId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the access keys."]moduleAutoscalingAutoScalingGroup=structtypenonrect={ec2InstanceUids:Ec2InstanceUids.toption[@ocaml.doc"A list of unique identifiers for the compromised Amazon EC2 instances that are part of the same Auto Scaling Group."]}letmake?ec2InstanceUids=fun()->{ec2InstanceUids}letto_valuex=structure_to_value[("ec2InstanceUids",(Option.mapx.ec2InstanceUids~f:Ec2InstanceUids.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letec2InstanceUids=(Option.map~f:Ec2InstanceUids.of_xml)(Xml.childxml_arg0"ec2InstanceUids")inmake?ec2InstanceUids()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letec2InstanceUids=field_mapjson__"Ec2InstanceUids"Ec2InstanceUids.of_jsoninmake?ec2InstanceUids()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the Auto Scaling Group involved in a GuardDuty finding, including unique identifiers of the Amazon EC2 instances."]moduleCloudformationStack=structtypenonrect={ec2InstanceUids:Ec2InstanceUids.toption[@ocaml.doc"A list of unique identifiers for the compromised Amazon EC2 instances that were created as part of the same CloudFormation stack."]}letmake?ec2InstanceUids=fun()->{ec2InstanceUids}letto_valuex=structure_to_value[("ec2InstanceUids",(Option.mapx.ec2InstanceUids~f:Ec2InstanceUids.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letec2InstanceUids=(Option.map~f:Ec2InstanceUids.of_xml)(Xml.childxml_arg0"ec2InstanceUids")inmake?ec2InstanceUids()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letec2InstanceUids=field_mapjson__"Ec2InstanceUids"Ec2InstanceUids.of_jsoninmake?ec2InstanceUids()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the CloudFormation stack involved in a GuardDuty finding, including unique identifiers of the Amazon EC2 instances."]moduleContainerFindingResource=structtypenonrect={image:String_.toption[@ocaml.doc"The container image information, including the image name and tag used to run the container that was involved in the finding."];imageUid:ContainerImageUid.toption[@ocaml.doc"The unique ID associated with the container image."]}letmake?image=fun?imageUid->fun()->{image;imageUid}letto_valuex=structure_to_value[("image",(Option.mapx.image~f:String_.to_value));("imageUid",(Option.mapx.imageUid~f:ContainerImageUid.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letimageUid=(Option.map~f:ContainerImageUid.of_xml)(Xml.childxml_arg0"imageUid")inletimage=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"image")inmake?imageUid?image()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letimageUid=field_mapjson__"ImageUid"ContainerImageUid.of_jsoninletimage=field_mapjson__"Image"String_.of_jsoninmake?imageUid?image()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about container resources involved in a GuardDuty finding. This structure provides details about containers that were identified as part of suspicious or malicious activity."]moduleEc2Image=structtypenonrect={ec2InstanceUids:Ec2InstanceUids.toption[@ocaml.doc"A list of unique identifiers for the compromised Amazon EC2 instances that were launched with the same Amazon Machine Image (AMI)."]}letmake?ec2InstanceUids=fun()->{ec2InstanceUids}letto_valuex=structure_to_value[("ec2InstanceUids",(Option.mapx.ec2InstanceUids~f:Ec2InstanceUids.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letec2InstanceUids=(Option.map~f:Ec2InstanceUids.of_xml)(Xml.childxml_arg0"ec2InstanceUids")inmake?ec2InstanceUids()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letec2InstanceUids=field_mapjson__"Ec2InstanceUids"Ec2InstanceUids.of_jsoninmake?ec2InstanceUids()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the Amazon EC2 Image involved in a GuardDuty finding, including unique identifiers of the Amazon EC2 instances."]moduleEc2Instance=structtypenonrect={availabilityZone:String_.toption[@ocaml.doc"The availability zone of the Amazon EC2 instance. For more information, see Availability zones in the Amazon EC2 User Guide."];imageDescription:String_.toption[@ocaml.doc"The image description of the Amazon EC2 instance."];instanceState:String_.toption[@ocaml.doc"The state of the Amazon EC2 instance. For more information, see Amazon EC2 instance state changes in the Amazon EC2 User Guide."];iamInstanceProfile:IamInstanceProfile.toption;instanceType:String_.toption[@ocaml.doc"Type of the Amazon EC2 instance."];outpostArn:String_.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the Amazon Web Services Outpost. This shows applicable Amazon Web Services Outposts instances."];platform:String_.toption[@ocaml.doc"The platform of the Amazon EC2 instance."];productCodes:ProductCodes.toption[@ocaml.doc"The product code of the Amazon EC2 instance."];ec2NetworkInterfaceUids:Ec2NetworkInterfaceUids.toption[@ocaml.doc"The ID of the network interface."]}letmake?availabilityZone=fun?imageDescription->fun?instanceState->fun?iamInstanceProfile->fun?instanceType->fun?outpostArn->fun?platform->fun?productCodes->fun?ec2NetworkInterfaceUids->fun()->{availabilityZone;imageDescription;instanceState;iamInstanceProfile;instanceType;outpostArn;platform;productCodes;ec2NetworkInterfaceUids}letto_valuex=structure_to_value[("availabilityZone",(Option.mapx.availabilityZone~f:String_.to_value));("imageDescription",(Option.mapx.imageDescription~f:String_.to_value));("instanceState",(Option.mapx.instanceState~f:String_.to_value));("IamInstanceProfile",(Option.mapx.iamInstanceProfile~f:IamInstanceProfile.to_value));("instanceType",(Option.mapx.instanceType~f:String_.to_value));("outpostArn",(Option.mapx.outpostArn~f:String_.to_value));("platform",(Option.mapx.platform~f:String_.to_value));("productCodes",(Option.mapx.productCodes~f:ProductCodes.to_value));("ec2NetworkInterfaceUids",(Option.mapx.ec2NetworkInterfaceUids~f:Ec2NetworkInterfaceUids.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letec2NetworkInterfaceUids=(Option.map~f:Ec2NetworkInterfaceUids.of_xml)(Xml.childxml_arg0"ec2NetworkInterfaceUids")inletproductCodes=(Option.map~f:ProductCodes.of_xml)(Xml.childxml_arg0"productCodes")inletplatform=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"platform")inletoutpostArn=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"outpostArn")inletinstanceType=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"instanceType")inletiamInstanceProfile=(Option.map~f:IamInstanceProfile.of_xml)(Xml.childxml_arg0"IamInstanceProfile")inletinstanceState=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"instanceState")inletimageDescription=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"imageDescription")inletavailabilityZone=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"availabilityZone")inmake?ec2NetworkInterfaceUids?productCodes?platform?outpostArn?instanceType?iamInstanceProfile?instanceState?imageDescription?availabilityZone()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letec2NetworkInterfaceUids=field_mapjson__"Ec2NetworkInterfaceUids"Ec2NetworkInterfaceUids.of_jsoninletproductCodes=field_mapjson__"ProductCodes"ProductCodes.of_jsoninletplatform=field_mapjson__"Platform"String_.of_jsoninletoutpostArn=field_mapjson__"OutpostArn"String_.of_jsoninletinstanceType=field_mapjson__"InstanceType"String_.of_jsoninletiamInstanceProfile=field_mapjson__"IamInstanceProfile"IamInstanceProfile.of_jsoninletinstanceState=field_mapjson__"InstanceState"String_.of_jsoninletimageDescription=field_mapjson__"ImageDescription"String_.of_jsoninletavailabilityZone=field_mapjson__"AvailabilityZone"String_.of_jsoninmake?ec2NetworkInterfaceUids?productCodes?platform?outpostArn?instanceType?iamInstanceProfile?instanceState?imageDescription?availabilityZone()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Details about the potentially impacted Amazon EC2 instance resource."]moduleEc2LaunchTemplate=structtypenonrect={ec2InstanceUids:Ec2InstanceUids.toption[@ocaml.doc"A list of unique identifiers for the compromised Amazon EC2 instances that share the same Amazon EC2 launch template."];version:LaunchTemplateVersion.toption[@ocaml.doc"Version of the EC2 launch template."]}letmake?ec2InstanceUids=fun?version->fun()->{ec2InstanceUids;version}letto_valuex=structure_to_value[("ec2InstanceUids",(Option.mapx.ec2InstanceUids~f:Ec2InstanceUids.to_value));("version",(Option.mapx.version~f:LaunchTemplateVersion.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letversion=(Option.map~f:LaunchTemplateVersion.of_xml)(Xml.childxml_arg0"version")inletec2InstanceUids=(Option.map~f:Ec2InstanceUids.of_xml)(Xml.childxml_arg0"ec2InstanceUids")inmake?version?ec2InstanceUids()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letversion=field_mapjson__"Version"LaunchTemplateVersion.of_jsoninletec2InstanceUids=field_mapjson__"Ec2InstanceUids"Ec2InstanceUids.of_jsoninmake?version?ec2InstanceUids()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the Amazon EC2 launch template involved in a GuardDuty finding, including unique identifiers of the Amazon EC2 instances."]moduleEc2NetworkInterface=structtypenonrect={ipv6Addresses:Ipv6Addresses.toption[@ocaml.doc"A list of IPv6 addresses for the Amazon EC2 instance."];privateIpAddresses:PrivateIpAddresses.toption[@ocaml.doc"Other private IP address information of the Amazon EC2 instance."];publicIp:String_.toption[@ocaml.doc"The public IP address of the Amazon EC2 instance."];securityGroups:SecurityGroups.toption[@ocaml.doc"The security groups associated with the Amazon EC2 instance."];subNetId:String_.toption[@ocaml.doc"The subnet ID of the Amazon EC2 instance."];vpcId:String_.toption[@ocaml.doc"The VPC ID of the Amazon EC2 instance."]}letmake?ipv6Addresses=fun?privateIpAddresses->fun?publicIp->fun?securityGroups->fun?subNetId->fun?vpcId->fun()->{ipv6Addresses;privateIpAddresses;publicIp;securityGroups;subNetId;vpcId}letto_valuex=structure_to_value[("ipv6Addresses",(Option.mapx.ipv6Addresses~f:Ipv6Addresses.to_value));("privateIpAddresses",(Option.mapx.privateIpAddresses~f:PrivateIpAddresses.to_value));("publicIp",(Option.mapx.publicIp~f:String_.to_value));("securityGroups",(Option.mapx.securityGroups~f:SecurityGroups.to_value));("subNetId",(Option.mapx.subNetId~f:String_.to_value));("vpcId",(Option.mapx.vpcId~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letvpcId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"vpcId")inletsubNetId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"subNetId")inletsecurityGroups=(Option.map~f:SecurityGroups.of_xml)(Xml.childxml_arg0"securityGroups")inletpublicIp=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"publicIp")inletprivateIpAddresses=(Option.map~f:PrivateIpAddresses.of_xml)(Xml.childxml_arg0"privateIpAddresses")inletipv6Addresses=(Option.map~f:Ipv6Addresses.of_xml)(Xml.childxml_arg0"ipv6Addresses")inmake?vpcId?subNetId?securityGroups?publicIp?privateIpAddresses?ipv6Addresses()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letvpcId=field_mapjson__"VpcId"String_.of_jsoninletsubNetId=field_mapjson__"SubNetId"String_.of_jsoninletsecurityGroups=field_mapjson__"SecurityGroups"SecurityGroups.of_jsoninletpublicIp=field_mapjson__"PublicIp"String_.of_jsoninletprivateIpAddresses=field_mapjson__"PrivateIpAddresses"PrivateIpAddresses.of_jsoninletipv6Addresses=field_mapjson__"Ipv6Addresses"Ipv6Addresses.of_jsoninmake?vpcId?subNetId?securityGroups?publicIp?privateIpAddresses?ipv6Addresses()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the elastic network interface of the Amazon EC2 instance."]moduleEc2Vpc=structtypenonrect={ec2InstanceUids:Ec2InstanceUids.toption[@ocaml.doc"A list of unique identifiers for the compromised Amazon EC2 instances that were launched within the same Virtual Private Cloud (VPC)."]}letmake?ec2InstanceUids=fun()->{ec2InstanceUids}letto_valuex=structure_to_value[("ec2InstanceUids",(Option.mapx.ec2InstanceUids~f:Ec2InstanceUids.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letec2InstanceUids=(Option.map~f:Ec2InstanceUids.of_xml)(Xml.childxml_arg0"ec2InstanceUids")inmake?ec2InstanceUids()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letec2InstanceUids=field_mapjson__"Ec2InstanceUids"Ec2InstanceUids.of_jsoninmake?ec2InstanceUids()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the Amazon EC2 VPC involved in a GuardDuty finding, including unique identifiers of the Amazon EC2 instances."]moduleEcsCluster=structtypenonrect={status:EcsClusterStatus.toption[@ocaml.doc"The current status of the Amazon ECS cluster."];ec2InstanceUids:Ec2InstanceUids.toption[@ocaml.doc"A list of unique identifiers for the Amazon EC2 instances that serve as container instances in the Amazon ECS cluster."]}letmake?status=fun?ec2InstanceUids->fun()->{status;ec2InstanceUids}letto_valuex=structure_to_value[("status",(Option.mapx.status~f:EcsClusterStatus.to_value));("ec2InstanceUids",(Option.mapx.ec2InstanceUids~f:Ec2InstanceUids.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letec2InstanceUids=(Option.map~f:Ec2InstanceUids.of_xml)(Xml.childxml_arg0"ec2InstanceUids")inletstatus=(Option.map~f:EcsClusterStatus.of_xml)(Xml.childxml_arg0"status")inmake?ec2InstanceUids?status()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letec2InstanceUids=field_mapjson__"Ec2InstanceUids"Ec2InstanceUids.of_jsoninletstatus=field_mapjson__"Status"EcsClusterStatus.of_jsoninmake?ec2InstanceUids?status()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the Amazon ECS cluster involved in a GuardDuty finding, including cluster identification and status."]moduleEcsTask=structtypenonrect={createdAt:Timestamp.toption[@ocaml.doc"The timestamp indicating when the Amazon ECS task was created, in UTC format."];taskDefinitionArn:String_.toption[@ocaml.doc"The ARN of task definition which describes the container and volume definitions of the Amazon ECS task."];launchType:EcsLaunchType.toption[@ocaml.doc"The infrastructure type on which the Amazon ECS task runs."];containerUids:ContainerUids.toption[@ocaml.doc"A list of unique identifiers for the containers associated with the Amazon ECS task."]}letmake?createdAt=fun?taskDefinitionArn->fun?launchType->fun?containerUids->fun()->{createdAt;taskDefinitionArn;launchType;containerUids}letto_valuex=structure_to_value[("createdAt",(Option.mapx.createdAt~f:Timestamp.to_value));("taskDefinitionArn",(Option.mapx.taskDefinitionArn~f:String_.to_value));("launchType",(Option.mapx.launchType~f:EcsLaunchType.to_value));("containerUids",(Option.mapx.containerUids~f:ContainerUids.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcontainerUids=(Option.map~f:ContainerUids.of_xml)(Xml.childxml_arg0"containerUids")inletlaunchType=(Option.map~f:EcsLaunchType.of_xml)(Xml.childxml_arg0"launchType")inlettaskDefinitionArn=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"taskDefinitionArn")inletcreatedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"createdAt")inmake?containerUids?launchType?taskDefinitionArn?createdAt()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcontainerUids=field_mapjson__"ContainerUids"ContainerUids.of_jsoninletlaunchType=field_mapjson__"LaunchType"EcsLaunchType.of_jsoninlettaskDefinitionArn=field_mapjson__"TaskDefinitionArn"String_.of_jsoninletcreatedAt=field_mapjson__"CreatedAt"Timestamp.of_jsoninmake?containerUids?launchType?taskDefinitionArn?createdAt()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about Amazon ECS task involved in a GuardDuty finding, including task definition and container identifiers."]moduleEksCluster=structtypenonrect={arn:String_.toption[@ocaml.doc"The Amazon Resource Name (ARN) that uniquely identifies the Amazon EKS cluster involved in the finding."];createdAt:Timestamp.toption[@ocaml.doc"The timestamp indicating when the Amazon EKS cluster was created, in UTC format."];status:ClusterStatus.toption[@ocaml.doc"The current status of the Amazon EKS cluster."];vpcId:String_.toption[@ocaml.doc"The ID of the Amazon Virtual Private Cloud (Amazon VPC) associated with the Amazon EKS cluster."];ec2InstanceUids:Ec2InstanceUids.toption[@ocaml.doc"A list of unique identifiers for the Amazon EC2 instances that serve as worker nodes in the Amazon EKS cluster."]}letmake?arn=fun?createdAt->fun?status->fun?vpcId->fun?ec2InstanceUids->fun()->{arn;createdAt;status;vpcId;ec2InstanceUids}letto_valuex=structure_to_value[("arn",(Option.mapx.arn~f:String_.to_value));("createdAt",(Option.mapx.createdAt~f:Timestamp.to_value));("status",(Option.mapx.status~f:ClusterStatus.to_value));("vpcId",(Option.mapx.vpcId~f:String_.to_value));("ec2InstanceUids",(Option.mapx.ec2InstanceUids~f:Ec2InstanceUids.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letec2InstanceUids=(Option.map~f:Ec2InstanceUids.of_xml)(Xml.childxml_arg0"ec2InstanceUids")inletvpcId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"vpcId")inletstatus=(Option.map~f:ClusterStatus.of_xml)(Xml.childxml_arg0"status")inletcreatedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"createdAt")inletarn=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"arn")inmake?ec2InstanceUids?vpcId?status?createdAt?arn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letec2InstanceUids=field_mapjson__"Ec2InstanceUids"Ec2InstanceUids.of_jsoninletvpcId=field_mapjson__"VpcId"String_.of_jsoninletstatus=field_mapjson__"Status"ClusterStatus.of_jsoninletcreatedAt=field_mapjson__"CreatedAt"Timestamp.of_jsoninletarn=field_mapjson__"Arn"String_.of_jsoninmake?ec2InstanceUids?vpcId?status?createdAt?arn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the Amazon EKS cluster involved in a GuardDuty finding, including cluster identification, status, and network configuration."]moduleIamInstanceProfileV2=structtypenonrect={ec2InstanceUids:Ec2InstanceUids.toption[@ocaml.doc"A list of unique identifiers for the compromised Amazon EC2 instances that share the same IAM instance profile."]}letmake?ec2InstanceUids=fun()->{ec2InstanceUids}letto_valuex=structure_to_value[("ec2InstanceUids",(Option.mapx.ec2InstanceUids~f:Ec2InstanceUids.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letec2InstanceUids=(Option.map~f:Ec2InstanceUids.of_xml)(Xml.childxml_arg0"ec2InstanceUids")inmake?ec2InstanceUids()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letec2InstanceUids=field_mapjson__"Ec2InstanceUids"Ec2InstanceUids.of_jsoninmake?ec2InstanceUids()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the IAM instance profile involved in a GuardDuty finding, including unique identifiers of the Amazon EC2 instances."]moduleKubernetesWorkload=structtypenonrect={containerUids:ContainerUids.toption[@ocaml.doc"A list of unique identifiers for the containers that are part of the Kubernetes workload."];namespace:String_.toption[@ocaml.doc"The Kubernetes namespace in which the workload is running, providing logical isolation within the cluster."];kubernetesResourcesTypes:KubernetesResourcesTypes.toption[@ocaml.doc"The types of Kubernetes resources involved in the workload."]}letmake?containerUids=fun?namespace->fun?kubernetesResourcesTypes->fun()->{containerUids;namespace;kubernetesResourcesTypes}letto_valuex=structure_to_value[("containerUids",(Option.mapx.containerUids~f:ContainerUids.to_value));("namespace",(Option.mapx.namespace~f:String_.to_value));("type",(Option.mapx.kubernetesResourcesTypes~f:KubernetesResourcesTypes.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letkubernetesResourcesTypes=(Option.map~f:KubernetesResourcesTypes.of_xml)(Xml.childxml_arg0"type")inletnamespace=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"namespace")inletcontainerUids=(Option.map~f:ContainerUids.of_xml)(Xml.childxml_arg0"containerUids")inmake?kubernetesResourcesTypes?namespace?containerUids()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letkubernetesResourcesTypes=field_mapjson__"KubernetesResourcesTypes"KubernetesResourcesTypes.of_jsoninletnamespace=field_mapjson__"Namespace"String_.of_jsoninletcontainerUids=field_mapjson__"ContainerUids"ContainerUids.of_jsoninmake?kubernetesResourcesTypes?namespace?containerUids()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about Kubernetes workloads involved in a GuardDuty finding, including pods, deployments, and other Kubernetes resources."]moduleS3Bucket=structtypenonrect={ownerId:String_.toption[@ocaml.doc"The owner ID of the associated S3Amazon S3bucket."];createdAt:Timestamp.toption[@ocaml.doc"The timestamp at which the Amazon S3 bucket was created."];encryptionType:String_.toption[@ocaml.doc"The type of encryption used for the Amazon S3 buckets and its objects. For more information, see Protecting data with server-side encryption in the Amazon S3 User Guide."];encryptionKeyArn:String_.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the encryption key that is used to encrypt the Amazon S3 bucket and its objects."];effectivePermission:String_.toption[@ocaml.doc"Describes the effective permissions on this S3 bucket, after factoring all the attached policies."];publicReadAccess:PublicAccessStatus.toption[@ocaml.doc"Indicates whether or not the public read access is allowed for an Amazon S3 bucket."];publicWriteAccess:PublicAccessStatus.toption[@ocaml.doc"Indicates whether or not the public write access is allowed for an Amazon S3 bucket."];accountPublicAccess:PublicAccessConfiguration.toption[@ocaml.doc"Contains information about the public access policies that apply to the Amazon S3 bucket at the account level."];bucketPublicAccess:PublicAccessConfiguration.toption[@ocaml.doc"Contains information about public access policies that apply to the Amazon S3 bucket."];s3ObjectUids:S3ObjectUids.toption[@ocaml.doc"Represents a list of Amazon S3 object identifiers."]}letmake?ownerId=fun?createdAt->fun?encryptionType->fun?encryptionKeyArn->fun?effectivePermission->fun?publicReadAccess->fun?publicWriteAccess->fun?accountPublicAccess->fun?bucketPublicAccess->fun?s3ObjectUids->fun()->{ownerId;createdAt;encryptionType;encryptionKeyArn;effectivePermission;publicReadAccess;publicWriteAccess;accountPublicAccess;bucketPublicAccess;s3ObjectUids}letto_valuex=structure_to_value[("ownerId",(Option.mapx.ownerId~f:String_.to_value));("createdAt",(Option.mapx.createdAt~f:Timestamp.to_value));("encryptionType",(Option.mapx.encryptionType~f:String_.to_value));("encryptionKeyArn",(Option.mapx.encryptionKeyArn~f:String_.to_value));("effectivePermission",(Option.mapx.effectivePermission~f:String_.to_value));("publicReadAccess",(Option.mapx.publicReadAccess~f:PublicAccessStatus.to_value));("publicWriteAccess",(Option.mapx.publicWriteAccess~f:PublicAccessStatus.to_value));("accountPublicAccess",(Option.mapx.accountPublicAccess~f:PublicAccessConfiguration.to_value));("bucketPublicAccess",(Option.mapx.bucketPublicAccess~f:PublicAccessConfiguration.to_value));("s3ObjectUids",(Option.mapx.s3ObjectUids~f:S3ObjectUids.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lets3ObjectUids=(Option.map~f:S3ObjectUids.of_xml)(Xml.childxml_arg0"s3ObjectUids")inletbucketPublicAccess=(Option.map~f:PublicAccessConfiguration.of_xml)(Xml.childxml_arg0"bucketPublicAccess")inletaccountPublicAccess=(Option.map~f:PublicAccessConfiguration.of_xml)(Xml.childxml_arg0"accountPublicAccess")inletpublicWriteAccess=(Option.map~f:PublicAccessStatus.of_xml)(Xml.childxml_arg0"publicWriteAccess")inletpublicReadAccess=(Option.map~f:PublicAccessStatus.of_xml)(Xml.childxml_arg0"publicReadAccess")inleteffectivePermission=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"effectivePermission")inletencryptionKeyArn=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"encryptionKeyArn")inletencryptionType=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"encryptionType")inletcreatedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"createdAt")inletownerId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"ownerId")inmake?s3ObjectUids?bucketPublicAccess?accountPublicAccess?publicWriteAccess?publicReadAccess?effectivePermission?encryptionKeyArn?encryptionType?createdAt?ownerId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lets3ObjectUids=field_mapjson__"S3ObjectUids"S3ObjectUids.of_jsoninletbucketPublicAccess=field_mapjson__"BucketPublicAccess"PublicAccessConfiguration.of_jsoninletaccountPublicAccess=field_mapjson__"AccountPublicAccess"PublicAccessConfiguration.of_jsoninletpublicWriteAccess=field_mapjson__"PublicWriteAccess"PublicAccessStatus.of_jsoninletpublicReadAccess=field_mapjson__"PublicReadAccess"PublicAccessStatus.of_jsoninleteffectivePermission=field_mapjson__"EffectivePermission"String_.of_jsoninletencryptionKeyArn=field_mapjson__"EncryptionKeyArn"String_.of_jsoninletencryptionType=field_mapjson__"EncryptionType"String_.of_jsoninletcreatedAt=field_mapjson__"CreatedAt"Timestamp.of_jsoninletownerId=field_mapjson__"OwnerId"String_.of_jsoninmake?s3ObjectUids?bucketPublicAccess?accountPublicAccess?publicWriteAccess?publicReadAccess?effectivePermission?encryptionKeyArn?encryptionType?createdAt?ownerId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the Amazon S3 bucket policies and encryption."]moduleS3Object=structtypenonrect={eTag:String_.toption[@ocaml.doc"The entity tag is a hash of the Amazon S3 object. The ETag reflects changes only to the contents of an object, and not its metadata."];key:String_.toption[@ocaml.doc"The key of the Amazon S3 object."];versionId:String_.toption[@ocaml.doc"The version Id of the Amazon S3 object."]}letmake?eTag=fun?key->fun?versionId->fun()->{eTag;key;versionId}letto_valuex=structure_to_value[("eTag",(Option.mapx.eTag~f:String_.to_value));("key",(Option.mapx.key~f:String_.to_value));("versionId",(Option.mapx.versionId~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letversionId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"versionId")inletkey=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"key")inleteTag=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"eTag")inmake?versionId?key?eTag()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letversionId=field_mapjson__"VersionId"String_.of_jsoninletkey=field_mapjson__"Key"String_.of_jsoninleteTag=field_mapjson__"ETag"String_.of_jsoninmake?versionId?key?eTag()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the Amazon S3 object."]moduleTag=structtypenonrect={key:String_.toption[@ocaml.doc"Describes the key associated with the tag."];value:String_.toption[@ocaml.doc"Describes the value associated with the tag key."]}letmake?key=fun?value->fun()->{key;value}letto_valuex=structure_to_value[("key",(Option.mapx.key~f:String_.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:String_.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"String_.of_jsoninmake?value?key()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about a tag key-value pair."]moduleIndicator=structtypenonrect={key:IndicatorType.toption[@ocaml.doc"Specific indicator keys observed in the attack sequence. For description of the valid values for key, see Attack sequence finding details in the Amazon GuardDuty User Guide."];values:IndicatorValues.toption[@ocaml.doc"Values associated with each indicator key. For example, if the indicator key is SUSPICIOUS_NETWORK, then the value will be the name of the network. If the indicator key is ATTACK_TACTIC, then the value will be one of the MITRE tactics."];title:IndicatorTitle.toption[@ocaml.doc"Title describing the indicator."]}letmake?key=fun?values->fun?title->fun()->{key;values;title}letto_valuex=structure_to_value[("key",(Option.mapx.key~f:IndicatorType.to_value));("values",(Option.mapx.values~f:IndicatorValues.to_value));("title",(Option.mapx.title~f:IndicatorTitle.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettitle=(Option.map~f:IndicatorTitle.of_xml)(Xml.childxml_arg0"title")inletvalues=(Option.map~f:IndicatorValues.of_xml)(Xml.childxml_arg0"values")inletkey=(Option.map~f:IndicatorType.of_xml)(Xml.childxml_arg0"key")inmake?title?values?key()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettitle=field_mapjson__"Title"IndicatorTitle.of_jsoninletvalues=field_mapjson__"Values"IndicatorValues.of_jsoninletkey=field_mapjson__"Key"IndicatorType.of_jsoninmake?title?values?key()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the indicators that include a set of signals observed in an attack sequence."]moduleFilePaths=structtypenonrect=ScanFilePath.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ScanFilePath.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:ScanFilePath.of_xml)letof_jsonj=list_of_json~kind:"FilePaths"~of_json:ScanFilePath.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleAdditionalInfo=structtypenonrect={versionId:NonEmptyString.toption[@ocaml.doc"The version ID of the S3 object, if applicable."];deviceName:NonEmptyString.toption[@ocaml.doc"The device name of the EBS volume, if applicable."]}letmake?versionId=fun?deviceName->fun()->{versionId;deviceName}letto_valuex=structure_to_value[("versionId",(Option.mapx.versionId~f:NonEmptyString.to_value));("deviceName",(Option.mapx.deviceName~f:NonEmptyString.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdeviceName=(Option.map~f:NonEmptyString.of_xml)(Xml.childxml_arg0"deviceName")inletversionId=(Option.map~f:NonEmptyString.of_xml)(Xml.childxml_arg0"versionId")inmake?deviceName?versionId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdeviceName=field_mapjson__"DeviceName"NonEmptyString.of_jsoninletversionId=field_mapjson__"VersionId"NonEmptyString.of_jsoninmake?deviceName?versionId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains additional information about the detected threat."]moduleSecurityContext=structtypenonrect={privileged:Boolean.toption[@ocaml.doc"Whether the container is privileged."];allowPrivilegeEscalation:Boolean.toption[@ocaml.doc"Whether or not a container or a Kubernetes pod is allowed to gain more privileges than its parent process."]}letmake?privileged=fun?allowPrivilegeEscalation->fun()->{privileged;allowPrivilegeEscalation}letto_valuex=structure_to_value[("privileged",(Option.mapx.privileged~f:Boolean.to_value));("allowPrivilegeEscalation",(Option.mapx.allowPrivilegeEscalation~f:Boolean.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letallowPrivilegeEscalation=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"allowPrivilegeEscalation")inletprivileged=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"privileged")inmake?allowPrivilegeEscalation?privileged()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letallowPrivilegeEscalation=field_mapjson__"AllowPrivilegeEscalation"Boolean.of_jsoninletprivileged=field_mapjson__"Privileged"Boolean.of_jsoninmake?allowPrivilegeEscalation?privileged()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Container security context."]moduleVolumeMounts=structtypenonrect=VolumeMount.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:VolumeMount.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:VolumeMount.of_xml)letof_jsonj=list_of_json~kind:"VolumeMounts"~of_json:VolumeMount.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleHostPath=structtypenonrect={path:String_.toption[@ocaml.doc"Path of the file or directory on the host that the volume maps to."]}letmake?path=fun()->{path}letto_valuex=structure_to_value[("path",(Option.mapx.path~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letpath=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"path")inmake?path()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letpath=field_mapjson__"Path"String_.of_jsoninmake?path()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Represents a pre-existing file or directory on the host machine that the volume maps to."]moduleAccountLevelPermissions=structtypenonrect={blockPublicAccess:BlockPublicAccess.toption[@ocaml.doc"Describes the S3 Block Public Access settings of the bucket's parent account."]}letmake?blockPublicAccess=fun()->{blockPublicAccess}letto_valuex=structure_to_value[("blockPublicAccess",(Option.mapx.blockPublicAccess~f:BlockPublicAccess.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letblockPublicAccess=(Option.map~f:BlockPublicAccess.of_xml)(Xml.childxml_arg0"blockPublicAccess")inmake?blockPublicAccess()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letblockPublicAccess=field_mapjson__"BlockPublicAccess"BlockPublicAccess.of_jsoninmake?blockPublicAccess()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the account level permissions on the S3 bucket."]moduleBucketLevelPermissions=structtypenonrect={accessControlList:AccessControlList.toption[@ocaml.doc"Contains information on how Access Control Policies are applied to the bucket."];bucketPolicy:BucketPolicy.toption[@ocaml.doc"Contains information on the bucket policies for the S3 bucket."];blockPublicAccess:BlockPublicAccess.toption[@ocaml.doc"Contains information on which account level S3 Block Public Access settings are applied to the S3 bucket."]}letmake?accessControlList=fun?bucketPolicy->fun?blockPublicAccess->fun()->{accessControlList;bucketPolicy;blockPublicAccess}letto_valuex=structure_to_value[("accessControlList",(Option.mapx.accessControlList~f:AccessControlList.to_value));("bucketPolicy",(Option.mapx.bucketPolicy~f:BucketPolicy.to_value));("blockPublicAccess",(Option.mapx.blockPublicAccess~f:BlockPublicAccess.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letblockPublicAccess=(Option.map~f:BlockPublicAccess.of_xml)(Xml.childxml_arg0"blockPublicAccess")inletbucketPolicy=(Option.map~f:BucketPolicy.of_xml)(Xml.childxml_arg0"bucketPolicy")inletaccessControlList=(Option.map~f:AccessControlList.of_xml)(Xml.childxml_arg0"accessControlList")inmake?blockPublicAccess?bucketPolicy?accessControlList()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letblockPublicAccess=field_mapjson__"BlockPublicAccess"BlockPublicAccess.of_jsoninletbucketPolicy=field_mapjson__"BucketPolicy"BucketPolicy.of_jsoninletaccessControlList=field_mapjson__"AccessControlList"AccessControlList.of_jsoninmake?blockPublicAccess?bucketPolicy?accessControlList()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the bucket level permissions for the S3 bucket."]moduleLocalIpDetails=structtypenonrect={ipAddressV4:SensitiveString.toption[@ocaml.doc"The IPv4 local address of the connection."];ipAddressV6:SensitiveString.toption[@ocaml.doc"The IPv6 local address of the connection."]}letmake?ipAddressV4=fun?ipAddressV6->fun()->{ipAddressV4;ipAddressV6}letto_valuex=structure_to_value[("ipAddressV4",(Option.mapx.ipAddressV4~f:SensitiveString.to_value));("ipAddressV6",(Option.mapx.ipAddressV6~f:SensitiveString.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letipAddressV6=(Option.map~f:SensitiveString.of_xml)(Xml.childxml_arg0"ipAddressV6")inletipAddressV4=(Option.map~f:SensitiveString.of_xml)(Xml.childxml_arg0"ipAddressV4")inmake?ipAddressV6?ipAddressV4()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letipAddressV6=field_mapjson__"IpAddressV6"SensitiveString.of_jsoninletipAddressV4=field_mapjson__"IpAddressV4"SensitiveString.of_jsoninmake?ipAddressV6?ipAddressV4()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the local IP address of the connection."]moduleLocalPortDetails=structtypenonrect={port:Integer.toption[@ocaml.doc"The port number of the local connection."];portName:String_.toption[@ocaml.doc"The port name of the local connection."]}letmake?port=fun?portName->fun()->{port;portName}letto_valuex=structure_to_value[("port",(Option.mapx.port~f:Integer.to_value));("portName",(Option.mapx.portName~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letportName=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"portName")inletport=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"port")inmake?portName?port()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letportName=field_mapjson__"PortName"String_.of_jsoninletport=field_mapjson__"Port"Integer.of_jsoninmake?portName?port()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the port for the local connection."]moduleRemoteIpDetails=structtypenonrect={city:City.toption[@ocaml.doc"The city information of the remote IP address."];country:Country.toption[@ocaml.doc"The country code of the remote IP address."];geoLocation:GeoLocation.toption[@ocaml.doc"The location information of the remote IP address."];ipAddressV4:SensitiveString.toption[@ocaml.doc"The IPv4 remote address of the connection."];ipAddressV6:SensitiveString.toption[@ocaml.doc"The IPv6 remote address of the connection."];organization:Organization.toption[@ocaml.doc"The ISP organization information of the remote IP address."]}letmake?city=fun?country->fun?geoLocation->fun?ipAddressV4->fun?ipAddressV6->fun?organization->fun()->{city;country;geoLocation;ipAddressV4;ipAddressV6;organization}letto_valuex=structure_to_value[("city",(Option.mapx.city~f:City.to_value));("country",(Option.mapx.country~f:Country.to_value));("geoLocation",(Option.mapx.geoLocation~f:GeoLocation.to_value));("ipAddressV4",(Option.mapx.ipAddressV4~f:SensitiveString.to_value));("ipAddressV6",(Option.mapx.ipAddressV6~f:SensitiveString.to_value));("organization",(Option.mapx.organization~f:Organization.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letorganization=(Option.map~f:Organization.of_xml)(Xml.childxml_arg0"organization")inletipAddressV6=(Option.map~f:SensitiveString.of_xml)(Xml.childxml_arg0"ipAddressV6")inletipAddressV4=(Option.map~f:SensitiveString.of_xml)(Xml.childxml_arg0"ipAddressV4")inletgeoLocation=(Option.map~f:GeoLocation.of_xml)(Xml.childxml_arg0"geoLocation")inletcountry=(Option.map~f:Country.of_xml)(Xml.childxml_arg0"country")inletcity=(Option.map~f:City.of_xml)(Xml.childxml_arg0"city")inmake?organization?ipAddressV6?ipAddressV4?geoLocation?country?city()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letorganization=field_mapjson__"Organization"Organization.of_jsoninletipAddressV6=field_mapjson__"IpAddressV6"SensitiveString.of_jsoninletipAddressV4=field_mapjson__"IpAddressV4"SensitiveString.of_jsoninletgeoLocation=field_mapjson__"GeoLocation"GeoLocation.of_jsoninletcountry=field_mapjson__"Country"Country.of_jsoninletcity=field_mapjson__"City"City.of_jsoninmake?organization?ipAddressV6?ipAddressV4?geoLocation?country?city()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the remote IP address of the connection."]moduleAnomalyProfileFeatureObjects=structtypenonrect=AnomalyObject.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:AnomalyObject.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:AnomalyObject.of_xml)letof_jsonj=list_of_json~kind:"AnomalyProfileFeatureObjects"~of_json:AnomalyObject.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleAnomalyUnusualBehaviorFeature=structtypenonrect=(String_.t*AnomalyObject.t)listletmakei=iletof_headerxs=make(List.filter_mapxs~f:(fun(k,v)->(Base.String.chop_prefixk~prefix:"x-amz-meta-")|>(Option.map~f:(funchopped->let(_:string)=vinlet(_:string)=choppedinfailwith"no of_header for complex types String AnomalyObject"))))letto_valuexs=(xs|>(List.map~f:(fun(x,y)->(String_.to_valuex)|>(funx->(AnomalyObject.to_valuey)|>(funy->(x,y))))))|>(funx->`Mapx)letto_queryv=to_queryto_valuevletto_header_=failwithf"to_header is not implemented for Map_shape objects"()letof_xml_=failwith"of_xml_converter_of_shape: Map_shape case not implemented"letof_jsonj=object_of_json~key_of_string:String_.of_string~of_json:AnomalyObject.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleActorProcess=structtypenonrect={name:ProcessName.toption[@ocaml.doc"The name of the process as it appears in the system."];path:ProcessPath.toption[@ocaml.doc"The full file path to the process executable on the system."];sha256:ProcessSha256.toption[@ocaml.doc"The SHA256 hash of the process executable file, which can be used for identification and verification purposes."]}letmake?name=fun?path->fun?sha256->fun()->{name;path;sha256}letto_valuex=structure_to_value[("name",(Option.mapx.name~f:ProcessName.to_value));("path",(Option.mapx.path~f:ProcessPath.to_value));("sha256",(Option.mapx.sha256~f:ProcessSha256.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letsha256=(Option.map~f:ProcessSha256.of_xml)(Xml.childxml_arg0"sha256")inletpath=(Option.map~f:ProcessPath.of_xml)(Xml.childxml_arg0"path")inletname=(Option.map~f:ProcessName.of_xml)(Xml.childxml_arg0"name")inmake?sha256?path?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letsha256=field_mapjson__"Sha256"ProcessSha256.of_jsoninletpath=field_mapjson__"Path"ProcessPath.of_jsoninletname=field_mapjson__"Name"ProcessName.of_jsoninmake?sha256?path?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about a process involved in a GuardDuty finding, including process identification, execution details, and file information."]moduleSession=structtypenonrect={uid:String_.toption[@ocaml.doc"The unique identifier of the session."];mfaStatus:MfaStatus.toption[@ocaml.doc"Indicates whether or not multi-factor authencation (MFA) was used during authentication. In Amazon Web Services CloudTrail, you can find this value as userIdentity.sessionContext.attributes.mfaAuthenticated."];createdTime:Timestamp.toption[@ocaml.doc"The timestamp for when the session was created. In Amazon Web Services CloudTrail, you can find this value as userIdentity.sessionContext.attributes.creationDate."];issuer:String_.toption[@ocaml.doc"Identifier of the session issuer. In Amazon Web Services CloudTrail, you can find this value as userIdentity.sessionContext.sessionIssuer.arn."]}letmake?uid=fun?mfaStatus->fun?createdTime->fun?issuer->fun()->{uid;mfaStatus;createdTime;issuer}letto_valuex=structure_to_value[("uid",(Option.mapx.uid~f:String_.to_value));("mfaStatus",(Option.mapx.mfaStatus~f:MfaStatus.to_value));("createdTime",(Option.mapx.createdTime~f:Timestamp.to_value));("issuer",(Option.mapx.issuer~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letissuer=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"issuer")inletcreatedTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"createdTime")inletmfaStatus=(Option.map~f:MfaStatus.of_xml)(Xml.childxml_arg0"mfaStatus")inletuid=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"uid")inmake?issuer?createdTime?mfaStatus?uid()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letissuer=field_mapjson__"Issuer"String_.of_jsoninletcreatedTime=field_mapjson__"CreatedTime"Timestamp.of_jsoninletmfaStatus=field_mapjson__"MfaStatus"MfaStatus.of_jsoninletuid=field_mapjson__"Uid"String_.of_jsoninmake?issuer?createdTime?mfaStatus?uid()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the authenticated session."]moduleUser=structtypenonrect={name:String_.toption[@ocaml.doc"The name of the user."];uid:String_.toption[@ocaml.doc"The unique identifier of the user."];type_:String_.toption[@ocaml.doc"The type of the user."];credentialUid:String_.toption[@ocaml.doc"The credentials of the user ID."];account:Account.toption[@ocaml.doc"Contains information about the Amazon Web Services account within which the activity took place. This is not necessarily the account that owns the user identity."]}letmake?name=fun?uid->fun?type_->fun?credentialUid->fun?account->fun()->{name;uid;type_;credentialUid;account}letto_valuex=structure_to_value[("name",(Option.mapx.name~f:String_.to_value));("uid",(Option.mapx.uid~f:String_.to_value));("type",(Option.mapx.type_~f:String_.to_value));("credentialUid",(Option.mapx.credentialUid~f:String_.to_value));("account",(Option.mapx.account~f:Account.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccount=(Option.map~f:Account.of_xml)(Xml.childxml_arg0"account")inletcredentialUid=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"credentialUid")inlettype_=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"type")inletuid=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"uid")inletname=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"name")inmake?account?credentialUid?type_?uid?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccount=field_mapjson__"Account"Account.of_jsoninletcredentialUid=field_mapjson__"CredentialUid"String_.of_jsoninlettype_=field_mapjson__"Type"String_.of_jsoninletuid=field_mapjson__"Uid"String_.of_jsoninletname=field_mapjson__"Name"String_.of_jsoninmake?account?credentialUid?type_?uid?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the user involved in the attack sequence."]moduleAutonomousSystem=structtypenonrect={name:String_.toption[@ocaml.doc"Name associated with the Autonomous System (AS)."];number:Integer.toption[@ocaml.doc"The unique number that identifies the Autonomous System (AS)."]}letmake?name=fun?number->fun()->{name;number}letto_valuex=structure_to_value[("name",(Option.mapx.name~f:String_.to_value));("number",(Option.mapx.number~f:Integer.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnumber=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"number")inletname=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"name")inmake?number?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnumber=field_mapjson__"Number"Integer.of_jsoninletname=field_mapjson__"Name"String_.of_jsoninmake?number?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the Autonomous System (AS) associated with the network endpoints involved in an attack sequence."]moduleNetworkConnection=structtypenonrect={direction:NetworkDirection.toption[@ocaml.doc"The direction in which the network traffic is flowing."]}letmake?direction=fun()->{direction}letto_valuex=structure_to_value[("direction",(Option.mapx.direction~f:NetworkDirection.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdirection=(Option.map~f:NetworkDirection.of_xml)(Xml.childxml_arg0"direction")inmake?direction()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdirection=field_mapjson__"Direction"NetworkDirection.of_jsoninmake?direction()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the network connection."]moduleNetworkGeoLocation=structtypenonrect={city:String_.toption[@ocaml.doc"The name of the city."];country:String_.toption[@ocaml.doc"The name of the country."];latitude:Double.toption[@ocaml.doc"The latitude information of the endpoint location."];longitude:Double.toption[@ocaml.doc"The longitude information of the endpoint location."]}letmake?city=fun?country->fun?latitude->fun?longitude->fun()->{city;country;latitude;longitude}letto_valuex=structure_to_value[("city",(Option.mapx.city~f:String_.to_value));("country",(Option.mapx.country~f:String_.to_value));("lat",(Option.mapx.latitude~f:Double.to_value));("lon",(Option.mapx.longitude~f:Double.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letlongitude=(Option.map~f:Double.of_xml)(Xml.childxml_arg0"lon")inletlatitude=(Option.map~f:Double.of_xml)(Xml.childxml_arg0"lat")inletcountry=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"country")inletcity=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"city")inmake?longitude?latitude?country?city()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letlongitude=field_mapjson__"Longitude"Double.of_jsoninletlatitude=field_mapjson__"Latitude"Double.of_jsoninletcountry=field_mapjson__"Country"String_.of_jsoninletcity=field_mapjson__"City"String_.of_jsoninmake?longitude?latitude?country?city()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about network endpoint location."]moduleFindingResourceType=structtypenonrect=|EC2_INSTANCE|EC2_NETWORK_INTERFACE|S3_BUCKET|S3_OBJECT|ACCESS_KEY|EKS_CLUSTER|KUBERNETES_WORKLOAD|CONTAINER|ECS_CLUSTER|ECS_TASK|AUTOSCALING_AUTO_SCALING_GROUP|IAM_INSTANCE_PROFILE|CLOUDFORMATION_STACK|EC2_LAUNCH_TEMPLATE|EC2_VPC|EC2_IMAGE|Non_static_idofstringletmakei=iletto_string=function|EC2_INSTANCE->"EC2_INSTANCE"|EC2_NETWORK_INTERFACE->"EC2_NETWORK_INTERFACE"|S3_BUCKET->"S3_BUCKET"|S3_OBJECT->"S3_OBJECT"|ACCESS_KEY->"ACCESS_KEY"|EKS_CLUSTER->"EKS_CLUSTER"|KUBERNETES_WORKLOAD->"KUBERNETES_WORKLOAD"|CONTAINER->"CONTAINER"|ECS_CLUSTER->"ECS_CLUSTER"|ECS_TASK->"ECS_TASK"|AUTOSCALING_AUTO_SCALING_GROUP->"AUTOSCALING_AUTO_SCALING_GROUP"|IAM_INSTANCE_PROFILE->"IAM_INSTANCE_PROFILE"|CLOUDFORMATION_STACK->"CLOUDFORMATION_STACK"|EC2_LAUNCH_TEMPLATE->"EC2_LAUNCH_TEMPLATE"|EC2_VPC->"EC2_VPC"|EC2_IMAGE->"EC2_IMAGE"|Non_static_ids->sletof_string=function|"EC2_INSTANCE"->EC2_INSTANCE|"EC2_NETWORK_INTERFACE"->EC2_NETWORK_INTERFACE|"S3_BUCKET"->S3_BUCKET|"S3_OBJECT"->S3_OBJECT|"ACCESS_KEY"->ACCESS_KEY|"EKS_CLUSTER"->EKS_CLUSTER|"KUBERNETES_WORKLOAD"->KUBERNETES_WORKLOAD|"CONTAINER"->CONTAINER|"ECS_CLUSTER"->ECS_CLUSTER|"ECS_TASK"->ECS_TASK|"AUTOSCALING_AUTO_SCALING_GROUP"->AUTOSCALING_AUTO_SCALING_GROUP|"IAM_INSTANCE_PROFILE"->IAM_INSTANCE_PROFILE|"CLOUDFORMATION_STACK"->CLOUDFORMATION_STACK|"EC2_LAUNCH_TEMPLATE"->EC2_LAUNCH_TEMPLATE|"EC2_VPC"->EC2_VPC|"EC2_IMAGE"->EC2_IMAGE|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 FindingResourceType"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"FindingResourceType"j)letto_json=simple_to_jsonto_valueendmoduleResourceData=structtypenonrect={s3Bucket:S3Bucket.toption[@ocaml.doc"Contains information about the Amazon S3 bucket."];ec2Instance:Ec2Instance.toption[@ocaml.doc"Contains information about the Amazon EC2 instance."];accessKey:AccessKey.toption[@ocaml.doc"Contains information about the IAM access key details of a user that involved in the GuardDuty finding."];ec2NetworkInterface:Ec2NetworkInterface.toption[@ocaml.doc"Contains information about the elastic network interface of the Amazon EC2 instance."];s3Object:S3Object.toption[@ocaml.doc"Contains information about the Amazon S3 object."];eksCluster:EksCluster.toption[@ocaml.doc"Contains detailed information about the Amazon EKS cluster associated with the activity that prompted GuardDuty to generate a finding."];kubernetesWorkload:KubernetesWorkload.toption[@ocaml.doc"Contains detailed information about the Kubernetes workload associated with the activity that prompted GuardDuty to generate a finding."];container:ContainerFindingResource.toption[@ocaml.doc"Contains detailed information about the container associated with the activity that prompted GuardDuty to generate a finding."];ecsCluster:EcsCluster.toption[@ocaml.doc"Contains detailed information about the Amazon ECS cluster associated with the activity that prompted GuardDuty to generate a finding."];ecsTask:EcsTask.toption[@ocaml.doc"Contains detailed information about the Amazon ECS task associated with the activity that prompted GuardDuty to generate a finding."];iamInstanceProfile:IamInstanceProfileV2.toption[@ocaml.doc"Contains detailed information about the IAM instance profile associated with the activity that prompted GuardDuty to generate a finding."];autoscalingAutoScalingGroup:AutoscalingAutoScalingGroup.toption[@ocaml.doc"Contains detailed information about the Auto Scaling Group associated with the activity that prompted GuardDuty to generate a finding."];ec2LaunchTemplate:Ec2LaunchTemplate.toption[@ocaml.doc"Contains detailed information about the EC2 launch template associated with the activity that prompted GuardDuty to generate a finding."];ec2Vpc:Ec2Vpc.toption[@ocaml.doc"Contains detailed information about the EC2 VPC associated with the activity that prompted GuardDuty to generate a finding."];ec2Image:Ec2Image.toption[@ocaml.doc"Contains detailed information about the EC2 Image associated with the activity that prompted GuardDuty to generate a finding."];cloudformationStack:CloudformationStack.toption[@ocaml.doc"Contains detailed information about the CloudFormation stack associated with the activity that prompted GuardDuty to generate a finding."]}letmake?s3Bucket=fun?ec2Instance->fun?accessKey->fun?ec2NetworkInterface->fun?s3Object->fun?eksCluster->fun?kubernetesWorkload->fun?container->fun?ecsCluster->fun?ecsTask->fun?iamInstanceProfile->fun?autoscalingAutoScalingGroup->fun?ec2LaunchTemplate->fun?ec2Vpc->fun?ec2Image->fun?cloudformationStack->fun()->{s3Bucket;ec2Instance;accessKey;ec2NetworkInterface;s3Object;eksCluster;kubernetesWorkload;container;ecsCluster;ecsTask;iamInstanceProfile;autoscalingAutoScalingGroup;ec2LaunchTemplate;ec2Vpc;ec2Image;cloudformationStack}letto_valuex=structure_to_value[("s3Bucket",(Option.mapx.s3Bucket~f:S3Bucket.to_value));("ec2Instance",(Option.mapx.ec2Instance~f:Ec2Instance.to_value));("accessKey",(Option.mapx.accessKey~f:AccessKey.to_value));("ec2NetworkInterface",(Option.mapx.ec2NetworkInterface~f:Ec2NetworkInterface.to_value));("s3Object",(Option.mapx.s3Object~f:S3Object.to_value));("eksCluster",(Option.mapx.eksCluster~f:EksCluster.to_value));("kubernetesWorkload",(Option.mapx.kubernetesWorkload~f:KubernetesWorkload.to_value));("container",(Option.mapx.container~f:ContainerFindingResource.to_value));("ecsCluster",(Option.mapx.ecsCluster~f:EcsCluster.to_value));("ecsTask",(Option.mapx.ecsTask~f:EcsTask.to_value));("iamInstanceProfile",(Option.mapx.iamInstanceProfile~f:IamInstanceProfileV2.to_value));("autoscalingAutoScalingGroup",(Option.mapx.autoscalingAutoScalingGroup~f:AutoscalingAutoScalingGroup.to_value));("ec2LaunchTemplate",(Option.mapx.ec2LaunchTemplate~f:Ec2LaunchTemplate.to_value));("ec2Vpc",(Option.mapx.ec2Vpc~f:Ec2Vpc.to_value));("ec2Image",(Option.mapx.ec2Image~f:Ec2Image.to_value));("cloudformationStack",(Option.mapx.cloudformationStack~f:CloudformationStack.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcloudformationStack=(Option.map~f:CloudformationStack.of_xml)(Xml.childxml_arg0"cloudformationStack")inletec2Image=(Option.map~f:Ec2Image.of_xml)(Xml.childxml_arg0"ec2Image")inletec2Vpc=(Option.map~f:Ec2Vpc.of_xml)(Xml.childxml_arg0"ec2Vpc")inletec2LaunchTemplate=(Option.map~f:Ec2LaunchTemplate.of_xml)(Xml.childxml_arg0"ec2LaunchTemplate")inletautoscalingAutoScalingGroup=(Option.map~f:AutoscalingAutoScalingGroup.of_xml)(Xml.childxml_arg0"autoscalingAutoScalingGroup")inletiamInstanceProfile=(Option.map~f:IamInstanceProfileV2.of_xml)(Xml.childxml_arg0"iamInstanceProfile")inletecsTask=(Option.map~f:EcsTask.of_xml)(Xml.childxml_arg0"ecsTask")inletecsCluster=(Option.map~f:EcsCluster.of_xml)(Xml.childxml_arg0"ecsCluster")inletcontainer=(Option.map~f:ContainerFindingResource.of_xml)(Xml.childxml_arg0"container")inletkubernetesWorkload=(Option.map~f:KubernetesWorkload.of_xml)(Xml.childxml_arg0"kubernetesWorkload")inleteksCluster=(Option.map~f:EksCluster.of_xml)(Xml.childxml_arg0"eksCluster")inlets3Object=(Option.map~f:S3Object.of_xml)(Xml.childxml_arg0"s3Object")inletec2NetworkInterface=(Option.map~f:Ec2NetworkInterface.of_xml)(Xml.childxml_arg0"ec2NetworkInterface")inletaccessKey=(Option.map~f:AccessKey.of_xml)(Xml.childxml_arg0"accessKey")inletec2Instance=(Option.map~f:Ec2Instance.of_xml)(Xml.childxml_arg0"ec2Instance")inlets3Bucket=(Option.map~f:S3Bucket.of_xml)(Xml.childxml_arg0"s3Bucket")inmake?cloudformationStack?ec2Image?ec2Vpc?ec2LaunchTemplate?autoscalingAutoScalingGroup?iamInstanceProfile?ecsTask?ecsCluster?container?kubernetesWorkload?eksCluster?s3Object?ec2NetworkInterface?accessKey?ec2Instance?s3Bucket()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcloudformationStack=field_mapjson__"CloudformationStack"CloudformationStack.of_jsoninletec2Image=field_mapjson__"Ec2Image"Ec2Image.of_jsoninletec2Vpc=field_mapjson__"Ec2Vpc"Ec2Vpc.of_jsoninletec2LaunchTemplate=field_mapjson__"Ec2LaunchTemplate"Ec2LaunchTemplate.of_jsoninletautoscalingAutoScalingGroup=field_mapjson__"AutoscalingAutoScalingGroup"AutoscalingAutoScalingGroup.of_jsoninletiamInstanceProfile=field_mapjson__"IamInstanceProfile"IamInstanceProfileV2.of_jsoninletecsTask=field_mapjson__"EcsTask"EcsTask.of_jsoninletecsCluster=field_mapjson__"EcsCluster"EcsCluster.of_jsoninletcontainer=field_mapjson__"Container"ContainerFindingResource.of_jsoninletkubernetesWorkload=field_mapjson__"KubernetesWorkload"KubernetesWorkload.of_jsoninleteksCluster=field_mapjson__"EksCluster"EksCluster.of_jsoninlets3Object=field_mapjson__"S3Object"S3Object.of_jsoninletec2NetworkInterface=field_mapjson__"Ec2NetworkInterface"Ec2NetworkInterface.of_jsoninletaccessKey=field_mapjson__"AccessKey"AccessKey.of_jsoninletec2Instance=field_mapjson__"Ec2Instance"Ec2Instance.of_jsoninlets3Bucket=field_mapjson__"S3Bucket"S3Bucket.of_jsoninmake?cloudformationStack?ec2Image?ec2Vpc?ec2LaunchTemplate?autoscalingAutoScalingGroup?iamInstanceProfile?ecsTask?ecsCluster?container?kubernetesWorkload?eksCluster?s3Object?ec2NetworkInterface?accessKey?ec2Instance?s3Bucket()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the Amazon Web Services resource that is associated with the activity that prompted GuardDuty to generate a finding."]moduleTags=structtypenonrect=Tag.tlistletmakei=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:"Tags"~of_json:Tag.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleActorIds=structtypenonrect=String_.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:400)>>=(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: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:"ActorIds"~of_json:String_.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleEndpointIds=structtypenonrect=String_.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:400)>>=(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: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:"EndpointIds"~of_json:String_.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleIndicators=structtypenonrect=Indicator.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:400)>>=(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:Indicator.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:Indicator.of_xml)letof_jsonj=list_of_json~kind:"Indicators"~of_json:Indicator.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleResourceUids=structtypenonrect=String_.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:400)>>=(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: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:"ResourceUids"~of_json:String_.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleSignalDescription=structtypenonrect=stringletcontext_="SignalDescription"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:2000)>>=(fun()->check_string_mini~min:0));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"SignalDescription"jletto_json=simple_to_jsonto_valueendmoduleSignalType=structtypenonrect=|FINDING|CLOUD_TRAIL|S3_DATA_EVENTS|EKS_AUDIT_LOGS|FLOW_LOGS|DNS_LOGS|RUNTIME_MONITORING|Non_static_idofstringletmakei=iletto_string=function|FINDING->"FINDING"|CLOUD_TRAIL->"CLOUD_TRAIL"|S3_DATA_EVENTS->"S3_DATA_EVENTS"|EKS_AUDIT_LOGS->"EKS_AUDIT_LOGS"|FLOW_LOGS->"FLOW_LOGS"|DNS_LOGS->"DNS_LOGS"|RUNTIME_MONITORING->"RUNTIME_MONITORING"|Non_static_ids->sletof_string=function|"FINDING"->FINDING|"CLOUD_TRAIL"->CLOUD_TRAIL|"S3_DATA_EVENTS"->S3_DATA_EVENTS|"EKS_AUDIT_LOGS"->EKS_AUDIT_LOGS|"FLOW_LOGS"->FLOW_LOGS|"DNS_LOGS"->DNS_LOGS|"RUNTIME_MONITORING"->RUNTIME_MONITORING|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 SignalType"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"SignalType"j)letto_json=simple_to_jsonto_valueendmoduleScanThreatName=structtypenonrect={name:String_.toption[@ocaml.doc"The name of the identified threat."];severity:String_.toption[@ocaml.doc"Severity of threat identified as part of the malware scan."];itemCount:Integer.toption[@ocaml.doc"Total number of files infected with given threat."];filePaths:FilePaths.toption[@ocaml.doc"List of infected files in EBS volume with details."]}letmake?name=fun?severity->fun?itemCount->fun?filePaths->fun()->{name;severity;itemCount;filePaths}letto_valuex=structure_to_value[("name",(Option.mapx.name~f:String_.to_value));("severity",(Option.mapx.severity~f:String_.to_value));("itemCount",(Option.mapx.itemCount~f:Integer.to_value));("filePaths",(Option.mapx.filePaths~f:FilePaths.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letfilePaths=(Option.map~f:FilePaths.of_xml)(Xml.childxml_arg0"filePaths")inletitemCount=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"itemCount")inletseverity=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"severity")inletname=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"name")inmake?filePaths?itemCount?severity?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letfilePaths=field_mapjson__"FilePaths"FilePaths.of_jsoninletitemCount=field_mapjson__"ItemCount"Integer.of_jsoninletseverity=field_mapjson__"Severity"String_.of_jsoninletname=field_mapjson__"Name"String_.of_jsoninmake?filePaths?itemCount?severity?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains files infected with the given threat providing details of malware name and severity."]moduleItemDetails=structtypenonrect={resourceArn:NonEmptyString.toption[@ocaml.doc"Amazon Resource Name (ARN) of the resource where the threat was detected."];itemPath:NonEmptyString.toption[@ocaml.doc"The path where the threat was detected."];hash:String_.toption[@ocaml.doc"The hash value of the infected item."];additionalInfo:AdditionalInfo.toption[@ocaml.doc"Additional information about the detected threat item."]}letmake?resourceArn=fun?itemPath->fun?hash->fun?additionalInfo->fun()->{resourceArn;itemPath;hash;additionalInfo}letto_valuex=structure_to_value[("resourceArn",(Option.mapx.resourceArn~f:NonEmptyString.to_value));("itemPath",(Option.mapx.itemPath~f:NonEmptyString.to_value));("hash",(Option.mapx.hash~f:String_.to_value));("additionalInfo",(Option.mapx.additionalInfo~f:AdditionalInfo.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letadditionalInfo=(Option.map~f:AdditionalInfo.of_xml)(Xml.childxml_arg0"additionalInfo")inlethash=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"hash")inletitemPath=(Option.map~f:NonEmptyString.of_xml)(Xml.childxml_arg0"itemPath")inletresourceArn=(Option.map~f:NonEmptyString.of_xml)(Xml.childxml_arg0"resourceArn")inmake?additionalInfo?hash?itemPath?resourceArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letadditionalInfo=field_mapjson__"AdditionalInfo"AdditionalInfo.of_jsoninlethash=field_mapjson__"Hash"String_.of_jsoninletitemPath=field_mapjson__"ItemPath"NonEmptyString.of_jsoninletresourceArn=field_mapjson__"ResourceArn"NonEmptyString.of_jsoninmake?additionalInfo?hash?itemPath?resourceArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains detailed information about where a threat was detected."]moduleItemPath=structtypenonrect={nestedItemPath:String_.toption[@ocaml.doc"The nested item path where the infected file was found."];hash:String_.toption[@ocaml.doc"The hash value of the infected resource."]}letmake?nestedItemPath=fun?hash->fun()->{nestedItemPath;hash}letto_valuex=structure_to_value[("nestedItemPath",(Option.mapx.nestedItemPath~f:String_.to_value));("hash",(Option.mapx.hash~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lethash=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"hash")inletnestedItemPath=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nestedItemPath")inmake?hash?nestedItemPath()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lethash=field_mapjson__"Hash"String_.of_jsoninletnestedItemPath=field_mapjson__"NestedItemPath"String_.of_jsoninmake?hash?nestedItemPath()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the nested item path and hash of the protected resource."]moduleLineageObject=structtypenonrect={startTime:Timestamp.toption[@ocaml.doc"The time when the process started. This is in UTC format."];namespacePid:Integer.toption[@ocaml.doc"The process ID of the child process."];userId:Integer.toption[@ocaml.doc"The user ID of the user that executed the process."];name:String_.toption[@ocaml.doc"The name of the process."];pid:Integer.toption[@ocaml.doc"The ID of the process."];uuid:String_.toption[@ocaml.doc"The unique ID assigned to the process by GuardDuty."];executablePath:String_.toption[@ocaml.doc"The absolute path of the process executable file."];euid:Integer.toption[@ocaml.doc"The effective user ID that was used to execute the process."];parentUuid:String_.toption[@ocaml.doc"The unique ID of the parent process. This ID is assigned to the parent process by GuardDuty."]}letmake?startTime=fun?namespacePid->fun?userId->fun?name->fun?pid->fun?uuid->fun?executablePath->fun?euid->fun?parentUuid->fun()->{startTime;namespacePid;userId;name;pid;uuid;executablePath;euid;parentUuid}letto_valuex=structure_to_value[("startTime",(Option.mapx.startTime~f:Timestamp.to_value));("namespacePid",(Option.mapx.namespacePid~f:Integer.to_value));("userId",(Option.mapx.userId~f:Integer.to_value));("name",(Option.mapx.name~f:String_.to_value));("pid",(Option.mapx.pid~f:Integer.to_value));("uuid",(Option.mapx.uuid~f:String_.to_value));("executablePath",(Option.mapx.executablePath~f:String_.to_value));("euid",(Option.mapx.euid~f:Integer.to_value));("parentUuid",(Option.mapx.parentUuid~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letparentUuid=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"parentUuid")inleteuid=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"euid")inletexecutablePath=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"executablePath")inletuuid=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"uuid")inletpid=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"pid")inletname=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"name")inletuserId=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"userId")inletnamespacePid=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"namespacePid")inletstartTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"startTime")inmake?parentUuid?euid?executablePath?uuid?pid?name?userId?namespacePid?startTime()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letparentUuid=field_mapjson__"ParentUuid"String_.of_jsoninleteuid=field_mapjson__"Euid"Integer.of_jsoninletexecutablePath=field_mapjson__"ExecutablePath"String_.of_jsoninletuuid=field_mapjson__"Uuid"String_.of_jsoninletpid=field_mapjson__"Pid"Integer.of_jsoninletname=field_mapjson__"Name"String_.of_jsoninletuserId=field_mapjson__"UserId"Integer.of_jsoninletnamespacePid=field_mapjson__"NamespacePid"Integer.of_jsoninletstartTime=field_mapjson__"StartTime"Timestamp.of_jsoninmake?parentUuid?euid?executablePath?uuid?pid?name?userId?namespacePid?startTime()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the runtime process details."]moduleOrgFeatureAdditionalConfiguration=structtypenonrect=|EKS_ADDON_MANAGEMENT|ECS_FARGATE_AGENT_MANAGEMENT|EC2_AGENT_MANAGEMENT|Non_static_idofstringletmakei=iletto_string=function|EKS_ADDON_MANAGEMENT->"EKS_ADDON_MANAGEMENT"|ECS_FARGATE_AGENT_MANAGEMENT->"ECS_FARGATE_AGENT_MANAGEMENT"|EC2_AGENT_MANAGEMENT->"EC2_AGENT_MANAGEMENT"|Non_static_ids->sletof_string=function|"EKS_ADDON_MANAGEMENT"->EKS_ADDON_MANAGEMENT|"ECS_FARGATE_AGENT_MANAGEMENT"->ECS_FARGATE_AGENT_MANAGEMENT|"EC2_AGENT_MANAGEMENT"->EC2_AGENT_MANAGEMENT|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 OrgFeatureAdditionalConfiguration"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"OrgFeatureAdditionalConfiguration"j)letto_json=simple_to_jsonto_valueendmoduleDataSourceStatus=structtypenonrect=|ENABLED|DISABLED|Non_static_idofstringletmakei=iletto_string=function|ENABLED->"ENABLED"|DISABLED->"DISABLED"|Non_static_ids->sletof_string=function|"ENABLED"->ENABLED|"DISABLED"->DISABLED|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 DataSourceStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"DataSourceStatus"j)letto_json=simple_to_jsonto_valueendmoduleFeatureStatus=structtypenonrect=|ENABLED|DISABLED|Non_static_idofstringletmakei=iletto_string=function|ENABLED->"ENABLED"|DISABLED->"DISABLED"|Non_static_ids->sletof_string=function|"ENABLED"->ENABLED|"DISABLED"->DISABLED|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 FeatureStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"FeatureStatus"j)letto_json=simple_to_jsonto_valueendmoduleContainer=structtypenonrect={containerRuntime:String_.toption[@ocaml.doc"The container runtime (such as, Docker or containerd) used to run the container."];id:String_.toption[@ocaml.doc"Container ID."];name:String_.toption[@ocaml.doc"Container name."];image:String_.toption[@ocaml.doc"Container image."];imagePrefix:String_.toption[@ocaml.doc"Part of the image name before the last slash. For example, imagePrefix for public.ecr.aws/amazonlinux/amazonlinux:latest would be public.ecr.aws/amazonlinux. If the image name is relative and does not have a slash, this field is empty."];volumeMounts:VolumeMounts.toption[@ocaml.doc"Container volume mounts."];securityContext:SecurityContext.toption[@ocaml.doc"Container security context."]}letmake?containerRuntime=fun?id->fun?name->fun?image->fun?imagePrefix->fun?volumeMounts->fun?securityContext->fun()->{containerRuntime;id;name;image;imagePrefix;volumeMounts;securityContext}letto_valuex=structure_to_value[("containerRuntime",(Option.mapx.containerRuntime~f:String_.to_value));("id",(Option.mapx.id~f:String_.to_value));("name",(Option.mapx.name~f:String_.to_value));("image",(Option.mapx.image~f:String_.to_value));("imagePrefix",(Option.mapx.imagePrefix~f:String_.to_value));("volumeMounts",(Option.mapx.volumeMounts~f:VolumeMounts.to_value));("securityContext",(Option.mapx.securityContext~f:SecurityContext.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letsecurityContext=(Option.map~f:SecurityContext.of_xml)(Xml.childxml_arg0"securityContext")inletvolumeMounts=(Option.map~f:VolumeMounts.of_xml)(Xml.childxml_arg0"volumeMounts")inletimagePrefix=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"imagePrefix")inletimage=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"image")inletname=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"name")inletid=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"id")inletcontainerRuntime=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"containerRuntime")inmake?securityContext?volumeMounts?imagePrefix?image?name?id?containerRuntime()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letsecurityContext=field_mapjson__"SecurityContext"SecurityContext.of_jsoninletvolumeMounts=field_mapjson__"VolumeMounts"VolumeMounts.of_jsoninletimagePrefix=field_mapjson__"ImagePrefix"String_.of_jsoninletimage=field_mapjson__"Image"String_.of_jsoninletname=field_mapjson__"Name"String_.of_jsoninletid=field_mapjson__"Id"String_.of_jsoninletcontainerRuntime=field_mapjson__"ContainerRuntime"String_.of_jsoninmake?securityContext?volumeMounts?imagePrefix?image?name?id?containerRuntime()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Details of a container."]moduleVolume=structtypenonrect={name:String_.toption[@ocaml.doc"Volume name."];hostPath:HostPath.toption[@ocaml.doc"Represents a pre-existing file or directory on the host machine that the volume maps to."]}letmake?name=fun?hostPath->fun()->{name;hostPath}letto_valuex=structure_to_value[("name",(Option.mapx.name~f:String_.to_value));("hostPath",(Option.mapx.hostPath~f:HostPath.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lethostPath=(Option.map~f:HostPath.of_xml)(Xml.childxml_arg0"hostPath")inletname=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"name")inmake?hostPath?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lethostPath=field_mapjson__"HostPath"HostPath.of_jsoninletname=field_mapjson__"Name"String_.of_jsoninmake?hostPath?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Volume used by the Kubernetes workload."]moduleGroups=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:"Groups"~of_json:String_.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmodulePermissionConfiguration=structtypenonrect={bucketLevelPermissions:BucketLevelPermissions.toption[@ocaml.doc"Contains information about the bucket level permissions for the S3 bucket."];accountLevelPermissions:AccountLevelPermissions.toption[@ocaml.doc"Contains information about the account level permissions on the S3 bucket."]}letmake?bucketLevelPermissions=fun?accountLevelPermissions->fun()->{bucketLevelPermissions;accountLevelPermissions}letto_valuex=structure_to_value[("bucketLevelPermissions",(Option.mapx.bucketLevelPermissions~f:BucketLevelPermissions.to_value));("accountLevelPermissions",(Option.mapx.accountLevelPermissions~f:AccountLevelPermissions.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccountLevelPermissions=(Option.map~f:AccountLevelPermissions.of_xml)(Xml.childxml_arg0"accountLevelPermissions")inletbucketLevelPermissions=(Option.map~f:BucketLevelPermissions.of_xml)(Xml.childxml_arg0"bucketLevelPermissions")inmake?accountLevelPermissions?bucketLevelPermissions()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccountLevelPermissions=field_mapjson__"AccountLevelPermissions"AccountLevelPermissions.of_jsoninletbucketLevelPermissions=field_mapjson__"BucketLevelPermissions"BucketLevelPermissions.of_jsoninmake?accountLevelPermissions?bucketLevelPermissions()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about how permissions are configured for the S3 bucket."]moduleS3ObjectDetail=structtypenonrect={objectArn:String_.toption[@ocaml.doc"Amazon Resource Name (ARN) of the S3 object."];key:String_.toption[@ocaml.doc"Key of the S3 object."];eTag:String_.toption[@ocaml.doc"The entity tag is a hash of the S3 object. The ETag reflects changes only to the contents of an object, and not its metadata."];hash:String_.toption[@ocaml.doc"Hash of the threat detected in this finding."];versionId:String_.toption[@ocaml.doc"Version ID of the object."]}letmake?objectArn=fun?key->fun?eTag->fun?hash->fun?versionId->fun()->{objectArn;key;eTag;hash;versionId}letto_valuex=structure_to_value[("objectArn",(Option.mapx.objectArn~f:String_.to_value));("key",(Option.mapx.key~f:String_.to_value));("eTag",(Option.mapx.eTag~f:String_.to_value));("hash",(Option.mapx.hash~f:String_.to_value));("versionId",(Option.mapx.versionId~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letversionId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"versionId")inlethash=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"hash")inleteTag=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"eTag")inletkey=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"key")inletobjectArn=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"objectArn")inmake?versionId?hash?eTag?key?objectArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letversionId=field_mapjson__"VersionId"String_.of_jsoninlethash=field_mapjson__"Hash"String_.of_jsoninleteTag=field_mapjson__"ETag"String_.of_jsoninletkey=field_mapjson__"Key"String_.of_jsoninletobjectArn=field_mapjson__"ObjectArn"String_.of_jsoninmake?versionId?hash?eTag?key?objectArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the S3 object that was scanned"]modulePortProbeDetail=structtypenonrect={localPortDetails:LocalPortDetails.toption[@ocaml.doc"The local port information of the connection."];localIpDetails:LocalIpDetails.toption[@ocaml.doc"The local IP information of the connection."];remoteIpDetails:RemoteIpDetails.toption[@ocaml.doc"The remote IP information of the connection."]}letmake?localPortDetails=fun?localIpDetails->fun?remoteIpDetails->fun()->{localPortDetails;localIpDetails;remoteIpDetails}letto_valuex=structure_to_value[("localPortDetails",(Option.mapx.localPortDetails~f:LocalPortDetails.to_value));("localIpDetails",(Option.mapx.localIpDetails~f:LocalIpDetails.to_value));("remoteIpDetails",(Option.mapx.remoteIpDetails~f:RemoteIpDetails.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letremoteIpDetails=(Option.map~f:RemoteIpDetails.of_xml)(Xml.childxml_arg0"remoteIpDetails")inletlocalIpDetails=(Option.map~f:LocalIpDetails.of_xml)(Xml.childxml_arg0"localIpDetails")inletlocalPortDetails=(Option.map~f:LocalPortDetails.of_xml)(Xml.childxml_arg0"localPortDetails")inmake?remoteIpDetails?localIpDetails?localPortDetails()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letremoteIpDetails=field_mapjson__"RemoteIpDetails"RemoteIpDetails.of_jsoninletlocalIpDetails=field_mapjson__"LocalIpDetails"LocalIpDetails.of_jsoninletlocalPortDetails=field_mapjson__"LocalPortDetails"LocalPortDetails.of_jsoninmake?remoteIpDetails?localIpDetails?localPortDetails()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the port probe details."]moduleLoginAttribute=structtypenonrect={user:String_.toption[@ocaml.doc"Indicates the user name which attempted to log in."];application:String_.toption[@ocaml.doc"Indicates the application name used to attempt log in."];failedLoginAttempts:Integer.toption[@ocaml.doc"Represents the sum of failed (unsuccessful) login attempts made to establish a connection to the database instance."];successfulLoginAttempts:Integer.toption[@ocaml.doc"Represents the sum of successful connections (a correct combination of login attributes) made to the database instance by the actor."]}letmake?user=fun?application->fun?failedLoginAttempts->fun?successfulLoginAttempts->fun()->{user;application;failedLoginAttempts;successfulLoginAttempts}letto_valuex=structure_to_value[("user",(Option.mapx.user~f:String_.to_value));("application",(Option.mapx.application~f:String_.to_value));("failedLoginAttempts",(Option.mapx.failedLoginAttempts~f:Integer.to_value));("successfulLoginAttempts",(Option.mapx.successfulLoginAttempts~f:Integer.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letsuccessfulLoginAttempts=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"successfulLoginAttempts")inletfailedLoginAttempts=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"failedLoginAttempts")inletapplication=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"application")inletuser=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"user")inmake?successfulLoginAttempts?failedLoginAttempts?application?user()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letsuccessfulLoginAttempts=field_mapjson__"SuccessfulLoginAttempts"Integer.of_jsoninletfailedLoginAttempts=field_mapjson__"FailedLoginAttempts"Integer.of_jsoninletapplication=field_mapjson__"Application"String_.of_jsoninletuser=field_mapjson__"User"String_.of_jsoninmake?successfulLoginAttempts?failedLoginAttempts?application?user()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the login attempts."]moduleAnomalyProfileFeatures=structtypenonrect=(String_.t*AnomalyProfileFeatureObjects.t)listletmakei=iletof_headerxs=make(List.filter_mapxs~f:(fun(k,v)->(Base.String.chop_prefixk~prefix:"x-amz-meta-")|>(Option.map~f:(funchopped->let(_:string)=vinlet(_:string)=choppedinfailwith"no of_header for complex types String AnomalyProfileFeatureObjects"))))letto_valuexs=(xs|>(List.map~f:(fun(x,y)->(String_.to_valuex)|>(funx->(AnomalyProfileFeatureObjects.to_valuey)|>(funy->(x,y))))))|>(funx->`Mapx)letto_queryv=to_queryto_valuevletto_header_=failwithf"to_header is not implemented for Map_shape objects"()letof_xml_=failwith"of_xml_converter_of_shape: Map_shape case not implemented"letof_jsonj=object_of_json~key_of_string:String_.of_string~of_json:AnomalyProfileFeatureObjects.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleBehavior=structtypenonrect=(String_.t*AnomalyUnusualBehaviorFeature.t)listletmakei=iletof_headerxs=make(List.filter_mapxs~f:(fun(k,v)->(Base.String.chop_prefixk~prefix:"x-amz-meta-")|>(Option.map~f:(funchopped->let(_:string)=vinlet(_:string)=choppedinfailwith"no of_header for complex types String AnomalyUnusualBehaviorFeature"))))letto_valuexs=(xs|>(List.map~f:(fun(x,y)->(String_.to_valuex)|>(funx->(AnomalyUnusualBehaviorFeature.to_valuey)|>(funy->(x,y))))))|>(funx->`Mapx)letto_queryv=to_queryto_valuevletto_header_=failwithf"to_header is not implemented for Map_shape objects"()letof_xml_=failwith"of_xml_converter_of_shape: Map_shape case not implemented"letof_jsonj=object_of_json~key_of_string:String_.of_string~of_json:AnomalyUnusualBehaviorFeature.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleActor=structtypenonrect={id:String_.toption[@ocaml.doc"ID of the threat actor."];user:User.toption[@ocaml.doc"Contains information about the user credentials used by the threat actor."];session:Session.toption[@ocaml.doc"Contains information about the user session where the activity initiated."];process:ActorProcess.toption[@ocaml.doc"Contains information about the process associated with the threat actor. This includes details such as process name, path, execution time, and unique identifiers that help track the actor's activities within the system."]}letmake?id=fun?user->fun?session->fun?process->fun()->{id;user;session;process}letto_valuex=structure_to_value[("id",(Option.mapx.id~f:String_.to_value));("user",(Option.mapx.user~f:User.to_value));("session",(Option.mapx.session~f:Session.to_value));("process",(Option.mapx.process~f:ActorProcess.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letprocess=(Option.map~f:ActorProcess.of_xml)(Xml.childxml_arg0"process")inletsession=(Option.map~f:Session.of_xml)(Xml.childxml_arg0"session")inletuser=(Option.map~f:User.of_xml)(Xml.childxml_arg0"user")inletid=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"id")inmake?process?session?user?id()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letprocess=field_mapjson__"Process"ActorProcess.of_jsoninletsession=field_mapjson__"Session"Session.of_jsoninletuser=field_mapjson__"User"User.of_jsoninletid=field_mapjson__"Id"String_.of_jsoninmake?process?session?user?id()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the actors involved in an attack sequence."]moduleFindingType=structtypenonrect=stringletcontext_="FindingType"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:100)>>=(fun()->check_string_mini~min:1));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"FindingType"jletto_json=simple_to_jsonto_valueendmoduleNetworkEndpoint=structtypenonrect={id:String_.toption[@ocaml.doc"The ID of the network endpoint."];ip:String_.toption[@ocaml.doc"The IP address associated with the network endpoint."];domain:String_.toption[@ocaml.doc"The domain information for the network endpoint."];port:Integer.toption[@ocaml.doc"The port number associated with the network endpoint."];location:NetworkGeoLocation.toption[@ocaml.doc"Information about the location of the network endpoint."];autonomousSystem:AutonomousSystem.toption[@ocaml.doc"The Autonomous System (AS) of the network endpoint."];connection:NetworkConnection.toption[@ocaml.doc"Information about the network connection."]}letmake?id=fun?ip->fun?domain->fun?port->fun?location->fun?autonomousSystem->fun?connection->fun()->{id;ip;domain;port;location;autonomousSystem;connection}letto_valuex=structure_to_value[("id",(Option.mapx.id~f:String_.to_value));("ip",(Option.mapx.ip~f:String_.to_value));("domain",(Option.mapx.domain~f:String_.to_value));("port",(Option.mapx.port~f:Integer.to_value));("location",(Option.mapx.location~f:NetworkGeoLocation.to_value));("autonomousSystem",(Option.mapx.autonomousSystem~f:AutonomousSystem.to_value));("connection",(Option.mapx.connection~f:NetworkConnection.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letconnection=(Option.map~f:NetworkConnection.of_xml)(Xml.childxml_arg0"connection")inletautonomousSystem=(Option.map~f:AutonomousSystem.of_xml)(Xml.childxml_arg0"autonomousSystem")inletlocation=(Option.map~f:NetworkGeoLocation.of_xml)(Xml.childxml_arg0"location")inletport=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"port")inletdomain=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"domain")inletip=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"ip")inletid=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"id")inmake?connection?autonomousSystem?location?port?domain?ip?id()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letconnection=field_mapjson__"Connection"NetworkConnection.of_jsoninletautonomousSystem=field_mapjson__"AutonomousSystem"AutonomousSystem.of_jsoninletlocation=field_mapjson__"Location"NetworkGeoLocation.of_jsoninletport=field_mapjson__"Port"Integer.of_jsoninletdomain=field_mapjson__"Domain"String_.of_jsoninletip=field_mapjson__"Ip"String_.of_jsoninletid=field_mapjson__"Id"String_.of_jsoninmake?connection?autonomousSystem?location?port?domain?ip?id()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about network endpoints that were observed in the attack sequence."]moduleResourceV2=structtypenonrect={uid:String_.toption[@ocaml.doc"The unique identifier of the resource."];name:String_.toption[@ocaml.doc"The name of the resource."];accountId:String_.toption[@ocaml.doc"The Amazon Web Services account ID to which the resource belongs."];resourceType:FindingResourceType.toption[@ocaml.doc"The type of the Amazon Web Services resource."];region:String_.toption[@ocaml.doc"The Amazon Web Services Region where the resource belongs."];service:String_.toption[@ocaml.doc"The Amazon Web Services service of the resource."];cloudPartition:String_.toption[@ocaml.doc"The cloud partition within the Amazon Web Services Region to which the resource belongs."];tags:Tags.toption[@ocaml.doc"Contains information about the tags associated with the resource."];data:ResourceData.toption[@ocaml.doc"Contains information about the Amazon Web Services resource associated with the activity that prompted GuardDuty to generate a finding."]}letmake?uid=fun?name->fun?accountId->fun?resourceType->fun?region->fun?service->fun?cloudPartition->fun?tags->fun?data->fun()->{uid;name;accountId;resourceType;region;service;cloudPartition;tags;data}letto_valuex=structure_to_value[("uid",(Option.mapx.uid~f:String_.to_value));("name",(Option.mapx.name~f:String_.to_value));("accountId",(Option.mapx.accountId~f:String_.to_value));("resourceType",(Option.mapx.resourceType~f:FindingResourceType.to_value));("region",(Option.mapx.region~f:String_.to_value));("service",(Option.mapx.service~f:String_.to_value));("cloudPartition",(Option.mapx.cloudPartition~f:String_.to_value));("tags",(Option.mapx.tags~f:Tags.to_value));("data",(Option.mapx.data~f:ResourceData.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdata=(Option.map~f:ResourceData.of_xml)(Xml.childxml_arg0"data")inlettags=(Option.map~f:Tags.of_xml)(Xml.childxml_arg0"tags")inletcloudPartition=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"cloudPartition")inletservice=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"service")inletregion=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"region")inletresourceType=(Option.map~f:FindingResourceType.of_xml)(Xml.childxml_arg0"resourceType")inletaccountId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"accountId")inletname=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"name")inletuid=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"uid")inmake?data?tags?cloudPartition?service?region?resourceType?accountId?name?uid()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdata=field_mapjson__"Data"ResourceData.of_jsoninlettags=field_mapjson__"Tags"Tags.of_jsoninletcloudPartition=field_mapjson__"CloudPartition"String_.of_jsoninletservice=field_mapjson__"Service"String_.of_jsoninletregion=field_mapjson__"Region"String_.of_jsoninletresourceType=field_mapjson__"ResourceType"FindingResourceType.of_jsoninletaccountId=field_mapjson__"AccountId"String_.of_jsoninletname=field_mapjson__"Name"String_.of_jsoninletuid=field_mapjson__"Uid"String_.of_jsoninmake?data?tags?cloudPartition?service?region?resourceType?accountId?name?uid()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the Amazon Web Services resource that is associated with the GuardDuty finding."]moduleSignal=structtypenonrect={uid:String_.toption[@ocaml.doc"The unique identifier of the signal."];type_:SignalType.toption[@ocaml.doc"The type of the signal used to identify an attack sequence. Signals can be GuardDuty findings or activities observed in data sources that GuardDuty monitors. For more information, see Foundational data sources in the Amazon GuardDuty User Guide. A signal type can be one of the valid values listed in this API. Here are the related descriptions: FINDING - Individually generated GuardDuty finding. CLOUD_TRAIL - Activity observed from CloudTrail logs S3_DATA_EVENTS - Activity observed from CloudTrail data events for S3. Activities associated with this type will show up only when you have enabled GuardDuty S3 Protection feature in your account. For more information about S3 Protection and steps to enable it, see S3 Protection in the Amazon GuardDuty User Guide."];description:SignalDescription.toption[@ocaml.doc"The description of the signal."];name:String_.toption[@ocaml.doc"The name of the signal. For example, when signal type is FINDING, the signal name is the name of the finding."];createdAt:Timestamp.toption[@ocaml.doc"The timestamp when the first finding or activity related to this signal was observed."];updatedAt:Timestamp.toption[@ocaml.doc"The timestamp when this signal was last observed."];firstSeenAt:Timestamp.toption[@ocaml.doc"The timestamp when the first finding or activity related to this signal was observed."];lastSeenAt:Timestamp.toption[@ocaml.doc"The timestamp when the last finding or activity related to this signal was observed."];severity:Double.toption[@ocaml.doc"The severity associated with the signal. For more information about severity, see Findings severity levels in the Amazon GuardDuty User Guide."];count:Integer.toption[@ocaml.doc"The number of times this signal was observed."];resourceUids:ResourceUids.toption[@ocaml.doc"Information about the unique identifiers of the resources involved in the signal."];actorIds:ActorIds.toption[@ocaml.doc"Information about the IDs of the threat actors involved in the signal."];endpointIds:EndpointIds.toption[@ocaml.doc"Information about the endpoint IDs associated with this signal."];signalIndicators:Indicators.toption[@ocaml.doc"Contains information about the indicators associated with the signals."]}letmake?uid=fun?type_->fun?description->fun?name->fun?createdAt->fun?updatedAt->fun?firstSeenAt->fun?lastSeenAt->fun?severity->fun?count->fun?resourceUids->fun?actorIds->fun?endpointIds->fun?signalIndicators->fun()->{uid;type_;description;name;createdAt;updatedAt;firstSeenAt;lastSeenAt;severity;count;resourceUids;actorIds;endpointIds;signalIndicators}letto_valuex=structure_to_value[("uid",(Option.mapx.uid~f:String_.to_value));("type",(Option.mapx.type_~f:SignalType.to_value));("description",(Option.mapx.description~f:SignalDescription.to_value));("name",(Option.mapx.name~f:String_.to_value));("createdAt",(Option.mapx.createdAt~f:Timestamp.to_value));("updatedAt",(Option.mapx.updatedAt~f:Timestamp.to_value));("firstSeenAt",(Option.mapx.firstSeenAt~f:Timestamp.to_value));("lastSeenAt",(Option.mapx.lastSeenAt~f:Timestamp.to_value));("severity",(Option.mapx.severity~f:Double.to_value));("count",(Option.mapx.count~f:Integer.to_value));("resourceUids",(Option.mapx.resourceUids~f:ResourceUids.to_value));("actorIds",(Option.mapx.actorIds~f:ActorIds.to_value));("endpointIds",(Option.mapx.endpointIds~f:EndpointIds.to_value));("signalIndicators",(Option.mapx.signalIndicators~f:Indicators.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letsignalIndicators=(Option.map~f:Indicators.of_xml)(Xml.childxml_arg0"signalIndicators")inletendpointIds=(Option.map~f:EndpointIds.of_xml)(Xml.childxml_arg0"endpointIds")inletactorIds=(Option.map~f:ActorIds.of_xml)(Xml.childxml_arg0"actorIds")inletresourceUids=(Option.map~f:ResourceUids.of_xml)(Xml.childxml_arg0"resourceUids")inletcount=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"count")inletseverity=(Option.map~f:Double.of_xml)(Xml.childxml_arg0"severity")inletlastSeenAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"lastSeenAt")inletfirstSeenAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"firstSeenAt")inletupdatedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"updatedAt")inletcreatedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"createdAt")inletname=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"name")inletdescription=(Option.map~f:SignalDescription.of_xml)(Xml.childxml_arg0"description")inlettype_=(Option.map~f:SignalType.of_xml)(Xml.childxml_arg0"type")inletuid=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"uid")inmake?signalIndicators?endpointIds?actorIds?resourceUids?count?severity?lastSeenAt?firstSeenAt?updatedAt?createdAt?name?description?type_?uid()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letsignalIndicators=field_mapjson__"SignalIndicators"Indicators.of_jsoninletendpointIds=field_mapjson__"EndpointIds"EndpointIds.of_jsoninletactorIds=field_mapjson__"ActorIds"ActorIds.of_jsoninletresourceUids=field_mapjson__"ResourceUids"ResourceUids.of_jsoninletcount=field_mapjson__"Count"Integer.of_jsoninletseverity=field_mapjson__"Severity"Double.of_jsoninletlastSeenAt=field_mapjson__"LastSeenAt"Timestamp.of_jsoninletfirstSeenAt=field_mapjson__"FirstSeenAt"Timestamp.of_jsoninletupdatedAt=field_mapjson__"UpdatedAt"Timestamp.of_jsoninletcreatedAt=field_mapjson__"CreatedAt"Timestamp.of_jsoninletname=field_mapjson__"Name"String_.of_jsoninletdescription=field_mapjson__"Description"SignalDescription.of_jsoninlettype_=field_mapjson__"Type"SignalType.of_jsoninletuid=field_mapjson__"Uid"String_.of_jsoninmake?signalIndicators?endpointIds?actorIds?resourceUids?count?severity?lastSeenAt?firstSeenAt?updatedAt?createdAt?name?description?type_?uid()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the signals involved in the attack sequence."]moduleScanThreatNames=structtypenonrect=ScanThreatName.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ScanThreatName.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:ScanThreatName.of_xml)letof_jsonj=list_of_json~kind:"ScanThreatNames"~of_json:ScanThreatName.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleThreatNames=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:"ThreatNames"~of_json:String_.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleItemDetailsList=structtypenonrect=ItemDetails.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ItemDetails.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:ItemDetails.of_xml)letof_jsonj=list_of_json~kind:"ItemDetailsList"~of_json:ItemDetails.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleItemPaths=structtypenonrect=ItemPath.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ItemPath.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:ItemPath.of_xml)letof_jsonj=list_of_json~kind:"ItemPaths"~of_json:ItemPath.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleLong=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_valueendmoduleLineage=structtypenonrect=LineageObject.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:LineageObject.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:LineageObject.of_xml)letof_jsonj=list_of_json~kind:"Lineage"~of_json:LineageObject.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleTagKey=structtypenonrect=stringletcontext_="TagKey"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:128)>>=(fun()->check_patterni~pattern:"(?!aws:)[a-zA-Z+-=._:/]+")));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_maxi~max:256)>>=(fun()->check_string_mini~min:0));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_valueendmoduleIssues=structtypenonrect=String_.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:50)>>=(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: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:"Issues"~of_json:String_.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleManagementType=structtypenonrect=|AUTO_MANAGED|MANUAL|DISABLED|Non_static_idofstringletmakei=iletto_string=function|AUTO_MANAGED->"AUTO_MANAGED"|MANUAL->"MANUAL"|DISABLED->"DISABLED"|Non_static_ids->sletof_string=function|"AUTO_MANAGED"->AUTO_MANAGED|"MANUAL"->MANUAL|"DISABLED"->DISABLED|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 ManagementType"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ManagementType"j)letto_json=simple_to_jsonto_valueendmoduleAccountId=structtypenonrect=stringletcontext_="AccountId"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:12)>>=(fun()->check_string_mini~min: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_valueendmoduleTotal=structtypenonrect={amount:String_.toption[@ocaml.doc"The total usage."];unit:String_.toption[@ocaml.doc"The currency unit that the amount is given in."]}letmake?amount=fun?unit->fun()->{amount;unit}letto_valuex=structure_to_value[("amount",(Option.mapx.amount~f:String_.to_value));("unit",(Option.mapx.unit~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letunit=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"unit")inletamount=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"amount")inmake?unit?amount()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letunit=field_mapjson__"Unit"String_.of_jsoninletamount=field_mapjson__"Amount"String_.of_jsoninmake?unit?amount()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains the total usage with the corresponding currency unit for that value."]moduleOrganizationFeatureStatisticsAdditionalConfiguration=structtypenonrect={name:OrgFeatureAdditionalConfiguration.toption[@ocaml.doc"Name of the additional configuration within a feature."];enabledAccountsCount:Integer.toption[@ocaml.doc"Total number of accounts that have enabled the additional configuration."]}letmake?name=fun?enabledAccountsCount->fun()->{name;enabledAccountsCount}letto_valuex=structure_to_value[("name",(Option.mapx.name~f:OrgFeatureAdditionalConfiguration.to_value));("enabledAccountsCount",(Option.mapx.enabledAccountsCount~f:Integer.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letenabledAccountsCount=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"enabledAccountsCount")inletname=(Option.map~f:OrgFeatureAdditionalConfiguration.of_xml)(Xml.childxml_arg0"name")inmake?enabledAccountsCount?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letenabledAccountsCount=field_mapjson__"EnabledAccountsCount"Integer.of_jsoninletname=field_mapjson__"Name"OrgFeatureAdditionalConfiguration.of_jsoninmake?enabledAccountsCount?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the coverage statistic for the additional configuration of the feature."]moduleEbsVolumesResult=structtypenonrect={status:DataSourceStatus.toption[@ocaml.doc"Describes whether scanning EBS volumes is enabled as a data source."];reason:String_.toption[@ocaml.doc"Specifies the reason why scanning EBS volumes (Malware Protection) was not enabled as a data source."]}letmake?status=fun?reason->fun()->{status;reason}letto_valuex=structure_to_value[("status",(Option.mapx.status~f:DataSourceStatus.to_value));("reason",(Option.mapx.reason~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letreason=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"reason")inletstatus=(Option.map~f:DataSourceStatus.of_xml)(Xml.childxml_arg0"status")inmake?reason?status()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letreason=field_mapjson__"Reason"String_.of_jsoninletstatus=field_mapjson__"Status"DataSourceStatus.of_jsoninmake?reason?status()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Describes the configuration of scanning EBS volumes as a data source."]moduleMemberAdditionalConfigurationResult=structtypenonrect={name:OrgFeatureAdditionalConfiguration.toption[@ocaml.doc"Indicates the name of the additional configuration that is set for the member account."];status:FeatureStatus.toption[@ocaml.doc"Indicates the status of the additional configuration that is set for the member account."];updatedAt:Timestamp.toption[@ocaml.doc"The timestamp at which the additional configuration was set for the member account. This is in UTC format."]}letmake?name=fun?status->fun?updatedAt->fun()->{name;status;updatedAt}letto_valuex=structure_to_value[("name",(Option.mapx.name~f:OrgFeatureAdditionalConfiguration.to_value));("status",(Option.mapx.status~f:FeatureStatus.to_value));("updatedAt",(Option.mapx.updatedAt~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letupdatedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"updatedAt")inletstatus=(Option.map~f:FeatureStatus.of_xml)(Xml.childxml_arg0"status")inletname=(Option.map~f:OrgFeatureAdditionalConfiguration.of_xml)(Xml.childxml_arg0"name")inmake?updatedAt?status?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letupdatedAt=field_mapjson__"UpdatedAt"Timestamp.of_jsoninletstatus=field_mapjson__"Status"FeatureStatus.of_jsoninletname=field_mapjson__"Name"OrgFeatureAdditionalConfiguration.of_jsoninmake?updatedAt?status?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the additional configuration for the member account."]moduleVolumeDetail=structtypenonrect={volumeArn:String_.toption[@ocaml.doc"EBS volume ARN information."];volumeType:String_.toption[@ocaml.doc"The EBS volume type."];deviceName:String_.toption[@ocaml.doc"The device name for the EBS volume."];volumeSizeInGB:Integer.toption[@ocaml.doc"EBS volume size in GB."];encryptionType:String_.toption[@ocaml.doc"EBS volume encryption type."];snapshotArn:String_.toption[@ocaml.doc"Snapshot ARN of the EBS volume."];kmsKeyArn:String_.toption[@ocaml.doc"KMS key ARN used to encrypt the EBS volume."]}letmake?volumeArn=fun?volumeType->fun?deviceName->fun?volumeSizeInGB->fun?encryptionType->fun?snapshotArn->fun?kmsKeyArn->fun()->{volumeArn;volumeType;deviceName;volumeSizeInGB;encryptionType;snapshotArn;kmsKeyArn}letto_valuex=structure_to_value[("volumeArn",(Option.mapx.volumeArn~f:String_.to_value));("volumeType",(Option.mapx.volumeType~f:String_.to_value));("deviceName",(Option.mapx.deviceName~f:String_.to_value));("volumeSizeInGB",(Option.mapx.volumeSizeInGB~f:Integer.to_value));("encryptionType",(Option.mapx.encryptionType~f:String_.to_value));("snapshotArn",(Option.mapx.snapshotArn~f:String_.to_value));("kmsKeyArn",(Option.mapx.kmsKeyArn~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letkmsKeyArn=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"kmsKeyArn")inletsnapshotArn=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"snapshotArn")inletencryptionType=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"encryptionType")inletvolumeSizeInGB=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"volumeSizeInGB")inletdeviceName=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"deviceName")inletvolumeType=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"volumeType")inletvolumeArn=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"volumeArn")inmake?kmsKeyArn?snapshotArn?encryptionType?volumeSizeInGB?deviceName?volumeType?volumeArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letkmsKeyArn=field_mapjson__"KmsKeyArn"String_.of_jsoninletsnapshotArn=field_mapjson__"SnapshotArn"String_.of_jsoninletencryptionType=field_mapjson__"EncryptionType"String_.of_jsoninletvolumeSizeInGB=field_mapjson__"VolumeSizeInGB"Integer.of_jsoninletdeviceName=field_mapjson__"DeviceName"String_.of_jsoninletvolumeType=field_mapjson__"VolumeType"String_.of_jsoninletvolumeArn=field_mapjson__"VolumeArn"String_.of_jsoninmake?kmsKeyArn?snapshotArn?encryptionType?volumeSizeInGB?deviceName?volumeType?volumeArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains EBS volume details."]moduleContainers=structtypenonrect=Container.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:Container.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:Container.of_xml)letof_jsonj=list_of_json~kind:"Containers"~of_json:Container.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleVolumes=structtypenonrect=Volume.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:Volume.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:Volume.of_xml)letof_jsonj=list_of_json~kind:"Volumes"~of_json:Volume.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleNetworkInterface=structtypenonrect={ipv6Addresses:Ipv6Addresses.toption[@ocaml.doc"A list of IPv6 addresses for the EC2 instance."];networkInterfaceId:String_.toption[@ocaml.doc"The ID of the network interface."];privateDnsName:String_.toption[@ocaml.doc"The private DNS name of the EC2 instance."];privateIpAddress:SensitiveString.toption[@ocaml.doc"The private IP address of the EC2 instance."];privateIpAddresses:PrivateIpAddresses.toption[@ocaml.doc"Other private IP address information of the EC2 instance."];publicDnsName:String_.toption[@ocaml.doc"The public DNS name of the EC2 instance."];publicIp:String_.toption[@ocaml.doc"The public IP address of the EC2 instance."];securityGroups:SecurityGroups.toption[@ocaml.doc"The security groups associated with the EC2 instance."];subnetId:String_.toption[@ocaml.doc"The subnet ID of the EC2 instance."];vpcId:String_.toption[@ocaml.doc"The VPC ID of the EC2 instance."]}letmake?ipv6Addresses=fun?networkInterfaceId->fun?privateDnsName->fun?privateIpAddress->fun?privateIpAddresses->fun?publicDnsName->fun?publicIp->fun?securityGroups->fun?subnetId->fun?vpcId->fun()->{ipv6Addresses;networkInterfaceId;privateDnsName;privateIpAddress;privateIpAddresses;publicDnsName;publicIp;securityGroups;subnetId;vpcId}letto_valuex=structure_to_value[("ipv6Addresses",(Option.mapx.ipv6Addresses~f:Ipv6Addresses.to_value));("networkInterfaceId",(Option.mapx.networkInterfaceId~f:String_.to_value));("privateDnsName",(Option.mapx.privateDnsName~f:String_.to_value));("privateIpAddress",(Option.mapx.privateIpAddress~f:SensitiveString.to_value));("privateIpAddresses",(Option.mapx.privateIpAddresses~f:PrivateIpAddresses.to_value));("publicDnsName",(Option.mapx.publicDnsName~f:String_.to_value));("publicIp",(Option.mapx.publicIp~f:String_.to_value));("securityGroups",(Option.mapx.securityGroups~f:SecurityGroups.to_value));("subnetId",(Option.mapx.subnetId~f:String_.to_value));("vpcId",(Option.mapx.vpcId~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letvpcId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"vpcId")inletsubnetId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"subnetId")inletsecurityGroups=(Option.map~f:SecurityGroups.of_xml)(Xml.childxml_arg0"securityGroups")inletpublicIp=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"publicIp")inletpublicDnsName=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"publicDnsName")inletprivateIpAddresses=(Option.map~f:PrivateIpAddresses.of_xml)(Xml.childxml_arg0"privateIpAddresses")inletprivateIpAddress=(Option.map~f:SensitiveString.of_xml)(Xml.childxml_arg0"privateIpAddress")inletprivateDnsName=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"privateDnsName")inletnetworkInterfaceId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"networkInterfaceId")inletipv6Addresses=(Option.map~f:Ipv6Addresses.of_xml)(Xml.childxml_arg0"ipv6Addresses")inmake?vpcId?subnetId?securityGroups?publicIp?publicDnsName?privateIpAddresses?privateIpAddress?privateDnsName?networkInterfaceId?ipv6Addresses()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letvpcId=field_mapjson__"VpcId"String_.of_jsoninletsubnetId=field_mapjson__"SubnetId"String_.of_jsoninletsecurityGroups=field_mapjson__"SecurityGroups"SecurityGroups.of_jsoninletpublicIp=field_mapjson__"PublicIp"String_.of_jsoninletpublicDnsName=field_mapjson__"PublicDnsName"String_.of_jsoninletprivateIpAddresses=field_mapjson__"PrivateIpAddresses"PrivateIpAddresses.of_jsoninletprivateIpAddress=field_mapjson__"PrivateIpAddress"SensitiveString.of_jsoninletprivateDnsName=field_mapjson__"PrivateDnsName"String_.of_jsoninletnetworkInterfaceId=field_mapjson__"NetworkInterfaceId"String_.of_jsoninletipv6Addresses=field_mapjson__"Ipv6Addresses"Ipv6Addresses.of_jsoninmake?vpcId?subnetId?securityGroups?publicIp?publicDnsName?privateIpAddresses?privateIpAddress?privateDnsName?networkInterfaceId?ipv6Addresses()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the elastic network interface of the EC2 instance."]moduleImpersonatedUser=structtypenonrect={username:String_.toption[@ocaml.doc"Information about the username that was being impersonated."];groups:Groups.toption[@ocaml.doc"The group to which the user name belongs."]}letmake?username=fun?groups->fun()->{username;groups}letto_valuex=structure_to_value[("username",(Option.mapx.username~f:String_.to_value));("groups",(Option.mapx.groups~f:Groups.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letgroups=(Option.map~f:Groups.of_xml)(Xml.childxml_arg0"groups")inletusername=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"username")inmake?groups?username()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letgroups=field_mapjson__"Groups"Groups.of_jsoninletusername=field_mapjson__"Username"String_.of_jsoninmake?groups?username()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the impersonated user."]moduleSessionNameList=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:"SessionNameList"~of_json:String_.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleSubnetIds=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:"SubnetIds"~of_json:String_.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleDefaultServerSideEncryption=structtypenonrect={encryptionType:String_.toption[@ocaml.doc"The type of encryption used for objects within the S3 bucket."];kmsMasterKeyArn:String_.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the KMS encryption key. Only available if the bucket EncryptionType is aws:kms."]}letmake?encryptionType=fun?kmsMasterKeyArn->fun()->{encryptionType;kmsMasterKeyArn}letto_valuex=structure_to_value[("encryptionType",(Option.mapx.encryptionType~f:String_.to_value));("kmsMasterKeyArn",(Option.mapx.kmsMasterKeyArn~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letkmsMasterKeyArn=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"kmsMasterKeyArn")inletencryptionType=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"encryptionType")inmake?kmsMasterKeyArn?encryptionType()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letkmsMasterKeyArn=field_mapjson__"KmsMasterKeyArn"String_.of_jsoninletencryptionType=field_mapjson__"EncryptionType"String_.of_jsoninmake?kmsMasterKeyArn?encryptionType()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information on the server side encryption method used in the S3 bucket. See S3 Server-Side Encryption for more information."]moduleOwner=structtypenonrect={id:String_.toption[@ocaml.doc"The canonical user ID of the bucket owner. For information about locating your canonical user ID see Finding Your Account Canonical User ID."]}letmake?id=fun()->{id}letto_valuex=structure_to_value[("id",(Option.mapx.id~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letid=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"id")inmake?id()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letid=field_mapjson__"Id"String_.of_jsoninmake?id()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information on the owner of the bucket."]modulePublicAccess=structtypenonrect={permissionConfiguration:PermissionConfiguration.toption[@ocaml.doc"Contains information about how permissions are configured for the S3 bucket."];effectivePermission:String_.toption[@ocaml.doc"Describes the effective permission on this bucket after factoring all attached policies."]}letmake?permissionConfiguration=fun?effectivePermission->fun()->{permissionConfiguration;effectivePermission}letto_valuex=structure_to_value[("permissionConfiguration",(Option.mapx.permissionConfiguration~f:PermissionConfiguration.to_value));("effectivePermission",(Option.mapx.effectivePermission~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=leteffectivePermission=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"effectivePermission")inletpermissionConfiguration=(Option.map~f:PermissionConfiguration.of_xml)(Xml.childxml_arg0"permissionConfiguration")inmake?effectivePermission?permissionConfiguration()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=leteffectivePermission=field_mapjson__"EffectivePermission"String_.of_jsoninletpermissionConfiguration=field_mapjson__"PermissionConfiguration"PermissionConfiguration.of_jsoninmake?effectivePermission?permissionConfiguration()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Describes the public access policies that apply to the S3 bucket."]moduleS3ObjectDetails=structtypenonrect=S3ObjectDetail.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:S3ObjectDetail.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:S3ObjectDetail.of_xml)letof_jsonj=list_of_json~kind:"S3ObjectDetails"~of_json:S3ObjectDetail.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleAffectedResources=structtypenonrect=(String_.t*String_.t)listletmakei=iletof_headerxs=make(List.filter_mapxs~f:(fun(k,v)->(Base.String.chop_prefixk~prefix:"x-amz-meta-")|>(Option.map~f:(funchopped->((String_.of_stringchopped),(String_.of_stringv))))))letto_valuexs=(xs|>(List.map~f:(fun(x,y)->(String_.to_valuex)|>(funx->(String_.to_valuey)|>(funy->(x,y))))))|>(funx->`Mapx)letto_queryv=to_queryto_valuevletto_header_=failwithf"to_header is not implemented for Map_shape objects"()letof_xml_=failwith"of_xml_converter_of_shape: Map_shape case not implemented"letof_jsonj=object_of_json~key_of_string:String_.of_string~of_json:String_.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleDomainDetails=structtypenonrect={domain:String_.toption[@ocaml.doc"The domain information for the Amazon Web Services API call."]}letmake?domain=fun()->{domain}letto_valuex=structure_to_value[("domain",(Option.mapx.domain~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdomain=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"domain")inmake?domain()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdomain=field_mapjson__"Domain"String_.of_jsoninmake?domain()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the domain."]moduleRemoteAccountDetails=structtypenonrect={accountId:String_.toption[@ocaml.doc"The Amazon Web Services account ID of the remote API caller."];affiliated:Boolean.toption[@ocaml.doc"Details on whether the Amazon Web Services account of the remote API caller is related to your GuardDuty environment. If this value is True the API caller is affiliated to your account in some way. If it is False the API caller is from outside your environment."]}letmake?accountId=fun?affiliated->fun()->{accountId;affiliated}letto_valuex=structure_to_value[("accountId",(Option.mapx.accountId~f:String_.to_value));("affiliated",(Option.mapx.affiliated~f:Boolean.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaffiliated=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"affiliated")inletaccountId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"accountId")inmake?affiliated?accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaffiliated=field_mapjson__"Affiliated"Boolean.of_jsoninletaccountId=field_mapjson__"AccountId"String_.of_jsoninmake?affiliated?accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains details about the remote Amazon Web Services account that made the API call."]moduleSourceIps=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:"SourceIps"~of_json:String_.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleRemotePortDetails=structtypenonrect={port:Integer.toption[@ocaml.doc"The port number of the remote connection."];portName:String_.toption[@ocaml.doc"The port name of the remote connection."]}letmake?port=fun?portName->fun()->{port;portName}letto_valuex=structure_to_value[("port",(Option.mapx.port~f:Integer.to_value));("portName",(Option.mapx.portName~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letportName=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"portName")inletport=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"port")inmake?portName?port()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letportName=field_mapjson__"PortName"String_.of_jsoninletport=field_mapjson__"Port"Integer.of_jsoninmake?portName?port()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the remote port."]modulePortProbeDetails=structtypenonrect=PortProbeDetail.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:PortProbeDetail.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:PortProbeDetail.of_xml)letof_jsonj=list_of_json~kind:"PortProbeDetails"~of_json:PortProbeDetail.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleLoginAttributes=structtypenonrect=LoginAttribute.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:LoginAttribute.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:LoginAttribute.of_xml)letof_jsonj=list_of_json~kind:"LoginAttributes"~of_json:LoginAttribute.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleAnomalyProfiles=structtypenonrect=(String_.t*AnomalyProfileFeatures.t)listletmakei=iletof_headerxs=make(List.filter_mapxs~f:(fun(k,v)->(Base.String.chop_prefixk~prefix:"x-amz-meta-")|>(Option.map~f:(funchopped->let(_:string)=vinlet(_:string)=choppedinfailwith"no of_header for complex types String AnomalyProfileFeatures"))))letto_valuexs=(xs|>(List.map~f:(fun(x,y)->(String_.to_valuex)|>(funx->(AnomalyProfileFeatures.to_valuey)|>(funy->(x,y))))))|>(funx->`Mapx)letto_queryv=to_queryto_valuevletto_header_=failwithf"to_header is not implemented for Map_shape objects"()letof_xml_=failwith"of_xml_converter_of_shape: Map_shape case not implemented"letof_jsonj=object_of_json~key_of_string:String_.of_string~of_json:AnomalyProfileFeatures.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleAnomalyUnusual=structtypenonrect={behavior:Behavior.toption[@ocaml.doc"The behavior of the anomalous activity that caused GuardDuty to generate the finding."]}letmake?behavior=fun()->{behavior}letto_valuex=structure_to_value[("behavior",(Option.mapx.behavior~f:Behavior.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letbehavior=(Option.map~f:Behavior.of_xml)(Xml.childxml_arg0"behavior")inmake?behavior()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letbehavior=field_mapjson__"Behavior"Behavior.of_jsoninmake?behavior()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the behavior of the anomaly that is new to GuardDuty."]moduleActors=structtypenonrect=Actor.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:400)>>=(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:Actor.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:Actor.of_xml)letof_jsonj=list_of_json~kind:"Actors"~of_json:Actor.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleAdditionalSequenceTypes=structtypenonrect=FindingType.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:FindingType.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:FindingType.of_xml)letof_jsonj=list_of_json~kind:"AdditionalSequenceTypes"~of_json:FindingType.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleNetworkEndpoints=structtypenonrect=NetworkEndpoint.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:400)>>=(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:NetworkEndpoint.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:NetworkEndpoint.of_xml)letof_jsonj=list_of_json~kind:"NetworkEndpoints"~of_json:NetworkEndpoint.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleResources=structtypenonrect=ResourceV2.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:400)>>=(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:ResourceV2.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:ResourceV2.of_xml)letof_jsonj=list_of_json~kind:"Resources"~of_json:ResourceV2.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleSequenceDescription=structtypenonrect=stringletcontext_="SequenceDescription"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:4096)>>=(fun()->check_string_mini~min:0));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"SequenceDescription"jletto_json=simple_to_jsonto_valueendmoduleSignals=structtypenonrect=Signal.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:100)>>=(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:Signal.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:Signal.of_xml)letof_jsonj=list_of_json~kind:"Signals"~of_json:Signal.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleHighestSeverityThreatDetails=structtypenonrect={severity:String_.toption[@ocaml.doc"Severity level of the highest severity threat detected."];threatName:String_.toption[@ocaml.doc"Threat name of the highest severity threat detected as part of the malware scan."];count:Integer.toption[@ocaml.doc"Total number of infected files with the highest severity threat detected."]}letmake?severity=fun?threatName->fun?count->fun()->{severity;threatName;count}letto_valuex=structure_to_value[("severity",(Option.mapx.severity~f:String_.to_value));("threatName",(Option.mapx.threatName~f:String_.to_value));("count",(Option.mapx.count~f:Integer.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcount=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"count")inletthreatName=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"threatName")inletseverity=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"severity")inmake?count?threatName?severity()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcount=field_mapjson__"Count"Integer.of_jsoninletthreatName=field_mapjson__"ThreatName"String_.of_jsoninletseverity=field_mapjson__"Severity"String_.of_jsoninmake?count?threatName?severity()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains details of the highest severity threat detected during scan and number of infected files."]moduleScannedItemCount=structtypenonrect={totalGb:Integer.toption[@ocaml.doc"Total GB of files scanned for malware."];files:Integer.toption[@ocaml.doc"Number of files scanned."];volumes:Integer.toption[@ocaml.doc"Total number of scanned volumes."]}letmake?totalGb=fun?files->fun?volumes->fun()->{totalGb;files;volumes}letto_valuex=structure_to_value[("totalGb",(Option.mapx.totalGb~f:Integer.to_value));("files",(Option.mapx.files~f:Integer.to_value));("volumes",(Option.mapx.volumes~f:Integer.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letvolumes=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"volumes")inletfiles=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"files")inlettotalGb=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"totalGb")inmake?volumes?files?totalGb()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letvolumes=field_mapjson__"Volumes"Integer.of_jsoninletfiles=field_mapjson__"Files"Integer.of_jsoninlettotalGb=field_mapjson__"TotalGb"Integer.of_jsoninmake?volumes?files?totalGb()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Total number of scanned files."]moduleThreatDetectedByName=structtypenonrect={itemCount:Integer.toption[@ocaml.doc"Total number of infected files identified."];uniqueThreatNameCount:Integer.toption[@ocaml.doc"Total number of unique threats by name identified, as part of the malware scan."];shortened:Boolean.toption[@ocaml.doc"Flag to determine if the finding contains every single infected file-path and/or every threat."];threatNames:ScanThreatNames.toption[@ocaml.doc"List of identified threats with details, organized by threat name."]}letmake?itemCount=fun?uniqueThreatNameCount->fun?shortened->fun?threatNames->fun()->{itemCount;uniqueThreatNameCount;shortened;threatNames}letto_valuex=structure_to_value[("itemCount",(Option.mapx.itemCount~f:Integer.to_value));("uniqueThreatNameCount",(Option.mapx.uniqueThreatNameCount~f:Integer.to_value));("shortened",(Option.mapx.shortened~f:Boolean.to_value));("threatNames",(Option.mapx.threatNames~f:ScanThreatNames.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letthreatNames=(Option.map~f:ScanThreatNames.of_xml)(Xml.childxml_arg0"threatNames")inletshortened=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"shortened")inletuniqueThreatNameCount=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"uniqueThreatNameCount")inletitemCount=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"itemCount")inmake?threatNames?shortened?uniqueThreatNameCount?itemCount()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letthreatNames=field_mapjson__"ThreatNames"ScanThreatNames.of_jsoninletshortened=field_mapjson__"Shortened"Boolean.of_jsoninletuniqueThreatNameCount=field_mapjson__"UniqueThreatNameCount"Integer.of_jsoninletitemCount=field_mapjson__"ItemCount"Integer.of_jsoninmake?threatNames?shortened?uniqueThreatNameCount?itemCount()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains details about identified threats organized by threat name."]moduleThreatsDetectedItemCount=structtypenonrect={files:Integer.toption[@ocaml.doc"Total number of infected files."]}letmake?files=fun()->{files}letto_valuex=structure_to_value[("files",(Option.mapx.files~f:Integer.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letfiles=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"files")inmake?files()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letfiles=field_mapjson__"Files"Integer.of_jsoninmake?files()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains total number of infected files."]moduleThreatIntelligenceDetail=structtypenonrect={threatListName:String_.toption[@ocaml.doc"The name of the threat intelligence list that triggered the finding."];threatNames:ThreatNames.toption[@ocaml.doc"A list of names of the threats in the threat intelligence list that triggered the finding."];threatFileSha256:String_.toption[@ocaml.doc"SHA256 of the file that generated the finding."]}letmake?threatListName=fun?threatNames->fun?threatFileSha256->fun()->{threatListName;threatNames;threatFileSha256}letto_valuex=structure_to_value[("threatListName",(Option.mapx.threatListName~f:String_.to_value));("threatNames",(Option.mapx.threatNames~f:ThreatNames.to_value));("threatFileSha256",(Option.mapx.threatFileSha256~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letthreatFileSha256=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"threatFileSha256")inletthreatNames=(Option.map~f:ThreatNames.of_xml)(Xml.childxml_arg0"threatNames")inletthreatListName=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"threatListName")inmake?threatFileSha256?threatNames?threatListName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letthreatFileSha256=field_mapjson__"ThreatFileSha256"String_.of_jsoninletthreatNames=field_mapjson__"ThreatNames"ThreatNames.of_jsoninletthreatListName=field_mapjson__"ThreatListName"String_.of_jsoninmake?threatFileSha256?threatNames?threatListName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"An instance of a threat intelligence detail that constitutes evidence for the finding."]moduleIncrementalScanDetails=structtypenonrect={baselineResourceArn:NonEmptyString.t[@ocaml.doc"Amazon Resource Name (ARN) of the baseline resource used for incremental scanning. The scan will only process changes since this baseline resource was created."]}letcontext_="IncrementalScanDetails"letmake~baselineResourceArn=fun()->{baselineResourceArn}letto_valuex=structure_to_value[("baselineResourceArn",(Some(NonEmptyString.to_valuex.baselineResourceArn)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letbaselineResourceArn=NonEmptyString.of_xml(Xml.child_exn~context:context_xml_arg0"baselineResourceArn")inmake~baselineResourceArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letbaselineResourceArn=field_map_exnjson__"BaselineResourceArn"NonEmptyString.of_jsoninmake~baselineResourceArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the incremental scan configuration."]moduleTriggerType=structtypenonrect=|BACKUP|GUARDDUTY|Non_static_idofstringletmakei=iletto_string=function|BACKUP->"BACKUP"|GUARDDUTY->"GUARDDUTY"|Non_static_ids->sletof_string=function|"BACKUP"->BACKUP|"GUARDDUTY"->GUARDDUTY|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 TriggerType"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"TriggerType"j)letto_json=simple_to_jsonto_valueendmoduleThreat=structtypenonrect={name:String_.toption[@ocaml.doc"Name of the detected threat that caused GuardDuty to generate this finding."];source:String_.toption[@ocaml.doc"Source of the threat that generated this finding."];itemPaths:ItemPaths.toption[@ocaml.doc"Information about the nested item path and hash of the protected resource."];count:Long.toption[@ocaml.doc"The number of occurrences of this specific threat detected during the scan."];hash:String_.toption[@ocaml.doc"The hash identifier of the detected malware threat."];itemDetails:ItemDetailsList.toption[@ocaml.doc"Detailed information about the detected malware threat."]}letmake?name=fun?source->fun?itemPaths->fun?count->fun?hash->fun?itemDetails->fun()->{name;source;itemPaths;count;hash;itemDetails}letto_valuex=structure_to_value[("name",(Option.mapx.name~f:String_.to_value));("source",(Option.mapx.source~f:String_.to_value));("itemPaths",(Option.mapx.itemPaths~f:ItemPaths.to_value));("count",(Option.mapx.count~f:Long.to_value));("hash",(Option.mapx.hash~f:String_.to_value));("itemDetails",(Option.mapx.itemDetails~f:ItemDetailsList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letitemDetails=(Option.map~f:ItemDetailsList.of_xml)(Xml.childxml_arg0"itemDetails")inlethash=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"hash")inletcount=(Option.map~f:Long.of_xml)(Xml.childxml_arg0"count")inletitemPaths=(Option.map~f:ItemPaths.of_xml)(Xml.childxml_arg0"itemPaths")inletsource=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"source")inletname=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"name")inmake?itemDetails?hash?count?itemPaths?source?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letitemDetails=field_mapjson__"ItemDetails"ItemDetailsList.of_jsoninlethash=field_mapjson__"Hash"String_.of_jsoninletcount=field_mapjson__"Count"Long.of_jsoninletitemPaths=field_mapjson__"ItemPaths"ItemPaths.of_jsoninletsource=field_mapjson__"Source"String_.of_jsoninletname=field_mapjson__"Name"String_.of_jsoninmake?itemDetails?hash?count?itemPaths?source?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the detected threats associated with the generated finding."]moduleFlagsList=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:"FlagsList"~of_json:String_.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleMemoryRegionsList=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:"MemoryRegionsList"~of_json:String_.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleProcessDetails=structtypenonrect={name:String_.toption[@ocaml.doc"The name of the process."];executablePath:String_.toption[@ocaml.doc"The absolute path of the process executable file."];executableSha256:String_.toption[@ocaml.doc"The SHA256 hash of the process executable."];namespacePid:Integer.toption[@ocaml.doc"The ID of the child process."];pwd:String_.toption[@ocaml.doc"The present working directory of the process."];pid:Integer.toption[@ocaml.doc"The ID of the process."];startTime:Timestamp.toption[@ocaml.doc"The time when the process started. This is in UTC format."];uuid:String_.toption[@ocaml.doc"The unique ID assigned to the process by GuardDuty."];parentUuid:String_.toption[@ocaml.doc"The unique ID of the parent process. This ID is assigned to the parent process by GuardDuty."];user:String_.toption[@ocaml.doc"The user that executed the process."];userId:Integer.toption[@ocaml.doc"The unique ID of the user that executed the process."];euid:Integer.toption[@ocaml.doc"The effective user ID of the user that executed the process."];lineage:Lineage.toption[@ocaml.doc"Information about the process's lineage."]}letmake?name=fun?executablePath->fun?executableSha256->fun?namespacePid->fun?pwd->fun?pid->fun?startTime->fun?uuid->fun?parentUuid->fun?user->fun?userId->fun?euid->fun?lineage->fun()->{name;executablePath;executableSha256;namespacePid;pwd;pid;startTime;uuid;parentUuid;user;userId;euid;lineage}letto_valuex=structure_to_value[("name",(Option.mapx.name~f:String_.to_value));("executablePath",(Option.mapx.executablePath~f:String_.to_value));("executableSha256",(Option.mapx.executableSha256~f:String_.to_value));("namespacePid",(Option.mapx.namespacePid~f:Integer.to_value));("pwd",(Option.mapx.pwd~f:String_.to_value));("pid",(Option.mapx.pid~f:Integer.to_value));("startTime",(Option.mapx.startTime~f:Timestamp.to_value));("uuid",(Option.mapx.uuid~f:String_.to_value));("parentUuid",(Option.mapx.parentUuid~f:String_.to_value));("user",(Option.mapx.user~f:String_.to_value));("userId",(Option.mapx.userId~f:Integer.to_value));("euid",(Option.mapx.euid~f:Integer.to_value));("lineage",(Option.mapx.lineage~f:Lineage.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letlineage=(Option.map~f:Lineage.of_xml)(Xml.childxml_arg0"lineage")inleteuid=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"euid")inletuserId=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"userId")inletuser=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"user")inletparentUuid=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"parentUuid")inletuuid=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"uuid")inletstartTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"startTime")inletpid=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"pid")inletpwd=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"pwd")inletnamespacePid=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"namespacePid")inletexecutableSha256=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"executableSha256")inletexecutablePath=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"executablePath")inletname=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"name")inmake?lineage?euid?userId?user?parentUuid?uuid?startTime?pid?pwd?namespacePid?executableSha256?executablePath?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letlineage=field_mapjson__"Lineage"Lineage.of_jsoninleteuid=field_mapjson__"Euid"Integer.of_jsoninletuserId=field_mapjson__"UserId"Integer.of_jsoninletuser=field_mapjson__"User"String_.of_jsoninletparentUuid=field_mapjson__"ParentUuid"String_.of_jsoninletuuid=field_mapjson__"Uuid"String_.of_jsoninletstartTime=field_mapjson__"StartTime"Timestamp.of_jsoninletpid=field_mapjson__"Pid"Integer.of_jsoninletpwd=field_mapjson__"Pwd"String_.of_jsoninletnamespacePid=field_mapjson__"NamespacePid"Integer.of_jsoninletexecutableSha256=field_mapjson__"ExecutableSha256"String_.of_jsoninletexecutablePath=field_mapjson__"ExecutablePath"String_.of_jsoninletname=field_mapjson__"Name"String_.of_jsoninmake?lineage?euid?userId?user?parentUuid?uuid?startTime?pid?pwd?namespacePid?executableSha256?executablePath?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the observed process."]moduleOrgFeatureStatus=structtypenonrect=|NEW|NONE|ALL|Non_static_idofstringletmakei=iletto_string=function|NEW->"NEW"|NONE->"NONE"|ALL->"ALL"|Non_static_ids->sletof_string=function|"NEW"->NEW|"NONE"->NONE|"ALL"->ALL|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 OrgFeatureStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"OrgFeatureStatus"j)letto_json=simple_to_jsonto_valueendmoduleScanConditionPair=structtypenonrect={key:TagKey.t[@ocaml.doc"Represents the key in the map condition."];value:TagValue.toption[@ocaml.doc"Represents optional value in the map condition. If not specified, only the key will be matched."]}letcontext_="ScanConditionPair"letmake?value=fun~key->fun()->{value;key}letto_valuex=structure_to_value[("key",(Some(TagKey.to_valuex.key)));("value",(Option.mapx.value~f:TagValue.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letvalue=(Option.map~f:TagValue.of_xml)(Xml.childxml_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_mapjson__"Value"TagValue.of_jsoninletkey=field_map_exnjson__"Key"TagKey.of_jsoninmake?value~key()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Represents the key:value pair to be matched against given resource property."]moduleMatch=structtypenonrect=stringletcontext_="Match"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:512)>>=(fun()->check_string_mini~min:1));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"Match"jletto_json=simple_to_jsonto_valueendmoduleNotMatch=structtypenonrect=stringletcontext_="NotMatch"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:512)>>=(fun()->check_string_mini~min:1));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"NotMatch"jletto_json=simple_to_jsonto_valueendmoduleFeatureAdditionalConfiguration=structtypenonrect=|EKS_ADDON_MANAGEMENT|ECS_FARGATE_AGENT_MANAGEMENT|EC2_AGENT_MANAGEMENT|Non_static_idofstringletmakei=iletto_string=function|EKS_ADDON_MANAGEMENT->"EKS_ADDON_MANAGEMENT"|ECS_FARGATE_AGENT_MANAGEMENT->"ECS_FARGATE_AGENT_MANAGEMENT"|EC2_AGENT_MANAGEMENT->"EC2_AGENT_MANAGEMENT"|Non_static_ids->sletof_string=function|"EKS_ADDON_MANAGEMENT"->EKS_ADDON_MANAGEMENT|"ECS_FARGATE_AGENT_MANAGEMENT"->ECS_FARGATE_AGENT_MANAGEMENT|"EC2_AGENT_MANAGEMENT"->EC2_AGENT_MANAGEMENT|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 FeatureAdditionalConfiguration"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"FeatureAdditionalConfiguration"j)letto_json=simple_to_jsonto_valueendmoduleLongValue=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_valueendmoduleAgentDetails=structtypenonrect={version:String_.toption[@ocaml.doc"Version of the installed GuardDuty security agent."]}letmake?version=fun()->{version}letto_valuex=structure_to_value[("version",(Option.mapx.version~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letversion=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"version")inmake?version()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letversion=field_mapjson__"Version"String_.of_jsoninmake?version()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the installed GuardDuty security agent."]moduleContainerInstanceDetails=structtypenonrect={coveredContainerInstances:Long.toption[@ocaml.doc"Represents the nodes in the Amazon ECS cluster that has a HEALTHY coverage status."];compatibleContainerInstances:Long.toption[@ocaml.doc"Represents total number of nodes in the Amazon ECS cluster."]}letmake?coveredContainerInstances=fun?compatibleContainerInstances->fun()->{coveredContainerInstances;compatibleContainerInstances}letto_valuex=structure_to_value[("coveredContainerInstances",(Option.mapx.coveredContainerInstances~f:Long.to_value));("compatibleContainerInstances",(Option.mapx.compatibleContainerInstances~f:Long.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcompatibleContainerInstances=(Option.map~f:Long.of_xml)(Xml.childxml_arg0"compatibleContainerInstances")inletcoveredContainerInstances=(Option.map~f:Long.of_xml)(Xml.childxml_arg0"coveredContainerInstances")inmake?compatibleContainerInstances?coveredContainerInstances()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcompatibleContainerInstances=field_mapjson__"CompatibleContainerInstances"Long.of_jsoninletcoveredContainerInstances=field_mapjson__"CoveredContainerInstances"Long.of_jsoninmake?compatibleContainerInstances?coveredContainerInstances()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the Amazon EC2 instance that is running the Amazon ECS container."]moduleFargateDetails=structtypenonrect={issues:Issues.toption[@ocaml.doc"Runtime coverage issues identified for the resource running on Amazon Web Services Fargate."];managementType:ManagementType.toption[@ocaml.doc"Indicates how the GuardDuty security agent is managed for this resource. AUTO_MANAGED indicates that GuardDuty deploys and manages updates for this resource. DISABLED indicates that the deployment of the GuardDuty security agent is disabled for this resource. The MANUAL status doesn't apply to the Amazon Web Services Fargate (Amazon ECS only) woprkloads."]}letmake?issues=fun?managementType->fun()->{issues;managementType}letto_valuex=structure_to_value[("issues",(Option.mapx.issues~f:Issues.to_value));("managementType",(Option.mapx.managementType~f:ManagementType.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmanagementType=(Option.map~f:ManagementType.of_xml)(Xml.childxml_arg0"managementType")inletissues=(Option.map~f:Issues.of_xml)(Xml.childxml_arg0"issues")inmake?managementType?issues()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmanagementType=field_mapjson__"ManagementType"ManagementType.of_jsoninletissues=field_mapjson__"Issues"Issues.of_jsoninmake?managementType?issues()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about Amazon Web Services Fargate details associated with an Amazon ECS cluster."]moduleAddonDetails=structtypenonrect={addonVersion:String_.toption[@ocaml.doc"Version of the installed EKS add-on."];addonStatus:String_.toption[@ocaml.doc"Status of the installed EKS add-on."]}letmake?addonVersion=fun?addonStatus->fun()->{addonVersion;addonStatus}letto_valuex=structure_to_value[("addonVersion",(Option.mapx.addonVersion~f:String_.to_value));("addonStatus",(Option.mapx.addonStatus~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaddonStatus=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"addonStatus")inletaddonVersion=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"addonVersion")inmake?addonStatus?addonVersion()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaddonStatus=field_mapjson__"AddonStatus"String_.of_jsoninletaddonVersion=field_mapjson__"AddonVersion"String_.of_jsoninmake?addonStatus?addonVersion()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the installed EKS add-on (GuardDuty security agent)."]moduleEquals=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:"Equals"~of_json:String_.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleNotEquals=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:"NotEquals"~of_json:String_.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleUsageTopAccountResult=structtypenonrect={accountId:AccountId.toption[@ocaml.doc"The unique account ID."];total:Total.toption}letmake?accountId=fun?total->fun()->{accountId;total}letto_valuex=structure_to_value[("accountId",(Option.mapx.accountId~f:AccountId.to_value));("total",(Option.mapx.total~f:Total.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettotal=(Option.map~f:Total.of_xml)(Xml.childxml_arg0"total")inletaccountId=(Option.map~f:AccountId.of_xml)(Xml.childxml_arg0"accountId")inmake?total?accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettotal=field_mapjson__"Total"Total.of_jsoninletaccountId=field_mapjson__"AccountId"AccountId.of_jsoninmake?total?accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information on the total of usage based on the topmost 50 account IDs."]moduleDataSourceFreeTrial=structtypenonrect={freeTrialDaysRemaining:Integer.toption[@ocaml.doc"A value that specifies the number of days left to use each enabled data source."]}letmake?freeTrialDaysRemaining=fun()->{freeTrialDaysRemaining}letto_valuex=structure_to_value[("freeTrialDaysRemaining",(Option.mapx.freeTrialDaysRemaining~f:Integer.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letfreeTrialDaysRemaining=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"freeTrialDaysRemaining")inmake?freeTrialDaysRemaining()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letfreeTrialDaysRemaining=field_mapjson__"FreeTrialDaysRemaining"Integer.of_jsoninmake?freeTrialDaysRemaining()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about which data sources are enabled for the GuardDuty member account."]moduleFreeTrialFeatureResult=structtypenonrect=|FLOW_LOGS|CLOUD_TRAIL|DNS_LOGS|S3_DATA_EVENTS|EKS_AUDIT_LOGS|EBS_MALWARE_PROTECTION|RDS_LOGIN_EVENTS|LAMBDA_NETWORK_LOGS|EKS_RUNTIME_MONITORING|EC2_RUNTIME_MONITORING|FARGATE_RUNTIME_MONITORING|Non_static_idofstringletmakei=iletto_string=function|FLOW_LOGS->"FLOW_LOGS"|CLOUD_TRAIL->"CLOUD_TRAIL"|DNS_LOGS->"DNS_LOGS"|S3_DATA_EVENTS->"S3_DATA_EVENTS"|EKS_AUDIT_LOGS->"EKS_AUDIT_LOGS"|EBS_MALWARE_PROTECTION->"EBS_MALWARE_PROTECTION"|RDS_LOGIN_EVENTS->"RDS_LOGIN_EVENTS"|LAMBDA_NETWORK_LOGS->"LAMBDA_NETWORK_LOGS"|EKS_RUNTIME_MONITORING->"EKS_RUNTIME_MONITORING"|EC2_RUNTIME_MONITORING->"EC2_RUNTIME_MONITORING"|FARGATE_RUNTIME_MONITORING->"FARGATE_RUNTIME_MONITORING"|Non_static_ids->sletof_string=function|"FLOW_LOGS"->FLOW_LOGS|"CLOUD_TRAIL"->CLOUD_TRAIL|"DNS_LOGS"->DNS_LOGS|"S3_DATA_EVENTS"->S3_DATA_EVENTS|"EKS_AUDIT_LOGS"->EKS_AUDIT_LOGS|"EBS_MALWARE_PROTECTION"->EBS_MALWARE_PROTECTION|"RDS_LOGIN_EVENTS"->RDS_LOGIN_EVENTS|"LAMBDA_NETWORK_LOGS"->LAMBDA_NETWORK_LOGS|"EKS_RUNTIME_MONITORING"->EKS_RUNTIME_MONITORING|"EC2_RUNTIME_MONITORING"->EC2_RUNTIME_MONITORING|"FARGATE_RUNTIME_MONITORING"->FARGATE_RUNTIME_MONITORING|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 FreeTrialFeatureResult"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"FreeTrialFeatureResult"j)letto_json=simple_to_jsonto_valueendmoduleOrgFeature=structtypenonrect=|S3_DATA_EVENTS|EKS_AUDIT_LOGS|EBS_MALWARE_PROTECTION|RDS_LOGIN_EVENTS|LAMBDA_NETWORK_LOGS|EKS_RUNTIME_MONITORING|RUNTIME_MONITORING|Non_static_idofstringletmakei=iletto_string=function|S3_DATA_EVENTS->"S3_DATA_EVENTS"|EKS_AUDIT_LOGS->"EKS_AUDIT_LOGS"|EBS_MALWARE_PROTECTION->"EBS_MALWARE_PROTECTION"|RDS_LOGIN_EVENTS->"RDS_LOGIN_EVENTS"|LAMBDA_NETWORK_LOGS->"LAMBDA_NETWORK_LOGS"|EKS_RUNTIME_MONITORING->"EKS_RUNTIME_MONITORING"|RUNTIME_MONITORING->"RUNTIME_MONITORING"|Non_static_ids->sletof_string=function|"S3_DATA_EVENTS"->S3_DATA_EVENTS|"EKS_AUDIT_LOGS"->EKS_AUDIT_LOGS|"EBS_MALWARE_PROTECTION"->EBS_MALWARE_PROTECTION|"RDS_LOGIN_EVENTS"->RDS_LOGIN_EVENTS|"LAMBDA_NETWORK_LOGS"->LAMBDA_NETWORK_LOGS|"EKS_RUNTIME_MONITORING"->EKS_RUNTIME_MONITORING|"RUNTIME_MONITORING"->RUNTIME_MONITORING|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 OrgFeature"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"OrgFeature"j)letto_json=simple_to_jsonto_valueendmoduleOrganizationFeatureStatisticsAdditionalConfigurations=structtypenonrect=OrganizationFeatureStatisticsAdditionalConfiguration.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:OrganizationFeatureStatisticsAdditionalConfiguration.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:OrganizationFeatureStatisticsAdditionalConfiguration.of_xml)letof_jsonj=list_of_json~kind:"OrganizationFeatureStatisticsAdditionalConfigurations"~of_json:OrganizationFeatureStatisticsAdditionalConfiguration.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleKubernetesAuditLogsConfigurationResult=structtypenonrect={status:DataSourceStatus.toption[@ocaml.doc"A value that describes whether Kubernetes audit logs are enabled as a data source."]}letmake?status=fun()->{status}letto_valuex=structure_to_value[("status",(Option.mapx.status~f:DataSourceStatus.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstatus=(Option.map~f:DataSourceStatus.of_xml)(Xml.childxml_arg0"status")inmake?status()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstatus=field_mapjson__"Status"DataSourceStatus.of_jsoninmake?status()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Describes whether Kubernetes audit logs are enabled as a data source."]moduleScanEc2InstanceWithFindingsResult=structtypenonrect={ebsVolumes:EbsVolumesResult.toption[@ocaml.doc"Describes the configuration of scanning EBS volumes as a data source."]}letmake?ebsVolumes=fun()->{ebsVolumes}letto_valuex=structure_to_value[("ebsVolumes",(Option.mapx.ebsVolumes~f:EbsVolumesResult.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letebsVolumes=(Option.map~f:EbsVolumesResult.of_xml)(Xml.childxml_arg0"ebsVolumes")inmake?ebsVolumes()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letebsVolumes=field_mapjson__"EbsVolumes"EbsVolumesResult.of_jsoninmake?ebsVolumes()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"An object that contains information on the status of whether Malware Protection for EC2 instances with findings will be enabled as a data source."]moduleMemberAdditionalConfigurationResults=structtypenonrect=MemberAdditionalConfigurationResult.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:MemberAdditionalConfigurationResult.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:MemberAdditionalConfigurationResult.of_xml)letof_jsonj=list_of_json~kind:"MemberAdditionalConfigurationResults"~of_json:MemberAdditionalConfigurationResult.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleVolumeDetails=structtypenonrect=VolumeDetail.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:VolumeDetail.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:VolumeDetail.of_xml)letof_jsonj=list_of_json~kind:"VolumeDetails"~of_json:VolumeDetail.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleEcsTaskDetails=structtypenonrect={arn:String_.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the task."];definitionArn:String_.toption[@ocaml.doc"The ARN of the task definition that creates the task."];version:String_.toption[@ocaml.doc"The version counter for the task."];taskCreatedAt:Timestamp.toption[@ocaml.doc"The Unix timestamp for the time when the task was created."];startedAt:Timestamp.toption[@ocaml.doc"The Unix timestamp for the time when the task started."];startedBy:String_.toption[@ocaml.doc"Contains the tag specified when a task is started."];tags:Tags.toption[@ocaml.doc"The tags of the ECS Task."];volumes:Volumes.toption[@ocaml.doc"The list of data volume definitions for the task."];containers:Containers.toption[@ocaml.doc"The containers that's associated with the task."];group:String_.toption[@ocaml.doc"The name of the task group that's associated with the task."];launchType:String_.toption[@ocaml.doc"A capacity on which the task is running. For example, Fargate and EC2."]}letmake?arn=fun?definitionArn->fun?version->fun?taskCreatedAt->fun?startedAt->fun?startedBy->fun?tags->fun?volumes->fun?containers->fun?group->fun?launchType->fun()->{arn;definitionArn;version;taskCreatedAt;startedAt;startedBy;tags;volumes;containers;group;launchType}letto_valuex=structure_to_value[("arn",(Option.mapx.arn~f:String_.to_value));("definitionArn",(Option.mapx.definitionArn~f:String_.to_value));("version",(Option.mapx.version~f:String_.to_value));("createdAt",(Option.mapx.taskCreatedAt~f:Timestamp.to_value));("startedAt",(Option.mapx.startedAt~f:Timestamp.to_value));("startedBy",(Option.mapx.startedBy~f:String_.to_value));("tags",(Option.mapx.tags~f:Tags.to_value));("volumes",(Option.mapx.volumes~f:Volumes.to_value));("containers",(Option.mapx.containers~f:Containers.to_value));("group",(Option.mapx.group~f:String_.to_value));("launchType",(Option.mapx.launchType~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letlaunchType=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"launchType")inletgroup=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"group")inletcontainers=(Option.map~f:Containers.of_xml)(Xml.childxml_arg0"containers")inletvolumes=(Option.map~f:Volumes.of_xml)(Xml.childxml_arg0"volumes")inlettags=(Option.map~f:Tags.of_xml)(Xml.childxml_arg0"tags")inletstartedBy=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"startedBy")inletstartedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"startedAt")inlettaskCreatedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"createdAt")inletversion=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"version")inletdefinitionArn=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"definitionArn")inletarn=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"arn")inmake?launchType?group?containers?volumes?tags?startedBy?startedAt?taskCreatedAt?version?definitionArn?arn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letlaunchType=field_mapjson__"LaunchType"String_.of_jsoninletgroup=field_mapjson__"Group"String_.of_jsoninletcontainers=field_mapjson__"Containers"Containers.of_jsoninletvolumes=field_mapjson__"Volumes"Volumes.of_jsoninlettags=field_mapjson__"Tags"Tags.of_jsoninletstartedBy=field_mapjson__"StartedBy"String_.of_jsoninletstartedAt=field_mapjson__"StartedAt"Timestamp.of_jsoninlettaskCreatedAt=field_mapjson__"TaskCreatedAt"Timestamp.of_jsoninletversion=field_mapjson__"Version"String_.of_jsoninletdefinitionArn=field_mapjson__"DefinitionArn"String_.of_jsoninletarn=field_mapjson__"Arn"String_.of_jsoninmake?launchType?group?containers?volumes?tags?startedBy?startedAt?taskCreatedAt?version?definitionArn?arn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the task in an ECS cluster."]moduleNetworkInterfaces=structtypenonrect=NetworkInterface.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:NetworkInterface.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:NetworkInterface.of_xml)letof_jsonj=list_of_json~kind:"NetworkInterfaces"~of_json:NetworkInterface.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleKubernetesUserDetails=structtypenonrect={username:String_.toption[@ocaml.doc"The username of the user who called the Kubernetes API."];uid:String_.toption[@ocaml.doc"The user ID of the user who called the Kubernetes API."];groups:Groups.toption[@ocaml.doc"The groups that include the user who called the Kubernetes API."];sessionName:SessionNameList.toption[@ocaml.doc"Entity that assumes the IAM role when Kubernetes RBAC permissions are assigned to that role."];impersonatedUser:ImpersonatedUser.toption[@ocaml.doc"Information about the impersonated user."]}letmake?username=fun?uid->fun?groups->fun?sessionName->fun?impersonatedUser->fun()->{username;uid;groups;sessionName;impersonatedUser}letto_valuex=structure_to_value[("username",(Option.mapx.username~f:String_.to_value));("uid",(Option.mapx.uid~f:String_.to_value));("groups",(Option.mapx.groups~f:Groups.to_value));("sessionName",(Option.mapx.sessionName~f:SessionNameList.to_value));("impersonatedUser",(Option.mapx.impersonatedUser~f:ImpersonatedUser.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letimpersonatedUser=(Option.map~f:ImpersonatedUser.of_xml)(Xml.childxml_arg0"impersonatedUser")inletsessionName=(Option.map~f:SessionNameList.of_xml)(Xml.childxml_arg0"sessionName")inletgroups=(Option.map~f:Groups.of_xml)(Xml.childxml_arg0"groups")inletuid=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"uid")inletusername=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"username")inmake?impersonatedUser?sessionName?groups?uid?username()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letimpersonatedUser=field_mapjson__"ImpersonatedUser"ImpersonatedUser.of_jsoninletsessionName=field_mapjson__"SessionName"SessionNameList.of_jsoninletgroups=field_mapjson__"Groups"Groups.of_jsoninletuid=field_mapjson__"Uid"String_.of_jsoninletusername=field_mapjson__"Username"String_.of_jsoninmake?impersonatedUser?sessionName?groups?uid?username()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Details about the Kubernetes user involved in a Kubernetes finding."]moduleKubernetesWorkloadDetails=structtypenonrect={name:String_.toption[@ocaml.doc"Kubernetes workload name."];type_:String_.toption[@ocaml.doc"Kubernetes workload type (e.g. Pod, Deployment, etc.)."];uid:String_.toption[@ocaml.doc"Kubernetes workload ID."];namespace:String_.toption[@ocaml.doc"Kubernetes namespace that the workload is part of."];hostNetwork:Boolean.toption[@ocaml.doc"Whether the hostNetwork flag is enabled for the pods included in the workload."];serviceAccountName:String_.toption[@ocaml.doc"The service account name that is associated with a Kubernetes workload."];containers:Containers.toption[@ocaml.doc"Containers running as part of the Kubernetes workload."];volumes:Volumes.toption[@ocaml.doc"Volumes used by the Kubernetes workload."];hostIPC:Boolean.toption[@ocaml.doc"Whether the host IPC flag is enabled for the pods in the workload."];hostPID:Boolean.toption[@ocaml.doc"Whether the host PID flag is enabled for the pods in the workload."]}letmake?name=fun?type_->fun?uid->fun?namespace->fun?hostNetwork->fun?serviceAccountName->fun?containers->fun?volumes->fun?hostIPC->fun?hostPID->fun()->{name;type_;uid;namespace;hostNetwork;serviceAccountName;containers;volumes;hostIPC;hostPID}letto_valuex=structure_to_value[("name",(Option.mapx.name~f:String_.to_value));("type",(Option.mapx.type_~f:String_.to_value));("uid",(Option.mapx.uid~f:String_.to_value));("namespace",(Option.mapx.namespace~f:String_.to_value));("hostNetwork",(Option.mapx.hostNetwork~f:Boolean.to_value));("serviceAccountName",(Option.mapx.serviceAccountName~f:String_.to_value));("containers",(Option.mapx.containers~f:Containers.to_value));("volumes",(Option.mapx.volumes~f:Volumes.to_value));("hostIPC",(Option.mapx.hostIPC~f:Boolean.to_value));("hostPID",(Option.mapx.hostPID~f:Boolean.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lethostPID=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"hostPID")inlethostIPC=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"hostIPC")inletvolumes=(Option.map~f:Volumes.of_xml)(Xml.childxml_arg0"volumes")inletcontainers=(Option.map~f:Containers.of_xml)(Xml.childxml_arg0"containers")inletserviceAccountName=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"serviceAccountName")inlethostNetwork=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"hostNetwork")inletnamespace=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"namespace")inletuid=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"uid")inlettype_=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"type")inletname=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"name")inmake?hostPID?hostIPC?volumes?containers?serviceAccountName?hostNetwork?namespace?uid?type_?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lethostPID=field_mapjson__"HostPID"Boolean.of_jsoninlethostIPC=field_mapjson__"HostIPC"Boolean.of_jsoninletvolumes=field_mapjson__"Volumes"Volumes.of_jsoninletcontainers=field_mapjson__"Containers"Containers.of_jsoninletserviceAccountName=field_mapjson__"ServiceAccountName"String_.of_jsoninlethostNetwork=field_mapjson__"HostNetwork"Boolean.of_jsoninletnamespace=field_mapjson__"Namespace"String_.of_jsoninletuid=field_mapjson__"Uid"String_.of_jsoninlettype_=field_mapjson__"Type"String_.of_jsoninletname=field_mapjson__"Name"String_.of_jsoninmake?hostPID?hostIPC?volumes?containers?serviceAccountName?hostNetwork?namespace?uid?type_?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Details about the Kubernetes workload involved in a Kubernetes finding."]moduleVpcConfig=structtypenonrect={subnetIds:SubnetIds.toption[@ocaml.doc"The identifiers of the subnets that are associated with your Lambda function."];vpcId:String_.toption[@ocaml.doc"The identifier of the Amazon Virtual Private Cloud."];securityGroups:SecurityGroups.toption[@ocaml.doc"The identifier of the security group attached to the Lambda function."]}letmake?subnetIds=fun?vpcId->fun?securityGroups->fun()->{subnetIds;vpcId;securityGroups}letto_valuex=structure_to_value[("subnetIds",(Option.mapx.subnetIds~f:SubnetIds.to_value));("vpcId",(Option.mapx.vpcId~f:String_.to_value));("securityGroups",(Option.mapx.securityGroups~f:SecurityGroups.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letsecurityGroups=(Option.map~f:SecurityGroups.of_xml)(Xml.childxml_arg0"securityGroups")inletvpcId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"vpcId")inletsubnetIds=(Option.map~f:SubnetIds.of_xml)(Xml.childxml_arg0"subnetIds")inmake?securityGroups?vpcId?subnetIds()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letsecurityGroups=field_mapjson__"SecurityGroups"SecurityGroups.of_jsoninletvpcId=field_mapjson__"VpcId"String_.of_jsoninletsubnetIds=field_mapjson__"SubnetIds"SubnetIds.of_jsoninmake?securityGroups?vpcId?subnetIds()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Amazon Virtual Private Cloud configuration details associated with your Lambda function."]moduleS3BucketDetail=structtypenonrect={arn:String_.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the S3 bucket."];name:String_.toption[@ocaml.doc"The name of the S3 bucket."];type_:String_.toption[@ocaml.doc"Describes whether the bucket is a source or destination bucket."];createdAt:Timestamp.toption[@ocaml.doc"The date and time the bucket was created at."];owner:Owner.toption[@ocaml.doc"The owner of the S3 bucket."];tags:Tags.toption[@ocaml.doc"All tags attached to the S3 bucket"];defaultServerSideEncryption:DefaultServerSideEncryption.toption[@ocaml.doc"Describes the server side encryption method used in the S3 bucket."];publicAccess:PublicAccess.toption[@ocaml.doc"Describes the public access policies that apply to the S3 bucket."];s3ObjectDetails:S3ObjectDetails.toption[@ocaml.doc"Information about the S3 object that was scanned."]}letmake?arn=fun?name->fun?type_->fun?createdAt->fun?owner->fun?tags->fun?defaultServerSideEncryption->fun?publicAccess->fun?s3ObjectDetails->fun()->{arn;name;type_;createdAt;owner;tags;defaultServerSideEncryption;publicAccess;s3ObjectDetails}letto_valuex=structure_to_value[("arn",(Option.mapx.arn~f:String_.to_value));("name",(Option.mapx.name~f:String_.to_value));("type",(Option.mapx.type_~f:String_.to_value));("createdAt",(Option.mapx.createdAt~f:Timestamp.to_value));("owner",(Option.mapx.owner~f:Owner.to_value));("tags",(Option.mapx.tags~f:Tags.to_value));("defaultServerSideEncryption",(Option.mapx.defaultServerSideEncryption~f:DefaultServerSideEncryption.to_value));("publicAccess",(Option.mapx.publicAccess~f:PublicAccess.to_value));("s3ObjectDetails",(Option.mapx.s3ObjectDetails~f:S3ObjectDetails.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lets3ObjectDetails=(Option.map~f:S3ObjectDetails.of_xml)(Xml.childxml_arg0"s3ObjectDetails")inletpublicAccess=(Option.map~f:PublicAccess.of_xml)(Xml.childxml_arg0"publicAccess")inletdefaultServerSideEncryption=(Option.map~f:DefaultServerSideEncryption.of_xml)(Xml.childxml_arg0"defaultServerSideEncryption")inlettags=(Option.map~f:Tags.of_xml)(Xml.childxml_arg0"tags")inletowner=(Option.map~f:Owner.of_xml)(Xml.childxml_arg0"owner")inletcreatedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"createdAt")inlettype_=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"type")inletname=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"name")inletarn=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"arn")inmake?s3ObjectDetails?publicAccess?defaultServerSideEncryption?tags?owner?createdAt?type_?name?arn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lets3ObjectDetails=field_mapjson__"S3ObjectDetails"S3ObjectDetails.of_jsoninletpublicAccess=field_mapjson__"PublicAccess"PublicAccess.of_jsoninletdefaultServerSideEncryption=field_mapjson__"DefaultServerSideEncryption"DefaultServerSideEncryption.of_jsoninlettags=field_mapjson__"Tags"Tags.of_jsoninletowner=field_mapjson__"Owner"Owner.of_jsoninletcreatedAt=field_mapjson__"CreatedAt"Timestamp.of_jsoninlettype_=field_mapjson__"Type"String_.of_jsoninletname=field_mapjson__"Name"String_.of_jsoninletarn=field_mapjson__"Arn"String_.of_jsoninmake?s3ObjectDetails?publicAccess?defaultServerSideEncryption?tags?owner?createdAt?type_?name?arn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information on the S3 bucket."]moduleAwsApiCallAction=structtypenonrect={api:String_.toption[@ocaml.doc"The Amazon Web Services API name."];callerType:String_.toption[@ocaml.doc"The Amazon Web Services API caller type."];domainDetails:DomainDetails.toption[@ocaml.doc"The domain information for the Amazon Web Services API call."];errorCode:String_.toption[@ocaml.doc"The error code of the failed Amazon Web Services API action."];userAgent:String_.toption[@ocaml.doc"The agent through which the API request was made."];remoteIpDetails:RemoteIpDetails.toption[@ocaml.doc"The remote IP information of the connection that initiated the Amazon Web Services API call."];serviceName:String_.toption[@ocaml.doc"The Amazon Web Services service name whose API was invoked."];remoteAccountDetails:RemoteAccountDetails.toption[@ocaml.doc"The details of the Amazon Web Services account that made the API call. This field appears if the call was made from outside your account."];affectedResources:AffectedResources.toption[@ocaml.doc"The details of the Amazon Web Services account that made the API call. This field identifies the resources that were affected by this API call."]}letmake?api=fun?callerType->fun?domainDetails->fun?errorCode->fun?userAgent->fun?remoteIpDetails->fun?serviceName->fun?remoteAccountDetails->fun?affectedResources->fun()->{api;callerType;domainDetails;errorCode;userAgent;remoteIpDetails;serviceName;remoteAccountDetails;affectedResources}letto_valuex=structure_to_value[("api",(Option.mapx.api~f:String_.to_value));("callerType",(Option.mapx.callerType~f:String_.to_value));("domainDetails",(Option.mapx.domainDetails~f:DomainDetails.to_value));("errorCode",(Option.mapx.errorCode~f:String_.to_value));("userAgent",(Option.mapx.userAgent~f:String_.to_value));("remoteIpDetails",(Option.mapx.remoteIpDetails~f:RemoteIpDetails.to_value));("serviceName",(Option.mapx.serviceName~f:String_.to_value));("remoteAccountDetails",(Option.mapx.remoteAccountDetails~f:RemoteAccountDetails.to_value));("affectedResources",(Option.mapx.affectedResources~f:AffectedResources.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaffectedResources=(Option.map~f:AffectedResources.of_xml)(Xml.childxml_arg0"affectedResources")inletremoteAccountDetails=(Option.map~f:RemoteAccountDetails.of_xml)(Xml.childxml_arg0"remoteAccountDetails")inletserviceName=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"serviceName")inletremoteIpDetails=(Option.map~f:RemoteIpDetails.of_xml)(Xml.childxml_arg0"remoteIpDetails")inletuserAgent=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"userAgent")inleterrorCode=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"errorCode")inletdomainDetails=(Option.map~f:DomainDetails.of_xml)(Xml.childxml_arg0"domainDetails")inletcallerType=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"callerType")inletapi=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"api")inmake?affectedResources?remoteAccountDetails?serviceName?remoteIpDetails?userAgent?errorCode?domainDetails?callerType?api()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaffectedResources=field_mapjson__"AffectedResources"AffectedResources.of_jsoninletremoteAccountDetails=field_mapjson__"RemoteAccountDetails"RemoteAccountDetails.of_jsoninletserviceName=field_mapjson__"ServiceName"String_.of_jsoninletremoteIpDetails=field_mapjson__"RemoteIpDetails"RemoteIpDetails.of_jsoninletuserAgent=field_mapjson__"UserAgent"String_.of_jsoninleterrorCode=field_mapjson__"ErrorCode"String_.of_jsoninletdomainDetails=field_mapjson__"DomainDetails"DomainDetails.of_jsoninletcallerType=field_mapjson__"CallerType"String_.of_jsoninletapi=field_mapjson__"Api"String_.of_jsoninmake?affectedResources?remoteAccountDetails?serviceName?remoteIpDetails?userAgent?errorCode?domainDetails?callerType?api()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the API action."]moduleDnsRequestAction=structtypenonrect={domain:String_.toption[@ocaml.doc"The domain information for the DNS query."];protocol:String_.toption[@ocaml.doc"The network connection protocol observed in the activity that prompted GuardDuty to generate the finding."];blocked:Boolean.toption[@ocaml.doc"Indicates whether the targeted port is blocked."];domainWithSuffix:String_.toption[@ocaml.doc"The second and top level domain involved in the activity that potentially prompted GuardDuty to generate this finding. For a list of top-level and second-level domains, see public suffix list."];vpcOwnerAccountId:AccountId.toption[@ocaml.doc"The Amazon Web Services account ID that owns the VPC through which the DNS request was made."]}letmake?domain=fun?protocol->fun?blocked->fun?domainWithSuffix->fun?vpcOwnerAccountId->fun()->{domain;protocol;blocked;domainWithSuffix;vpcOwnerAccountId}letto_valuex=structure_to_value[("domain",(Option.mapx.domain~f:String_.to_value));("protocol",(Option.mapx.protocol~f:String_.to_value));("blocked",(Option.mapx.blocked~f:Boolean.to_value));("domainWithSuffix",(Option.mapx.domainWithSuffix~f:String_.to_value));("vpcOwnerAccountId",(Option.mapx.vpcOwnerAccountId~f:AccountId.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letvpcOwnerAccountId=(Option.map~f:AccountId.of_xml)(Xml.childxml_arg0"vpcOwnerAccountId")inletdomainWithSuffix=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"domainWithSuffix")inletblocked=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"blocked")inletprotocol=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"protocol")inletdomain=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"domain")inmake?vpcOwnerAccountId?domainWithSuffix?blocked?protocol?domain()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letvpcOwnerAccountId=field_mapjson__"VpcOwnerAccountId"AccountId.of_jsoninletdomainWithSuffix=field_mapjson__"DomainWithSuffix"String_.of_jsoninletblocked=field_mapjson__"Blocked"Boolean.of_jsoninletprotocol=field_mapjson__"Protocol"String_.of_jsoninletdomain=field_mapjson__"Domain"String_.of_jsoninmake?vpcOwnerAccountId?domainWithSuffix?blocked?protocol?domain()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the DNS_REQUEST action described in this finding."]moduleKubernetesApiCallAction=structtypenonrect={requestUri:String_.toption[@ocaml.doc"The Kubernetes API request URI."];verb:String_.toption[@ocaml.doc"The Kubernetes API request HTTP verb."];resource:String_.toption[@ocaml.doc"The resource component in the Kubernetes API call action."];subresource:String_.toption[@ocaml.doc"The name of the sub-resource in the Kubernetes API call action."];namespace:String_.toption[@ocaml.doc"The name of the namespace where the Kubernetes API call action takes place."];resourceName:String_.toption[@ocaml.doc"The name of the resource in the Kubernetes API call action."];sourceIps:SourceIps.toption[@ocaml.doc"The IP of the Kubernetes API caller and the IPs of any proxies or load balancers between the caller and the API endpoint."];userAgent:String_.toption[@ocaml.doc"The user agent of the caller of the Kubernetes API."];remoteIpDetails:RemoteIpDetails.toption;statusCode:Integer.toption[@ocaml.doc"The resulting HTTP response code of the Kubernetes API call action."];parameters:String_.toption[@ocaml.doc"Parameters related to the Kubernetes API call action."]}letmake?requestUri=fun?verb->fun?resource->fun?subresource->fun?namespace->fun?resourceName->fun?sourceIps->fun?userAgent->fun?remoteIpDetails->fun?statusCode->fun?parameters->fun()->{requestUri;verb;resource;subresource;namespace;resourceName;sourceIps;userAgent;remoteIpDetails;statusCode;parameters}letto_valuex=structure_to_value[("requestUri",(Option.mapx.requestUri~f:String_.to_value));("verb",(Option.mapx.verb~f:String_.to_value));("resource",(Option.mapx.resource~f:String_.to_value));("subresource",(Option.mapx.subresource~f:String_.to_value));("namespace",(Option.mapx.namespace~f:String_.to_value));("resourceName",(Option.mapx.resourceName~f:String_.to_value));("sourceIPs",(Option.mapx.sourceIps~f:SourceIps.to_value));("userAgent",(Option.mapx.userAgent~f:String_.to_value));("remoteIpDetails",(Option.mapx.remoteIpDetails~f:RemoteIpDetails.to_value));("statusCode",(Option.mapx.statusCode~f:Integer.to_value));("parameters",(Option.mapx.parameters~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letparameters=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"parameters")inletstatusCode=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"statusCode")inletremoteIpDetails=(Option.map~f:RemoteIpDetails.of_xml)(Xml.childxml_arg0"remoteIpDetails")inletuserAgent=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"userAgent")inletsourceIps=(Option.map~f:SourceIps.of_xml)(Xml.childxml_arg0"sourceIPs")inletresourceName=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"resourceName")inletnamespace=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"namespace")inletsubresource=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"subresource")inletresource=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"resource")inletverb=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"verb")inletrequestUri=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"requestUri")inmake?parameters?statusCode?remoteIpDetails?userAgent?sourceIps?resourceName?namespace?subresource?resource?verb?requestUri()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letparameters=field_mapjson__"Parameters"String_.of_jsoninletstatusCode=field_mapjson__"StatusCode"Integer.of_jsoninletremoteIpDetails=field_mapjson__"RemoteIpDetails"RemoteIpDetails.of_jsoninletuserAgent=field_mapjson__"UserAgent"String_.of_jsoninletsourceIps=field_mapjson__"SourceIps"SourceIps.of_jsoninletresourceName=field_mapjson__"ResourceName"String_.of_jsoninletnamespace=field_mapjson__"Namespace"String_.of_jsoninletsubresource=field_mapjson__"Subresource"String_.of_jsoninletresource=field_mapjson__"Resource"String_.of_jsoninletverb=field_mapjson__"Verb"String_.of_jsoninletrequestUri=field_mapjson__"RequestUri"String_.of_jsoninmake?parameters?statusCode?remoteIpDetails?userAgent?sourceIps?resourceName?namespace?subresource?resource?verb?requestUri()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the Kubernetes API call action described in this finding."]moduleKubernetesPermissionCheckedDetails=structtypenonrect={verb:String_.toption[@ocaml.doc"The verb component of the Kubernetes API call. For example, when you check whether or not you have the permission to call the CreatePod API, the verb component will be Create."];resource:String_.toption[@ocaml.doc"The Kubernetes resource with which your Kubernetes API call will interact."];namespace:String_.toption[@ocaml.doc"The namespace where the Kubernetes API action will take place."];allowed:Boolean.toption[@ocaml.doc"Information whether the user has the permission to call the Kubernetes API."]}letmake?verb=fun?resource->fun?namespace->fun?allowed->fun()->{verb;resource;namespace;allowed}letto_valuex=structure_to_value[("verb",(Option.mapx.verb~f:String_.to_value));("resource",(Option.mapx.resource~f:String_.to_value));("namespace",(Option.mapx.namespace~f:String_.to_value));("allowed",(Option.mapx.allowed~f:Boolean.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letallowed=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"allowed")inletnamespace=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"namespace")inletresource=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"resource")inletverb=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"verb")inmake?allowed?namespace?resource?verb()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letallowed=field_mapjson__"Allowed"Boolean.of_jsoninletnamespace=field_mapjson__"Namespace"String_.of_jsoninletresource=field_mapjson__"Resource"String_.of_jsoninletverb=field_mapjson__"Verb"String_.of_jsoninmake?allowed?namespace?resource?verb()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the Kubernetes API for which you check if you have permission to call."]moduleKubernetesRoleBindingDetails=structtypenonrect={kind:String_.toption[@ocaml.doc"The kind of the role. For role binding, this value will be RoleBinding."];name:String_.toption[@ocaml.doc"The name of the RoleBinding."];uid:String_.toption[@ocaml.doc"The unique identifier of the role binding."];roleRefName:String_.toption[@ocaml.doc"The name of the role being referenced. This must match the name of the Role or ClusterRole that you want to bind to."];roleRefKind:String_.toption[@ocaml.doc"The type of the role being referenced. This could be either Role or ClusterRole."]}letmake?kind=fun?name->fun?uid->fun?roleRefName->fun?roleRefKind->fun()->{kind;name;uid;roleRefName;roleRefKind}letto_valuex=structure_to_value[("kind",(Option.mapx.kind~f:String_.to_value));("name",(Option.mapx.name~f:String_.to_value));("uid",(Option.mapx.uid~f:String_.to_value));("roleRefName",(Option.mapx.roleRefName~f:String_.to_value));("roleRefKind",(Option.mapx.roleRefKind~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letroleRefKind=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"roleRefKind")inletroleRefName=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"roleRefName")inletuid=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"uid")inletname=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"name")inletkind=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"kind")inmake?roleRefKind?roleRefName?uid?name?kind()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letroleRefKind=field_mapjson__"RoleRefKind"String_.of_jsoninletroleRefName=field_mapjson__"RoleRefName"String_.of_jsoninletuid=field_mapjson__"Uid"String_.of_jsoninletname=field_mapjson__"Name"String_.of_jsoninletkind=field_mapjson__"Kind"String_.of_jsoninmake?roleRefKind?roleRefName?uid?name?kind()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the role binding that grants the permission defined in a Kubernetes role."]moduleKubernetesRoleDetails=structtypenonrect={kind:String_.toption[@ocaml.doc"The kind of role. For this API, the value of kind will be Role."];name:String_.toption[@ocaml.doc"The name of the Kubernetes role."];uid:String_.toption[@ocaml.doc"The unique identifier of the Kubernetes role name."]}letmake?kind=fun?name->fun?uid->fun()->{kind;name;uid}letto_valuex=structure_to_value[("kind",(Option.mapx.kind~f:String_.to_value));("name",(Option.mapx.name~f:String_.to_value));("uid",(Option.mapx.uid~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letuid=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"uid")inletname=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"name")inletkind=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"kind")inmake?uid?name?kind()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letuid=field_mapjson__"Uid"String_.of_jsoninletname=field_mapjson__"Name"String_.of_jsoninletkind=field_mapjson__"Kind"String_.of_jsoninmake?uid?name?kind()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the Kubernetes role name and role type."]moduleNetworkConnectionAction=structtypenonrect={blocked:Boolean.toption[@ocaml.doc"Indicates whether EC2 blocked the network connection to your instance."];connectionDirection:String_.toption[@ocaml.doc"The network connection direction."];localPortDetails:LocalPortDetails.toption[@ocaml.doc"The local port information of the connection."];protocol:String_.toption[@ocaml.doc"The network connection protocol."];localIpDetails:LocalIpDetails.toption[@ocaml.doc"The local IP information of the connection."];localNetworkInterface:String_.toption[@ocaml.doc"The EC2 instance's local elastic network interface utilized for the connection."];remoteIpDetails:RemoteIpDetails.toption[@ocaml.doc"The remote IP information of the connection."];remotePortDetails:RemotePortDetails.toption[@ocaml.doc"The remote port information of the connection."]}letmake?blocked=fun?connectionDirection->fun?localPortDetails->fun?protocol->fun?localIpDetails->fun?localNetworkInterface->fun?remoteIpDetails->fun?remotePortDetails->fun()->{blocked;connectionDirection;localPortDetails;protocol;localIpDetails;localNetworkInterface;remoteIpDetails;remotePortDetails}letto_valuex=structure_to_value[("blocked",(Option.mapx.blocked~f:Boolean.to_value));("connectionDirection",(Option.mapx.connectionDirection~f:String_.to_value));("localPortDetails",(Option.mapx.localPortDetails~f:LocalPortDetails.to_value));("protocol",(Option.mapx.protocol~f:String_.to_value));("localIpDetails",(Option.mapx.localIpDetails~f:LocalIpDetails.to_value));("localNetworkInterface",(Option.mapx.localNetworkInterface~f:String_.to_value));("remoteIpDetails",(Option.mapx.remoteIpDetails~f:RemoteIpDetails.to_value));("remotePortDetails",(Option.mapx.remotePortDetails~f:RemotePortDetails.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letremotePortDetails=(Option.map~f:RemotePortDetails.of_xml)(Xml.childxml_arg0"remotePortDetails")inletremoteIpDetails=(Option.map~f:RemoteIpDetails.of_xml)(Xml.childxml_arg0"remoteIpDetails")inletlocalNetworkInterface=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"localNetworkInterface")inletlocalIpDetails=(Option.map~f:LocalIpDetails.of_xml)(Xml.childxml_arg0"localIpDetails")inletprotocol=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"protocol")inletlocalPortDetails=(Option.map~f:LocalPortDetails.of_xml)(Xml.childxml_arg0"localPortDetails")inletconnectionDirection=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"connectionDirection")inletblocked=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"blocked")inmake?remotePortDetails?remoteIpDetails?localNetworkInterface?localIpDetails?protocol?localPortDetails?connectionDirection?blocked()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letremotePortDetails=field_mapjson__"RemotePortDetails"RemotePortDetails.of_jsoninletremoteIpDetails=field_mapjson__"RemoteIpDetails"RemoteIpDetails.of_jsoninletlocalNetworkInterface=field_mapjson__"LocalNetworkInterface"String_.of_jsoninletlocalIpDetails=field_mapjson__"LocalIpDetails"LocalIpDetails.of_jsoninletprotocol=field_mapjson__"Protocol"String_.of_jsoninletlocalPortDetails=field_mapjson__"LocalPortDetails"LocalPortDetails.of_jsoninletconnectionDirection=field_mapjson__"ConnectionDirection"String_.of_jsoninletblocked=field_mapjson__"Blocked"Boolean.of_jsoninmake?remotePortDetails?remoteIpDetails?localNetworkInterface?localIpDetails?protocol?localPortDetails?connectionDirection?blocked()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the NETWORK_CONNECTION action described in the finding."]modulePortProbeAction=structtypenonrect={blocked:Boolean.toption[@ocaml.doc"Indicates whether EC2 blocked the port probe to the instance, such as with an ACL."];portProbeDetails:PortProbeDetails.toption[@ocaml.doc"A list of objects related to port probe details."]}letmake?blocked=fun?portProbeDetails->fun()->{blocked;portProbeDetails}letto_valuex=structure_to_value[("blocked",(Option.mapx.blocked~f:Boolean.to_value));("portProbeDetails",(Option.mapx.portProbeDetails~f:PortProbeDetails.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letportProbeDetails=(Option.map~f:PortProbeDetails.of_xml)(Xml.childxml_arg0"portProbeDetails")inletblocked=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"blocked")inmake?portProbeDetails?blocked()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letportProbeDetails=field_mapjson__"PortProbeDetails"PortProbeDetails.of_jsoninletblocked=field_mapjson__"Blocked"Boolean.of_jsoninmake?portProbeDetails?blocked()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the PORT_PROBE action described in the finding."]moduleRdsLoginAttemptAction=structtypenonrect={remoteIpDetails:RemoteIpDetails.toption;loginAttributes:LoginAttributes.toption[@ocaml.doc"Indicates the login attributes used in the login attempt."]}letmake?remoteIpDetails=fun?loginAttributes->fun()->{remoteIpDetails;loginAttributes}letto_valuex=structure_to_value[("remoteIpDetails",(Option.mapx.remoteIpDetails~f:RemoteIpDetails.to_value));("LoginAttributes",(Option.mapx.loginAttributes~f:LoginAttributes.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letloginAttributes=(Option.map~f:LoginAttributes.of_xml)(Xml.childxml_arg0"LoginAttributes")inletremoteIpDetails=(Option.map~f:RemoteIpDetails.of_xml)(Xml.childxml_arg0"remoteIpDetails")inmake?loginAttributes?remoteIpDetails()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letloginAttributes=field_mapjson__"LoginAttributes"LoginAttributes.of_jsoninletremoteIpDetails=field_mapjson__"RemoteIpDetails"RemoteIpDetails.of_jsoninmake?loginAttributes?remoteIpDetails()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Indicates that a login attempt was made to the potentially compromised database from a remote IP address."]moduleAnomaly=structtypenonrect={profiles:AnomalyProfiles.toption[@ocaml.doc"Information about the types of profiles."];unusual:AnomalyUnusual.toption[@ocaml.doc"Information about the behavior of the anomalies."]}letmake?profiles=fun?unusual->fun()->{profiles;unusual}letto_valuex=structure_to_value[("profiles",(Option.mapx.profiles~f:AnomalyProfiles.to_value));("unusual",(Option.mapx.unusual~f:AnomalyUnusual.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letunusual=(Option.map~f:AnomalyUnusual.of_xml)(Xml.childxml_arg0"unusual")inletprofiles=(Option.map~f:AnomalyProfiles.of_xml)(Xml.childxml_arg0"profiles")inmake?unusual?profiles()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letunusual=field_mapjson__"Unusual"AnomalyUnusual.of_jsoninletprofiles=field_mapjson__"Profiles"AnomalyProfiles.of_jsoninmake?unusual?profiles()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the anomalies."]moduleSequence=structtypenonrect={uid:String_.toption[@ocaml.doc"Unique identifier of the attack sequence."];description:SequenceDescription.toption[@ocaml.doc"Description of the attack sequence."];actors:Actors.toption[@ocaml.doc"Contains information about the actors involved in the attack sequence."];resources:Resources.toption[@ocaml.doc"Contains information about the resources involved in the attack sequence."];endpoints:NetworkEndpoints.toption[@ocaml.doc"Contains information about the network endpoints that were used in the attack sequence."];signals:Signals.toption[@ocaml.doc"Contains information about the signals involved in the attack sequence."];sequenceIndicators:Indicators.toption[@ocaml.doc"Contains information about the indicators observed in the attack sequence."];additionalSequenceTypes:AdditionalSequenceTypes.toption[@ocaml.doc"Additional types of sequences that may be associated with the attack sequence finding, providing further context about the nature of the detected threat."]}letmake?uid=fun?description->fun?actors->fun?resources->fun?endpoints->fun?signals->fun?sequenceIndicators->fun?additionalSequenceTypes->fun()->{uid;description;actors;resources;endpoints;signals;sequenceIndicators;additionalSequenceTypes}letto_valuex=structure_to_value[("uid",(Option.mapx.uid~f:String_.to_value));("description",(Option.mapx.description~f:SequenceDescription.to_value));("actors",(Option.mapx.actors~f:Actors.to_value));("resources",(Option.mapx.resources~f:Resources.to_value));("endpoints",(Option.mapx.endpoints~f:NetworkEndpoints.to_value));("signals",(Option.mapx.signals~f:Signals.to_value));("sequenceIndicators",(Option.mapx.sequenceIndicators~f:Indicators.to_value));("additionalSequenceTypes",(Option.mapx.additionalSequenceTypes~f:AdditionalSequenceTypes.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letadditionalSequenceTypes=(Option.map~f:AdditionalSequenceTypes.of_xml)(Xml.childxml_arg0"additionalSequenceTypes")inletsequenceIndicators=(Option.map~f:Indicators.of_xml)(Xml.childxml_arg0"sequenceIndicators")inletsignals=(Option.map~f:Signals.of_xml)(Xml.childxml_arg0"signals")inletendpoints=(Option.map~f:NetworkEndpoints.of_xml)(Xml.childxml_arg0"endpoints")inletresources=(Option.map~f:Resources.of_xml)(Xml.childxml_arg0"resources")inletactors=(Option.map~f:Actors.of_xml)(Xml.childxml_arg0"actors")inletdescription=(Option.map~f:SequenceDescription.of_xml)(Xml.childxml_arg0"description")inletuid=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"uid")inmake?additionalSequenceTypes?sequenceIndicators?signals?endpoints?resources?actors?description?uid()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letadditionalSequenceTypes=field_mapjson__"AdditionalSequenceTypes"AdditionalSequenceTypes.of_jsoninletsequenceIndicators=field_mapjson__"SequenceIndicators"Indicators.of_jsoninletsignals=field_mapjson__"Signals"Signals.of_jsoninletendpoints=field_mapjson__"Endpoints"NetworkEndpoints.of_jsoninletresources=field_mapjson__"Resources"Resources.of_jsoninletactors=field_mapjson__"Actors"Actors.of_jsoninletdescription=field_mapjson__"Description"SequenceDescription.of_jsoninletuid=field_mapjson__"Uid"String_.of_jsoninmake?additionalSequenceTypes?sequenceIndicators?signals?endpoints?resources?actors?description?uid()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the GuardDuty attack sequence finding."]moduleScanDetections=structtypenonrect={scannedItemCount:ScannedItemCount.toption[@ocaml.doc"Total number of scanned files."];threatsDetectedItemCount:ThreatsDetectedItemCount.toption[@ocaml.doc"Total number of infected files."];highestSeverityThreatDetails:HighestSeverityThreatDetails.toption[@ocaml.doc"Details of the highest severity threat detected during malware scan and number of infected files."];threatDetectedByName:ThreatDetectedByName.toption[@ocaml.doc"Contains details about identified threats organized by threat name."]}letmake?scannedItemCount=fun?threatsDetectedItemCount->fun?highestSeverityThreatDetails->fun?threatDetectedByName->fun()->{scannedItemCount;threatsDetectedItemCount;highestSeverityThreatDetails;threatDetectedByName}letto_valuex=structure_to_value[("scannedItemCount",(Option.mapx.scannedItemCount~f:ScannedItemCount.to_value));("threatsDetectedItemCount",(Option.mapx.threatsDetectedItemCount~f:ThreatsDetectedItemCount.to_value));("highestSeverityThreatDetails",(Option.mapx.highestSeverityThreatDetails~f:HighestSeverityThreatDetails.to_value));("threatDetectedByName",(Option.mapx.threatDetectedByName~f:ThreatDetectedByName.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letthreatDetectedByName=(Option.map~f:ThreatDetectedByName.of_xml)(Xml.childxml_arg0"threatDetectedByName")inlethighestSeverityThreatDetails=(Option.map~f:HighestSeverityThreatDetails.of_xml)(Xml.childxml_arg0"highestSeverityThreatDetails")inletthreatsDetectedItemCount=(Option.map~f:ThreatsDetectedItemCount.of_xml)(Xml.childxml_arg0"threatsDetectedItemCount")inletscannedItemCount=(Option.map~f:ScannedItemCount.of_xml)(Xml.childxml_arg0"scannedItemCount")inmake?threatDetectedByName?highestSeverityThreatDetails?threatsDetectedItemCount?scannedItemCount()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letthreatDetectedByName=field_mapjson__"ThreatDetectedByName"ThreatDetectedByName.of_jsoninlethighestSeverityThreatDetails=field_mapjson__"HighestSeverityThreatDetails"HighestSeverityThreatDetails.of_jsoninletthreatsDetectedItemCount=field_mapjson__"ThreatsDetectedItemCount"ThreatsDetectedItemCount.of_jsoninletscannedItemCount=field_mapjson__"ScannedItemCount"ScannedItemCount.of_jsoninmake?threatDetectedByName?highestSeverityThreatDetails?threatsDetectedItemCount?scannedItemCount()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains a complete view providing malware scan result details."]moduleScanType=structtypenonrect=|GUARDDUTY_INITIATED|ON_DEMAND|Non_static_idofstringletmakei=iletto_string=function|GUARDDUTY_INITIATED->"GUARDDUTY_INITIATED"|ON_DEMAND->"ON_DEMAND"|Non_static_ids->sletof_string=function|"GUARDDUTY_INITIATED"->GUARDDUTY_INITIATED|"ON_DEMAND"->ON_DEMAND|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 ScanType"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ScanType"j)letto_json=simple_to_jsonto_valueendmoduleSources=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:"Sources"~of_json:String_.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleThreatIntelligenceDetails=structtypenonrect=ThreatIntelligenceDetail.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ThreatIntelligenceDetail.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:ThreatIntelligenceDetail.of_xml)letof_jsonj=list_of_json~kind:"ThreatIntelligenceDetails"~of_json:ThreatIntelligenceDetail.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleMalwareProtectionFindingsScanConfiguration=structtypenonrect={triggerType:TriggerType.toption[@ocaml.doc"The event that triggered the malware scan."];incrementalScanDetails:IncrementalScanDetails.toption}letmake?triggerType=fun?incrementalScanDetails->fun()->{triggerType;incrementalScanDetails}letto_valuex=structure_to_value[("triggerType",(Option.mapx.triggerType~f:TriggerType.to_value));("incrementalScanDetails",(Option.mapx.incrementalScanDetails~f:IncrementalScanDetails.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letincrementalScanDetails=(Option.map~f:IncrementalScanDetails.of_xml)(Xml.childxml_arg0"incrementalScanDetails")inlettriggerType=(Option.map~f:TriggerType.of_xml)(Xml.childxml_arg0"triggerType")inmake?incrementalScanDetails?triggerType()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letincrementalScanDetails=field_mapjson__"IncrementalScanDetails"IncrementalScanDetails.of_jsoninlettriggerType=field_mapjson__"TriggerType"TriggerType.of_jsoninmake?incrementalScanDetails?triggerType()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains finding configuration details about the malware scan."]moduleMalwareProtectionScanType=structtypenonrect=|BACKUP_INITIATED|ON_DEMAND|GUARDDUTY_INITIATED|Non_static_idofstringletmakei=iletto_string=function|BACKUP_INITIATED->"BACKUP_INITIATED"|ON_DEMAND->"ON_DEMAND"|GUARDDUTY_INITIATED->"GUARDDUTY_INITIATED"|Non_static_ids->sletof_string=function|"BACKUP_INITIATED"->BACKUP_INITIATED|"ON_DEMAND"->ON_DEMAND|"GUARDDUTY_INITIATED"->GUARDDUTY_INITIATED|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 MalwareProtectionScanType"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"MalwareProtectionScanType"j)letto_json=simple_to_jsonto_valueendmoduleScanCategory=structtypenonrect=|FULL_SCAN|INCREMENTAL_SCAN|Non_static_idofstringletmakei=iletto_string=function|FULL_SCAN->"FULL_SCAN"|INCREMENTAL_SCAN->"INCREMENTAL_SCAN"|Non_static_ids->sletof_string=function|"FULL_SCAN"->FULL_SCAN|"INCREMENTAL_SCAN"->INCREMENTAL_SCAN|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 ScanCategory"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ScanCategory"j)letto_json=simple_to_jsonto_valueendmoduleThreats=structtypenonrect=Threat.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:Threat.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:Threat.of_xml)letof_jsonj=list_of_json~kind:"Threats"~of_json:Threat.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleRuntimeContext=structtypenonrect={modifyingProcess:ProcessDetails.toption[@ocaml.doc"Information about the process that modified the current process. This is available for multiple finding types."];modifiedAt:Timestamp.toption[@ocaml.doc"The timestamp at which the process modified the current process. The timestamp is in UTC date string format."];scriptPath:String_.toption[@ocaml.doc"The path to the script that was executed."];libraryPath:String_.toption[@ocaml.doc"The path to the new library that was loaded."];ldPreloadValue:String_.toption[@ocaml.doc"The value of the LD_PRELOAD environment variable."];socketPath:String_.toption[@ocaml.doc"The path to the docket socket that was accessed."];runcBinaryPath:String_.toption[@ocaml.doc"The path to the leveraged runc implementation."];releaseAgentPath:String_.toption[@ocaml.doc"The path in the container that modified the release agent file."];mountSource:String_.toption[@ocaml.doc"The path on the host that is mounted by the container."];mountTarget:String_.toption[@ocaml.doc"The path in the container that is mapped to the host directory."];fileSystemType:String_.toption[@ocaml.doc"Represents the type of mounted fileSystem."];flags:FlagsList.toption[@ocaml.doc"Represents options that control the behavior of a runtime operation or action. For example, a filesystem mount operation may contain a read-only flag."];moduleName:String_.toption[@ocaml.doc"The name of the module loaded into the kernel."];moduleFilePath:String_.toption[@ocaml.doc"The path to the module loaded into the kernel."];moduleSha256:String_.toption[@ocaml.doc"The SHA256 hash of the module."];shellHistoryFilePath:String_.toption[@ocaml.doc"The path to the modified shell history file."];targetProcess:ProcessDetails.toption[@ocaml.doc"Information about the process that had its memory overwritten by the current process."];addressFamily:String_.toption[@ocaml.doc"Represents the communication protocol associated with the address. For example, the address family AF_INET is used for IP version of 4 protocol."];ianaProtocolNumber:Integer.toption[@ocaml.doc"Specifies a particular protocol within the address family. Usually there is a single protocol in address families. For example, the address family AF_INET only has the IP protocol."];memoryRegions:MemoryRegionsList.toption[@ocaml.doc"Specifies the Region of a process's address space such as stack and heap."];toolName:String_.toption[@ocaml.doc"Name of the potentially suspicious tool."];toolCategory:String_.toption[@ocaml.doc"Category that the tool belongs to. Some of the examples are Backdoor Tool, Pentest Tool, Network Scanner, and Network Sniffer."];serviceName:String_.toption[@ocaml.doc"Name of the security service that has been potentially disabled."];commandLineExample:String_.toption[@ocaml.doc"Example of the command line involved in the suspicious activity."];threatFilePath:String_.toption[@ocaml.doc"The suspicious file path for which the threat intelligence details were found."]}letmake?modifyingProcess=fun?modifiedAt->fun?scriptPath->fun?libraryPath->fun?ldPreloadValue->fun?socketPath->fun?runcBinaryPath->fun?releaseAgentPath->fun?mountSource->fun?mountTarget->fun?fileSystemType->fun?flags->fun?moduleName->fun?moduleFilePath->fun?moduleSha256->fun?shellHistoryFilePath->fun?targetProcess->fun?addressFamily->fun?ianaProtocolNumber->fun?memoryRegions->fun?toolName->fun?toolCategory->fun?serviceName->fun?commandLineExample->fun?threatFilePath->fun()->{modifyingProcess;modifiedAt;scriptPath;libraryPath;ldPreloadValue;socketPath;runcBinaryPath;releaseAgentPath;mountSource;mountTarget;fileSystemType;flags;moduleName;moduleFilePath;moduleSha256;shellHistoryFilePath;targetProcess;addressFamily;ianaProtocolNumber;memoryRegions;toolName;toolCategory;serviceName;commandLineExample;threatFilePath}letto_valuex=structure_to_value[("modifyingProcess",(Option.mapx.modifyingProcess~f:ProcessDetails.to_value));("modifiedAt",(Option.mapx.modifiedAt~f:Timestamp.to_value));("scriptPath",(Option.mapx.scriptPath~f:String_.to_value));("libraryPath",(Option.mapx.libraryPath~f:String_.to_value));("ldPreloadValue",(Option.mapx.ldPreloadValue~f:String_.to_value));("socketPath",(Option.mapx.socketPath~f:String_.to_value));("runcBinaryPath",(Option.mapx.runcBinaryPath~f:String_.to_value));("releaseAgentPath",(Option.mapx.releaseAgentPath~f:String_.to_value));("mountSource",(Option.mapx.mountSource~f:String_.to_value));("mountTarget",(Option.mapx.mountTarget~f:String_.to_value));("fileSystemType",(Option.mapx.fileSystemType~f:String_.to_value));("flags",(Option.mapx.flags~f:FlagsList.to_value));("moduleName",(Option.mapx.moduleName~f:String_.to_value));("moduleFilePath",(Option.mapx.moduleFilePath~f:String_.to_value));("moduleSha256",(Option.mapx.moduleSha256~f:String_.to_value));("shellHistoryFilePath",(Option.mapx.shellHistoryFilePath~f:String_.to_value));("targetProcess",(Option.mapx.targetProcess~f:ProcessDetails.to_value));("addressFamily",(Option.mapx.addressFamily~f:String_.to_value));("ianaProtocolNumber",(Option.mapx.ianaProtocolNumber~f:Integer.to_value));("memoryRegions",(Option.mapx.memoryRegions~f:MemoryRegionsList.to_value));("toolName",(Option.mapx.toolName~f:String_.to_value));("toolCategory",(Option.mapx.toolCategory~f:String_.to_value));("serviceName",(Option.mapx.serviceName~f:String_.to_value));("commandLineExample",(Option.mapx.commandLineExample~f:String_.to_value));("threatFilePath",(Option.mapx.threatFilePath~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letthreatFilePath=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"threatFilePath")inletcommandLineExample=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"commandLineExample")inletserviceName=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"serviceName")inlettoolCategory=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"toolCategory")inlettoolName=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"toolName")inletmemoryRegions=(Option.map~f:MemoryRegionsList.of_xml)(Xml.childxml_arg0"memoryRegions")inletianaProtocolNumber=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"ianaProtocolNumber")inletaddressFamily=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"addressFamily")inlettargetProcess=(Option.map~f:ProcessDetails.of_xml)(Xml.childxml_arg0"targetProcess")inletshellHistoryFilePath=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"shellHistoryFilePath")inletmoduleSha256=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"moduleSha256")inletmoduleFilePath=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"moduleFilePath")inletmoduleName=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"moduleName")inletflags=(Option.map~f:FlagsList.of_xml)(Xml.childxml_arg0"flags")inletfileSystemType=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"fileSystemType")inletmountTarget=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"mountTarget")inletmountSource=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"mountSource")inletreleaseAgentPath=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"releaseAgentPath")inletruncBinaryPath=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"runcBinaryPath")inletsocketPath=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"socketPath")inletldPreloadValue=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"ldPreloadValue")inletlibraryPath=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"libraryPath")inletscriptPath=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"scriptPath")inletmodifiedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"modifiedAt")inletmodifyingProcess=(Option.map~f:ProcessDetails.of_xml)(Xml.childxml_arg0"modifyingProcess")inmake?threatFilePath?commandLineExample?serviceName?toolCategory?toolName?memoryRegions?ianaProtocolNumber?addressFamily?targetProcess?shellHistoryFilePath?moduleSha256?moduleFilePath?moduleName?flags?fileSystemType?mountTarget?mountSource?releaseAgentPath?runcBinaryPath?socketPath?ldPreloadValue?libraryPath?scriptPath?modifiedAt?modifyingProcess()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letthreatFilePath=field_mapjson__"ThreatFilePath"String_.of_jsoninletcommandLineExample=field_mapjson__"CommandLineExample"String_.of_jsoninletserviceName=field_mapjson__"ServiceName"String_.of_jsoninlettoolCategory=field_mapjson__"ToolCategory"String_.of_jsoninlettoolName=field_mapjson__"ToolName"String_.of_jsoninletmemoryRegions=field_mapjson__"MemoryRegions"MemoryRegionsList.of_jsoninletianaProtocolNumber=field_mapjson__"IanaProtocolNumber"Integer.of_jsoninletaddressFamily=field_mapjson__"AddressFamily"String_.of_jsoninlettargetProcess=field_mapjson__"TargetProcess"ProcessDetails.of_jsoninletshellHistoryFilePath=field_mapjson__"ShellHistoryFilePath"String_.of_jsoninletmoduleSha256=field_mapjson__"ModuleSha256"String_.of_jsoninletmoduleFilePath=field_mapjson__"ModuleFilePath"String_.of_jsoninletmoduleName=field_mapjson__"ModuleName"String_.of_jsoninletflags=field_mapjson__"Flags"FlagsList.of_jsoninletfileSystemType=field_mapjson__"FileSystemType"String_.of_jsoninletmountTarget=field_mapjson__"MountTarget"String_.of_jsoninletmountSource=field_mapjson__"MountSource"String_.of_jsoninletreleaseAgentPath=field_mapjson__"ReleaseAgentPath"String_.of_jsoninletruncBinaryPath=field_mapjson__"RuncBinaryPath"String_.of_jsoninletsocketPath=field_mapjson__"SocketPath"String_.of_jsoninletldPreloadValue=field_mapjson__"LdPreloadValue"String_.of_jsoninletlibraryPath=field_mapjson__"LibraryPath"String_.of_jsoninletscriptPath=field_mapjson__"ScriptPath"String_.of_jsoninletmodifiedAt=field_mapjson__"ModifiedAt"Timestamp.of_jsoninletmodifyingProcess=field_mapjson__"ModifyingProcess"ProcessDetails.of_jsoninmake?threatFilePath?commandLineExample?serviceName?toolCategory?toolName?memoryRegions?ianaProtocolNumber?addressFamily?targetProcess?shellHistoryFilePath?moduleSha256?moduleFilePath?moduleName?flags?fileSystemType?mountTarget?mountSource?releaseAgentPath?runcBinaryPath?socketPath?ldPreloadValue?libraryPath?scriptPath?modifiedAt?modifyingProcess()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Additional information about the suspicious activity."]moduleOrganizationEbsVolumes=structtypenonrect={autoEnable:Boolean.toption[@ocaml.doc"Whether scanning EBS volumes should be auto-enabled for new members joining the organization."]}letmake?autoEnable=fun()->{autoEnable}letto_valuex=structure_to_value[("autoEnable",(Option.mapx.autoEnable~f:Boolean.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letautoEnable=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"autoEnable")inmake?autoEnable()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letautoEnable=field_mapjson__"AutoEnable"Boolean.of_jsoninmake?autoEnable()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Organization-wide EBS volumes scan configuration."]moduleOrganizationAdditionalConfiguration=structtypenonrect={name:OrgFeatureAdditionalConfiguration.toption[@ocaml.doc"The name of the additional configuration that will be configured for the organization. These values are applicable to only Runtime Monitoring protection plan."];autoEnable:OrgFeatureStatus.toption[@ocaml.doc"The status of the additional configuration that will be configured for the organization. Use one of the following values to configure the feature status for the entire organization: NEW: Indicates that when a new account joins the organization, they will have the additional configuration enabled automatically. ALL: Indicates that all accounts in the organization have the additional configuration enabled automatically. This includes NEW accounts that join the organization and accounts that may have been suspended or removed from the organization in GuardDuty. It may take up to 24 hours to update the configuration for all the member accounts. NONE: Indicates that the additional configuration will not be automatically enabled for any account in the organization. The administrator must manage the additional configuration for each account individually."]}letmake?name=fun?autoEnable->fun()->{name;autoEnable}letto_valuex=structure_to_value[("name",(Option.mapx.name~f:OrgFeatureAdditionalConfiguration.to_value));("autoEnable",(Option.mapx.autoEnable~f:OrgFeatureStatus.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letautoEnable=(Option.map~f:OrgFeatureStatus.of_xml)(Xml.childxml_arg0"autoEnable")inletname=(Option.map~f:OrgFeatureAdditionalConfiguration.of_xml)(Xml.childxml_arg0"name")inmake?autoEnable?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letautoEnable=field_mapjson__"AutoEnable"OrgFeatureStatus.of_jsoninletname=field_mapjson__"Name"OrgFeatureAdditionalConfiguration.of_jsoninmake?autoEnable?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A list of additional configurations which will be configured for the organization. Additional configuration applies to only GuardDuty Runtime Monitoring protection plan."]moduleMemberAdditionalConfiguration=structtypenonrect={name:OrgFeatureAdditionalConfiguration.toption[@ocaml.doc"Name of the additional configuration."];status:FeatureStatus.toption[@ocaml.doc"Status of the additional configuration."]}letmake?name=fun?status->fun()->{name;status}letto_valuex=structure_to_value[("name",(Option.mapx.name~f:OrgFeatureAdditionalConfiguration.to_value));("status",(Option.mapx.status~f:FeatureStatus.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstatus=(Option.map~f:FeatureStatus.of_xml)(Xml.childxml_arg0"status")inletname=(Option.map~f:OrgFeatureAdditionalConfiguration.of_xml)(Xml.childxml_arg0"name")inmake?status?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstatus=field_mapjson__"Status"FeatureStatus.of_jsoninletname=field_mapjson__"Name"OrgFeatureAdditionalConfiguration.of_jsoninmake?status?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the additional configuration for the member account."]moduleMapEquals=structtypenonrect=ScanConditionPair.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ScanConditionPair.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:ScanConditionPair.of_xml)letof_jsonj=list_of_json~kind:"MapEquals"~of_json:ScanConditionPair.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleEq=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:"Eq"~of_json:String_.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleMatches=structtypenonrect=Match.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:5)>>=(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:Match.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:Match.of_xml)letof_jsonj=list_of_json~kind:"Matches"~of_json:Match.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleNeq=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:"Neq"~of_json:String_.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleNotMatches=structtypenonrect=NotMatch.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:5)>>=(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:NotMatch.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:NotMatch.of_xml)letof_jsonj=list_of_json~kind:"NotMatches"~of_json:NotMatch.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleDetectorAdditionalConfiguration=structtypenonrect={name:FeatureAdditionalConfiguration.toption[@ocaml.doc"Name of the additional configuration."];status:FeatureStatus.toption[@ocaml.doc"Status of the additional configuration."]}letmake?name=fun?status->fun()->{name;status}letto_valuex=structure_to_value[("name",(Option.mapx.name~f:FeatureAdditionalConfiguration.to_value));("status",(Option.mapx.status~f:FeatureStatus.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstatus=(Option.map~f:FeatureStatus.of_xml)(Xml.childxml_arg0"status")inletname=(Option.map~f:FeatureAdditionalConfiguration.of_xml)(Xml.childxml_arg0"name")inmake?status?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstatus=field_mapjson__"Status"FeatureStatus.of_jsoninletname=field_mapjson__"Name"FeatureAdditionalConfiguration.of_jsoninmake?status?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the additional configuration for a feature in your GuardDuty account."]moduleFilterCondition=structtypenonrect={equalsValue:NonEmptyString.toption[@ocaml.doc"Represents an equal condition to be applied to a single field when querying for scan entries."];greaterThan:LongValue.toption[@ocaml.doc"Represents a greater than condition to be applied to a single field when querying for scan entries."];lessThan:LongValue.toption[@ocaml.doc"Represents a less than condition to be applied to a single field when querying for scan entries."]}letmake?equalsValue=fun?greaterThan->fun?lessThan->fun()->{equalsValue;greaterThan;lessThan}letto_valuex=structure_to_value[("equalsValue",(Option.mapx.equalsValue~f:NonEmptyString.to_value));("greaterThan",(Option.mapx.greaterThan~f:LongValue.to_value));("lessThan",(Option.mapx.lessThan~f:LongValue.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letlessThan=(Option.map~f:LongValue.of_xml)(Xml.childxml_arg0"lessThan")inletgreaterThan=(Option.map~f:LongValue.of_xml)(Xml.childxml_arg0"greaterThan")inletequalsValue=(Option.map~f:NonEmptyString.of_xml)(Xml.childxml_arg0"equalsValue")inmake?lessThan?greaterThan?equalsValue()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letlessThan=field_mapjson__"LessThan"LongValue.of_jsoninletgreaterThan=field_mapjson__"GreaterThan"LongValue.of_jsoninletequalsValue=field_mapjson__"EqualsValue"NonEmptyString.of_jsoninmake?lessThan?greaterThan?equalsValue()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the condition."]moduleListMalwareScansCriterionKey=structtypenonrect=|RESOURCE_ARN|SCAN_ID|ACCOUNT_ID|GUARDDUTY_FINDING_ID|RESOURCE_TYPE|SCAN_START_TIME|SCAN_STATUS|SCAN_TYPE|Non_static_idofstringletmakei=iletto_string=function|RESOURCE_ARN->"RESOURCE_ARN"|SCAN_ID->"SCAN_ID"|ACCOUNT_ID->"ACCOUNT_ID"|GUARDDUTY_FINDING_ID->"GUARDDUTY_FINDING_ID"|RESOURCE_TYPE->"RESOURCE_TYPE"|SCAN_START_TIME->"SCAN_START_TIME"|SCAN_STATUS->"SCAN_STATUS"|SCAN_TYPE->"SCAN_TYPE"|Non_static_ids->sletof_string=function|"RESOURCE_ARN"->RESOURCE_ARN|"SCAN_ID"->SCAN_ID|"ACCOUNT_ID"->ACCOUNT_ID|"GUARDDUTY_FINDING_ID"->GUARDDUTY_FINDING_ID|"RESOURCE_TYPE"->RESOURCE_TYPE|"SCAN_START_TIME"->SCAN_START_TIME|"SCAN_STATUS"->SCAN_STATUS|"SCAN_TYPE"->SCAN_TYPE|x->Non_static_idxletto_valuex=`Enum(to_stringx)letto_queryv=to_queryto_valuevletto_headerx=to_stringxletof_xmlxml_arg0=of_string(string_of_xml~kind:"enumeration ListMalwareScansCriterionKey"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ListMalwareScansCriterionKey"j)letto_json=simple_to_jsonto_valueendmoduleCoverageEc2InstanceDetails=structtypenonrect={instanceId:String_.toption[@ocaml.doc"The Amazon EC2 instance ID."];instanceType:String_.toption[@ocaml.doc"The instance type of the Amazon EC2 instance."];clusterArn:String_.toption[@ocaml.doc"The cluster ARN of the Amazon ECS cluster running on the Amazon EC2 instance."];agentDetails:AgentDetails.toption[@ocaml.doc"Information about the installed security agent."];managementType:ManagementType.toption[@ocaml.doc"Indicates how the GuardDuty security agent is managed for this resource. AUTO_MANAGED indicates that GuardDuty deploys and manages updates for this resource. MANUAL indicates that you are responsible to deploy, update, and manage the GuardDuty security agent updates for this resource. The DISABLED status doesn't apply to Amazon EC2 instances and Amazon EKS clusters."]}letmake?instanceId=fun?instanceType->fun?clusterArn->fun?agentDetails->fun?managementType->fun()->{instanceId;instanceType;clusterArn;agentDetails;managementType}letto_valuex=structure_to_value[("instanceId",(Option.mapx.instanceId~f:String_.to_value));("instanceType",(Option.mapx.instanceType~f:String_.to_value));("clusterArn",(Option.mapx.clusterArn~f:String_.to_value));("agentDetails",(Option.mapx.agentDetails~f:AgentDetails.to_value));("managementType",(Option.mapx.managementType~f:ManagementType.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmanagementType=(Option.map~f:ManagementType.of_xml)(Xml.childxml_arg0"managementType")inletagentDetails=(Option.map~f:AgentDetails.of_xml)(Xml.childxml_arg0"agentDetails")inletclusterArn=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"clusterArn")inletinstanceType=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"instanceType")inletinstanceId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"instanceId")inmake?managementType?agentDetails?clusterArn?instanceType?instanceId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmanagementType=field_mapjson__"ManagementType"ManagementType.of_jsoninletagentDetails=field_mapjson__"AgentDetails"AgentDetails.of_jsoninletclusterArn=field_mapjson__"ClusterArn"String_.of_jsoninletinstanceType=field_mapjson__"InstanceType"String_.of_jsoninletinstanceId=field_mapjson__"InstanceId"String_.of_jsoninmake?managementType?agentDetails?clusterArn?instanceType?instanceId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the Amazon EC2 instance runtime coverage details."]moduleCoverageEcsClusterDetails=structtypenonrect={clusterName:String_.toption[@ocaml.doc"The name of the Amazon ECS cluster."];fargateDetails:FargateDetails.toption[@ocaml.doc"Information about the Fargate details associated with the Amazon ECS cluster."];containerInstanceDetails:ContainerInstanceDetails.toption[@ocaml.doc"Information about the Amazon ECS container running on Amazon EC2 instance."]}letmake?clusterName=fun?fargateDetails->fun?containerInstanceDetails->fun()->{clusterName;fargateDetails;containerInstanceDetails}letto_valuex=structure_to_value[("clusterName",(Option.mapx.clusterName~f:String_.to_value));("fargateDetails",(Option.mapx.fargateDetails~f:FargateDetails.to_value));("containerInstanceDetails",(Option.mapx.containerInstanceDetails~f:ContainerInstanceDetails.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcontainerInstanceDetails=(Option.map~f:ContainerInstanceDetails.of_xml)(Xml.childxml_arg0"containerInstanceDetails")inletfargateDetails=(Option.map~f:FargateDetails.of_xml)(Xml.childxml_arg0"fargateDetails")inletclusterName=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"clusterName")inmake?containerInstanceDetails?fargateDetails?clusterName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcontainerInstanceDetails=field_mapjson__"ContainerInstanceDetails"ContainerInstanceDetails.of_jsoninletfargateDetails=field_mapjson__"FargateDetails"FargateDetails.of_jsoninletclusterName=field_mapjson__"ClusterName"String_.of_jsoninmake?containerInstanceDetails?fargateDetails?clusterName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about Amazon ECS cluster runtime coverage details."]moduleCoverageEksClusterDetails=structtypenonrect={clusterName:String_.toption[@ocaml.doc"Name of the EKS cluster."];coveredNodes:Long.toption[@ocaml.doc"Represents the nodes within the EKS cluster that have a HEALTHY coverage status."];compatibleNodes:Long.toption[@ocaml.doc"Represents all the nodes within the EKS cluster in your account."];addonDetails:AddonDetails.toption[@ocaml.doc"Information about the installed EKS add-on."];managementType:ManagementType.toption[@ocaml.doc"Indicates how the Amazon EKS add-on GuardDuty agent is managed for this EKS cluster. AUTO_MANAGED indicates GuardDuty deploys and manages updates for this resource. MANUAL indicates that you are responsible to deploy, update, and manage the Amazon EKS add-on GuardDuty agent for this resource."]}letmake?clusterName=fun?coveredNodes->fun?compatibleNodes->fun?addonDetails->fun?managementType->fun()->{clusterName;coveredNodes;compatibleNodes;addonDetails;managementType}letto_valuex=structure_to_value[("clusterName",(Option.mapx.clusterName~f:String_.to_value));("coveredNodes",(Option.mapx.coveredNodes~f:Long.to_value));("compatibleNodes",(Option.mapx.compatibleNodes~f:Long.to_value));("addonDetails",(Option.mapx.addonDetails~f:AddonDetails.to_value));("managementType",(Option.mapx.managementType~f:ManagementType.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmanagementType=(Option.map~f:ManagementType.of_xml)(Xml.childxml_arg0"managementType")inletaddonDetails=(Option.map~f:AddonDetails.of_xml)(Xml.childxml_arg0"addonDetails")inletcompatibleNodes=(Option.map~f:Long.of_xml)(Xml.childxml_arg0"compatibleNodes")inletcoveredNodes=(Option.map~f:Long.of_xml)(Xml.childxml_arg0"coveredNodes")inletclusterName=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"clusterName")inmake?managementType?addonDetails?compatibleNodes?coveredNodes?clusterName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmanagementType=field_mapjson__"ManagementType"ManagementType.of_jsoninletaddonDetails=field_mapjson__"AddonDetails"AddonDetails.of_jsoninletcompatibleNodes=field_mapjson__"CompatibleNodes"Long.of_jsoninletcoveredNodes=field_mapjson__"CoveredNodes"Long.of_jsoninletclusterName=field_mapjson__"ClusterName"String_.of_jsoninmake?managementType?addonDetails?compatibleNodes?coveredNodes?clusterName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the EKS cluster that has a coverage status."]moduleResourceType=structtypenonrect=|EKS|ECS|EC2|Non_static_idofstringletmakei=iletto_string=function|EKS->"EKS"|ECS->"ECS"|EC2->"EC2"|Non_static_ids->sletof_string=function|"EKS"->EKS|"ECS"->ECS|"EC2"->EC2|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_valueendmoduleCoverageFilterCondition=structtypenonrect={equals:Equals.toption[@ocaml.doc"Represents an equal condition that is applied to a single field while retrieving the coverage details."];notEquals:NotEquals.toption[@ocaml.doc"Represents a not equal condition that is applied to a single field while retrieving the coverage details."]}letmake?equals=fun?notEquals->fun()->{equals;notEquals}letto_valuex=structure_to_value[("equals",(Option.mapx.equals~f:Equals.to_value));("notEquals",(Option.mapx.notEquals~f:NotEquals.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnotEquals=(Option.map~f:NotEquals.of_xml)(Xml.childxml_arg0"notEquals")inletequals=(Option.map~f:Equals.of_xml)(Xml.childxml_arg0"equals")inmake?notEquals?equals()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnotEquals=field_mapjson__"NotEquals"NotEquals.of_jsoninletequals=field_mapjson__"Equals"Equals.of_jsoninmake?notEquals?equals()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Represents a condition that when matched will be added to the response of the operation."]moduleCoverageFilterCriterionKey=structtypenonrect=|ACCOUNT_ID|RESOURCE_TYPE|COVERAGE_STATUS|ADDON_VERSION|CLUSTER_NAME|ECS_CLUSTER_NAME|MANAGEMENT_TYPE|EKS_CLUSTER_NAME|AGENT_VERSION|INSTANCE_ID|CLUSTER_ARN|Non_static_idofstringletmakei=iletto_string=function|ACCOUNT_ID->"ACCOUNT_ID"|RESOURCE_TYPE->"RESOURCE_TYPE"|COVERAGE_STATUS->"COVERAGE_STATUS"|ADDON_VERSION->"ADDON_VERSION"|CLUSTER_NAME->"CLUSTER_NAME"|ECS_CLUSTER_NAME->"ECS_CLUSTER_NAME"|MANAGEMENT_TYPE->"MANAGEMENT_TYPE"|EKS_CLUSTER_NAME->"EKS_CLUSTER_NAME"|AGENT_VERSION->"AGENT_VERSION"|INSTANCE_ID->"INSTANCE_ID"|CLUSTER_ARN->"CLUSTER_ARN"|Non_static_ids->sletof_string=function|"ACCOUNT_ID"->ACCOUNT_ID|"RESOURCE_TYPE"->RESOURCE_TYPE|"COVERAGE_STATUS"->COVERAGE_STATUS|"ADDON_VERSION"->ADDON_VERSION|"CLUSTER_NAME"->CLUSTER_NAME|"ECS_CLUSTER_NAME"->ECS_CLUSTER_NAME|"MANAGEMENT_TYPE"->MANAGEMENT_TYPE|"EKS_CLUSTER_NAME"->EKS_CLUSTER_NAME|"AGENT_VERSION"->AGENT_VERSION|"INSTANCE_ID"->INSTANCE_ID|"CLUSTER_ARN"->CLUSTER_ARN|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 CoverageFilterCriterionKey"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"CoverageFilterCriterionKey"j)letto_json=simple_to_jsonto_valueendmoduleDataSource=structtypenonrect=|FLOW_LOGS|CLOUD_TRAIL|DNS_LOGS|S3_LOGS|KUBERNETES_AUDIT_LOGS|EC2_MALWARE_SCAN|Non_static_idofstringletmakei=iletto_string=function|FLOW_LOGS->"FLOW_LOGS"|CLOUD_TRAIL->"CLOUD_TRAIL"|DNS_LOGS->"DNS_LOGS"|S3_LOGS->"S3_LOGS"|KUBERNETES_AUDIT_LOGS->"KUBERNETES_AUDIT_LOGS"|EC2_MALWARE_SCAN->"EC2_MALWARE_SCAN"|Non_static_ids->sletof_string=function|"FLOW_LOGS"->FLOW_LOGS|"CLOUD_TRAIL"->CLOUD_TRAIL|"DNS_LOGS"->DNS_LOGS|"S3_LOGS"->S3_LOGS|"KUBERNETES_AUDIT_LOGS"->KUBERNETES_AUDIT_LOGS|"EC2_MALWARE_SCAN"->EC2_MALWARE_SCAN|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 DataSource"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"DataSource"j)letto_json=simple_to_jsonto_valueendmoduleUsageFeature=structtypenonrect=|FLOW_LOGS|CLOUD_TRAIL|DNS_LOGS|S3_DATA_EVENTS|EKS_AUDIT_LOGS|EBS_MALWARE_PROTECTION|RDS_LOGIN_EVENTS|LAMBDA_NETWORK_LOGS|EKS_RUNTIME_MONITORING|EC2_RUNTIME_MONITORING|FARGATE_RUNTIME_MONITORING|RDS_DBI_PROTECTION_PROVISIONED|RDS_DBI_PROTECTION_SERVERLESS|Non_static_idofstringletmakei=iletto_string=function|FLOW_LOGS->"FLOW_LOGS"|CLOUD_TRAIL->"CLOUD_TRAIL"|DNS_LOGS->"DNS_LOGS"|S3_DATA_EVENTS->"S3_DATA_EVENTS"|EKS_AUDIT_LOGS->"EKS_AUDIT_LOGS"|EBS_MALWARE_PROTECTION->"EBS_MALWARE_PROTECTION"|RDS_LOGIN_EVENTS->"RDS_LOGIN_EVENTS"|LAMBDA_NETWORK_LOGS->"LAMBDA_NETWORK_LOGS"|EKS_RUNTIME_MONITORING->"EKS_RUNTIME_MONITORING"|EC2_RUNTIME_MONITORING->"EC2_RUNTIME_MONITORING"|FARGATE_RUNTIME_MONITORING->"FARGATE_RUNTIME_MONITORING"|RDS_DBI_PROTECTION_PROVISIONED->"RDS_DBI_PROTECTION_PROVISIONED"|RDS_DBI_PROTECTION_SERVERLESS->"RDS_DBI_PROTECTION_SERVERLESS"|Non_static_ids->sletof_string=function|"FLOW_LOGS"->FLOW_LOGS|"CLOUD_TRAIL"->CLOUD_TRAIL|"DNS_LOGS"->DNS_LOGS|"S3_DATA_EVENTS"->S3_DATA_EVENTS|"EKS_AUDIT_LOGS"->EKS_AUDIT_LOGS|"EBS_MALWARE_PROTECTION"->EBS_MALWARE_PROTECTION|"RDS_LOGIN_EVENTS"->RDS_LOGIN_EVENTS|"LAMBDA_NETWORK_LOGS"->LAMBDA_NETWORK_LOGS|"EKS_RUNTIME_MONITORING"->EKS_RUNTIME_MONITORING|"EC2_RUNTIME_MONITORING"->EC2_RUNTIME_MONITORING|"FARGATE_RUNTIME_MONITORING"->FARGATE_RUNTIME_MONITORING|"RDS_DBI_PROTECTION_PROVISIONED"->RDS_DBI_PROTECTION_PROVISIONED|"RDS_DBI_PROTECTION_SERVERLESS"->RDS_DBI_PROTECTION_SERVERLESS|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 UsageFeature"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"UsageFeature"j)letto_json=simple_to_jsonto_valueendmoduleUsageTopAccountsByFeatureList=structtypenonrect=UsageTopAccountResult.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:UsageTopAccountResult.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:UsageTopAccountResult.of_xml)letof_jsonj=list_of_json~kind:"UsageTopAccountsByFeatureList"~of_json:UsageTopAccountResult.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleKubernetesDataSourceFreeTrial=structtypenonrect={auditLogs:DataSourceFreeTrial.toption[@ocaml.doc"Describes whether Kubernetes audit logs are enabled as a data source."]}letmake?auditLogs=fun()->{auditLogs}letto_valuex=structure_to_value[("auditLogs",(Option.mapx.auditLogs~f:DataSourceFreeTrial.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letauditLogs=(Option.map~f:DataSourceFreeTrial.of_xml)(Xml.childxml_arg0"auditLogs")inmake?auditLogs()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letauditLogs=field_mapjson__"AuditLogs"DataSourceFreeTrial.of_jsoninmake?auditLogs()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Provides details about the Kubernetes resources when it is enabled as a data source."]moduleMalwareProtectionDataSourceFreeTrial=structtypenonrect={scanEc2InstanceWithFindings:DataSourceFreeTrial.toption[@ocaml.doc"Describes whether Malware Protection for EC2 instances with findings is enabled as a data source."]}letmake?scanEc2InstanceWithFindings=fun()->{scanEc2InstanceWithFindings}letto_valuex=structure_to_value[("scanEc2InstanceWithFindings",(Option.mapx.scanEc2InstanceWithFindings~f:DataSourceFreeTrial.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letscanEc2InstanceWithFindings=(Option.map~f:DataSourceFreeTrial.of_xml)(Xml.childxml_arg0"scanEc2InstanceWithFindings")inmake?scanEc2InstanceWithFindings()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letscanEc2InstanceWithFindings=field_mapjson__"ScanEc2InstanceWithFindings"DataSourceFreeTrial.of_jsoninmake?scanEc2InstanceWithFindings()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Provides details about Malware Protection when it is enabled as a data source."]moduleFreeTrialFeatureConfigurationResult=structtypenonrect={name:FreeTrialFeatureResult.toption[@ocaml.doc"The name of the feature for which the free trial is configured."];freeTrialDaysRemaining:Integer.toption[@ocaml.doc"The number of the remaining free trial days for the feature."]}letmake?name=fun?freeTrialDaysRemaining->fun()->{name;freeTrialDaysRemaining}letto_valuex=structure_to_value[("name",(Option.mapx.name~f:FreeTrialFeatureResult.to_value));("freeTrialDaysRemaining",(Option.mapx.freeTrialDaysRemaining~f:Integer.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letfreeTrialDaysRemaining=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"freeTrialDaysRemaining")inletname=(Option.map~f:FreeTrialFeatureResult.of_xml)(Xml.childxml_arg0"name")inmake?freeTrialDaysRemaining?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letfreeTrialDaysRemaining=field_mapjson__"FreeTrialDaysRemaining"Integer.of_jsoninletname=field_mapjson__"Name"FreeTrialFeatureResult.of_jsoninmake?freeTrialDaysRemaining?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the free trial period for a feature."]moduleOrganizationFeatureStatistics=structtypenonrect={name:OrgFeature.toption[@ocaml.doc"Name of the feature."];enabledAccountsCount:Integer.toption[@ocaml.doc"Total number of accounts that have enabled a specific feature."];additionalConfiguration:OrganizationFeatureStatisticsAdditionalConfigurations.toption[@ocaml.doc"Name of the additional configuration."]}letmake?name=fun?enabledAccountsCount->fun?additionalConfiguration->fun()->{name;enabledAccountsCount;additionalConfiguration}letto_valuex=structure_to_value[("name",(Option.mapx.name~f:OrgFeature.to_value));("enabledAccountsCount",(Option.mapx.enabledAccountsCount~f:Integer.to_value));("additionalConfiguration",(Option.mapx.additionalConfiguration~f:OrganizationFeatureStatisticsAdditionalConfigurations.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letadditionalConfiguration=(Option.map~f:OrganizationFeatureStatisticsAdditionalConfigurations.of_xml)(Xml.childxml_arg0"additionalConfiguration")inletenabledAccountsCount=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"enabledAccountsCount")inletname=(Option.map~f:OrgFeature.of_xml)(Xml.childxml_arg0"name")inmake?additionalConfiguration?enabledAccountsCount?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letadditionalConfiguration=field_mapjson__"AdditionalConfiguration"OrganizationFeatureStatisticsAdditionalConfigurations.of_jsoninletenabledAccountsCount=field_mapjson__"EnabledAccountsCount"Integer.of_jsoninletname=field_mapjson__"Name"OrgFeature.of_jsoninmake?additionalConfiguration?enabledAccountsCount?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the number of accounts that have enabled a specific feature."]moduleCloudTrailConfigurationResult=structtypenonrect={status:DataSourceStatus.toption[@ocaml.doc"Describes whether CloudTrail is enabled as a data source for the detector."]}letmake?status=fun()->{status}letto_valuex=structure_to_value[("status",(Option.mapx.status~f:DataSourceStatus.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstatus=(Option.map~f:DataSourceStatus.of_xml)(Xml.childxml_arg0"status")inmake?status()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstatus=field_mapjson__"Status"DataSourceStatus.of_jsoninmake?status()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information on the status of CloudTrail as a data source for the detector."]moduleDNSLogsConfigurationResult=structtypenonrect={status:DataSourceStatus.toption[@ocaml.doc"Denotes whether DNS logs is enabled as a data source."]}letmake?status=fun()->{status}letto_valuex=structure_to_value[("status",(Option.mapx.status~f:DataSourceStatus.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstatus=(Option.map~f:DataSourceStatus.of_xml)(Xml.childxml_arg0"status")inmake?status()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstatus=field_mapjson__"Status"DataSourceStatus.of_jsoninmake?status()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information on the status of DNS logs as a data source."]moduleFlowLogsConfigurationResult=structtypenonrect={status:DataSourceStatus.toption[@ocaml.doc"Denotes whether VPC flow logs is enabled as a data source."]}letmake?status=fun()->{status}letto_valuex=structure_to_value[("status",(Option.mapx.status~f:DataSourceStatus.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstatus=(Option.map~f:DataSourceStatus.of_xml)(Xml.childxml_arg0"status")inmake?status()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstatus=field_mapjson__"Status"DataSourceStatus.of_jsoninmake?status()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information on the status of VPC flow logs as a data source."]moduleKubernetesConfigurationResult=structtypenonrect={auditLogs:KubernetesAuditLogsConfigurationResult.toption[@ocaml.doc"Describes whether Kubernetes audit logs are enabled as a data source."]}letmake?auditLogs=fun()->{auditLogs}letto_valuex=structure_to_value[("auditLogs",(Option.mapx.auditLogs~f:KubernetesAuditLogsConfigurationResult.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letauditLogs=(Option.map~f:KubernetesAuditLogsConfigurationResult.of_xml)(Xml.childxml_arg0"auditLogs")inmake?auditLogs()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letauditLogs=field_mapjson__"AuditLogs"KubernetesAuditLogsConfigurationResult.of_jsoninmake?auditLogs()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Describes whether any Kubernetes logs will be enabled as a data source."]moduleMalwareProtectionConfigurationResult=structtypenonrect={scanEc2InstanceWithFindings:ScanEc2InstanceWithFindingsResult.toption[@ocaml.doc"Describes the configuration of Malware Protection for EC2 instances with findings."];serviceRole:String_.toption[@ocaml.doc"The GuardDuty Malware Protection service role."]}letmake?scanEc2InstanceWithFindings=fun?serviceRole->fun()->{scanEc2InstanceWithFindings;serviceRole}letto_valuex=structure_to_value[("scanEc2InstanceWithFindings",(Option.mapx.scanEc2InstanceWithFindings~f:ScanEc2InstanceWithFindingsResult.to_value));("serviceRole",(Option.mapx.serviceRole~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letserviceRole=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"serviceRole")inletscanEc2InstanceWithFindings=(Option.map~f:ScanEc2InstanceWithFindingsResult.of_xml)(Xml.childxml_arg0"scanEc2InstanceWithFindings")inmake?serviceRole?scanEc2InstanceWithFindings()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letserviceRole=field_mapjson__"ServiceRole"String_.of_jsoninletscanEc2InstanceWithFindings=field_mapjson__"ScanEc2InstanceWithFindings"ScanEc2InstanceWithFindingsResult.of_jsoninmake?serviceRole?scanEc2InstanceWithFindings()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"An object that contains information on the status of all Malware Protection data sources."]moduleS3LogsConfigurationResult=structtypenonrect={status:DataSourceStatus.toption[@ocaml.doc"A value that describes whether S3 data event logs are automatically enabled for new members of the organization."]}letmake?status=fun()->{status}letto_valuex=structure_to_value[("status",(Option.mapx.status~f:DataSourceStatus.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstatus=(Option.map~f:DataSourceStatus.of_xml)(Xml.childxml_arg0"status")inmake?status()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstatus=field_mapjson__"Status"DataSourceStatus.of_jsoninmake?status()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Describes whether S3 data event logs will be enabled as a data source."]moduleMemberFeaturesConfigurationResult=structtypenonrect={name:OrgFeature.toption[@ocaml.doc"Indicates the name of the feature that is enabled for the detector."];status:FeatureStatus.toption[@ocaml.doc"Indicates the status of the feature that is enabled for the detector."];updatedAt:Timestamp.toption[@ocaml.doc"The timestamp at which the feature object was updated."];additionalConfiguration:MemberAdditionalConfigurationResults.toption[@ocaml.doc"Indicates the additional configuration of the feature that is configured for the member account."]}letmake?name=fun?status->fun?updatedAt->fun?additionalConfiguration->fun()->{name;status;updatedAt;additionalConfiguration}letto_valuex=structure_to_value[("name",(Option.mapx.name~f:OrgFeature.to_value));("status",(Option.mapx.status~f:FeatureStatus.to_value));("updatedAt",(Option.mapx.updatedAt~f:Timestamp.to_value));("additionalConfiguration",(Option.mapx.additionalConfiguration~f:MemberAdditionalConfigurationResults.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letadditionalConfiguration=(Option.map~f:MemberAdditionalConfigurationResults.of_xml)(Xml.childxml_arg0"additionalConfiguration")inletupdatedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"updatedAt")inletstatus=(Option.map~f:FeatureStatus.of_xml)(Xml.childxml_arg0"status")inletname=(Option.map~f:OrgFeature.of_xml)(Xml.childxml_arg0"name")inmake?additionalConfiguration?updatedAt?status?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letadditionalConfiguration=field_mapjson__"AdditionalConfiguration"MemberAdditionalConfigurationResults.of_jsoninletupdatedAt=field_mapjson__"UpdatedAt"Timestamp.of_jsoninletstatus=field_mapjson__"Status"FeatureStatus.of_jsoninletname=field_mapjson__"Name"OrgFeature.of_jsoninmake?additionalConfiguration?updatedAt?status?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the features for the member account."]moduleDetectionSource=structtypenonrect=|AMAZON|BITDEFENDER|Non_static_idofstringletmakei=iletto_string=function|AMAZON->"AMAZON"|BITDEFENDER->"BITDEFENDER"|Non_static_ids->sletof_string=function|"AMAZON"->AMAZON|"BITDEFENDER"->BITDEFENDER|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 DetectionSource"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"DetectionSource"j)letto_json=simple_to_jsonto_valueendmodulePositiveLong=structtypenonrect=Int64.tletmakei=letopenResultinok_or_failwith(check_int64_mini~min:0L);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_valueendmoduleEbsSnapshot=structtypenonrect={deviceName:NonEmptyString.toption[@ocaml.doc"The device name of the EBS snapshot that was scanned."]}letmake?deviceName=fun()->{deviceName}letto_valuex=structure_to_value[("deviceName",(Option.mapx.deviceName~f:NonEmptyString.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdeviceName=(Option.map~f:NonEmptyString.of_xml)(Xml.childxml_arg0"deviceName")inmake?deviceName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdeviceName=field_mapjson__"DeviceName"NonEmptyString.of_jsoninmake?deviceName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about an EBS snapshot that was scanned for malware."]moduleAccessKeyDetails=structtypenonrect={accessKeyId:String_.toption[@ocaml.doc"The access key ID of the user."];principalId:String_.toption[@ocaml.doc"The principal ID of the user."];userName:String_.toption[@ocaml.doc"The name of the user."];userType:String_.toption[@ocaml.doc"The type of the user."]}letmake?accessKeyId=fun?principalId->fun?userName->fun?userType->fun()->{accessKeyId;principalId;userName;userType}letto_valuex=structure_to_value[("accessKeyId",(Option.mapx.accessKeyId~f:String_.to_value));("principalId",(Option.mapx.principalId~f:String_.to_value));("userName",(Option.mapx.userName~f:String_.to_value));("userType",(Option.mapx.userType~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letuserType=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"userType")inletuserName=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"userName")inletprincipalId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"principalId")inletaccessKeyId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"accessKeyId")inmake?userType?userName?principalId?accessKeyId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letuserType=field_mapjson__"UserType"String_.of_jsoninletuserName=field_mapjson__"UserName"String_.of_jsoninletprincipalId=field_mapjson__"PrincipalId"String_.of_jsoninletaccessKeyId=field_mapjson__"AccessKeyId"String_.of_jsoninmake?userType?userName?principalId?accessKeyId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the access keys."]moduleEbsSnapshotDetails=structtypenonrect={snapshotArn:String_.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the EBS snapshot."]}letmake?snapshotArn=fun()->{snapshotArn}letto_valuex=structure_to_value[("snapshotArn",(Option.mapx.snapshotArn~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letsnapshotArn=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"snapshotArn")inmake?snapshotArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letsnapshotArn=field_mapjson__"SnapshotArn"String_.of_jsoninmake?snapshotArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains details about the EBS snapshot that was scanned for malware."]moduleEbsVolumeDetails=structtypenonrect={scannedVolumeDetails:VolumeDetails.toption[@ocaml.doc"List of EBS volumes that were scanned."];skippedVolumeDetails:VolumeDetails.toption[@ocaml.doc"List of EBS volumes that were skipped from the malware scan."]}letmake?scannedVolumeDetails=fun?skippedVolumeDetails->fun()->{scannedVolumeDetails;skippedVolumeDetails}letto_valuex=structure_to_value[("scannedVolumeDetails",(Option.mapx.scannedVolumeDetails~f:VolumeDetails.to_value));("skippedVolumeDetails",(Option.mapx.skippedVolumeDetails~f:VolumeDetails.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letskippedVolumeDetails=(Option.map~f:VolumeDetails.of_xml)(Xml.childxml_arg0"skippedVolumeDetails")inletscannedVolumeDetails=(Option.map~f:VolumeDetails.of_xml)(Xml.childxml_arg0"scannedVolumeDetails")inmake?skippedVolumeDetails?scannedVolumeDetails()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letskippedVolumeDetails=field_mapjson__"SkippedVolumeDetails"VolumeDetails.of_jsoninletscannedVolumeDetails=field_mapjson__"ScannedVolumeDetails"VolumeDetails.of_jsoninmake?skippedVolumeDetails?scannedVolumeDetails()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains list of scanned and skipped EBS volumes with details."]moduleEc2ImageDetails=structtypenonrect={imageArn:String_.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the EC2 AMI."]}letmake?imageArn=fun()->{imageArn}letto_valuex=structure_to_value[("imageArn",(Option.mapx.imageArn~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letimageArn=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"imageArn")inmake?imageArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letimageArn=field_mapjson__"ImageArn"String_.of_jsoninmake?imageArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains details about the EC2 AMI that was scanned."]moduleEcsClusterDetails=structtypenonrect={name:String_.toption[@ocaml.doc"The name of the ECS Cluster."];arn:String_.toption[@ocaml.doc"The Amazon Resource Name (ARN) that identifies the cluster."];status:String_.toption[@ocaml.doc"The status of the ECS cluster."];activeServicesCount:Integer.toption[@ocaml.doc"The number of services that are running on the cluster in an ACTIVE state."];registeredContainerInstancesCount:Integer.toption[@ocaml.doc"The number of container instances registered into the cluster."];runningTasksCount:Integer.toption[@ocaml.doc"The number of tasks in the cluster that are in the RUNNING state."];tags:Tags.toption[@ocaml.doc"The tags of the ECS Cluster."];taskDetails:EcsTaskDetails.toption[@ocaml.doc"Contains information about the details of the ECS Task."]}letmake?name=fun?arn->fun?status->fun?activeServicesCount->fun?registeredContainerInstancesCount->fun?runningTasksCount->fun?tags->fun?taskDetails->fun()->{name;arn;status;activeServicesCount;registeredContainerInstancesCount;runningTasksCount;tags;taskDetails}letto_valuex=structure_to_value[("name",(Option.mapx.name~f:String_.to_value));("arn",(Option.mapx.arn~f:String_.to_value));("status",(Option.mapx.status~f:String_.to_value));("activeServicesCount",(Option.mapx.activeServicesCount~f:Integer.to_value));("registeredContainerInstancesCount",(Option.mapx.registeredContainerInstancesCount~f:Integer.to_value));("runningTasksCount",(Option.mapx.runningTasksCount~f:Integer.to_value));("tags",(Option.mapx.tags~f:Tags.to_value));("taskDetails",(Option.mapx.taskDetails~f:EcsTaskDetails.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettaskDetails=(Option.map~f:EcsTaskDetails.of_xml)(Xml.childxml_arg0"taskDetails")inlettags=(Option.map~f:Tags.of_xml)(Xml.childxml_arg0"tags")inletrunningTasksCount=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"runningTasksCount")inletregisteredContainerInstancesCount=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"registeredContainerInstancesCount")inletactiveServicesCount=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"activeServicesCount")inletstatus=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"status")inletarn=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"arn")inletname=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"name")inmake?taskDetails?tags?runningTasksCount?registeredContainerInstancesCount?activeServicesCount?status?arn?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettaskDetails=field_mapjson__"TaskDetails"EcsTaskDetails.of_jsoninlettags=field_mapjson__"Tags"Tags.of_jsoninletrunningTasksCount=field_mapjson__"RunningTasksCount"Integer.of_jsoninletregisteredContainerInstancesCount=field_mapjson__"RegisteredContainerInstancesCount"Integer.of_jsoninletactiveServicesCount=field_mapjson__"ActiveServicesCount"Integer.of_jsoninletstatus=field_mapjson__"Status"String_.of_jsoninletarn=field_mapjson__"Arn"String_.of_jsoninletname=field_mapjson__"Name"String_.of_jsoninmake?taskDetails?tags?runningTasksCount?registeredContainerInstancesCount?activeServicesCount?status?arn?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the details of the ECS Cluster."]moduleEksClusterDetails=structtypenonrect={name:String_.toption[@ocaml.doc"EKS cluster name."];arn:String_.toption[@ocaml.doc"EKS cluster ARN."];vpcId:String_.toption[@ocaml.doc"The VPC ID to which the EKS cluster is attached."];status:String_.toption[@ocaml.doc"The EKS cluster status."];tags:Tags.toption[@ocaml.doc"The EKS cluster tags."];createdAt:Timestamp.toption[@ocaml.doc"The timestamp when the EKS cluster was created."]}letmake?name=fun?arn->fun?vpcId->fun?status->fun?tags->fun?createdAt->fun()->{name;arn;vpcId;status;tags;createdAt}letto_valuex=structure_to_value[("name",(Option.mapx.name~f:String_.to_value));("arn",(Option.mapx.arn~f:String_.to_value));("vpcId",(Option.mapx.vpcId~f:String_.to_value));("status",(Option.mapx.status~f:String_.to_value));("tags",(Option.mapx.tags~f:Tags.to_value));("createdAt",(Option.mapx.createdAt~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcreatedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"createdAt")inlettags=(Option.map~f:Tags.of_xml)(Xml.childxml_arg0"tags")inletstatus=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"status")inletvpcId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"vpcId")inletarn=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"arn")inletname=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"name")inmake?createdAt?tags?status?vpcId?arn?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcreatedAt=field_mapjson__"CreatedAt"Timestamp.of_jsoninlettags=field_mapjson__"Tags"Tags.of_jsoninletstatus=field_mapjson__"Status"String_.of_jsoninletvpcId=field_mapjson__"VpcId"String_.of_jsoninletarn=field_mapjson__"Arn"String_.of_jsoninletname=field_mapjson__"Name"String_.of_jsoninmake?createdAt?tags?status?vpcId?arn?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Details about the EKS cluster involved in a Kubernetes finding."]moduleInstanceDetails=structtypenonrect={availabilityZone:String_.toption[@ocaml.doc"The Availability Zone of the EC2 instance."];iamInstanceProfile:IamInstanceProfile.toption[@ocaml.doc"The profile information of the EC2 instance."];imageDescription:String_.toption[@ocaml.doc"The image description of the EC2 instance."];imageId:String_.toption[@ocaml.doc"The image ID of the EC2 instance."];instanceId:String_.toption[@ocaml.doc"The ID of the EC2 instance."];instanceState:String_.toption[@ocaml.doc"The state of the EC2 instance."];instanceType:String_.toption[@ocaml.doc"The type of the EC2 instance."];outpostArn:String_.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the Amazon Web Services Outpost. Only applicable to Amazon Web Services Outposts instances."];launchTime:String_.toption[@ocaml.doc"The launch time of the EC2 instance."];networkInterfaces:NetworkInterfaces.toption[@ocaml.doc"The elastic network interface information of the EC2 instance."];platform:String_.toption[@ocaml.doc"The platform of the EC2 instance."];productCodes:ProductCodes.toption[@ocaml.doc"The product code of the EC2 instance."];tags:Tags.toption[@ocaml.doc"The tags of the EC2 instance."]}letmake?availabilityZone=fun?iamInstanceProfile->fun?imageDescription->fun?imageId->fun?instanceId->fun?instanceState->fun?instanceType->fun?outpostArn->fun?launchTime->fun?networkInterfaces->fun?platform->fun?productCodes->fun?tags->fun()->{availabilityZone;iamInstanceProfile;imageDescription;imageId;instanceId;instanceState;instanceType;outpostArn;launchTime;networkInterfaces;platform;productCodes;tags}letto_valuex=structure_to_value[("availabilityZone",(Option.mapx.availabilityZone~f:String_.to_value));("iamInstanceProfile",(Option.mapx.iamInstanceProfile~f:IamInstanceProfile.to_value));("imageDescription",(Option.mapx.imageDescription~f:String_.to_value));("imageId",(Option.mapx.imageId~f:String_.to_value));("instanceId",(Option.mapx.instanceId~f:String_.to_value));("instanceState",(Option.mapx.instanceState~f:String_.to_value));("instanceType",(Option.mapx.instanceType~f:String_.to_value));("outpostArn",(Option.mapx.outpostArn~f:String_.to_value));("launchTime",(Option.mapx.launchTime~f:String_.to_value));("networkInterfaces",(Option.mapx.networkInterfaces~f:NetworkInterfaces.to_value));("platform",(Option.mapx.platform~f:String_.to_value));("productCodes",(Option.mapx.productCodes~f:ProductCodes.to_value));("tags",(Option.mapx.tags~f:Tags.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:Tags.of_xml)(Xml.childxml_arg0"tags")inletproductCodes=(Option.map~f:ProductCodes.of_xml)(Xml.childxml_arg0"productCodes")inletplatform=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"platform")inletnetworkInterfaces=(Option.map~f:NetworkInterfaces.of_xml)(Xml.childxml_arg0"networkInterfaces")inletlaunchTime=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"launchTime")inletoutpostArn=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"outpostArn")inletinstanceType=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"instanceType")inletinstanceState=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"instanceState")inletinstanceId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"instanceId")inletimageId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"imageId")inletimageDescription=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"imageDescription")inletiamInstanceProfile=(Option.map~f:IamInstanceProfile.of_xml)(Xml.childxml_arg0"iamInstanceProfile")inletavailabilityZone=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"availabilityZone")inmake?tags?productCodes?platform?networkInterfaces?launchTime?outpostArn?instanceType?instanceState?instanceId?imageId?imageDescription?iamInstanceProfile?availabilityZone()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"Tags"Tags.of_jsoninletproductCodes=field_mapjson__"ProductCodes"ProductCodes.of_jsoninletplatform=field_mapjson__"Platform"String_.of_jsoninletnetworkInterfaces=field_mapjson__"NetworkInterfaces"NetworkInterfaces.of_jsoninletlaunchTime=field_mapjson__"LaunchTime"String_.of_jsoninletoutpostArn=field_mapjson__"OutpostArn"String_.of_jsoninletinstanceType=field_mapjson__"InstanceType"String_.of_jsoninletinstanceState=field_mapjson__"InstanceState"String_.of_jsoninletinstanceId=field_mapjson__"InstanceId"String_.of_jsoninletimageId=field_mapjson__"ImageId"String_.of_jsoninletimageDescription=field_mapjson__"ImageDescription"String_.of_jsoninletiamInstanceProfile=field_mapjson__"IamInstanceProfile"IamInstanceProfile.of_jsoninletavailabilityZone=field_mapjson__"AvailabilityZone"String_.of_jsoninmake?tags?productCodes?platform?networkInterfaces?launchTime?outpostArn?instanceType?instanceState?instanceId?imageId?imageDescription?iamInstanceProfile?availabilityZone()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the details of an instance."]moduleKubernetesDetails=structtypenonrect={kubernetesUserDetails:KubernetesUserDetails.toption[@ocaml.doc"Details about the Kubernetes user involved in a Kubernetes finding."];kubernetesWorkloadDetails:KubernetesWorkloadDetails.toption[@ocaml.doc"Details about the Kubernetes workload involved in a Kubernetes finding."]}letmake?kubernetesUserDetails=fun?kubernetesWorkloadDetails->fun()->{kubernetesUserDetails;kubernetesWorkloadDetails}letto_valuex=structure_to_value[("kubernetesUserDetails",(Option.mapx.kubernetesUserDetails~f:KubernetesUserDetails.to_value));("kubernetesWorkloadDetails",(Option.mapx.kubernetesWorkloadDetails~f:KubernetesWorkloadDetails.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letkubernetesWorkloadDetails=(Option.map~f:KubernetesWorkloadDetails.of_xml)(Xml.childxml_arg0"kubernetesWorkloadDetails")inletkubernetesUserDetails=(Option.map~f:KubernetesUserDetails.of_xml)(Xml.childxml_arg0"kubernetesUserDetails")inmake?kubernetesWorkloadDetails?kubernetesUserDetails()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letkubernetesWorkloadDetails=field_mapjson__"KubernetesWorkloadDetails"KubernetesWorkloadDetails.of_jsoninletkubernetesUserDetails=field_mapjson__"KubernetesUserDetails"KubernetesUserDetails.of_jsoninmake?kubernetesWorkloadDetails?kubernetesUserDetails()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Details about Kubernetes resources such as a Kubernetes user or workload resource involved in a Kubernetes finding."]moduleLambdaDetails=structtypenonrect={functionArn:String_.toption[@ocaml.doc"Amazon Resource Name (ARN) of the Lambda function."];functionName:String_.toption[@ocaml.doc"Name of the Lambda function."];description:String_.toption[@ocaml.doc"Description of the Lambda function."];lastModifiedAt:Timestamp.toption[@ocaml.doc"The timestamp when the Lambda function was last modified. This field is in the UTC date string format (2023-03-22T19:37:20.168Z)."];revisionId:String_.toption[@ocaml.doc"The revision ID of the Lambda function version."];functionVersion:String_.toption[@ocaml.doc"The version of the Lambda function."];role:String_.toption[@ocaml.doc"The execution role of the Lambda function."];vpcConfig:VpcConfig.toption[@ocaml.doc"Amazon Virtual Private Cloud configuration details associated with your Lambda function."];tags:Tags.toption[@ocaml.doc"A list of tags attached to this resource, listed in the format of key:value pair."]}letmake?functionArn=fun?functionName->fun?description->fun?lastModifiedAt->fun?revisionId->fun?functionVersion->fun?role->fun?vpcConfig->fun?tags->fun()->{functionArn;functionName;description;lastModifiedAt;revisionId;functionVersion;role;vpcConfig;tags}letto_valuex=structure_to_value[("functionArn",(Option.mapx.functionArn~f:String_.to_value));("functionName",(Option.mapx.functionName~f:String_.to_value));("description",(Option.mapx.description~f:String_.to_value));("lastModifiedAt",(Option.mapx.lastModifiedAt~f:Timestamp.to_value));("revisionId",(Option.mapx.revisionId~f:String_.to_value));("functionVersion",(Option.mapx.functionVersion~f:String_.to_value));("role",(Option.mapx.role~f:String_.to_value));("vpcConfig",(Option.mapx.vpcConfig~f:VpcConfig.to_value));("tags",(Option.mapx.tags~f:Tags.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:Tags.of_xml)(Xml.childxml_arg0"tags")inletvpcConfig=(Option.map~f:VpcConfig.of_xml)(Xml.childxml_arg0"vpcConfig")inletrole=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"role")inletfunctionVersion=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"functionVersion")inletrevisionId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"revisionId")inletlastModifiedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"lastModifiedAt")inletdescription=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"description")inletfunctionName=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"functionName")inletfunctionArn=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"functionArn")inmake?tags?vpcConfig?role?functionVersion?revisionId?lastModifiedAt?description?functionName?functionArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"Tags"Tags.of_jsoninletvpcConfig=field_mapjson__"VpcConfig"VpcConfig.of_jsoninletrole=field_mapjson__"Role"String_.of_jsoninletfunctionVersion=field_mapjson__"FunctionVersion"String_.of_jsoninletrevisionId=field_mapjson__"RevisionId"String_.of_jsoninletlastModifiedAt=field_mapjson__"LastModifiedAt"Timestamp.of_jsoninletdescription=field_mapjson__"Description"String_.of_jsoninletfunctionName=field_mapjson__"FunctionName"String_.of_jsoninletfunctionArn=field_mapjson__"FunctionArn"String_.of_jsoninmake?tags?vpcConfig?role?functionVersion?revisionId?lastModifiedAt?description?functionName?functionArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the Lambda function involved in the finding."]moduleRdsDbInstanceDetails=structtypenonrect={dbInstanceIdentifier:String_.toption[@ocaml.doc"The identifier associated to the database instance that was involved in the finding."];engine:String_.toption[@ocaml.doc"The database engine of the database instance involved in the finding."];engineVersion:String_.toption[@ocaml.doc"The version of the database engine that was involved in the finding."];dbClusterIdentifier:String_.toption[@ocaml.doc"The identifier of the database cluster that contains the database instance ID involved in the finding."];dbInstanceArn:String_.toption[@ocaml.doc"The Amazon Resource Name (ARN) that identifies the database instance involved in the finding."];dbiResourceId:String_.toption[@ocaml.doc"The unique ID of the database resource involved in the activity that prompted GuardDuty to generate the finding."];tags:Tags.toption[@ocaml.doc"Information about the tag key-value pairs."]}letmake?dbInstanceIdentifier=fun?engine->fun?engineVersion->fun?dbClusterIdentifier->fun?dbInstanceArn->fun?dbiResourceId->fun?tags->fun()->{dbInstanceIdentifier;engine;engineVersion;dbClusterIdentifier;dbInstanceArn;dbiResourceId;tags}letto_valuex=structure_to_value[("dbInstanceIdentifier",(Option.mapx.dbInstanceIdentifier~f:String_.to_value));("engine",(Option.mapx.engine~f:String_.to_value));("engineVersion",(Option.mapx.engineVersion~f:String_.to_value));("dbClusterIdentifier",(Option.mapx.dbClusterIdentifier~f:String_.to_value));("dbInstanceArn",(Option.mapx.dbInstanceArn~f:String_.to_value));("dbiResourceId",(Option.mapx.dbiResourceId~f:String_.to_value));("tags",(Option.mapx.tags~f:Tags.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:Tags.of_xml)(Xml.childxml_arg0"tags")inletdbiResourceId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"dbiResourceId")inletdbInstanceArn=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"dbInstanceArn")inletdbClusterIdentifier=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"dbClusterIdentifier")inletengineVersion=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"engineVersion")inletengine=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"engine")inletdbInstanceIdentifier=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"dbInstanceIdentifier")inmake?tags?dbiResourceId?dbInstanceArn?dbClusterIdentifier?engineVersion?engine?dbInstanceIdentifier()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"Tags"Tags.of_jsoninletdbiResourceId=field_mapjson__"DbiResourceId"String_.of_jsoninletdbInstanceArn=field_mapjson__"DbInstanceArn"String_.of_jsoninletdbClusterIdentifier=field_mapjson__"DbClusterIdentifier"String_.of_jsoninletengineVersion=field_mapjson__"EngineVersion"String_.of_jsoninletengine=field_mapjson__"Engine"String_.of_jsoninletdbInstanceIdentifier=field_mapjson__"DbInstanceIdentifier"String_.of_jsoninmake?tags?dbiResourceId?dbInstanceArn?dbClusterIdentifier?engineVersion?engine?dbInstanceIdentifier()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the resource type RDSDBInstance involved in a GuardDuty finding."]moduleRdsDbUserDetails=structtypenonrect={user:String_.toption[@ocaml.doc"The user name used in the anomalous login attempt."];application:String_.toption[@ocaml.doc"The application name used in the anomalous login attempt."];database:String_.toption[@ocaml.doc"The name of the database instance involved in the anomalous login attempt."];ssl:String_.toption[@ocaml.doc"The version of the Secure Socket Layer (SSL) used for the network."];authMethod:String_.toption[@ocaml.doc"The authentication method used by the user involved in the finding."]}letmake?user=fun?application->fun?database->fun?ssl->fun?authMethod->fun()->{user;application;database;ssl;authMethod}letto_valuex=structure_to_value[("user",(Option.mapx.user~f:String_.to_value));("application",(Option.mapx.application~f:String_.to_value));("database",(Option.mapx.database~f:String_.to_value));("ssl",(Option.mapx.ssl~f:String_.to_value));("authMethod",(Option.mapx.authMethod~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letauthMethod=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"authMethod")inletssl=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"ssl")inletdatabase=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"database")inletapplication=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"application")inletuser=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"user")inmake?authMethod?ssl?database?application?user()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letauthMethod=field_mapjson__"AuthMethod"String_.of_jsoninletssl=field_mapjson__"Ssl"String_.of_jsoninletdatabase=field_mapjson__"Database"String_.of_jsoninletapplication=field_mapjson__"Application"String_.of_jsoninletuser=field_mapjson__"User"String_.of_jsoninmake?authMethod?ssl?database?application?user()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the user and authentication details for a database instance involved in the finding."]moduleRdsLimitlessDbDetails=structtypenonrect={dbShardGroupIdentifier:String_.toption[@ocaml.doc"The name associated with the Limitless DB shard group."];dbShardGroupResourceId:String_.toption[@ocaml.doc"The resource identifier of the DB shard group within the Limitless Database."];dbShardGroupArn:String_.toption[@ocaml.doc"The Amazon Resource Name (ARN) that identifies the DB shard group."];engine:String_.toption[@ocaml.doc"The database engine of the database instance involved in the finding."];engineVersion:String_.toption[@ocaml.doc"The version of the database engine."];dbClusterIdentifier:String_.toption[@ocaml.doc"The name of the database cluster that is a part of the Limitless Database."];tags:Tags.toption[@ocaml.doc"Information about the tag key-value pair."]}letmake?dbShardGroupIdentifier=fun?dbShardGroupResourceId->fun?dbShardGroupArn->fun?engine->fun?engineVersion->fun?dbClusterIdentifier->fun?tags->fun()->{dbShardGroupIdentifier;dbShardGroupResourceId;dbShardGroupArn;engine;engineVersion;dbClusterIdentifier;tags}letto_valuex=structure_to_value[("dbShardGroupIdentifier",(Option.mapx.dbShardGroupIdentifier~f:String_.to_value));("dbShardGroupResourceId",(Option.mapx.dbShardGroupResourceId~f:String_.to_value));("dbShardGroupArn",(Option.mapx.dbShardGroupArn~f:String_.to_value));("engine",(Option.mapx.engine~f:String_.to_value));("engineVersion",(Option.mapx.engineVersion~f:String_.to_value));("dbClusterIdentifier",(Option.mapx.dbClusterIdentifier~f:String_.to_value));("tags",(Option.mapx.tags~f:Tags.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:Tags.of_xml)(Xml.childxml_arg0"tags")inletdbClusterIdentifier=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"dbClusterIdentifier")inletengineVersion=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"engineVersion")inletengine=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"engine")inletdbShardGroupArn=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"dbShardGroupArn")inletdbShardGroupResourceId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"dbShardGroupResourceId")inletdbShardGroupIdentifier=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"dbShardGroupIdentifier")inmake?tags?dbClusterIdentifier?engineVersion?engine?dbShardGroupArn?dbShardGroupResourceId?dbShardGroupIdentifier()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"Tags"Tags.of_jsoninletdbClusterIdentifier=field_mapjson__"DbClusterIdentifier"String_.of_jsoninletengineVersion=field_mapjson__"EngineVersion"String_.of_jsoninletengine=field_mapjson__"Engine"String_.of_jsoninletdbShardGroupArn=field_mapjson__"DbShardGroupArn"String_.of_jsoninletdbShardGroupResourceId=field_mapjson__"DbShardGroupResourceId"String_.of_jsoninletdbShardGroupIdentifier=field_mapjson__"DbShardGroupIdentifier"String_.of_jsoninmake?tags?dbClusterIdentifier?engineVersion?engine?dbShardGroupArn?dbShardGroupResourceId?dbShardGroupIdentifier()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the resource type RDSLimitlessDB that is involved in a GuardDuty finding."]moduleRecoveryPointDetails=structtypenonrect={recoveryPointArn:String_.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the recovery point."];backupVaultName:String_.toption[@ocaml.doc"The name of the backup vault containing the recovery point."]}letmake?recoveryPointArn=fun?backupVaultName->fun()->{recoveryPointArn;backupVaultName}letto_valuex=structure_to_value[("recoveryPointArn",(Option.mapx.recoveryPointArn~f:String_.to_value));("backupVaultName",(Option.mapx.backupVaultName~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letbackupVaultName=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"backupVaultName")inletrecoveryPointArn=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"recoveryPointArn")inmake?backupVaultName?recoveryPointArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letbackupVaultName=field_mapjson__"BackupVaultName"String_.of_jsoninletrecoveryPointArn=field_mapjson__"RecoveryPointArn"String_.of_jsoninmake?backupVaultName?recoveryPointArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains details about the backup recovery point."]moduleS3BucketDetails=structtypenonrect=S3BucketDetail.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:S3BucketDetail.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:S3BucketDetail.of_xml)letof_jsonj=list_of_json~kind:"S3BucketDetails"~of_json:S3BucketDetail.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleAction=structtypenonrect={actionType:String_.toption[@ocaml.doc"The GuardDuty finding activity type."];awsApiCallAction:AwsApiCallAction.toption[@ocaml.doc"Information about the AWS_API_CALL action described in this finding."];dnsRequestAction:DnsRequestAction.toption[@ocaml.doc"Information about the DNS_REQUEST action described in this finding."];networkConnectionAction:NetworkConnectionAction.toption[@ocaml.doc"Information about the NETWORK_CONNECTION action described in this finding."];portProbeAction:PortProbeAction.toption[@ocaml.doc"Information about the PORT_PROBE action described in this finding."];kubernetesApiCallAction:KubernetesApiCallAction.toption[@ocaml.doc"Information about the Kubernetes API call action described in this finding."];kubernetesPermissionCheckedDetails:KubernetesPermissionCheckedDetails.toption[@ocaml.doc"Information whether the user has the permission to use a specific Kubernetes API."];kubernetesRoleBindingDetails:KubernetesRoleBindingDetails.toption[@ocaml.doc"Information about the role binding that grants the permission defined in a Kubernetes role."];kubernetesRoleDetails:KubernetesRoleDetails.toption[@ocaml.doc"Information about the Kubernetes role name and role type."];rdsLoginAttemptAction:RdsLoginAttemptAction.toption[@ocaml.doc"Information about RDS_LOGIN_ATTEMPT action described in this finding."]}letmake?actionType=fun?awsApiCallAction->fun?dnsRequestAction->fun?networkConnectionAction->fun?portProbeAction->fun?kubernetesApiCallAction->fun?kubernetesPermissionCheckedDetails->fun?kubernetesRoleBindingDetails->fun?kubernetesRoleDetails->fun?rdsLoginAttemptAction->fun()->{actionType;awsApiCallAction;dnsRequestAction;networkConnectionAction;portProbeAction;kubernetesApiCallAction;kubernetesPermissionCheckedDetails;kubernetesRoleBindingDetails;kubernetesRoleDetails;rdsLoginAttemptAction}letto_valuex=structure_to_value[("actionType",(Option.mapx.actionType~f:String_.to_value));("awsApiCallAction",(Option.mapx.awsApiCallAction~f:AwsApiCallAction.to_value));("dnsRequestAction",(Option.mapx.dnsRequestAction~f:DnsRequestAction.to_value));("networkConnectionAction",(Option.mapx.networkConnectionAction~f:NetworkConnectionAction.to_value));("portProbeAction",(Option.mapx.portProbeAction~f:PortProbeAction.to_value));("kubernetesApiCallAction",(Option.mapx.kubernetesApiCallAction~f:KubernetesApiCallAction.to_value));("kubernetesPermissionCheckedDetails",(Option.mapx.kubernetesPermissionCheckedDetails~f:KubernetesPermissionCheckedDetails.to_value));("kubernetesRoleBindingDetails",(Option.mapx.kubernetesRoleBindingDetails~f:KubernetesRoleBindingDetails.to_value));("kubernetesRoleDetails",(Option.mapx.kubernetesRoleDetails~f:KubernetesRoleDetails.to_value));("rdsLoginAttemptAction",(Option.mapx.rdsLoginAttemptAction~f:RdsLoginAttemptAction.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letrdsLoginAttemptAction=(Option.map~f:RdsLoginAttemptAction.of_xml)(Xml.childxml_arg0"rdsLoginAttemptAction")inletkubernetesRoleDetails=(Option.map~f:KubernetesRoleDetails.of_xml)(Xml.childxml_arg0"kubernetesRoleDetails")inletkubernetesRoleBindingDetails=(Option.map~f:KubernetesRoleBindingDetails.of_xml)(Xml.childxml_arg0"kubernetesRoleBindingDetails")inletkubernetesPermissionCheckedDetails=(Option.map~f:KubernetesPermissionCheckedDetails.of_xml)(Xml.childxml_arg0"kubernetesPermissionCheckedDetails")inletkubernetesApiCallAction=(Option.map~f:KubernetesApiCallAction.of_xml)(Xml.childxml_arg0"kubernetesApiCallAction")inletportProbeAction=(Option.map~f:PortProbeAction.of_xml)(Xml.childxml_arg0"portProbeAction")inletnetworkConnectionAction=(Option.map~f:NetworkConnectionAction.of_xml)(Xml.childxml_arg0"networkConnectionAction")inletdnsRequestAction=(Option.map~f:DnsRequestAction.of_xml)(Xml.childxml_arg0"dnsRequestAction")inletawsApiCallAction=(Option.map~f:AwsApiCallAction.of_xml)(Xml.childxml_arg0"awsApiCallAction")inletactionType=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"actionType")inmake?rdsLoginAttemptAction?kubernetesRoleDetails?kubernetesRoleBindingDetails?kubernetesPermissionCheckedDetails?kubernetesApiCallAction?portProbeAction?networkConnectionAction?dnsRequestAction?awsApiCallAction?actionType()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letrdsLoginAttemptAction=field_mapjson__"RdsLoginAttemptAction"RdsLoginAttemptAction.of_jsoninletkubernetesRoleDetails=field_mapjson__"KubernetesRoleDetails"KubernetesRoleDetails.of_jsoninletkubernetesRoleBindingDetails=field_mapjson__"KubernetesRoleBindingDetails"KubernetesRoleBindingDetails.of_jsoninletkubernetesPermissionCheckedDetails=field_mapjson__"KubernetesPermissionCheckedDetails"KubernetesPermissionCheckedDetails.of_jsoninletkubernetesApiCallAction=field_mapjson__"KubernetesApiCallAction"KubernetesApiCallAction.of_jsoninletportProbeAction=field_mapjson__"PortProbeAction"PortProbeAction.of_jsoninletnetworkConnectionAction=field_mapjson__"NetworkConnectionAction"NetworkConnectionAction.of_jsoninletdnsRequestAction=field_mapjson__"DnsRequestAction"DnsRequestAction.of_jsoninletawsApiCallAction=field_mapjson__"AwsApiCallAction"AwsApiCallAction.of_jsoninletactionType=field_mapjson__"ActionType"String_.of_jsoninmake?rdsLoginAttemptAction?kubernetesRoleDetails?kubernetesRoleBindingDetails?kubernetesPermissionCheckedDetails?kubernetesApiCallAction?portProbeAction?networkConnectionAction?dnsRequestAction?awsApiCallAction?actionType()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about actions."]moduleDetection=structtypenonrect={anomaly:Anomaly.toption[@ocaml.doc"The details about the anomalous activity that caused GuardDuty to generate the finding."];sequence:Sequence.toption[@ocaml.doc"The details about the attack sequence."]}letmake?anomaly=fun?sequence->fun()->{anomaly;sequence}letto_valuex=structure_to_value[("anomaly",(Option.mapx.anomaly~f:Anomaly.to_value));("sequence",(Option.mapx.sequence~f:Sequence.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letsequence=(Option.map~f:Sequence.of_xml)(Xml.childxml_arg0"sequence")inletanomaly=(Option.map~f:Anomaly.of_xml)(Xml.childxml_arg0"anomaly")inmake?sequence?anomaly()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letsequence=field_mapjson__"Sequence"Sequence.of_jsoninletanomaly=field_mapjson__"Anomaly"Anomaly.of_jsoninmake?sequence?anomaly()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the detected behavior."]moduleDetectorId=structtypenonrect=stringletcontext_="DetectorId"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:300)>>=(fun()->check_string_mini~min:1));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"DetectorId"jletto_json=simple_to_jsonto_valueendmoduleEbsVolumeScanDetails=structtypenonrect={scanId:String_.toption[@ocaml.doc"Unique Id of the malware scan that generated the finding."];scanStartedAt:Timestamp.toption[@ocaml.doc"Returns the start date and time of the malware scan."];scanCompletedAt:Timestamp.toption[@ocaml.doc"Returns the completion date and time of the malware scan."];triggerFindingId:String_.toption[@ocaml.doc"GuardDuty finding ID that triggered a malware scan."];sources:Sources.toption[@ocaml.doc"Contains list of threat intelligence sources used to detect threats."];scanDetections:ScanDetections.toption[@ocaml.doc"Contains a complete view providing malware scan result details."];scanType:ScanType.toption[@ocaml.doc"Specifies the scan type that invoked the malware scan."]}letmake?scanId=fun?scanStartedAt->fun?scanCompletedAt->fun?triggerFindingId->fun?sources->fun?scanDetections->fun?scanType->fun()->{scanId;scanStartedAt;scanCompletedAt;triggerFindingId;sources;scanDetections;scanType}letto_valuex=structure_to_value[("scanId",(Option.mapx.scanId~f:String_.to_value));("scanStartedAt",(Option.mapx.scanStartedAt~f:Timestamp.to_value));("scanCompletedAt",(Option.mapx.scanCompletedAt~f:Timestamp.to_value));("triggerFindingId",(Option.mapx.triggerFindingId~f:String_.to_value));("sources",(Option.mapx.sources~f:Sources.to_value));("scanDetections",(Option.mapx.scanDetections~f:ScanDetections.to_value));("scanType",(Option.mapx.scanType~f:ScanType.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letscanType=(Option.map~f:ScanType.of_xml)(Xml.childxml_arg0"scanType")inletscanDetections=(Option.map~f:ScanDetections.of_xml)(Xml.childxml_arg0"scanDetections")inletsources=(Option.map~f:Sources.of_xml)(Xml.childxml_arg0"sources")inlettriggerFindingId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"triggerFindingId")inletscanCompletedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"scanCompletedAt")inletscanStartedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"scanStartedAt")inletscanId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"scanId")inmake?scanType?scanDetections?sources?triggerFindingId?scanCompletedAt?scanStartedAt?scanId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letscanType=field_mapjson__"ScanType"ScanType.of_jsoninletscanDetections=field_mapjson__"ScanDetections"ScanDetections.of_jsoninletsources=field_mapjson__"Sources"Sources.of_jsoninlettriggerFindingId=field_mapjson__"TriggerFindingId"String_.of_jsoninletscanCompletedAt=field_mapjson__"ScanCompletedAt"Timestamp.of_jsoninletscanStartedAt=field_mapjson__"ScanStartedAt"Timestamp.of_jsoninletscanId=field_mapjson__"ScanId"String_.of_jsoninmake?scanType?scanDetections?sources?triggerFindingId?scanCompletedAt?scanStartedAt?scanId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains details from the malware scan that created a finding."]moduleEvidence=structtypenonrect={threatIntelligenceDetails:ThreatIntelligenceDetails.toption[@ocaml.doc"A list of threat intelligence details related to the evidence."]}letmake?threatIntelligenceDetails=fun()->{threatIntelligenceDetails}letto_valuex=structure_to_value[("threatIntelligenceDetails",(Option.mapx.threatIntelligenceDetails~f:ThreatIntelligenceDetails.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letthreatIntelligenceDetails=(Option.map~f:ThreatIntelligenceDetails.of_xml)(Xml.childxml_arg0"threatIntelligenceDetails")inmake?threatIntelligenceDetails()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letthreatIntelligenceDetails=field_mapjson__"ThreatIntelligenceDetails"ThreatIntelligenceDetails.of_jsoninmake?threatIntelligenceDetails()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the reason that the finding was generated."]moduleMalwareScanDetails=structtypenonrect={threats:Threats.toption[@ocaml.doc"Information about the detected threats associated with the generated GuardDuty finding."];scanId:String_.toption[@ocaml.doc"The unique identifier for the malware scan."];scanType:MalwareProtectionScanType.toption[@ocaml.doc"The type of malware scan performed."];scanCategory:ScanCategory.toption[@ocaml.doc"The category of the malware scan."];scanConfiguration:MalwareProtectionFindingsScanConfiguration.toption[@ocaml.doc"The configuration settings used for the malware scan."];uniqueThreatCount:Integer.toption[@ocaml.doc"The number of unique malware threats detected during the scan."]}letmake?threats=fun?scanId->fun?scanType->fun?scanCategory->fun?scanConfiguration->fun?uniqueThreatCount->fun()->{threats;scanId;scanType;scanCategory;scanConfiguration;uniqueThreatCount}letto_valuex=structure_to_value[("threats",(Option.mapx.threats~f:Threats.to_value));("scanId",(Option.mapx.scanId~f:String_.to_value));("scanType",(Option.mapx.scanType~f:MalwareProtectionScanType.to_value));("scanCategory",(Option.mapx.scanCategory~f:ScanCategory.to_value));("scanConfiguration",(Option.mapx.scanConfiguration~f:MalwareProtectionFindingsScanConfiguration.to_value));("uniqueThreatCount",(Option.mapx.uniqueThreatCount~f:Integer.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letuniqueThreatCount=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"uniqueThreatCount")inletscanConfiguration=(Option.map~f:MalwareProtectionFindingsScanConfiguration.of_xml)(Xml.childxml_arg0"scanConfiguration")inletscanCategory=(Option.map~f:ScanCategory.of_xml)(Xml.childxml_arg0"scanCategory")inletscanType=(Option.map~f:MalwareProtectionScanType.of_xml)(Xml.childxml_arg0"scanType")inletscanId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"scanId")inletthreats=(Option.map~f:Threats.of_xml)(Xml.childxml_arg0"threats")inmake?uniqueThreatCount?scanConfiguration?scanCategory?scanType?scanId?threats()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letuniqueThreatCount=field_mapjson__"UniqueThreatCount"Integer.of_jsoninletscanConfiguration=field_mapjson__"ScanConfiguration"MalwareProtectionFindingsScanConfiguration.of_jsoninletscanCategory=field_mapjson__"ScanCategory"ScanCategory.of_jsoninletscanType=field_mapjson__"ScanType"MalwareProtectionScanType.of_jsoninletscanId=field_mapjson__"ScanId"String_.of_jsoninletthreats=field_mapjson__"Threats"Threats.of_jsoninmake?uniqueThreatCount?scanConfiguration?scanCategory?scanType?scanId?threats()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the malware scan that generated a GuardDuty finding."]moduleRuntimeDetails=structtypenonrect={process:ProcessDetails.toption[@ocaml.doc"Information about the observed process."];context:RuntimeContext.toption[@ocaml.doc"Additional information about the suspicious activity."]}letmake?process=fun?context->fun()->{process;context}letto_valuex=structure_to_value[("process",(Option.mapx.process~f:ProcessDetails.to_value));("context",(Option.mapx.context~f:RuntimeContext.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcontext=(Option.map~f:RuntimeContext.of_xml)(Xml.childxml_arg0"context")inletprocess=(Option.map~f:ProcessDetails.of_xml)(Xml.childxml_arg0"process")inmake?context?process()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcontext=field_mapjson__"Context"RuntimeContext.of_jsoninletprocess=field_mapjson__"Process"ProcessDetails.of_jsoninmake?context?process()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the process and any required context values for a specific finding."]moduleServiceAdditionalInfo=structtypenonrect={value:String_.toption[@ocaml.doc"This field specifies the value of the additional information."];type_:String_.toption[@ocaml.doc"Describes the type of the additional information."]}letmake?value=fun?type_->fun()->{value;type_}letto_valuex=structure_to_value[("value",(Option.mapx.value~f:String_.to_value));("type",(Option.mapx.type_~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettype_=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"type")inletvalue=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"value")inmake?type_?value()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettype_=field_mapjson__"Type"String_.of_jsoninletvalue=field_mapjson__"Value"String_.of_jsoninmake?type_?value()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Additional information about the generated finding."]moduleDetectorAdditionalConfigurationResult=structtypenonrect={name:FeatureAdditionalConfiguration.toption[@ocaml.doc"Name of the additional configuration."];status:FeatureStatus.toption[@ocaml.doc"Status of the additional configuration."];updatedAt:Timestamp.toption[@ocaml.doc"The timestamp at which the additional configuration was last updated. This is in UTC format."]}letmake?name=fun?status->fun?updatedAt->fun()->{name;status;updatedAt}letto_valuex=structure_to_value[("name",(Option.mapx.name~f:FeatureAdditionalConfiguration.to_value));("status",(Option.mapx.status~f:FeatureStatus.to_value));("updatedAt",(Option.mapx.updatedAt~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letupdatedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"updatedAt")inletstatus=(Option.map~f:FeatureStatus.of_xml)(Xml.childxml_arg0"status")inletname=(Option.map~f:FeatureAdditionalConfiguration.of_xml)(Xml.childxml_arg0"name")inmake?updatedAt?status?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letupdatedAt=field_mapjson__"UpdatedAt"Timestamp.of_jsoninletstatus=field_mapjson__"Status"FeatureStatus.of_jsoninletname=field_mapjson__"Name"FeatureAdditionalConfiguration.of_jsoninmake?updatedAt?status?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the additional configuration."]moduleOrganizationEbsVolumesResult=structtypenonrect={autoEnable:Boolean.toption[@ocaml.doc"An object that contains the status of whether scanning EBS volumes should be auto-enabled for new members joining the organization."]}letmake?autoEnable=fun()->{autoEnable}letto_valuex=structure_to_value[("autoEnable",(Option.mapx.autoEnable~f:Boolean.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letautoEnable=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"autoEnable")inmake?autoEnable()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letautoEnable=field_mapjson__"AutoEnable"Boolean.of_jsoninmake?autoEnable()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"An object that contains information on the status of whether EBS volumes scanning will be enabled as a data source for an organization."]moduleOrganizationAdditionalConfigurationResult=structtypenonrect={name:OrgFeatureAdditionalConfiguration.toption[@ocaml.doc"The name of the additional configuration that is configured for the member accounts within the organization. These values are applicable to only Runtime Monitoring protection plan."];autoEnable:OrgFeatureStatus.toption[@ocaml.doc"Describes the status of the additional configuration that is configured for the member accounts within the organization. One of the following values is the status for the entire organization: NEW: Indicates that when a new account joins the organization, they will have the additional configuration enabled automatically. ALL: Indicates that all accounts in the organization have the additional configuration enabled automatically. This includes NEW accounts that join the organization and accounts that may have been suspended or removed from the organization in GuardDuty. It may take up to 24 hours to update the configuration for all the member accounts. NONE: Indicates that the additional configuration will not be automatically enabled for any account in the organization. The administrator must manage the additional configuration for each account individually."]}letmake?name=fun?autoEnable->fun()->{name;autoEnable}letto_valuex=structure_to_value[("name",(Option.mapx.name~f:OrgFeatureAdditionalConfiguration.to_value));("autoEnable",(Option.mapx.autoEnable~f:OrgFeatureStatus.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letautoEnable=(Option.map~f:OrgFeatureStatus.of_xml)(Xml.childxml_arg0"autoEnable")inletname=(Option.map~f:OrgFeatureAdditionalConfiguration.of_xml)(Xml.childxml_arg0"name")inmake?autoEnable?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letautoEnable=field_mapjson__"AutoEnable"OrgFeatureStatus.of_jsoninletname=field_mapjson__"Name"OrgFeatureAdditionalConfiguration.of_jsoninmake?autoEnable?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A list of additional configuration which will be configured for the organization."]moduleInstanceArn=structtypenonrect=stringletcontext_="InstanceArn"letmakei=letopenResultinok_or_failwith(check_patterni~pattern:"arn:(aws|aws-cn|aws-us-gov):[a-z]+:[a-z]+(-[0-9]+|-[a-z]+)+:([0-9]{12}):[a-z\\-]+\\/[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:"InstanceArn"jletto_json=simple_to_jsonto_valueendmoduleScanResult=structtypenonrect=|CLEAN|INFECTED|Non_static_idofstringletmakei=iletto_string=function|CLEAN->"CLEAN"|INFECTED->"INFECTED"|Non_static_ids->sletof_string=function|"CLEAN"->CLEAN|"INFECTED"->INFECTED|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 ScanResult"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ScanResult"j)letto_json=simple_to_jsonto_valueendmoduleCriterionKey=structtypenonrect=|EC2_INSTANCE_ARN|SCAN_ID|ACCOUNT_ID|GUARDDUTY_FINDING_ID|SCAN_START_TIME|SCAN_STATUS|SCAN_TYPE|Non_static_idofstringletmakei=iletto_string=function|EC2_INSTANCE_ARN->"EC2_INSTANCE_ARN"|SCAN_ID->"SCAN_ID"|ACCOUNT_ID->"ACCOUNT_ID"|GUARDDUTY_FINDING_ID->"GUARDDUTY_FINDING_ID"|SCAN_START_TIME->"SCAN_START_TIME"|SCAN_STATUS->"SCAN_STATUS"|SCAN_TYPE->"SCAN_TYPE"|Non_static_ids->sletof_string=function|"EC2_INSTANCE_ARN"->EC2_INSTANCE_ARN|"SCAN_ID"->SCAN_ID|"ACCOUNT_ID"->ACCOUNT_ID|"GUARDDUTY_FINDING_ID"->GUARDDUTY_FINDING_ID|"SCAN_START_TIME"->SCAN_START_TIME|"SCAN_STATUS"->SCAN_STATUS|"SCAN_TYPE"->SCAN_TYPE|x->Non_static_idxletto_valuex=`Enum(to_stringx)letto_queryv=to_queryto_valuevletto_headerx=to_stringxletof_xmlxml_arg0=of_string(string_of_xml~kind:"enumeration CriterionKey"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"CriterionKey"j)letto_json=simple_to_jsonto_valueendmoduleOrganizationKubernetesAuditLogsConfiguration=structtypenonrect={autoEnable:Boolean.t[@ocaml.doc"A value that contains information on whether Kubernetes audit logs should be enabled automatically as a data source for the organization."]}letcontext_="OrganizationKubernetesAuditLogsConfiguration"letmake~autoEnable=fun()->{autoEnable}letto_valuex=structure_to_value[("autoEnable",(Some(Boolean.to_valuex.autoEnable)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letautoEnable=Boolean.of_xml(Xml.child_exn~context:context_xml_arg0"autoEnable")inmake~autoEnable()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letautoEnable=field_map_exnjson__"AutoEnable"Boolean.of_jsoninmake~autoEnable()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Organization-wide Kubernetes audit logs configuration."]moduleOrganizationScanEc2InstanceWithFindings=structtypenonrect={ebsVolumes:OrganizationEbsVolumes.toption[@ocaml.doc"Whether scanning EBS volumes should be auto-enabled for new members joining the organization."]}letmake?ebsVolumes=fun()->{ebsVolumes}letto_valuex=structure_to_value[("ebsVolumes",(Option.mapx.ebsVolumes~f:OrganizationEbsVolumes.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letebsVolumes=(Option.map~f:OrganizationEbsVolumes.of_xml)(Xml.childxml_arg0"ebsVolumes")inmake?ebsVolumes()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letebsVolumes=field_mapjson__"EbsVolumes"OrganizationEbsVolumes.of_jsoninmake?ebsVolumes()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Organization-wide EC2 instances with findings scan configuration."]moduleOrganizationAdditionalConfigurations=structtypenonrect=OrganizationAdditionalConfiguration.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:OrganizationAdditionalConfiguration.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:OrganizationAdditionalConfiguration.of_xml)letof_jsonj=list_of_json~kind:"OrganizationAdditionalConfigurations"~of_json:OrganizationAdditionalConfiguration.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleKubernetesAuditLogsConfiguration=structtypenonrect={enable:Boolean.t[@ocaml.doc"The status of Kubernetes audit logs as a data source."]}letcontext_="KubernetesAuditLogsConfiguration"letmake~enable=fun()->{enable}letto_valuex=structure_to_value[("enable",(Some(Boolean.to_valuex.enable)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letenable=Boolean.of_xml(Xml.child_exn~context:context_xml_arg0"enable")inmake~enable()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letenable=field_map_exnjson__"Enable"Boolean.of_jsoninmake~enable()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Describes whether Kubernetes audit logs are enabled as a data source."]moduleScanEc2InstanceWithFindings=structtypenonrect={ebsVolumes:Boolean.toption[@ocaml.doc"Describes the configuration for scanning EBS volumes as data source."]}letmake?ebsVolumes=fun()->{ebsVolumes}letto_valuex=structure_to_value[("ebsVolumes",(Option.mapx.ebsVolumes~f:Boolean.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letebsVolumes=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"ebsVolumes")inmake?ebsVolumes()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letebsVolumes=field_mapjson__"EbsVolumes"Boolean.of_jsoninmake?ebsVolumes()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Describes whether Malware Protection for EC2 instances with findings will be enabled as a data source."]moduleMemberAdditionalConfigurations=structtypenonrect=MemberAdditionalConfiguration.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:MemberAdditionalConfiguration.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:MemberAdditionalConfiguration.of_xml)letof_jsonj=list_of_json~kind:"MemberAdditionalConfigurations"~of_json:MemberAdditionalConfiguration.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleScanCondition=structtypenonrect={mapEquals:MapEquals.t[@ocaml.doc"Represents an mapEqual condition to be applied to a single field when triggering for malware scan."]}letcontext_="ScanCondition"letmake~mapEquals=fun()->{mapEquals}letto_valuex=structure_to_value[("mapEquals",(Some(MapEquals.to_valuex.mapEquals)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmapEquals=MapEquals.of_xml(Xml.child_exn~context:context_xml_arg0"mapEquals")inmake~mapEquals()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmapEquals=field_map_exnjson__"MapEquals"MapEquals.of_jsoninmake~mapEquals()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the condition."]moduleScanCriterionKey=structtypenonrect=|EC2_INSTANCE_TAG|Non_static_idofstringletmakei=iletto_string=function|EC2_INSTANCE_TAG->"EC2_INSTANCE_TAG"|Non_static_ids->sletof_string=function|"EC2_INSTANCE_TAG"->EC2_INSTANCE_TAG|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 ScanCriterionKey"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ScanCriterionKey"j)letto_json=simple_to_jsonto_valueendmoduleMalwareProtectionPlanTaggingActionStatus=structtypenonrect=|ENABLED|DISABLED|Non_static_idofstringletmakei=iletto_string=function|ENABLED->"ENABLED"|DISABLED->"DISABLED"|Non_static_ids->sletof_string=function|"ENABLED"->ENABLED|"DISABLED"->DISABLED|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 MalwareProtectionPlanTaggingActionStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"MalwareProtectionPlanTaggingActionStatus"j)letto_json=simple_to_jsonto_valueendmoduleMalwareProtectionPlanObjectPrefixesList=structtypenonrect=String_.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:5)>>=(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: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:"MalwareProtectionPlanObjectPrefixesList"~of_json:String_.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleCondition=structtypenonrect={eq:Eq.toption[@ocaml.doc"Represents the equal condition to be applied to a single field when querying for findings. Max values: 50"];neq:Neq.toption[@ocaml.doc"Represents the not equal condition to be applied to a single field when querying for findings. Max values: 50"];gt:Integer.toption[@ocaml.doc"Represents a greater than condition to be applied to a single field when querying for findings."];gte:Integer.toption[@ocaml.doc"Represents a greater than or equal condition to be applied to a single field when querying for findings."];lt:Integer.toption[@ocaml.doc"Represents a less than condition to be applied to a single field when querying for findings."];lte:Integer.toption[@ocaml.doc"Represents a less than or equal condition to be applied to a single field when querying for findings."];equals:Equals.toption[@ocaml.doc"Represents an equal condition to be applied to a single field when querying for findings. Max values: 50"];notEquals:NotEquals.toption[@ocaml.doc"Represents a not equal condition to be applied to a single field when querying for findings. Max values: 50"];greaterThan:Long.toption[@ocaml.doc"Represents a greater than condition to be applied to a single field when querying for findings."];greaterThanOrEqual:Long.toption[@ocaml.doc"Represents a greater than or equal condition to be applied to a single field when querying for findings."];lessThan:Long.toption[@ocaml.doc"Represents a less than condition to be applied to a single field when querying for findings."];lessThanOrEqual:Long.toption[@ocaml.doc"Represents a less than or equal condition to be applied to a single field when querying for findings."];matches:Matches.toption[@ocaml.doc"Represents the match condition to be applied to a single field when querying for findings. The matches condition is available only for create-filter and update-filter APIs."];notMatches:NotMatches.toption[@ocaml.doc"Represents the not match condition to be applied to a single field when querying for findings. The not-matches condition is available only for create-filter and update-filter APIs."]}letmake?eq=fun?neq->fun?gt->fun?gte->fun?lt->fun?lte->fun?equals->fun?notEquals->fun?greaterThan->fun?greaterThanOrEqual->fun?lessThan->fun?lessThanOrEqual->fun?matches->fun?notMatches->fun()->{eq;neq;gt;gte;lt;lte;equals;notEquals;greaterThan;greaterThanOrEqual;lessThan;lessThanOrEqual;matches;notMatches}letto_valuex=structure_to_value[("eq",(Option.mapx.eq~f:Eq.to_value));("neq",(Option.mapx.neq~f:Neq.to_value));("gt",(Option.mapx.gt~f:Integer.to_value));("gte",(Option.mapx.gte~f:Integer.to_value));("lt",(Option.mapx.lt~f:Integer.to_value));("lte",(Option.mapx.lte~f:Integer.to_value));("equals",(Option.mapx.equals~f:Equals.to_value));("notEquals",(Option.mapx.notEquals~f:NotEquals.to_value));("greaterThan",(Option.mapx.greaterThan~f:Long.to_value));("greaterThanOrEqual",(Option.mapx.greaterThanOrEqual~f:Long.to_value));("lessThan",(Option.mapx.lessThan~f:Long.to_value));("lessThanOrEqual",(Option.mapx.lessThanOrEqual~f:Long.to_value));("matches",(Option.mapx.matches~f:Matches.to_value));("notMatches",(Option.mapx.notMatches~f:NotMatches.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnotMatches=(Option.map~f:NotMatches.of_xml)(Xml.childxml_arg0"notMatches")inletmatches=(Option.map~f:Matches.of_xml)(Xml.childxml_arg0"matches")inletlessThanOrEqual=(Option.map~f:Long.of_xml)(Xml.childxml_arg0"lessThanOrEqual")inletlessThan=(Option.map~f:Long.of_xml)(Xml.childxml_arg0"lessThan")inletgreaterThanOrEqual=(Option.map~f:Long.of_xml)(Xml.childxml_arg0"greaterThanOrEqual")inletgreaterThan=(Option.map~f:Long.of_xml)(Xml.childxml_arg0"greaterThan")inletnotEquals=(Option.map~f:NotEquals.of_xml)(Xml.childxml_arg0"notEquals")inletequals=(Option.map~f:Equals.of_xml)(Xml.childxml_arg0"equals")inletlte=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"lte")inletlt=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"lt")inletgte=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"gte")inletgt=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"gt")inletneq=(Option.map~f:Neq.of_xml)(Xml.childxml_arg0"neq")inleteq=(Option.map~f:Eq.of_xml)(Xml.childxml_arg0"eq")inmake?notMatches?matches?lessThanOrEqual?lessThan?greaterThanOrEqual?greaterThan?notEquals?equals?lte?lt?gte?gt?neq?eq()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnotMatches=field_mapjson__"NotMatches"NotMatches.of_jsoninletmatches=field_mapjson__"Matches"Matches.of_jsoninletlessThanOrEqual=field_mapjson__"LessThanOrEqual"Long.of_jsoninletlessThan=field_mapjson__"LessThan"Long.of_jsoninletgreaterThanOrEqual=field_mapjson__"GreaterThanOrEqual"Long.of_jsoninletgreaterThan=field_mapjson__"GreaterThan"Long.of_jsoninletnotEquals=field_mapjson__"NotEquals"NotEquals.of_jsoninletequals=field_mapjson__"Equals"Equals.of_jsoninletlte=field_mapjson__"Lte"Integer.of_jsoninletlt=field_mapjson__"Lt"Integer.of_jsoninletgte=field_mapjson__"Gte"Integer.of_jsoninletgt=field_mapjson__"Gt"Integer.of_jsoninletneq=field_mapjson__"Neq"Neq.of_jsoninleteq=field_mapjson__"Eq"Eq.of_jsoninmake?notMatches?matches?lessThanOrEqual?lessThan?greaterThanOrEqual?greaterThan?notEquals?equals?lte?lt?gte?gt?neq?eq()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the condition."]moduleDetectorAdditionalConfigurations=structtypenonrect=DetectorAdditionalConfiguration.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:DetectorAdditionalConfiguration.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:DetectorAdditionalConfiguration.of_xml)letof_jsonj=list_of_json~kind:"DetectorAdditionalConfigurations"~of_json:DetectorAdditionalConfiguration.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleDetectorFeature=structtypenonrect=|S3_DATA_EVENTS|EKS_AUDIT_LOGS|EBS_MALWARE_PROTECTION|RDS_LOGIN_EVENTS|LAMBDA_NETWORK_LOGS|EKS_RUNTIME_MONITORING|RUNTIME_MONITORING|Non_static_idofstringletmakei=iletto_string=function|S3_DATA_EVENTS->"S3_DATA_EVENTS"|EKS_AUDIT_LOGS->"EKS_AUDIT_LOGS"|EBS_MALWARE_PROTECTION->"EBS_MALWARE_PROTECTION"|RDS_LOGIN_EVENTS->"RDS_LOGIN_EVENTS"|LAMBDA_NETWORK_LOGS->"LAMBDA_NETWORK_LOGS"|EKS_RUNTIME_MONITORING->"EKS_RUNTIME_MONITORING"|RUNTIME_MONITORING->"RUNTIME_MONITORING"|Non_static_ids->sletof_string=function|"S3_DATA_EVENTS"->S3_DATA_EVENTS|"EKS_AUDIT_LOGS"->EKS_AUDIT_LOGS|"EBS_MALWARE_PROTECTION"->EBS_MALWARE_PROTECTION|"RDS_LOGIN_EVENTS"->RDS_LOGIN_EVENTS|"LAMBDA_NETWORK_LOGS"->LAMBDA_NETWORK_LOGS|"EKS_RUNTIME_MONITORING"->EKS_RUNTIME_MONITORING|"RUNTIME_MONITORING"->RUNTIME_MONITORING|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 DetectorFeature"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"DetectorFeature"j)letto_json=simple_to_jsonto_valueendmoduleDestinationType=structtypenonrect=|S3|Non_static_idofstringletmakei=iletto_string=function|S3->"S3"|Non_static_ids->sletof_string=function|"S3"->S3|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 DestinationType"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"DestinationType"j)letto_json=simple_to_jsonto_valueendmodulePublishingStatus=structtypenonrect=|PENDING_VERIFICATION|PUBLISHING|UNABLE_TO_PUBLISH_FIX_DESTINATION_PROPERTY|STOPPED|Non_static_idofstringletmakei=iletto_string=function|PENDING_VERIFICATION->"PENDING_VERIFICATION"|PUBLISHING->"PUBLISHING"|UNABLE_TO_PUBLISH_FIX_DESTINATION_PROPERTY->"UNABLE_TO_PUBLISH_FIX_DESTINATION_PROPERTY"|STOPPED->"STOPPED"|Non_static_ids->sletof_string=function|"PENDING_VERIFICATION"->PENDING_VERIFICATION|"PUBLISHING"->PUBLISHING|"UNABLE_TO_PUBLISH_FIX_DESTINATION_PROPERTY"->UNABLE_TO_PUBLISH_FIX_DESTINATION_PROPERTY|"STOPPED"->STOPPED|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 PublishingStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"PublishingStatus"j)letto_json=simple_to_jsonto_valueendmoduleAdminStatus=structtypenonrect=|ENABLED|DISABLE_IN_PROGRESS|Non_static_idofstringletmakei=iletto_string=function|ENABLED->"ENABLED"|DISABLE_IN_PROGRESS->"DISABLE_IN_PROGRESS"|Non_static_ids->sletof_string=function|"ENABLED"->ENABLED|"DISABLE_IN_PROGRESS"->DISABLE_IN_PROGRESS|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 AdminStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"AdminStatus"j)letto_json=simple_to_jsonto_valueendmoduleEmail=structtypenonrect=stringletcontext_="Email"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:64)>>=(fun()->check_string_mini~min:1));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"Email"jletto_json=simple_to_jsonto_valueendmoduleMalwareProtectionResourceType=structtypenonrect=|EBS_RECOVERY_POINT|EBS_SNAPSHOT|EBS_VOLUME|EC2_AMI|EC2_INSTANCE|EC2_RECOVERY_POINT|S3_RECOVERY_POINT|S3_BUCKET|Non_static_idofstringletmakei=iletto_string=function|EBS_RECOVERY_POINT->"EBS_RECOVERY_POINT"|EBS_SNAPSHOT->"EBS_SNAPSHOT"|EBS_VOLUME->"EBS_VOLUME"|EC2_AMI->"EC2_AMI"|EC2_INSTANCE->"EC2_INSTANCE"|EC2_RECOVERY_POINT->"EC2_RECOVERY_POINT"|S3_RECOVERY_POINT->"S3_RECOVERY_POINT"|S3_BUCKET->"S3_BUCKET"|Non_static_ids->sletof_string=function|"EBS_RECOVERY_POINT"->EBS_RECOVERY_POINT|"EBS_SNAPSHOT"->EBS_SNAPSHOT|"EBS_VOLUME"->EBS_VOLUME|"EC2_AMI"->EC2_AMI|"EC2_INSTANCE"->EC2_INSTANCE|"EC2_RECOVERY_POINT"->EC2_RECOVERY_POINT|"S3_RECOVERY_POINT"->S3_RECOVERY_POINT|"S3_BUCKET"->S3_BUCKET|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 MalwareProtectionResourceType"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"MalwareProtectionResourceType"j)letto_json=simple_to_jsonto_valueendmoduleMalwareProtectionScanStatus=structtypenonrect=|RUNNING|COMPLETED|COMPLETED_WITH_ISSUES|FAILED|SKIPPED|Non_static_idofstringletmakei=iletto_string=function|RUNNING->"RUNNING"|COMPLETED->"COMPLETED"|COMPLETED_WITH_ISSUES->"COMPLETED_WITH_ISSUES"|FAILED->"FAILED"|SKIPPED->"SKIPPED"|Non_static_ids->sletof_string=function|"RUNNING"->RUNNING|"COMPLETED"->COMPLETED|"COMPLETED_WITH_ISSUES"->COMPLETED_WITH_ISSUES|"FAILED"->FAILED|"SKIPPED"->SKIPPED|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 MalwareProtectionScanStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"MalwareProtectionScanStatus"j)letto_json=simple_to_jsonto_valueendmoduleScanResultStatus=structtypenonrect=|NO_THREATS_FOUND|THREATS_FOUND|Non_static_idofstringletmakei=iletto_string=function|NO_THREATS_FOUND->"NO_THREATS_FOUND"|THREATS_FOUND->"THREATS_FOUND"|Non_static_ids->sletof_string=function|"NO_THREATS_FOUND"->NO_THREATS_FOUND|"THREATS_FOUND"->THREATS_FOUND|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 ScanResultStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ScanResultStatus"j)letto_json=simple_to_jsonto_valueendmoduleListMalwareScansFilterCriterion=structtypenonrect={listMalwareScansCriterionKey:ListMalwareScansCriterionKey.toption[@ocaml.doc"An enum value representing possible scan properties to match with given scan entries."];filterCondition:FilterCondition.toption[@ocaml.doc"Contains information about the condition."]}letmake?listMalwareScansCriterionKey=fun?filterCondition->fun()->{listMalwareScansCriterionKey;filterCondition}letto_valuex=structure_to_value[("criterionKey",(Option.mapx.listMalwareScansCriterionKey~f:ListMalwareScansCriterionKey.to_value));("filterCondition",(Option.mapx.filterCondition~f:FilterCondition.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letfilterCondition=(Option.map~f:FilterCondition.of_xml)(Xml.childxml_arg0"filterCondition")inletlistMalwareScansCriterionKey=(Option.map~f:ListMalwareScansCriterionKey.of_xml)(Xml.childxml_arg0"criterionKey")inmake?filterCondition?listMalwareScansCriterionKey()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letfilterCondition=field_mapjson__"FilterCondition"FilterCondition.of_jsoninletlistMalwareScansCriterionKey=field_mapjson__"ListMalwareScansCriterionKey"ListMalwareScansCriterionKey.of_jsoninmake?filterCondition?listMalwareScansCriterionKey()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Represents a condition that when matched will be added to the response of the operation. Irrespective of using any filter criteria, an administrator account can view the scan entries for all of its member accounts. However, each member account can view the scan entries only for their own account."]moduleCoverageResourceDetails=structtypenonrect={eksClusterDetails:CoverageEksClusterDetails.toption[@ocaml.doc"EKS cluster details involved in the coverage statistics."];ecsClusterDetails:CoverageEcsClusterDetails.toption[@ocaml.doc"Information about the Amazon ECS cluster that is assessed for runtime coverage."];ec2InstanceDetails:CoverageEc2InstanceDetails.toption[@ocaml.doc"Information about the Amazon EC2 instance assessed for runtime coverage."];resourceType:ResourceType.toption[@ocaml.doc"The type of Amazon Web Services resource."]}letmake?eksClusterDetails=fun?ecsClusterDetails->fun?ec2InstanceDetails->fun?resourceType->fun()->{eksClusterDetails;ecsClusterDetails;ec2InstanceDetails;resourceType}letto_valuex=structure_to_value[("eksClusterDetails",(Option.mapx.eksClusterDetails~f:CoverageEksClusterDetails.to_value));("ecsClusterDetails",(Option.mapx.ecsClusterDetails~f:CoverageEcsClusterDetails.to_value));("ec2InstanceDetails",(Option.mapx.ec2InstanceDetails~f:CoverageEc2InstanceDetails.to_value));("resourceType",(Option.mapx.resourceType~f:ResourceType.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letresourceType=(Option.map~f:ResourceType.of_xml)(Xml.childxml_arg0"resourceType")inletec2InstanceDetails=(Option.map~f:CoverageEc2InstanceDetails.of_xml)(Xml.childxml_arg0"ec2InstanceDetails")inletecsClusterDetails=(Option.map~f:CoverageEcsClusterDetails.of_xml)(Xml.childxml_arg0"ecsClusterDetails")inleteksClusterDetails=(Option.map~f:CoverageEksClusterDetails.of_xml)(Xml.childxml_arg0"eksClusterDetails")inmake?resourceType?ec2InstanceDetails?ecsClusterDetails?eksClusterDetails()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letresourceType=field_mapjson__"ResourceType"ResourceType.of_jsoninletec2InstanceDetails=field_mapjson__"Ec2InstanceDetails"CoverageEc2InstanceDetails.of_jsoninletecsClusterDetails=field_mapjson__"EcsClusterDetails"CoverageEcsClusterDetails.of_jsoninleteksClusterDetails=field_mapjson__"EksClusterDetails"CoverageEksClusterDetails.of_jsoninmake?resourceType?ec2InstanceDetails?ecsClusterDetails?eksClusterDetails()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the resource for each individual EKS cluster."]moduleCoverageStatus=structtypenonrect=|HEALTHY|UNHEALTHY|Non_static_idofstringletmakei=iletto_string=function|HEALTHY->"HEALTHY"|UNHEALTHY->"UNHEALTHY"|Non_static_ids->sletof_string=function|"HEALTHY"->HEALTHY|"UNHEALTHY"->UNHEALTHY|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 CoverageStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"CoverageStatus"j)letto_json=simple_to_jsonto_valueendmoduleCoverageFilterCriterion=structtypenonrect={criterionKey:CoverageFilterCriterionKey.toption[@ocaml.doc"An enum value representing possible filter fields. Replace the enum value CLUSTER_NAME with EKS_CLUSTER_NAME. CLUSTER_NAME has been deprecated."];filterCondition:CoverageFilterCondition.toption[@ocaml.doc"Contains information about the condition."]}letmake?criterionKey=fun?filterCondition->fun()->{criterionKey;filterCondition}letto_valuex=structure_to_value[("criterionKey",(Option.mapx.criterionKey~f:CoverageFilterCriterionKey.to_value));("filterCondition",(Option.mapx.filterCondition~f:CoverageFilterCondition.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letfilterCondition=(Option.map~f:CoverageFilterCondition.of_xml)(Xml.childxml_arg0"filterCondition")inletcriterionKey=(Option.map~f:CoverageFilterCriterionKey.of_xml)(Xml.childxml_arg0"criterionKey")inmake?filterCondition?criterionKey()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letfilterCondition=field_mapjson__"FilterCondition"CoverageFilterCondition.of_jsoninletcriterionKey=field_mapjson__"CriterionKey"CoverageFilterCriterionKey.of_jsoninmake?filterCondition?criterionKey()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Represents a condition that when matched will be added to the response of the operation."]moduleUsageAccountResult=structtypenonrect={accountId:AccountId.toption[@ocaml.doc"The Account ID that generated usage."];total:Total.toption[@ocaml.doc"Represents the total of usage for the Account ID."]}letmake?accountId=fun?total->fun()->{accountId;total}letto_valuex=structure_to_value[("accountId",(Option.mapx.accountId~f:AccountId.to_value));("total",(Option.mapx.total~f:Total.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettotal=(Option.map~f:Total.of_xml)(Xml.childxml_arg0"total")inletaccountId=(Option.map~f:AccountId.of_xml)(Xml.childxml_arg0"accountId")inmake?total?accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettotal=field_mapjson__"Total"Total.of_jsoninletaccountId=field_mapjson__"AccountId"AccountId.of_jsoninmake?total?accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information on the total of usage based on account IDs."]moduleUsageDataSourceResult=structtypenonrect={dataSource:DataSource.toption[@ocaml.doc"The data source type that generated usage."];total:Total.toption[@ocaml.doc"Represents the total of usage for the specified data source."]}letmake?dataSource=fun?total->fun()->{dataSource;total}letto_valuex=structure_to_value[("dataSource",(Option.mapx.dataSource~f:DataSource.to_value));("total",(Option.mapx.total~f:Total.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettotal=(Option.map~f:Total.of_xml)(Xml.childxml_arg0"total")inletdataSource=(Option.map~f:DataSource.of_xml)(Xml.childxml_arg0"dataSource")inmake?total?dataSource()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettotal=field_mapjson__"Total"Total.of_jsoninletdataSource=field_mapjson__"DataSource"DataSource.of_jsoninmake?total?dataSource()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information on the result of usage based on data source type."]moduleUsageFeatureResult=structtypenonrect={feature:UsageFeature.toption[@ocaml.doc"The feature that generated the usage cost."];total:Total.toption}letmake?feature=fun?total->fun()->{feature;total}letto_valuex=structure_to_value[("feature",(Option.mapx.feature~f:UsageFeature.to_value));("total",(Option.mapx.total~f:Total.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettotal=(Option.map~f:Total.of_xml)(Xml.childxml_arg0"total")inletfeature=(Option.map~f:UsageFeature.of_xml)(Xml.childxml_arg0"feature")inmake?total?feature()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettotal=field_mapjson__"Total"Total.of_jsoninletfeature=field_mapjson__"Feature"UsageFeature.of_jsoninmake?total?feature()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the result of the total usage based on the feature."]moduleUsageResourceResult=structtypenonrect={resource:String_.toption[@ocaml.doc"The Amazon Web Services resource that generated usage."];total:Total.toption[@ocaml.doc"Represents the sum total of usage for the specified resource type."]}letmake?resource=fun?total->fun()->{resource;total}letto_valuex=structure_to_value[("resource",(Option.mapx.resource~f:String_.to_value));("total",(Option.mapx.total~f:Total.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettotal=(Option.map~f:Total.of_xml)(Xml.childxml_arg0"total")inletresource=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"resource")inmake?total?resource()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettotal=field_mapjson__"Total"Total.of_jsoninletresource=field_mapjson__"Resource"String_.of_jsoninmake?total?resource()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information on the sum of usage based on an Amazon Web Services resource."]moduleUsageTopAccountsResult=structtypenonrect={feature:UsageFeature.toption[@ocaml.doc"Features by which you can generate the usage statistics. RDS_LOGIN_EVENTS is currently not supported with topAccountsByFeature."];accounts:UsageTopAccountsByFeatureList.toption[@ocaml.doc"The accounts that contributed to the total usage cost."]}letmake?feature=fun?accounts->fun()->{feature;accounts}letto_valuex=structure_to_value[("feature",(Option.mapx.feature~f:UsageFeature.to_value));("accounts",(Option.mapx.accounts~f:UsageTopAccountsByFeatureList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccounts=(Option.map~f:UsageTopAccountsByFeatureList.of_xml)(Xml.childxml_arg0"accounts")inletfeature=(Option.map~f:UsageFeature.of_xml)(Xml.childxml_arg0"feature")inmake?accounts?feature()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccounts=field_mapjson__"Accounts"UsageTopAccountsByFeatureList.of_jsoninletfeature=field_mapjson__"Feature"UsageFeature.of_jsoninmake?accounts?feature()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the usage statistics, calculated by top accounts by feature."]moduleDataSourcesFreeTrial=structtypenonrect={cloudTrail:DataSourceFreeTrial.toption[@ocaml.doc"Describes whether any Amazon Web Services CloudTrail management event logs are enabled as data sources."];dnsLogs:DataSourceFreeTrial.toption[@ocaml.doc"Describes whether any DNS logs are enabled as data sources."];flowLogs:DataSourceFreeTrial.toption[@ocaml.doc"Describes whether any VPC Flow logs are enabled as data sources."];s3Logs:DataSourceFreeTrial.toption[@ocaml.doc"Describes whether any S3 data event logs are enabled as data sources."];kubernetes:KubernetesDataSourceFreeTrial.toption[@ocaml.doc"Describes whether any Kubernetes logs are enabled as data sources."];malwareProtection:MalwareProtectionDataSourceFreeTrial.toption[@ocaml.doc"Describes whether Malware Protection is enabled as a data source."]}letmake?cloudTrail=fun?dnsLogs->fun?flowLogs->fun?s3Logs->fun?kubernetes->fun?malwareProtection->fun()->{cloudTrail;dnsLogs;flowLogs;s3Logs;kubernetes;malwareProtection}letto_valuex=structure_to_value[("cloudTrail",(Option.mapx.cloudTrail~f:DataSourceFreeTrial.to_value));("dnsLogs",(Option.mapx.dnsLogs~f:DataSourceFreeTrial.to_value));("flowLogs",(Option.mapx.flowLogs~f:DataSourceFreeTrial.to_value));("s3Logs",(Option.mapx.s3Logs~f:DataSourceFreeTrial.to_value));("kubernetes",(Option.mapx.kubernetes~f:KubernetesDataSourceFreeTrial.to_value));("malwareProtection",(Option.mapx.malwareProtection~f:MalwareProtectionDataSourceFreeTrial.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmalwareProtection=(Option.map~f:MalwareProtectionDataSourceFreeTrial.of_xml)(Xml.childxml_arg0"malwareProtection")inletkubernetes=(Option.map~f:KubernetesDataSourceFreeTrial.of_xml)(Xml.childxml_arg0"kubernetes")inlets3Logs=(Option.map~f:DataSourceFreeTrial.of_xml)(Xml.childxml_arg0"s3Logs")inletflowLogs=(Option.map~f:DataSourceFreeTrial.of_xml)(Xml.childxml_arg0"flowLogs")inletdnsLogs=(Option.map~f:DataSourceFreeTrial.of_xml)(Xml.childxml_arg0"dnsLogs")inletcloudTrail=(Option.map~f:DataSourceFreeTrial.of_xml)(Xml.childxml_arg0"cloudTrail")inmake?malwareProtection?kubernetes?s3Logs?flowLogs?dnsLogs?cloudTrail()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmalwareProtection=field_mapjson__"MalwareProtection"MalwareProtectionDataSourceFreeTrial.of_jsoninletkubernetes=field_mapjson__"Kubernetes"KubernetesDataSourceFreeTrial.of_jsoninlets3Logs=field_mapjson__"S3Logs"DataSourceFreeTrial.of_jsoninletflowLogs=field_mapjson__"FlowLogs"DataSourceFreeTrial.of_jsoninletdnsLogs=field_mapjson__"DnsLogs"DataSourceFreeTrial.of_jsoninletcloudTrail=field_mapjson__"CloudTrail"DataSourceFreeTrial.of_jsoninmake?malwareProtection?kubernetes?s3Logs?flowLogs?dnsLogs?cloudTrail()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about which data sources are enabled for the GuardDuty member account."]moduleFreeTrialFeatureConfigurationsResults=structtypenonrect=FreeTrialFeatureConfigurationResult.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:FreeTrialFeatureConfigurationResult.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:FreeTrialFeatureConfigurationResult.of_xml)letof_jsonj=list_of_json~kind:"FreeTrialFeatureConfigurationsResults"~of_json:FreeTrialFeatureConfigurationResult.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleOrganizationFeatureStatisticsResults=structtypenonrect=OrganizationFeatureStatistics.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:OrganizationFeatureStatistics.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:OrganizationFeatureStatistics.of_xml)letof_jsonj=list_of_json~kind:"OrganizationFeatureStatisticsResults"~of_json:OrganizationFeatureStatistics.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleDataSourceConfigurationsResult=structtypenonrect={cloudTrail:CloudTrailConfigurationResult.toption[@ocaml.doc"An object that contains information on the status of CloudTrail as a data source."];dNSLogs:DNSLogsConfigurationResult.toption[@ocaml.doc"An object that contains information on the status of DNS logs as a data source."];flowLogs:FlowLogsConfigurationResult.toption[@ocaml.doc"An object that contains information on the status of VPC flow logs as a data source."];s3Logs:S3LogsConfigurationResult.toption[@ocaml.doc"An object that contains information on the status of S3 Data event logs as a data source."];kubernetes:KubernetesConfigurationResult.toption[@ocaml.doc"An object that contains information on the status of all Kubernetes data sources."];malwareProtection:MalwareProtectionConfigurationResult.toption[@ocaml.doc"Describes the configuration of Malware Protection data sources."]}letmake?cloudTrail=fun?dNSLogs->fun?flowLogs->fun?s3Logs->fun?kubernetes->fun?malwareProtection->fun()->{cloudTrail;dNSLogs;flowLogs;s3Logs;kubernetes;malwareProtection}letto_valuex=structure_to_value[("cloudTrail",(Option.mapx.cloudTrail~f:CloudTrailConfigurationResult.to_value));("dnsLogs",(Option.mapx.dNSLogs~f:DNSLogsConfigurationResult.to_value));("flowLogs",(Option.mapx.flowLogs~f:FlowLogsConfigurationResult.to_value));("s3Logs",(Option.mapx.s3Logs~f:S3LogsConfigurationResult.to_value));("kubernetes",(Option.mapx.kubernetes~f:KubernetesConfigurationResult.to_value));("malwareProtection",(Option.mapx.malwareProtection~f:MalwareProtectionConfigurationResult.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmalwareProtection=(Option.map~f:MalwareProtectionConfigurationResult.of_xml)(Xml.childxml_arg0"malwareProtection")inletkubernetes=(Option.map~f:KubernetesConfigurationResult.of_xml)(Xml.childxml_arg0"kubernetes")inlets3Logs=(Option.map~f:S3LogsConfigurationResult.of_xml)(Xml.childxml_arg0"s3Logs")inletflowLogs=(Option.map~f:FlowLogsConfigurationResult.of_xml)(Xml.childxml_arg0"flowLogs")inletdNSLogs=(Option.map~f:DNSLogsConfigurationResult.of_xml)(Xml.childxml_arg0"dnsLogs")inletcloudTrail=(Option.map~f:CloudTrailConfigurationResult.of_xml)(Xml.childxml_arg0"cloudTrail")inmake?malwareProtection?kubernetes?s3Logs?flowLogs?dNSLogs?cloudTrail()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmalwareProtection=field_mapjson__"MalwareProtection"MalwareProtectionConfigurationResult.of_jsoninletkubernetes=field_mapjson__"Kubernetes"KubernetesConfigurationResult.of_jsoninlets3Logs=field_mapjson__"S3Logs"S3LogsConfigurationResult.of_jsoninletflowLogs=field_mapjson__"FlowLogs"FlowLogsConfigurationResult.of_jsoninletdNSLogs=field_mapjson__"DNSLogs"DNSLogsConfigurationResult.of_jsoninletcloudTrail=field_mapjson__"CloudTrail"CloudTrailConfigurationResult.of_jsoninmake?malwareProtection?kubernetes?s3Logs?flowLogs?dNSLogs?cloudTrail()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information on the status of data sources for the detector."]moduleMemberFeaturesConfigurationsResults=structtypenonrect=MemberFeaturesConfigurationResult.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:MemberFeaturesConfigurationResult.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:MemberFeaturesConfigurationResult.of_xml)letof_jsonj=list_of_json~kind:"MemberFeaturesConfigurationsResults"~of_json:MemberFeaturesConfigurationResult.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleScanResultThreat=structtypenonrect={name:NonEmptyString.toption[@ocaml.doc"The name of the detected threat."];source:DetectionSource.toption[@ocaml.doc"The source that detected this threat."];count:PositiveLong.toption[@ocaml.doc"The number of instances of this threat that were detected."];hash:NonEmptyString.toption[@ocaml.doc"The hash value associated with the detected threat."];itemDetails:ItemDetailsList.toption[@ocaml.doc"Additional information about where this threat was detected."]}letmake?name=fun?source->fun?count->fun?hash->fun?itemDetails->fun()->{name;source;count;hash;itemDetails}letto_valuex=structure_to_value[("name",(Option.mapx.name~f:NonEmptyString.to_value));("source",(Option.mapx.source~f:DetectionSource.to_value));("count",(Option.mapx.count~f:PositiveLong.to_value));("hash",(Option.mapx.hash~f:NonEmptyString.to_value));("itemDetails",(Option.mapx.itemDetails~f:ItemDetailsList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letitemDetails=(Option.map~f:ItemDetailsList.of_xml)(Xml.childxml_arg0"itemDetails")inlethash=(Option.map~f:NonEmptyString.of_xml)(Xml.childxml_arg0"hash")inletcount=(Option.map~f:PositiveLong.of_xml)(Xml.childxml_arg0"count")inletsource=(Option.map~f:DetectionSource.of_xml)(Xml.childxml_arg0"source")inletname=(Option.map~f:NonEmptyString.of_xml)(Xml.childxml_arg0"name")inmake?itemDetails?hash?count?source?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letitemDetails=field_mapjson__"ItemDetails"ItemDetailsList.of_jsoninlethash=field_mapjson__"Hash"NonEmptyString.of_jsoninletcount=field_mapjson__"Count"PositiveLong.of_jsoninletsource=field_mapjson__"Source"DetectionSource.of_jsoninletname=field_mapjson__"Name"NonEmptyString.of_jsoninmake?itemDetails?hash?count?source?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about a specific threat that was detected during the malware scan."]moduleScanStatusReason=structtypenonrect=|ACCESS_DENIED|RESOURCE_NOT_FOUND|SNAPSHOT_SIZE_LIMIT_EXCEEDED|RESOURCE_UNAVAILABLE|INCONSISTENT_SOURCE|INCREMENTAL_NO_DIFFERENCE|NO_EBS_VOLUMES_FOUND|UNSUPPORTED_PRODUCT_CODE_TYPE|AMI_SNAPSHOT_LIMIT_EXCEEDED|UNRELATED_RESOURCES|BASE_RESOURCE_NOT_SCANNED|BASE_CREATED_AFTER_TARGET|UNSUPPORTED_FOR_INCREMENTAL|UNSUPPORTED_AMI|UNSUPPORTED_SNAPSHOT|UNSUPPORTED_COMPOSITE_RECOVERY_POINT|ALL_FILES_SKIPPED_OR_FAILED|Non_static_idofstringletmakei=iletto_string=function|ACCESS_DENIED->"ACCESS_DENIED"|RESOURCE_NOT_FOUND->"RESOURCE_NOT_FOUND"|SNAPSHOT_SIZE_LIMIT_EXCEEDED->"SNAPSHOT_SIZE_LIMIT_EXCEEDED"|RESOURCE_UNAVAILABLE->"RESOURCE_UNAVAILABLE"|INCONSISTENT_SOURCE->"INCONSISTENT_SOURCE"|INCREMENTAL_NO_DIFFERENCE->"INCREMENTAL_NO_DIFFERENCE"|NO_EBS_VOLUMES_FOUND->"NO_EBS_VOLUMES_FOUND"|UNSUPPORTED_PRODUCT_CODE_TYPE->"UNSUPPORTED_PRODUCT_CODE_TYPE"|AMI_SNAPSHOT_LIMIT_EXCEEDED->"AMI_SNAPSHOT_LIMIT_EXCEEDED"|UNRELATED_RESOURCES->"UNRELATED_RESOURCES"|BASE_RESOURCE_NOT_SCANNED->"BASE_RESOURCE_NOT_SCANNED"|BASE_CREATED_AFTER_TARGET->"BASE_CREATED_AFTER_TARGET"|UNSUPPORTED_FOR_INCREMENTAL->"UNSUPPORTED_FOR_INCREMENTAL"|UNSUPPORTED_AMI->"UNSUPPORTED_AMI"|UNSUPPORTED_SNAPSHOT->"UNSUPPORTED_SNAPSHOT"|UNSUPPORTED_COMPOSITE_RECOVERY_POINT->"UNSUPPORTED_COMPOSITE_RECOVERY_POINT"|ALL_FILES_SKIPPED_OR_FAILED->"ALL_FILES_SKIPPED_OR_FAILED"|Non_static_ids->sletof_string=function|"ACCESS_DENIED"->ACCESS_DENIED|"RESOURCE_NOT_FOUND"->RESOURCE_NOT_FOUND|"SNAPSHOT_SIZE_LIMIT_EXCEEDED"->SNAPSHOT_SIZE_LIMIT_EXCEEDED|"RESOURCE_UNAVAILABLE"->RESOURCE_UNAVAILABLE|"INCONSISTENT_SOURCE"->INCONSISTENT_SOURCE|"INCREMENTAL_NO_DIFFERENCE"->INCREMENTAL_NO_DIFFERENCE|"NO_EBS_VOLUMES_FOUND"->NO_EBS_VOLUMES_FOUND|"UNSUPPORTED_PRODUCT_CODE_TYPE"->UNSUPPORTED_PRODUCT_CODE_TYPE|"AMI_SNAPSHOT_LIMIT_EXCEEDED"->AMI_SNAPSHOT_LIMIT_EXCEEDED|"UNRELATED_RESOURCES"->UNRELATED_RESOURCES|"BASE_RESOURCE_NOT_SCANNED"->BASE_RESOURCE_NOT_SCANNED|"BASE_CREATED_AFTER_TARGET"->BASE_CREATED_AFTER_TARGET|"UNSUPPORTED_FOR_INCREMENTAL"->UNSUPPORTED_FOR_INCREMENTAL|"UNSUPPORTED_AMI"->UNSUPPORTED_AMI|"UNSUPPORTED_SNAPSHOT"->UNSUPPORTED_SNAPSHOT|"UNSUPPORTED_COMPOSITE_RECOVERY_POINT"->UNSUPPORTED_COMPOSITE_RECOVERY_POINT|"ALL_FILES_SKIPPED_OR_FAILED"->ALL_FILES_SKIPPED_OR_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 ScanStatusReason"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ScanStatusReason"j)letto_json=simple_to_jsonto_valueendmoduleScannedResourceDetails=structtypenonrect={ebsVolume:VolumeDetail.toption[@ocaml.doc"Contains information about the EBS volume that was scanned."];ebsSnapshot:EbsSnapshot.toption[@ocaml.doc"Contains information about the EBS snapshot that was scanned."]}letmake?ebsVolume=fun?ebsSnapshot->fun()->{ebsVolume;ebsSnapshot}letto_valuex=structure_to_value[("ebsVolume",(Option.mapx.ebsVolume~f:VolumeDetail.to_value));("ebsSnapshot",(Option.mapx.ebsSnapshot~f:EbsSnapshot.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letebsSnapshot=(Option.map~f:EbsSnapshot.of_xml)(Xml.childxml_arg0"ebsSnapshot")inletebsVolume=(Option.map~f:VolumeDetail.of_xml)(Xml.childxml_arg0"ebsVolume")inmake?ebsSnapshot?ebsVolume()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letebsSnapshot=field_mapjson__"EbsSnapshot"EbsSnapshot.of_jsoninletebsVolume=field_mapjson__"EbsVolume"VolumeDetail.of_jsoninmake?ebsSnapshot?ebsVolume()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains additional information about a resource that was scanned."]moduleAccountStatistics=structtypenonrect={accountId:String_.toption[@ocaml.doc"The ID of the Amazon Web Services account."];lastGeneratedAt:Timestamp.toption[@ocaml.doc"The timestamp at which the finding for this account was last generated."];totalFindings:Integer.toption[@ocaml.doc"The total number of findings associated with an account."]}letmake?accountId=fun?lastGeneratedAt->fun?totalFindings->fun()->{accountId;lastGeneratedAt;totalFindings}letto_valuex=structure_to_value[("accountId",(Option.mapx.accountId~f:String_.to_value));("lastGeneratedAt",(Option.mapx.lastGeneratedAt~f:Timestamp.to_value));("totalFindings",(Option.mapx.totalFindings~f:Integer.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettotalFindings=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"totalFindings")inletlastGeneratedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"lastGeneratedAt")inletaccountId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"accountId")inmake?totalFindings?lastGeneratedAt?accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettotalFindings=field_mapjson__"TotalFindings"Integer.of_jsoninletlastGeneratedAt=field_mapjson__"LastGeneratedAt"Timestamp.of_jsoninletaccountId=field_mapjson__"AccountId"String_.of_jsoninmake?totalFindings?lastGeneratedAt?accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Represents a list of map of accounts with the number of findings associated with each account."]moduleDateStatistics=structtypenonrect={date:Timestamp.toption[@ocaml.doc"The timestamp when the total findings count is observed. For example, Date would look like \"2024-09-05T17:00:00-07:00\" whereas LastGeneratedAt would look like 2024-09-05T17:12:29-07:00\"."];lastGeneratedAt:Timestamp.toption[@ocaml.doc"The timestamp at which the last finding in the findings count, was generated."];severity:Double.toption[@ocaml.doc"The severity of the findings generated on each date."];totalFindings:Integer.toption[@ocaml.doc"The total number of findings that were generated per severity level on each date."]}letmake?date=fun?lastGeneratedAt->fun?severity->fun?totalFindings->fun()->{date;lastGeneratedAt;severity;totalFindings}letto_valuex=structure_to_value[("date",(Option.mapx.date~f:Timestamp.to_value));("lastGeneratedAt",(Option.mapx.lastGeneratedAt~f:Timestamp.to_value));("severity",(Option.mapx.severity~f:Double.to_value));("totalFindings",(Option.mapx.totalFindings~f:Integer.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettotalFindings=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"totalFindings")inletseverity=(Option.map~f:Double.of_xml)(Xml.childxml_arg0"severity")inletlastGeneratedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"lastGeneratedAt")inletdate=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"date")inmake?totalFindings?severity?lastGeneratedAt?date()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettotalFindings=field_mapjson__"TotalFindings"Integer.of_jsoninletseverity=field_mapjson__"Severity"Double.of_jsoninletlastGeneratedAt=field_mapjson__"LastGeneratedAt"Timestamp.of_jsoninletdate=field_mapjson__"Date"Timestamp.of_jsoninmake?totalFindings?severity?lastGeneratedAt?date()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Represents list a map of dates with a count of total findings generated on each date."]moduleFindingTypeStatistics=structtypenonrect={findingType:String_.toption[@ocaml.doc"Name of the finding type."];lastGeneratedAt:Timestamp.toption[@ocaml.doc"The timestamp at which this finding type was last generated in your environment."];totalFindings:Integer.toption[@ocaml.doc"The total number of findings associated with generated for each distinct finding type."]}letmake?findingType=fun?lastGeneratedAt->fun?totalFindings->fun()->{findingType;lastGeneratedAt;totalFindings}letto_valuex=structure_to_value[("findingType",(Option.mapx.findingType~f:String_.to_value));("lastGeneratedAt",(Option.mapx.lastGeneratedAt~f:Timestamp.to_value));("totalFindings",(Option.mapx.totalFindings~f:Integer.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettotalFindings=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"totalFindings")inletlastGeneratedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"lastGeneratedAt")inletfindingType=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"findingType")inmake?totalFindings?lastGeneratedAt?findingType()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettotalFindings=field_mapjson__"TotalFindings"Integer.of_jsoninletlastGeneratedAt=field_mapjson__"LastGeneratedAt"Timestamp.of_jsoninletfindingType=field_mapjson__"FindingType"String_.of_jsoninmake?totalFindings?lastGeneratedAt?findingType()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about each finding type associated with the groupedByFindingType statistics."]moduleResourceStatistics=structtypenonrect={accountId:String_.toption[@ocaml.doc"The ID of the Amazon Web Services account."];lastGeneratedAt:Timestamp.toption[@ocaml.doc"The timestamp at which the statistics for this resource was last generated."];resourceId:String_.toption[@ocaml.doc"ID associated with each resource. The following list provides the mapping of the resource type and resource ID. Mapping of resource and resource ID AccessKey - resource.accessKeyDetails.accessKeyId Container - resource.containerDetails.id ECSCluster - resource.ecsClusterDetails.name EKSCluster - resource.eksClusterDetails.name Instance - resource.instanceDetails.instanceId KubernetesCluster - resource.kubernetesDetails.kubernetesWorkloadDetails.name Lambda - resource.lambdaDetails.functionName RDSDBInstance - resource.rdsDbInstanceDetails.dbInstanceIdentifier S3Bucket - resource.s3BucketDetails.name S3Object - resource.s3BucketDetails.name"];resourceType:String_.toption[@ocaml.doc"The type of resource."];totalFindings:Integer.toption[@ocaml.doc"The total number of findings associated with this resource."]}letmake?accountId=fun?lastGeneratedAt->fun?resourceId->fun?resourceType->fun?totalFindings->fun()->{accountId;lastGeneratedAt;resourceId;resourceType;totalFindings}letto_valuex=structure_to_value[("accountId",(Option.mapx.accountId~f:String_.to_value));("lastGeneratedAt",(Option.mapx.lastGeneratedAt~f:Timestamp.to_value));("resourceId",(Option.mapx.resourceId~f:String_.to_value));("resourceType",(Option.mapx.resourceType~f:String_.to_value));("totalFindings",(Option.mapx.totalFindings~f:Integer.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettotalFindings=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"totalFindings")inletresourceType=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"resourceType")inletresourceId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"resourceId")inletlastGeneratedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"lastGeneratedAt")inletaccountId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"accountId")inmake?totalFindings?resourceType?resourceId?lastGeneratedAt?accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettotalFindings=field_mapjson__"TotalFindings"Integer.of_jsoninletresourceType=field_mapjson__"ResourceType"String_.of_jsoninletresourceId=field_mapjson__"ResourceId"String_.of_jsoninletlastGeneratedAt=field_mapjson__"LastGeneratedAt"Timestamp.of_jsoninletaccountId=field_mapjson__"AccountId"String_.of_jsoninmake?totalFindings?resourceType?resourceId?lastGeneratedAt?accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about each resource type associated with the groupedByResource statistics."]moduleSeverityStatistics=structtypenonrect={lastGeneratedAt:Timestamp.toption[@ocaml.doc"The timestamp at which a finding type for a specific severity was last generated."];severity:Double.toption[@ocaml.doc"The severity level associated with each finding type."];totalFindings:Integer.toption[@ocaml.doc"The total number of findings associated with this severity."]}letmake?lastGeneratedAt=fun?severity->fun?totalFindings->fun()->{lastGeneratedAt;severity;totalFindings}letto_valuex=structure_to_value[("lastGeneratedAt",(Option.mapx.lastGeneratedAt~f:Timestamp.to_value));("severity",(Option.mapx.severity~f:Double.to_value));("totalFindings",(Option.mapx.totalFindings~f:Integer.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettotalFindings=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"totalFindings")inletseverity=(Option.map~f:Double.of_xml)(Xml.childxml_arg0"severity")inletlastGeneratedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"lastGeneratedAt")inmake?totalFindings?severity?lastGeneratedAt()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettotalFindings=field_mapjson__"TotalFindings"Integer.of_jsoninletseverity=field_mapjson__"Severity"Double.of_jsoninletlastGeneratedAt=field_mapjson__"LastGeneratedAt"Timestamp.of_jsoninmake?totalFindings?severity?lastGeneratedAt()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about severity level for each finding type."]moduleResource=structtypenonrect={accessKeyDetails:AccessKeyDetails.toption[@ocaml.doc"The IAM access key details (user information) of a user that engaged in the activity that prompted GuardDuty to generate a finding."];s3BucketDetails:S3BucketDetails.toption[@ocaml.doc"Contains information on the S3 bucket."];instanceDetails:InstanceDetails.toption[@ocaml.doc"The information about the EC2 instance associated with the activity that prompted GuardDuty to generate a finding."];eksClusterDetails:EksClusterDetails.toption[@ocaml.doc"Details about the EKS cluster involved in a Kubernetes finding."];kubernetesDetails:KubernetesDetails.toption[@ocaml.doc"Details about the Kubernetes user and workload involved in a Kubernetes finding."];resourceType:String_.toption[@ocaml.doc"The type of Amazon Web Services resource."];ebsVolumeDetails:EbsVolumeDetails.toption[@ocaml.doc"Contains list of scanned and skipped EBS volumes with details."];ecsClusterDetails:EcsClusterDetails.toption[@ocaml.doc"Contains information about the details of the ECS Cluster."];containerDetails:Container.toption;lambdaDetails:LambdaDetails.toption[@ocaml.doc"Contains information about the Lambda function that was involved in a finding."];rdsDbInstanceDetails:RdsDbInstanceDetails.toption[@ocaml.doc"Contains information about the database instance to which an anomalous login attempt was made."];rdsLimitlessDbDetails:RdsLimitlessDbDetails.toption[@ocaml.doc"Contains information about the RDS Limitless database that was involved in a GuardDuty finding."];rdsDbUserDetails:RdsDbUserDetails.toption[@ocaml.doc"Contains information about the user details through which anomalous login attempt was made."];ebsSnapshotDetails:EbsSnapshotDetails.toption[@ocaml.doc"Contains details about the EBS snapshot that was scanned."];ec2ImageDetails:Ec2ImageDetails.toption[@ocaml.doc"Contains details about the EC2 image that was scanned."];recoveryPointDetails:RecoveryPointDetails.toption[@ocaml.doc"Contains details about the backup recovery point that was scanned."]}letmake?accessKeyDetails=fun?s3BucketDetails->fun?instanceDetails->fun?eksClusterDetails->fun?kubernetesDetails->fun?resourceType->fun?ebsVolumeDetails->fun?ecsClusterDetails->fun?containerDetails->fun?lambdaDetails->fun?rdsDbInstanceDetails->fun?rdsLimitlessDbDetails->fun?rdsDbUserDetails->fun?ebsSnapshotDetails->fun?ec2ImageDetails->fun?recoveryPointDetails->fun()->{accessKeyDetails;s3BucketDetails;instanceDetails;eksClusterDetails;kubernetesDetails;resourceType;ebsVolumeDetails;ecsClusterDetails;containerDetails;lambdaDetails;rdsDbInstanceDetails;rdsLimitlessDbDetails;rdsDbUserDetails;ebsSnapshotDetails;ec2ImageDetails;recoveryPointDetails}letto_valuex=structure_to_value[("accessKeyDetails",(Option.mapx.accessKeyDetails~f:AccessKeyDetails.to_value));("s3BucketDetails",(Option.mapx.s3BucketDetails~f:S3BucketDetails.to_value));("instanceDetails",(Option.mapx.instanceDetails~f:InstanceDetails.to_value));("eksClusterDetails",(Option.mapx.eksClusterDetails~f:EksClusterDetails.to_value));("kubernetesDetails",(Option.mapx.kubernetesDetails~f:KubernetesDetails.to_value));("resourceType",(Option.mapx.resourceType~f:String_.to_value));("ebsVolumeDetails",(Option.mapx.ebsVolumeDetails~f:EbsVolumeDetails.to_value));("ecsClusterDetails",(Option.mapx.ecsClusterDetails~f:EcsClusterDetails.to_value));("containerDetails",(Option.mapx.containerDetails~f:Container.to_value));("lambdaDetails",(Option.mapx.lambdaDetails~f:LambdaDetails.to_value));("rdsDbInstanceDetails",(Option.mapx.rdsDbInstanceDetails~f:RdsDbInstanceDetails.to_value));("rdsLimitlessDbDetails",(Option.mapx.rdsLimitlessDbDetails~f:RdsLimitlessDbDetails.to_value));("rdsDbUserDetails",(Option.mapx.rdsDbUserDetails~f:RdsDbUserDetails.to_value));("ebsSnapshotDetails",(Option.mapx.ebsSnapshotDetails~f:EbsSnapshotDetails.to_value));("ec2ImageDetails",(Option.mapx.ec2ImageDetails~f:Ec2ImageDetails.to_value));("recoveryPointDetails",(Option.mapx.recoveryPointDetails~f:RecoveryPointDetails.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letrecoveryPointDetails=(Option.map~f:RecoveryPointDetails.of_xml)(Xml.childxml_arg0"recoveryPointDetails")inletec2ImageDetails=(Option.map~f:Ec2ImageDetails.of_xml)(Xml.childxml_arg0"ec2ImageDetails")inletebsSnapshotDetails=(Option.map~f:EbsSnapshotDetails.of_xml)(Xml.childxml_arg0"ebsSnapshotDetails")inletrdsDbUserDetails=(Option.map~f:RdsDbUserDetails.of_xml)(Xml.childxml_arg0"rdsDbUserDetails")inletrdsLimitlessDbDetails=(Option.map~f:RdsLimitlessDbDetails.of_xml)(Xml.childxml_arg0"rdsLimitlessDbDetails")inletrdsDbInstanceDetails=(Option.map~f:RdsDbInstanceDetails.of_xml)(Xml.childxml_arg0"rdsDbInstanceDetails")inletlambdaDetails=(Option.map~f:LambdaDetails.of_xml)(Xml.childxml_arg0"lambdaDetails")inletcontainerDetails=(Option.map~f:Container.of_xml)(Xml.childxml_arg0"containerDetails")inletecsClusterDetails=(Option.map~f:EcsClusterDetails.of_xml)(Xml.childxml_arg0"ecsClusterDetails")inletebsVolumeDetails=(Option.map~f:EbsVolumeDetails.of_xml)(Xml.childxml_arg0"ebsVolumeDetails")inletresourceType=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"resourceType")inletkubernetesDetails=(Option.map~f:KubernetesDetails.of_xml)(Xml.childxml_arg0"kubernetesDetails")inleteksClusterDetails=(Option.map~f:EksClusterDetails.of_xml)(Xml.childxml_arg0"eksClusterDetails")inletinstanceDetails=(Option.map~f:InstanceDetails.of_xml)(Xml.childxml_arg0"instanceDetails")inlets3BucketDetails=(Option.map~f:S3BucketDetails.of_xml)(Xml.childxml_arg0"s3BucketDetails")inletaccessKeyDetails=(Option.map~f:AccessKeyDetails.of_xml)(Xml.childxml_arg0"accessKeyDetails")inmake?recoveryPointDetails?ec2ImageDetails?ebsSnapshotDetails?rdsDbUserDetails?rdsLimitlessDbDetails?rdsDbInstanceDetails?lambdaDetails?containerDetails?ecsClusterDetails?ebsVolumeDetails?resourceType?kubernetesDetails?eksClusterDetails?instanceDetails?s3BucketDetails?accessKeyDetails()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letrecoveryPointDetails=field_mapjson__"RecoveryPointDetails"RecoveryPointDetails.of_jsoninletec2ImageDetails=field_mapjson__"Ec2ImageDetails"Ec2ImageDetails.of_jsoninletebsSnapshotDetails=field_mapjson__"EbsSnapshotDetails"EbsSnapshotDetails.of_jsoninletrdsDbUserDetails=field_mapjson__"RdsDbUserDetails"RdsDbUserDetails.of_jsoninletrdsLimitlessDbDetails=field_mapjson__"RdsLimitlessDbDetails"RdsLimitlessDbDetails.of_jsoninletrdsDbInstanceDetails=field_mapjson__"RdsDbInstanceDetails"RdsDbInstanceDetails.of_jsoninletlambdaDetails=field_mapjson__"LambdaDetails"LambdaDetails.of_jsoninletcontainerDetails=field_mapjson__"ContainerDetails"Container.of_jsoninletecsClusterDetails=field_mapjson__"EcsClusterDetails"EcsClusterDetails.of_jsoninletebsVolumeDetails=field_mapjson__"EbsVolumeDetails"EbsVolumeDetails.of_jsoninletresourceType=field_mapjson__"ResourceType"String_.of_jsoninletkubernetesDetails=field_mapjson__"KubernetesDetails"KubernetesDetails.of_jsoninleteksClusterDetails=field_mapjson__"EksClusterDetails"EksClusterDetails.of_jsoninletinstanceDetails=field_mapjson__"InstanceDetails"InstanceDetails.of_jsoninlets3BucketDetails=field_mapjson__"S3BucketDetails"S3BucketDetails.of_jsoninletaccessKeyDetails=field_mapjson__"AccessKeyDetails"AccessKeyDetails.of_jsoninmake?recoveryPointDetails?ec2ImageDetails?ebsSnapshotDetails?rdsDbUserDetails?rdsLimitlessDbDetails?rdsDbInstanceDetails?lambdaDetails?containerDetails?ecsClusterDetails?ebsVolumeDetails?resourceType?kubernetesDetails?eksClusterDetails?instanceDetails?s3BucketDetails?accessKeyDetails()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the Amazon Web Services resource associated with the activity that prompted GuardDuty to generate a finding."]moduleService=structtypenonrect={action:Action.toption[@ocaml.doc"Information about the activity that is described in a finding."];evidence:Evidence.toption[@ocaml.doc"An evidence object associated with the service."];archived:Boolean.toption[@ocaml.doc"Indicates whether this finding is archived."];count:Integer.toption[@ocaml.doc"The total count of the occurrences of this finding type."];detectorId:DetectorId.toption[@ocaml.doc"The detector ID for the GuardDuty service."];eventFirstSeen:String_.toption[@ocaml.doc"The first-seen timestamp of the activity that prompted GuardDuty to generate this finding."];eventLastSeen:String_.toption[@ocaml.doc"The last-seen timestamp of the activity that prompted GuardDuty to generate this finding."];resourceRole:String_.toption[@ocaml.doc"The resource role information for this finding."];serviceName:String_.toption[@ocaml.doc"The name of the Amazon Web Services service (GuardDuty) that generated a finding."];userFeedback:String_.toption[@ocaml.doc"Feedback that was submitted about the finding."];additionalInfo:ServiceAdditionalInfo.toption[@ocaml.doc"Contains additional information about the generated finding."];featureName:String_.toption[@ocaml.doc"The name of the feature that generated a finding."];ebsVolumeScanDetails:EbsVolumeScanDetails.toption[@ocaml.doc"Returns details from the malware scan that created a finding."];runtimeDetails:RuntimeDetails.toption[@ocaml.doc"Information about the process and any required context values for a specific finding"];detection:Detection.toption[@ocaml.doc"Contains information about the detected unusual behavior."];malwareScanDetails:MalwareScanDetails.toption[@ocaml.doc"Returns details from the malware scan that generated a GuardDuty finding."]}letmake?action=fun?evidence->fun?archived->fun?count->fun?detectorId->fun?eventFirstSeen->fun?eventLastSeen->fun?resourceRole->fun?serviceName->fun?userFeedback->fun?additionalInfo->fun?featureName->fun?ebsVolumeScanDetails->fun?runtimeDetails->fun?detection->fun?malwareScanDetails->fun()->{action;evidence;archived;count;detectorId;eventFirstSeen;eventLastSeen;resourceRole;serviceName;userFeedback;additionalInfo;featureName;ebsVolumeScanDetails;runtimeDetails;detection;malwareScanDetails}letto_valuex=structure_to_value[("action",(Option.mapx.action~f:Action.to_value));("evidence",(Option.mapx.evidence~f:Evidence.to_value));("archived",(Option.mapx.archived~f:Boolean.to_value));("count",(Option.mapx.count~f:Integer.to_value));("detectorId",(Option.mapx.detectorId~f:DetectorId.to_value));("eventFirstSeen",(Option.mapx.eventFirstSeen~f:String_.to_value));("eventLastSeen",(Option.mapx.eventLastSeen~f:String_.to_value));("resourceRole",(Option.mapx.resourceRole~f:String_.to_value));("serviceName",(Option.mapx.serviceName~f:String_.to_value));("userFeedback",(Option.mapx.userFeedback~f:String_.to_value));("additionalInfo",(Option.mapx.additionalInfo~f:ServiceAdditionalInfo.to_value));("featureName",(Option.mapx.featureName~f:String_.to_value));("ebsVolumeScanDetails",(Option.mapx.ebsVolumeScanDetails~f:EbsVolumeScanDetails.to_value));("runtimeDetails",(Option.mapx.runtimeDetails~f:RuntimeDetails.to_value));("detection",(Option.mapx.detection~f:Detection.to_value));("malwareScanDetails",(Option.mapx.malwareScanDetails~f:MalwareScanDetails.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmalwareScanDetails=(Option.map~f:MalwareScanDetails.of_xml)(Xml.childxml_arg0"malwareScanDetails")inletdetection=(Option.map~f:Detection.of_xml)(Xml.childxml_arg0"detection")inletruntimeDetails=(Option.map~f:RuntimeDetails.of_xml)(Xml.childxml_arg0"runtimeDetails")inletebsVolumeScanDetails=(Option.map~f:EbsVolumeScanDetails.of_xml)(Xml.childxml_arg0"ebsVolumeScanDetails")inletfeatureName=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"featureName")inletadditionalInfo=(Option.map~f:ServiceAdditionalInfo.of_xml)(Xml.childxml_arg0"additionalInfo")inletuserFeedback=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"userFeedback")inletserviceName=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"serviceName")inletresourceRole=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"resourceRole")inleteventLastSeen=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"eventLastSeen")inleteventFirstSeen=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"eventFirstSeen")inletdetectorId=(Option.map~f:DetectorId.of_xml)(Xml.childxml_arg0"detectorId")inletcount=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"count")inletarchived=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"archived")inletevidence=(Option.map~f:Evidence.of_xml)(Xml.childxml_arg0"evidence")inletaction=(Option.map~f:Action.of_xml)(Xml.childxml_arg0"action")inmake?malwareScanDetails?detection?runtimeDetails?ebsVolumeScanDetails?featureName?additionalInfo?userFeedback?serviceName?resourceRole?eventLastSeen?eventFirstSeen?detectorId?count?archived?evidence?action()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmalwareScanDetails=field_mapjson__"MalwareScanDetails"MalwareScanDetails.of_jsoninletdetection=field_mapjson__"Detection"Detection.of_jsoninletruntimeDetails=field_mapjson__"RuntimeDetails"RuntimeDetails.of_jsoninletebsVolumeScanDetails=field_mapjson__"EbsVolumeScanDetails"EbsVolumeScanDetails.of_jsoninletfeatureName=field_mapjson__"FeatureName"String_.of_jsoninletadditionalInfo=field_mapjson__"AdditionalInfo"ServiceAdditionalInfo.of_jsoninletuserFeedback=field_mapjson__"UserFeedback"String_.of_jsoninletserviceName=field_mapjson__"ServiceName"String_.of_jsoninletresourceRole=field_mapjson__"ResourceRole"String_.of_jsoninleteventLastSeen=field_mapjson__"EventLastSeen"String_.of_jsoninleteventFirstSeen=field_mapjson__"EventFirstSeen"String_.of_jsoninletdetectorId=field_mapjson__"DetectorId"DetectorId.of_jsoninletcount=field_mapjson__"Count"Integer.of_jsoninletarchived=field_mapjson__"Archived"Boolean.of_jsoninletevidence=field_mapjson__"Evidence"Evidence.of_jsoninletaction=field_mapjson__"Action"Action.of_jsoninmake?malwareScanDetails?detection?runtimeDetails?ebsVolumeScanDetails?featureName?additionalInfo?userFeedback?serviceName?resourceRole?eventLastSeen?eventFirstSeen?detectorId?count?archived?evidence?action()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains additional information about the generated finding."]moduleDetectorAdditionalConfigurationResults=structtypenonrect=DetectorAdditionalConfigurationResult.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:DetectorAdditionalConfigurationResult.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:DetectorAdditionalConfigurationResult.of_xml)letof_jsonj=list_of_json~kind:"DetectorAdditionalConfigurationResults"~of_json:DetectorAdditionalConfigurationResult.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleDetectorFeatureResult=structtypenonrect=|FLOW_LOGS|CLOUD_TRAIL|DNS_LOGS|S3_DATA_EVENTS|EKS_AUDIT_LOGS|EBS_MALWARE_PROTECTION|RDS_LOGIN_EVENTS|LAMBDA_NETWORK_LOGS|EKS_RUNTIME_MONITORING|RUNTIME_MONITORING|Non_static_idofstringletmakei=iletto_string=function|FLOW_LOGS->"FLOW_LOGS"|CLOUD_TRAIL->"CLOUD_TRAIL"|DNS_LOGS->"DNS_LOGS"|S3_DATA_EVENTS->"S3_DATA_EVENTS"|EKS_AUDIT_LOGS->"EKS_AUDIT_LOGS"|EBS_MALWARE_PROTECTION->"EBS_MALWARE_PROTECTION"|RDS_LOGIN_EVENTS->"RDS_LOGIN_EVENTS"|LAMBDA_NETWORK_LOGS->"LAMBDA_NETWORK_LOGS"|EKS_RUNTIME_MONITORING->"EKS_RUNTIME_MONITORING"|RUNTIME_MONITORING->"RUNTIME_MONITORING"|Non_static_ids->sletof_string=function|"FLOW_LOGS"->FLOW_LOGS|"CLOUD_TRAIL"->CLOUD_TRAIL|"DNS_LOGS"->DNS_LOGS|"S3_DATA_EVENTS"->S3_DATA_EVENTS|"EKS_AUDIT_LOGS"->EKS_AUDIT_LOGS|"EBS_MALWARE_PROTECTION"->EBS_MALWARE_PROTECTION|"RDS_LOGIN_EVENTS"->RDS_LOGIN_EVENTS|"LAMBDA_NETWORK_LOGS"->LAMBDA_NETWORK_LOGS|"EKS_RUNTIME_MONITORING"->EKS_RUNTIME_MONITORING|"RUNTIME_MONITORING"->RUNTIME_MONITORING|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 DetectorFeatureResult"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"DetectorFeatureResult"j)letto_json=simple_to_jsonto_valueendmoduleOrganizationKubernetesAuditLogsConfigurationResult=structtypenonrect={autoEnable:Boolean.toption[@ocaml.doc"Whether Kubernetes audit logs data source should be auto-enabled for new members joining the organization."]}letmake?autoEnable=fun()->{autoEnable}letto_valuex=structure_to_value[("autoEnable",(Option.mapx.autoEnable~f:Boolean.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letautoEnable=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"autoEnable")inmake?autoEnable()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letautoEnable=field_mapjson__"AutoEnable"Boolean.of_jsoninmake?autoEnable()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The current configuration of Kubernetes audit logs as a data source for the organization."]moduleOrganizationScanEc2InstanceWithFindingsResult=structtypenonrect={ebsVolumes:OrganizationEbsVolumesResult.toption[@ocaml.doc"Describes the configuration for scanning EBS volumes for an organization."]}letmake?ebsVolumes=fun()->{ebsVolumes}letto_valuex=structure_to_value[("ebsVolumes",(Option.mapx.ebsVolumes~f:OrganizationEbsVolumesResult.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letebsVolumes=(Option.map~f:OrganizationEbsVolumesResult.of_xml)(Xml.childxml_arg0"ebsVolumes")inmake?ebsVolumes()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letebsVolumes=field_mapjson__"EbsVolumes"OrganizationEbsVolumesResult.of_jsoninmake?ebsVolumes()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"An object that contains information on the status of scanning EC2 instances with findings for an organization."]moduleOrganizationAdditionalConfigurationResults=structtypenonrect=OrganizationAdditionalConfigurationResult.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:OrganizationAdditionalConfigurationResult.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:OrganizationAdditionalConfigurationResult.of_xml)letof_jsonj=list_of_json~kind:"OrganizationAdditionalConfigurationResults"~of_json:OrganizationAdditionalConfigurationResult.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleResourceDetails=structtypenonrect={instanceArn:InstanceArn.toption[@ocaml.doc"Instance ARN that was scanned in the scan entry."]}letmake?instanceArn=fun()->{instanceArn}letto_valuex=structure_to_value[("instanceArn",(Option.mapx.instanceArn~f:InstanceArn.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letinstanceArn=(Option.map~f:InstanceArn.of_xml)(Xml.childxml_arg0"instanceArn")inmake?instanceArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letinstanceArn=field_mapjson__"InstanceArn"InstanceArn.of_jsoninmake?instanceArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Represents the resources that were scanned in the scan entry."]moduleScanResultDetails=structtypenonrect={scanResult:ScanResult.toption[@ocaml.doc"An enum value representing possible scan results."]}letmake?scanResult=fun()->{scanResult}letto_valuex=structure_to_value[("scanResult",(Option.mapx.scanResult~f:ScanResult.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letscanResult=(Option.map~f:ScanResult.of_xml)(Xml.childxml_arg0"scanResult")inmake?scanResult()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letscanResult=field_mapjson__"ScanResult"ScanResult.of_jsoninmake?scanResult()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Represents the result of the scan."]moduleScanStatus=structtypenonrect=|RUNNING|COMPLETED|FAILED|SKIPPED|Non_static_idofstringletmakei=iletto_string=function|RUNNING->"RUNNING"|COMPLETED->"COMPLETED"|FAILED->"FAILED"|SKIPPED->"SKIPPED"|Non_static_ids->sletof_string=function|"RUNNING"->RUNNING|"COMPLETED"->COMPLETED|"FAILED"->FAILED|"SKIPPED"->SKIPPED|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 ScanStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ScanStatus"j)letto_json=simple_to_jsonto_valueendmoduleTriggerDetails=structtypenonrect={guardDutyFindingId:NonEmptyString.toption[@ocaml.doc"The ID of the GuardDuty finding that triggered the malware scan."];description:NonEmptyString.toption[@ocaml.doc"The description of the scan trigger."];triggerType:TriggerType.toption[@ocaml.doc"Specifies the trigger type that started the malware scan."]}letmake?guardDutyFindingId=fun?description->fun?triggerType->fun()->{guardDutyFindingId;description;triggerType}letto_valuex=structure_to_value[("guardDutyFindingId",(Option.mapx.guardDutyFindingId~f:NonEmptyString.to_value));("description",(Option.mapx.description~f:NonEmptyString.to_value));("triggerType",(Option.mapx.triggerType~f:TriggerType.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettriggerType=(Option.map~f:TriggerType.of_xml)(Xml.childxml_arg0"triggerType")inletdescription=(Option.map~f:NonEmptyString.of_xml)(Xml.childxml_arg0"description")inletguardDutyFindingId=(Option.map~f:NonEmptyString.of_xml)(Xml.childxml_arg0"guardDutyFindingId")inmake?triggerType?description?guardDutyFindingId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettriggerType=field_mapjson__"TriggerType"TriggerType.of_jsoninletdescription=field_mapjson__"Description"NonEmptyString.of_jsoninletguardDutyFindingId=field_mapjson__"GuardDutyFindingId"NonEmptyString.of_jsoninmake?triggerType?description?guardDutyFindingId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Represents the reason the scan was triggered."]moduleFilterCriterion=structtypenonrect={criterionKey:CriterionKey.toption[@ocaml.doc"An enum value representing possible scan properties to match with given scan entries."];filterCondition:FilterCondition.toption[@ocaml.doc"Contains information about the condition."]}letmake?criterionKey=fun?filterCondition->fun()->{criterionKey;filterCondition}letto_valuex=structure_to_value[("criterionKey",(Option.mapx.criterionKey~f:CriterionKey.to_value));("filterCondition",(Option.mapx.filterCondition~f:FilterCondition.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letfilterCondition=(Option.map~f:FilterCondition.of_xml)(Xml.childxml_arg0"filterCondition")inletcriterionKey=(Option.map~f:CriterionKey.of_xml)(Xml.childxml_arg0"criterionKey")inmake?filterCondition?criterionKey()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letfilterCondition=field_mapjson__"FilterCondition"FilterCondition.of_jsoninletcriterionKey=field_mapjson__"CriterionKey"CriterionKey.of_jsoninmake?filterCondition?criterionKey()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Represents a condition that when matched will be added to the response of the operation. Irrespective of using any filter criteria, an administrator account can view the scan entries for all of its member accounts. However, each member account can view the scan entries only for their own account."]moduleOrganizationKubernetesConfiguration=structtypenonrect={auditLogs:OrganizationKubernetesAuditLogsConfiguration.t[@ocaml.doc"Whether Kubernetes audit logs data source should be auto-enabled for new members joining the organization."]}letcontext_="OrganizationKubernetesConfiguration"letmake~auditLogs=fun()->{auditLogs}letto_valuex=structure_to_value[("auditLogs",(Some(OrganizationKubernetesAuditLogsConfiguration.to_valuex.auditLogs)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letauditLogs=OrganizationKubernetesAuditLogsConfiguration.of_xml(Xml.child_exn~context:context_xml_arg0"auditLogs")inmake~auditLogs()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letauditLogs=field_map_exnjson__"AuditLogs"OrganizationKubernetesAuditLogsConfiguration.of_jsoninmake~auditLogs()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Organization-wide Kubernetes data sources configurations."]moduleOrganizationMalwareProtectionConfiguration=structtypenonrect={scanEc2InstanceWithFindings:OrganizationScanEc2InstanceWithFindings.toption[@ocaml.doc"Whether Malware Protection for EC2 instances with findings should be auto-enabled for new members joining the organization."]}letmake?scanEc2InstanceWithFindings=fun()->{scanEc2InstanceWithFindings}letto_valuex=structure_to_value[("scanEc2InstanceWithFindings",(Option.mapx.scanEc2InstanceWithFindings~f:OrganizationScanEc2InstanceWithFindings.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letscanEc2InstanceWithFindings=(Option.map~f:OrganizationScanEc2InstanceWithFindings.of_xml)(Xml.childxml_arg0"scanEc2InstanceWithFindings")inmake?scanEc2InstanceWithFindings()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letscanEc2InstanceWithFindings=field_mapjson__"ScanEc2InstanceWithFindings"OrganizationScanEc2InstanceWithFindings.of_jsoninmake?scanEc2InstanceWithFindings()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Organization-wide Malware Protection configurations."]moduleOrganizationS3LogsConfiguration=structtypenonrect={autoEnable:Boolean.t[@ocaml.doc"A value that contains information on whether S3 data event logs will be enabled automatically as a data source for the organization."]}letcontext_="OrganizationS3LogsConfiguration"letmake~autoEnable=fun()->{autoEnable}letto_valuex=structure_to_value[("autoEnable",(Some(Boolean.to_valuex.autoEnable)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letautoEnable=Boolean.of_xml(Xml.child_exn~context:context_xml_arg0"autoEnable")inmake~autoEnable()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letautoEnable=field_map_exnjson__"AutoEnable"Boolean.of_jsoninmake~autoEnable()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Describes whether S3 data event logs will be automatically enabled for new members of the organization."]moduleOrganizationFeatureConfiguration=structtypenonrect={name:OrgFeature.toption[@ocaml.doc"The name of the feature that will be configured for the organization."];autoEnable:OrgFeatureStatus.toption[@ocaml.doc"Describes the status of the feature that is configured for the member accounts within the organization. One of the following values is the status for the entire organization: NEW: Indicates that when a new account joins the organization, they will have the feature enabled automatically. ALL: Indicates that all accounts in the organization have the feature enabled automatically. This includes NEW accounts that join the organization and accounts that may have been suspended or removed from the organization in GuardDuty. It may take up to 24 hours to update the configuration for all the member accounts. NONE: Indicates that the feature will not be automatically enabled for any account in the organization. The administrator must manage the feature for each account individually."];additionalConfiguration:OrganizationAdditionalConfigurations.toption[@ocaml.doc"The additional information that will be configured for the organization."]}letmake?name=fun?autoEnable->fun?additionalConfiguration->fun()->{name;autoEnable;additionalConfiguration}letto_valuex=structure_to_value[("name",(Option.mapx.name~f:OrgFeature.to_value));("autoEnable",(Option.mapx.autoEnable~f:OrgFeatureStatus.to_value));("additionalConfiguration",(Option.mapx.additionalConfiguration~f:OrganizationAdditionalConfigurations.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letadditionalConfiguration=(Option.map~f:OrganizationAdditionalConfigurations.of_xml)(Xml.childxml_arg0"additionalConfiguration")inletautoEnable=(Option.map~f:OrgFeatureStatus.of_xml)(Xml.childxml_arg0"autoEnable")inletname=(Option.map~f:OrgFeature.of_xml)(Xml.childxml_arg0"name")inmake?additionalConfiguration?autoEnable?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letadditionalConfiguration=field_mapjson__"AdditionalConfiguration"OrganizationAdditionalConfigurations.of_jsoninletautoEnable=field_mapjson__"AutoEnable"OrgFeatureStatus.of_jsoninletname=field_mapjson__"Name"OrgFeature.of_jsoninmake?additionalConfiguration?autoEnable?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A list of features which will be configured for the organization."]moduleUnprocessedAccount=structtypenonrect={accountId:AccountId.toption[@ocaml.doc"The Amazon Web Services account ID."];result:String_.toption[@ocaml.doc"A reason why the account hasn't been processed."]}letmake?accountId=fun?result->fun()->{accountId;result}letto_valuex=structure_to_value[("accountId",(Option.mapx.accountId~f:AccountId.to_value));("result",(Option.mapx.result~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letresult=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"result")inletaccountId=(Option.map~f:AccountId.of_xml)(Xml.childxml_arg0"accountId")inmake?result?accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letresult=field_mapjson__"Result"String_.of_jsoninletaccountId=field_mapjson__"AccountId"AccountId.of_jsoninmake?result?accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the accounts that weren't processed."]moduleKubernetesConfiguration=structtypenonrect={auditLogs:KubernetesAuditLogsConfiguration.t[@ocaml.doc"The status of Kubernetes audit logs as a data source."]}letcontext_="KubernetesConfiguration"letmake~auditLogs=fun()->{auditLogs}letto_valuex=structure_to_value[("auditLogs",(Some(KubernetesAuditLogsConfiguration.to_valuex.auditLogs)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letauditLogs=KubernetesAuditLogsConfiguration.of_xml(Xml.child_exn~context:context_xml_arg0"auditLogs")inmake~auditLogs()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letauditLogs=field_map_exnjson__"AuditLogs"KubernetesAuditLogsConfiguration.of_jsoninmake~auditLogs()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Describes whether any Kubernetes data sources are enabled."]moduleMalwareProtectionConfiguration=structtypenonrect={scanEc2InstanceWithFindings:ScanEc2InstanceWithFindings.toption[@ocaml.doc"Describes the configuration of Malware Protection for EC2 instances with findings."]}letmake?scanEc2InstanceWithFindings=fun()->{scanEc2InstanceWithFindings}letto_valuex=structure_to_value[("scanEc2InstanceWithFindings",(Option.mapx.scanEc2InstanceWithFindings~f:ScanEc2InstanceWithFindings.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letscanEc2InstanceWithFindings=(Option.map~f:ScanEc2InstanceWithFindings.of_xml)(Xml.childxml_arg0"scanEc2InstanceWithFindings")inmake?scanEc2InstanceWithFindings()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letscanEc2InstanceWithFindings=field_mapjson__"ScanEc2InstanceWithFindings"ScanEc2InstanceWithFindings.of_jsoninmake?scanEc2InstanceWithFindings()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Describes whether Malware Protection will be enabled as a data source."]moduleS3LogsConfiguration=structtypenonrect={enable:Boolean.t[@ocaml.doc"The status of S3 data event logs as a data source."]}letcontext_="S3LogsConfiguration"letmake~enable=fun()->{enable}letto_valuex=structure_to_value[("enable",(Some(Boolean.to_valuex.enable)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letenable=Boolean.of_xml(Xml.child_exn~context:context_xml_arg0"enable")inmake~enable()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letenable=field_map_exnjson__"Enable"Boolean.of_jsoninmake~enable()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Describes whether S3 data event logs will be enabled as a data source."]moduleMemberFeaturesConfiguration=structtypenonrect={name:OrgFeature.toption[@ocaml.doc"The name of the feature."];status:FeatureStatus.toption[@ocaml.doc"The status of the feature."];additionalConfiguration:MemberAdditionalConfigurations.toption[@ocaml.doc"Additional configuration of the feature for the member account."]}letmake?name=fun?status->fun?additionalConfiguration->fun()->{name;status;additionalConfiguration}letto_valuex=structure_to_value[("name",(Option.mapx.name~f:OrgFeature.to_value));("status",(Option.mapx.status~f:FeatureStatus.to_value));("additionalConfiguration",(Option.mapx.additionalConfiguration~f:MemberAdditionalConfigurations.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letadditionalConfiguration=(Option.map~f:MemberAdditionalConfigurations.of_xml)(Xml.childxml_arg0"additionalConfiguration")inletstatus=(Option.map~f:FeatureStatus.of_xml)(Xml.childxml_arg0"status")inletname=(Option.map~f:OrgFeature.of_xml)(Xml.childxml_arg0"name")inmake?additionalConfiguration?status?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letadditionalConfiguration=field_mapjson__"AdditionalConfiguration"MemberAdditionalConfigurations.of_jsoninletstatus=field_mapjson__"Status"FeatureStatus.of_jsoninletname=field_mapjson__"Name"OrgFeature.of_jsoninmake?additionalConfiguration?status?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the features for the member account."]moduleScanCriterion=structtypenonrect=(ScanCriterionKey.t*ScanCondition.t)listletmakei=iletof_headerxs=make(List.filter_mapxs~f:(fun(k,v)->(Base.String.chop_prefixk~prefix:"x-amz-meta-")|>(Option.map~f:(funchopped->let(_:string)=vinlet(_:string)=choppedinfailwith"no of_header for complex types ScanCriterionKey ScanCondition"))))letto_valuexs=(xs|>(List.map~f:(fun(x,y)->(ScanCriterionKey.to_valuex)|>(funx->(ScanCondition.to_valuey)|>(funy->(x,y))))))|>(funx->`Mapx)letto_queryv=to_queryto_valuevletto_header_=failwithf"to_header is not implemented for Map_shape objects"()letof_xml_=failwith"of_xml_converter_of_shape: Map_shape case not implemented"letof_jsonj=object_of_json~key_of_string:ScanCriterionKey.of_string~of_json:ScanCondition.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleMalwareProtectionPlanTaggingAction=structtypenonrect={status:MalwareProtectionPlanTaggingActionStatus.toption[@ocaml.doc"Indicates whether or not the tags will added."]}letmake?status=fun()->{status}letto_valuex=structure_to_value[("status",(Option.mapx.status~f:MalwareProtectionPlanTaggingActionStatus.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstatus=(Option.map~f:MalwareProtectionPlanTaggingActionStatus.of_xml)(Xml.childxml_arg0"status")inmake?status()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstatus=field_mapjson__"Status"MalwareProtectionPlanTaggingActionStatus.of_jsoninmake?status()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about adding tags to the scanned S3 object after the scan result."]moduleUpdateS3BucketResource=structtypenonrect={objectPrefixes:MalwareProtectionPlanObjectPrefixesList.toption[@ocaml.doc"Information about the specified object prefixes. The S3 object will be scanned only if it belongs to any of the specified object prefixes."]}letmake?objectPrefixes=fun()->{objectPrefixes}letto_valuex=structure_to_value[("objectPrefixes",(Option.mapx.objectPrefixes~f:MalwareProtectionPlanObjectPrefixesList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letobjectPrefixes=(Option.map~f:MalwareProtectionPlanObjectPrefixesList.of_xml)(Xml.childxml_arg0"objectPrefixes")inmake?objectPrefixes()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letobjectPrefixes=field_mapjson__"ObjectPrefixes"MalwareProtectionPlanObjectPrefixesList.of_jsoninmake?objectPrefixes()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the protected S3 bucket resource."]moduleFindingId=structtypenonrect=stringletcontext_="FindingId"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:300)>>=(fun()->check_string_mini~min:1));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"FindingId"jletto_json=simple_to_jsonto_valueendmoduleCriterion=structtypenonrect=(String_.t*Condition.t)listletmakei=iletof_headerxs=make(List.filter_mapxs~f:(fun(k,v)->(Base.String.chop_prefixk~prefix:"x-amz-meta-")|>(Option.map~f:(funchopped->let(_:string)=vinlet(_:string)=choppedinfailwith"no of_header for complex types String Condition"))))letto_valuexs=(xs|>(List.map~f:(fun(x,y)->(String_.to_valuex)|>(funx->(Condition.to_valuey)|>(funy->(x,y))))))|>(funx->`Mapx)letto_queryv=to_queryto_valuevletto_header_=failwithf"to_header is not implemented for Map_shape objects"()letof_xml_=failwith"of_xml_converter_of_shape: Map_shape case not implemented"letof_jsonj=object_of_json~key_of_string:String_.of_string~of_json:Condition.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleDetectorFeatureConfiguration=structtypenonrect={name:DetectorFeature.toption[@ocaml.doc"The name of the feature."];status:FeatureStatus.toption[@ocaml.doc"The status of the feature."];additionalConfiguration:DetectorAdditionalConfigurations.toption[@ocaml.doc"Additional configuration for a resource."]}letmake?name=fun?status->fun?additionalConfiguration->fun()->{name;status;additionalConfiguration}letto_valuex=structure_to_value[("name",(Option.mapx.name~f:DetectorFeature.to_value));("status",(Option.mapx.status~f:FeatureStatus.to_value));("additionalConfiguration",(Option.mapx.additionalConfiguration~f:DetectorAdditionalConfigurations.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letadditionalConfiguration=(Option.map~f:DetectorAdditionalConfigurations.of_xml)(Xml.childxml_arg0"additionalConfiguration")inletstatus=(Option.map~f:FeatureStatus.of_xml)(Xml.childxml_arg0"status")inletname=(Option.map~f:DetectorFeature.of_xml)(Xml.childxml_arg0"name")inmake?additionalConfiguration?status?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letadditionalConfiguration=field_mapjson__"AdditionalConfiguration"DetectorAdditionalConfigurations.of_jsoninletstatus=field_mapjson__"Status"FeatureStatus.of_jsoninletname=field_mapjson__"Name"DetectorFeature.of_jsoninmake?additionalConfiguration?status?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about a GuardDuty feature. Specifying both EKS Runtime Monitoring (EKS_RUNTIME_MONITORING) and Runtime Monitoring (RUNTIME_MONITORING) will cause an error. You can add only one of these two features because Runtime Monitoring already includes the threat detection for Amazon EKS resources. For more information, see Runtime Monitoring."]moduleRecoveryPoint=structtypenonrect={backupVaultName:String_.t[@ocaml.doc"The name of the Amazon Web Services Backup vault that contains the name of the recovery point to be scanned."]}letcontext_="RecoveryPoint"letmake~backupVaultName=fun()->{backupVaultName}letto_valuex=structure_to_value[("backupVaultName",(Some(String_.to_valuex.backupVaultName)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letbackupVaultName=String_.of_xml(Xml.child_exn~context:context_xml_arg0"backupVaultName")inmake~backupVaultName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letbackupVaultName=field_map_exnjson__"BackupVaultName"String_.of_jsoninmake~backupVaultName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the recovery point configuration for scanning backup data from Amazon Web Services Backup."]moduleDestination=structtypenonrect={destinationId:String_.toption[@ocaml.doc"The unique ID of the publishing destination."];destinationType:DestinationType.toption[@ocaml.doc"The type of resource used for the publishing destination. Currently, only Amazon S3 buckets are supported."];status:PublishingStatus.toption[@ocaml.doc"The status of the publishing destination."]}letmake?destinationId=fun?destinationType->fun?status->fun()->{destinationId;destinationType;status}letto_valuex=structure_to_value[("destinationId",(Option.mapx.destinationId~f:String_.to_value));("destinationType",(Option.mapx.destinationType~f:DestinationType.to_value));("status",(Option.mapx.status~f:PublishingStatus.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstatus=(Option.map~f:PublishingStatus.of_xml)(Xml.childxml_arg0"status")inletdestinationType=(Option.map~f:DestinationType.of_xml)(Xml.childxml_arg0"destinationType")inletdestinationId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"destinationId")inmake?status?destinationType?destinationId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstatus=field_mapjson__"Status"PublishingStatus.of_jsoninletdestinationType=field_mapjson__"DestinationType"DestinationType.of_jsoninletdestinationId=field_mapjson__"DestinationId"String_.of_jsoninmake?status?destinationType?destinationId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the publishing destination, including the ID, type, and status."]moduleAdminAccount=structtypenonrect={adminAccountId:String_.toption[@ocaml.doc"The Amazon Web Services account ID for the account."];adminStatus:AdminStatus.toption[@ocaml.doc"Indicates whether the account is enabled as the delegated administrator."]}letmake?adminAccountId=fun?adminStatus->fun()->{adminAccountId;adminStatus}letto_valuex=structure_to_value[("adminAccountId",(Option.mapx.adminAccountId~f:String_.to_value));("adminStatus",(Option.mapx.adminStatus~f:AdminStatus.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letadminStatus=(Option.map~f:AdminStatus.of_xml)(Xml.childxml_arg0"adminStatus")inletadminAccountId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"adminAccountId")inmake?adminStatus?adminAccountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letadminStatus=field_mapjson__"AdminStatus"AdminStatus.of_jsoninletadminAccountId=field_mapjson__"AdminAccountId"String_.of_jsoninmake?adminStatus?adminAccountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The account within the organization specified as the GuardDuty delegated administrator."]moduleMember=structtypenonrect={accountId:AccountId.toption[@ocaml.doc"The ID of the member account."];detectorId:DetectorId.toption[@ocaml.doc"The detector ID of the member account."];masterId:String_.toption[@ocaml.doc"The administrator account ID."];email:Email.toption[@ocaml.doc"The email address of the member account."];relationshipStatus:String_.toption[@ocaml.doc"The status of the relationship between the member and the administrator."];invitedAt:String_.toption[@ocaml.doc"The timestamp when the invitation was sent."];updatedAt:String_.toption[@ocaml.doc"The last-updated timestamp of the member."];administratorId:String_.toption[@ocaml.doc"The administrator account ID."]}letmake?accountId=fun?detectorId->fun?masterId->fun?email->fun?relationshipStatus->fun?invitedAt->fun?updatedAt->fun?administratorId->fun()->{accountId;detectorId;masterId;email;relationshipStatus;invitedAt;updatedAt;administratorId}letto_valuex=structure_to_value[("accountId",(Option.mapx.accountId~f:AccountId.to_value));("detectorId",(Option.mapx.detectorId~f:DetectorId.to_value));("masterId",(Option.mapx.masterId~f:String_.to_value));("email",(Option.mapx.email~f:Email.to_value));("relationshipStatus",(Option.mapx.relationshipStatus~f:String_.to_value));("invitedAt",(Option.mapx.invitedAt~f:String_.to_value));("updatedAt",(Option.mapx.updatedAt~f:String_.to_value));("administratorId",(Option.mapx.administratorId~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letadministratorId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"administratorId")inletupdatedAt=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"updatedAt")inletinvitedAt=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"invitedAt")inletrelationshipStatus=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"relationshipStatus")inletemail=(Option.map~f:Email.of_xml)(Xml.childxml_arg0"email")inletmasterId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"masterId")inletdetectorId=(Option.map~f:DetectorId.of_xml)(Xml.childxml_arg0"detectorId")inletaccountId=(Option.map~f:AccountId.of_xml)(Xml.childxml_arg0"accountId")inmake?administratorId?updatedAt?invitedAt?relationshipStatus?email?masterId?detectorId?accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letadministratorId=field_mapjson__"AdministratorId"String_.of_jsoninletupdatedAt=field_mapjson__"UpdatedAt"String_.of_jsoninletinvitedAt=field_mapjson__"InvitedAt"String_.of_jsoninletrelationshipStatus=field_mapjson__"RelationshipStatus"String_.of_jsoninletemail=field_mapjson__"Email"Email.of_jsoninletmasterId=field_mapjson__"MasterId"String_.of_jsoninletdetectorId=field_mapjson__"DetectorId"DetectorId.of_jsoninletaccountId=field_mapjson__"AccountId"AccountId.of_jsoninmake?administratorId?updatedAt?invitedAt?relationshipStatus?email?masterId?detectorId?accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the member account."]moduleMalwareScan=structtypenonrect={resourceArn:NonEmptyString.toption[@ocaml.doc"Amazon Resource Name (ARN) of the resource for the given malware scan."];resourceType:MalwareProtectionResourceType.toption[@ocaml.doc"The type of resource that was scanned for malware."];scanId:NonEmptyString.toption[@ocaml.doc"A unique identifier that gets generated when you invoke the API without any error. Each malware scan has a corresponding scan ID. Using this scan ID, you can monitor the status of your malware scan."];scanStatus:MalwareProtectionScanStatus.toption[@ocaml.doc"An enum value representing the current status of the malware scan."];scanResultStatus:ScanResultStatus.toption[@ocaml.doc"An enum value representing the result of the malware scan."];scanType:MalwareProtectionScanType.toption[@ocaml.doc"An enum value representing the type of scan that was initiated."];scanStartedAt:Timestamp.toption[@ocaml.doc"The timestamp representing when the malware scan was started."];scanCompletedAt:Timestamp.toption[@ocaml.doc"The timestamp representing when the malware scan was completed."]}letmake?resourceArn=fun?resourceType->fun?scanId->fun?scanStatus->fun?scanResultStatus->fun?scanType->fun?scanStartedAt->fun?scanCompletedAt->fun()->{resourceArn;resourceType;scanId;scanStatus;scanResultStatus;scanType;scanStartedAt;scanCompletedAt}letto_valuex=structure_to_value[("resourceArn",(Option.mapx.resourceArn~f:NonEmptyString.to_value));("resourceType",(Option.mapx.resourceType~f:MalwareProtectionResourceType.to_value));("scanId",(Option.mapx.scanId~f:NonEmptyString.to_value));("scanStatus",(Option.mapx.scanStatus~f:MalwareProtectionScanStatus.to_value));("scanResultStatus",(Option.mapx.scanResultStatus~f:ScanResultStatus.to_value));("scanType",(Option.mapx.scanType~f:MalwareProtectionScanType.to_value));("scanStartedAt",(Option.mapx.scanStartedAt~f:Timestamp.to_value));("scanCompletedAt",(Option.mapx.scanCompletedAt~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letscanCompletedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"scanCompletedAt")inletscanStartedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"scanStartedAt")inletscanType=(Option.map~f:MalwareProtectionScanType.of_xml)(Xml.childxml_arg0"scanType")inletscanResultStatus=(Option.map~f:ScanResultStatus.of_xml)(Xml.childxml_arg0"scanResultStatus")inletscanStatus=(Option.map~f:MalwareProtectionScanStatus.of_xml)(Xml.childxml_arg0"scanStatus")inletscanId=(Option.map~f:NonEmptyString.of_xml)(Xml.childxml_arg0"scanId")inletresourceType=(Option.map~f:MalwareProtectionResourceType.of_xml)(Xml.childxml_arg0"resourceType")inletresourceArn=(Option.map~f:NonEmptyString.of_xml)(Xml.childxml_arg0"resourceArn")inmake?scanCompletedAt?scanStartedAt?scanType?scanResultStatus?scanStatus?scanId?resourceType?resourceArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letscanCompletedAt=field_mapjson__"ScanCompletedAt"Timestamp.of_jsoninletscanStartedAt=field_mapjson__"ScanStartedAt"Timestamp.of_jsoninletscanType=field_mapjson__"ScanType"MalwareProtectionScanType.of_jsoninletscanResultStatus=field_mapjson__"ScanResultStatus"ScanResultStatus.of_jsoninletscanStatus=field_mapjson__"ScanStatus"MalwareProtectionScanStatus.of_jsoninletscanId=field_mapjson__"ScanId"NonEmptyString.of_jsoninletresourceType=field_mapjson__"ResourceType"MalwareProtectionResourceType.of_jsoninletresourceArn=field_mapjson__"ResourceArn"NonEmptyString.of_jsoninmake?scanCompletedAt?scanStartedAt?scanType?scanResultStatus?scanStatus?scanId?resourceType?resourceArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about a particular malware scan."]moduleListMalwareScansFilterCriterionList=structtypenonrect=ListMalwareScansFilterCriterion.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:1)>>=(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:ListMalwareScansFilterCriterion.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:ListMalwareScansFilterCriterion.of_xml)letof_jsonj=list_of_json~kind:"ListMalwareScansFilterCriterionList"~of_json:ListMalwareScansFilterCriterion.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleOrderBy=structtypenonrect=|ASC|DESC|Non_static_idofstringletmakei=iletto_string=function|ASC->"ASC"|DESC->"DESC"|Non_static_ids->sletof_string=function|"ASC"->ASC|"DESC"->DESC|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 OrderBy"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"OrderBy"j)letto_json=simple_to_jsonto_valueendmoduleMalwareProtectionPlanSummary=structtypenonrect={malwareProtectionPlanId:String_.toption[@ocaml.doc"A unique identifier associated with Malware Protection plan."]}letmake?malwareProtectionPlanId=fun()->{malwareProtectionPlanId}letto_valuex=structure_to_value[("malwareProtectionPlanId",(Option.mapx.malwareProtectionPlanId~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmalwareProtectionPlanId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"malwareProtectionPlanId")inmake?malwareProtectionPlanId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmalwareProtectionPlanId=field_mapjson__"MalwareProtectionPlanId"String_.of_jsoninmake?malwareProtectionPlanId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the Malware Protection plan resource."]moduleInvitation=structtypenonrect={accountId:AccountId.toption[@ocaml.doc"The ID of the account that the invitation was sent from."];invitationId:String_.toption[@ocaml.doc"The ID of the invitation. This value is used to validate the inviter account to the member account."];relationshipStatus:String_.toption[@ocaml.doc"The status of the relationship between the inviter and invitee accounts."];invitedAt:String_.toption[@ocaml.doc"The timestamp when the invitation was sent."]}letmake?accountId=fun?invitationId->fun?relationshipStatus->fun?invitedAt->fun()->{accountId;invitationId;relationshipStatus;invitedAt}letto_valuex=structure_to_value[("accountId",(Option.mapx.accountId~f:AccountId.to_value));("invitationId",(Option.mapx.invitationId~f:String_.to_value));("relationshipStatus",(Option.mapx.relationshipStatus~f:String_.to_value));("invitedAt",(Option.mapx.invitedAt~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letinvitedAt=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"invitedAt")inletrelationshipStatus=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"relationshipStatus")inletinvitationId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"invitationId")inletaccountId=(Option.map~f:AccountId.of_xml)(Xml.childxml_arg0"accountId")inmake?invitedAt?relationshipStatus?invitationId?accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letinvitedAt=field_mapjson__"InvitedAt"String_.of_jsoninletrelationshipStatus=field_mapjson__"RelationshipStatus"String_.of_jsoninletinvitationId=field_mapjson__"InvitationId"String_.of_jsoninletaccountId=field_mapjson__"AccountId"AccountId.of_jsoninmake?invitedAt?relationshipStatus?invitationId?accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the invitation to become a member account."]moduleFilterName=structtypenonrect=stringletcontext_="FilterName"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:64)>>=(fun()->check_string_mini~min:3));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"FilterName"jletto_json=simple_to_jsonto_valueendmoduleCoverageResource=structtypenonrect={resourceId:String_.toption[@ocaml.doc"The unique ID of the resource."];detectorId:DetectorId.toption[@ocaml.doc"The unique ID of the GuardDuty detector associated with the resource."];accountId:AccountId.toption[@ocaml.doc"The unique ID of the Amazon Web Services account."];resourceDetails:CoverageResourceDetails.toption[@ocaml.doc"Information about the resource for which the coverage statistics are retrieved."];coverageStatus:CoverageStatus.toption[@ocaml.doc"Represents the status of the EKS cluster coverage."];issue:String_.toption[@ocaml.doc"Represents the reason why a coverage status was UNHEALTHY for the EKS cluster."];updatedAt:Timestamp.toption[@ocaml.doc"The timestamp at which the coverage details for the resource were last updated. This is in UTC format."]}letmake?resourceId=fun?detectorId->fun?accountId->fun?resourceDetails->fun?coverageStatus->fun?issue->fun?updatedAt->fun()->{resourceId;detectorId;accountId;resourceDetails;coverageStatus;issue;updatedAt}letto_valuex=structure_to_value[("resourceId",(Option.mapx.resourceId~f:String_.to_value));("detectorId",(Option.mapx.detectorId~f:DetectorId.to_value));("accountId",(Option.mapx.accountId~f:AccountId.to_value));("resourceDetails",(Option.mapx.resourceDetails~f:CoverageResourceDetails.to_value));("coverageStatus",(Option.mapx.coverageStatus~f:CoverageStatus.to_value));("issue",(Option.mapx.issue~f:String_.to_value));("updatedAt",(Option.mapx.updatedAt~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letupdatedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"updatedAt")inletissue=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"issue")inletcoverageStatus=(Option.map~f:CoverageStatus.of_xml)(Xml.childxml_arg0"coverageStatus")inletresourceDetails=(Option.map~f:CoverageResourceDetails.of_xml)(Xml.childxml_arg0"resourceDetails")inletaccountId=(Option.map~f:AccountId.of_xml)(Xml.childxml_arg0"accountId")inletdetectorId=(Option.map~f:DetectorId.of_xml)(Xml.childxml_arg0"detectorId")inletresourceId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"resourceId")inmake?updatedAt?issue?coverageStatus?resourceDetails?accountId?detectorId?resourceId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letupdatedAt=field_mapjson__"UpdatedAt"Timestamp.of_jsoninletissue=field_mapjson__"Issue"String_.of_jsoninletcoverageStatus=field_mapjson__"CoverageStatus"CoverageStatus.of_jsoninletresourceDetails=field_mapjson__"ResourceDetails"CoverageResourceDetails.of_jsoninletaccountId=field_mapjson__"AccountId"AccountId.of_jsoninletdetectorId=field_mapjson__"DetectorId"DetectorId.of_jsoninletresourceId=field_mapjson__"ResourceId"String_.of_jsoninmake?updatedAt?issue?coverageStatus?resourceDetails?accountId?detectorId?resourceId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the resource of the GuardDuty account."]moduleCoverageFilterCriterionList=structtypenonrect=CoverageFilterCriterion.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:50)>>=(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:CoverageFilterCriterion.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:CoverageFilterCriterion.of_xml)letof_jsonj=list_of_json~kind:"CoverageFilterCriterionList"~of_json:CoverageFilterCriterion.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleCoverageSortKey=structtypenonrect=|ACCOUNT_ID|COVERAGE_STATUS|ISSUE|ADDON_VERSION|UPDATED_AT|CLUSTER_NAME|EKS_CLUSTER_NAME|ECS_CLUSTER_NAME|INSTANCE_ID|Non_static_idofstringletmakei=iletto_string=function|ACCOUNT_ID->"ACCOUNT_ID"|COVERAGE_STATUS->"COVERAGE_STATUS"|ISSUE->"ISSUE"|ADDON_VERSION->"ADDON_VERSION"|UPDATED_AT->"UPDATED_AT"|CLUSTER_NAME->"CLUSTER_NAME"|EKS_CLUSTER_NAME->"EKS_CLUSTER_NAME"|ECS_CLUSTER_NAME->"ECS_CLUSTER_NAME"|INSTANCE_ID->"INSTANCE_ID"|Non_static_ids->sletof_string=function|"ACCOUNT_ID"->ACCOUNT_ID|"COVERAGE_STATUS"->COVERAGE_STATUS|"ISSUE"->ISSUE|"ADDON_VERSION"->ADDON_VERSION|"UPDATED_AT"->UPDATED_AT|"CLUSTER_NAME"->CLUSTER_NAME|"EKS_CLUSTER_NAME"->EKS_CLUSTER_NAME|"ECS_CLUSTER_NAME"->ECS_CLUSTER_NAME|"INSTANCE_ID"->INSTANCE_ID|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 CoverageSortKey"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"CoverageSortKey"j)letto_json=simple_to_jsonto_valueendmoduleUsageAccountResultList=structtypenonrect=UsageAccountResult.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:UsageAccountResult.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:UsageAccountResult.of_xml)letof_jsonj=list_of_json~kind:"UsageAccountResultList"~of_json:UsageAccountResult.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleUsageDataSourceResultList=structtypenonrect=UsageDataSourceResult.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:UsageDataSourceResult.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:UsageDataSourceResult.of_xml)letof_jsonj=list_of_json~kind:"UsageDataSourceResultList"~of_json:UsageDataSourceResult.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleUsageFeatureResultList=structtypenonrect=UsageFeatureResult.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:UsageFeatureResult.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:UsageFeatureResult.of_xml)letof_jsonj=list_of_json~kind:"UsageFeatureResultList"~of_json:UsageFeatureResult.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleUsageResourceResultList=structtypenonrect=UsageResourceResult.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:UsageResourceResult.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:UsageResourceResult.of_xml)letof_jsonj=list_of_json~kind:"UsageResourceResultList"~of_json:UsageResourceResult.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleUsageTopAccountsResultList=structtypenonrect=UsageTopAccountsResult.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:UsageTopAccountsResult.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:UsageTopAccountsResult.of_xml)letof_jsonj=list_of_json~kind:"UsageTopAccountsResultList"~of_json:UsageTopAccountsResult.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleAccountIds=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:"AccountIds"~of_json:AccountId.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleDataSourceList=structtypenonrect=DataSource.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:DataSource.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:DataSource.of_xml)letof_jsonj=list_of_json~kind:"DataSourceList"~of_json:DataSource.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleResourceList=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:"ResourceList"~of_json:String_.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleUsageFeatureList=structtypenonrect=UsageFeature.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:UsageFeature.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:UsageFeature.of_xml)letof_jsonj=list_of_json~kind:"UsageFeatureList"~of_json:UsageFeature.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleAccountFreeTrialInfo=structtypenonrect={accountId:String_.toption[@ocaml.doc"The account identifier of the GuardDuty member account."];dataSources:DataSourcesFreeTrial.toption[@ocaml.doc"Describes the data source enabled for the GuardDuty member account."];features:FreeTrialFeatureConfigurationsResults.toption[@ocaml.doc"A list of features enabled for the GuardDuty account."]}letmake?accountId=fun?dataSources->fun?features->fun()->{accountId;dataSources;features}letto_valuex=structure_to_value[("accountId",(Option.mapx.accountId~f:String_.to_value));("dataSources",(Option.mapx.dataSources~f:DataSourcesFreeTrial.to_value));("features",(Option.mapx.features~f:FreeTrialFeatureConfigurationsResults.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letfeatures=(Option.map~f:FreeTrialFeatureConfigurationsResults.of_xml)(Xml.childxml_arg0"features")inletdataSources=(Option.map~f:DataSourcesFreeTrial.of_xml)(Xml.childxml_arg0"dataSources")inletaccountId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"accountId")inmake?features?dataSources?accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letfeatures=field_mapjson__"Features"FreeTrialFeatureConfigurationsResults.of_jsoninletdataSources=field_mapjson__"DataSources"DataSourcesFreeTrial.of_jsoninletaccountId=field_mapjson__"AccountId"String_.of_jsoninmake?features?dataSources?accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Provides details of the GuardDuty member account that uses a free trial service."]moduleOrganizationStatistics=structtypenonrect={totalAccountsCount:Integer.toption[@ocaml.doc"Total number of accounts in your Amazon Web Services organization."];memberAccountsCount:Integer.toption[@ocaml.doc"Total number of accounts in your Amazon Web Services organization that are associated with GuardDuty."];activeAccountsCount:Integer.toption[@ocaml.doc"Total number of active accounts in your Amazon Web Services organization that are associated with GuardDuty."];enabledAccountsCount:Integer.toption[@ocaml.doc"Total number of accounts that have enabled GuardDuty."];countByFeature:OrganizationFeatureStatisticsResults.toption[@ocaml.doc"Retrieves the coverage statistics for each feature."]}letmake?totalAccountsCount=fun?memberAccountsCount->fun?activeAccountsCount->fun?enabledAccountsCount->fun?countByFeature->fun()->{totalAccountsCount;memberAccountsCount;activeAccountsCount;enabledAccountsCount;countByFeature}letto_valuex=structure_to_value[("totalAccountsCount",(Option.mapx.totalAccountsCount~f:Integer.to_value));("memberAccountsCount",(Option.mapx.memberAccountsCount~f:Integer.to_value));("activeAccountsCount",(Option.mapx.activeAccountsCount~f:Integer.to_value));("enabledAccountsCount",(Option.mapx.enabledAccountsCount~f:Integer.to_value));("countByFeature",(Option.mapx.countByFeature~f:OrganizationFeatureStatisticsResults.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcountByFeature=(Option.map~f:OrganizationFeatureStatisticsResults.of_xml)(Xml.childxml_arg0"countByFeature")inletenabledAccountsCount=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"enabledAccountsCount")inletactiveAccountsCount=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"activeAccountsCount")inletmemberAccountsCount=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"memberAccountsCount")inlettotalAccountsCount=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"totalAccountsCount")inmake?countByFeature?enabledAccountsCount?activeAccountsCount?memberAccountsCount?totalAccountsCount()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcountByFeature=field_mapjson__"CountByFeature"OrganizationFeatureStatisticsResults.of_jsoninletenabledAccountsCount=field_mapjson__"EnabledAccountsCount"Integer.of_jsoninletactiveAccountsCount=field_mapjson__"ActiveAccountsCount"Integer.of_jsoninletmemberAccountsCount=field_mapjson__"MemberAccountsCount"Integer.of_jsoninlettotalAccountsCount=field_mapjson__"TotalAccountsCount"Integer.of_jsoninmake?countByFeature?enabledAccountsCount?activeAccountsCount?memberAccountsCount?totalAccountsCount()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the coverage statistics of the features for the entire Amazon Web Services organization. When you create a new Amazon Web Services organization, it might take up to 24 hours to generate the statistics summary for this organization."]moduleMemberDataSourceConfiguration=structtypenonrect={accountId:AccountId.toption[@ocaml.doc"The account ID for the member account."];dataSources:DataSourceConfigurationsResult.toption[@ocaml.doc"Contains information on the status of data sources for the account."];features:MemberFeaturesConfigurationsResults.toption[@ocaml.doc"Contains information about the status of the features for the member account."]}letmake?accountId=fun?dataSources->fun?features->fun()->{accountId;dataSources;features}letto_valuex=structure_to_value[("accountId",(Option.mapx.accountId~f:AccountId.to_value));("dataSources",(Option.mapx.dataSources~f:DataSourceConfigurationsResult.to_value));("features",(Option.mapx.features~f:MemberFeaturesConfigurationsResults.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letfeatures=(Option.map~f:MemberFeaturesConfigurationsResults.of_xml)(Xml.childxml_arg0"features")inletdataSources=(Option.map~f:DataSourceConfigurationsResult.of_xml)(Xml.childxml_arg0"dataSources")inletaccountId=(Option.map~f:AccountId.of_xml)(Xml.childxml_arg0"accountId")inmake?features?dataSources?accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letfeatures=field_mapjson__"Features"MemberFeaturesConfigurationsResults.of_jsoninletdataSources=field_mapjson__"DataSources"DataSourceConfigurationsResult.of_jsoninletaccountId=field_mapjson__"AccountId"AccountId.of_jsoninmake?features?dataSources?accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information on which data sources are enabled for a member account."]moduleScanResultThreats=structtypenonrect=ScanResultThreat.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ScanResultThreat.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:ScanResultThreat.of_xml)letof_jsonj=list_of_json~kind:"ScanResultThreats"~of_json:ScanResultThreat.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleScanConfigurationRecoveryPoint=structtypenonrect={backupVaultName:NonEmptyString.toption[@ocaml.doc"The name of the Amazon Web Services Backup vault that contains the recovery point for the scanned."]}letmake?backupVaultName=fun()->{backupVaultName}letto_valuex=structure_to_value[("backupVaultName",(Option.mapx.backupVaultName~f:NonEmptyString.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letbackupVaultName=(Option.map~f:NonEmptyString.of_xml)(Xml.childxml_arg0"backupVaultName")inmake?backupVaultName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letbackupVaultName=field_mapjson__"BackupVaultName"NonEmptyString.of_jsoninmake?backupVaultName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the recovery point configuration used in the scan."]moduleScannedResource=structtypenonrect={scannedResourceArn:NonEmptyString.toption[@ocaml.doc"Amazon Resource Name (ARN) of the scanned resource."];scannedResourceType:MalwareProtectionResourceType.toption[@ocaml.doc"The resource type of the scanned resource."];scannedResourceStatus:MalwareProtectionScanStatus.toption[@ocaml.doc"The status of the scanned resource."];scanStatusReason:ScanStatusReason.toption[@ocaml.doc"The reason for the scan status of this particular resource, if applicable."];resourceDetails:ScannedResourceDetails.toption[@ocaml.doc"Information about the scanned resource."]}letmake?scannedResourceArn=fun?scannedResourceType->fun?scannedResourceStatus->fun?scanStatusReason->fun?resourceDetails->fun()->{scannedResourceArn;scannedResourceType;scannedResourceStatus;scanStatusReason;resourceDetails}letto_valuex=structure_to_value[("scannedResourceArn",(Option.mapx.scannedResourceArn~f:NonEmptyString.to_value));("scannedResourceType",(Option.mapx.scannedResourceType~f:MalwareProtectionResourceType.to_value));("scannedResourceStatus",(Option.mapx.scannedResourceStatus~f:MalwareProtectionScanStatus.to_value));("scanStatusReason",(Option.mapx.scanStatusReason~f:ScanStatusReason.to_value));("resourceDetails",(Option.mapx.resourceDetails~f:ScannedResourceDetails.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letresourceDetails=(Option.map~f:ScannedResourceDetails.of_xml)(Xml.childxml_arg0"resourceDetails")inletscanStatusReason=(Option.map~f:ScanStatusReason.of_xml)(Xml.childxml_arg0"scanStatusReason")inletscannedResourceStatus=(Option.map~f:MalwareProtectionScanStatus.of_xml)(Xml.childxml_arg0"scannedResourceStatus")inletscannedResourceType=(Option.map~f:MalwareProtectionResourceType.of_xml)(Xml.childxml_arg0"scannedResourceType")inletscannedResourceArn=(Option.map~f:NonEmptyString.of_xml)(Xml.childxml_arg0"scannedResourceArn")inmake?resourceDetails?scanStatusReason?scannedResourceStatus?scannedResourceType?scannedResourceArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letresourceDetails=field_mapjson__"ResourceDetails"ScannedResourceDetails.of_jsoninletscanStatusReason=field_mapjson__"ScanStatusReason"ScanStatusReason.of_jsoninletscannedResourceStatus=field_mapjson__"ScannedResourceStatus"MalwareProtectionScanStatus.of_jsoninletscannedResourceType=field_mapjson__"ScannedResourceType"MalwareProtectionResourceType.of_jsoninletscannedResourceArn=field_mapjson__"ScannedResourceArn"NonEmptyString.of_jsoninmake?resourceDetails?scanStatusReason?scannedResourceStatus?scannedResourceType?scannedResourceArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about a resource that was scanned as part of the malware scan operation."]moduleCreateS3BucketResource=structtypenonrect={bucketName:String_.toption[@ocaml.doc"Name of the S3 bucket."];objectPrefixes:MalwareProtectionPlanObjectPrefixesList.toption[@ocaml.doc"Information about the specified object prefixes. The S3 object will be scanned only if it belongs to any of the specified object prefixes."]}letmake?bucketName=fun?objectPrefixes->fun()->{bucketName;objectPrefixes}letto_valuex=structure_to_value[("bucketName",(Option.mapx.bucketName~f:String_.to_value));("objectPrefixes",(Option.mapx.objectPrefixes~f:MalwareProtectionPlanObjectPrefixesList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letobjectPrefixes=(Option.map~f:MalwareProtectionPlanObjectPrefixesList.of_xml)(Xml.childxml_arg0"objectPrefixes")inletbucketName=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"bucketName")inmake?objectPrefixes?bucketName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letobjectPrefixes=field_mapjson__"ObjectPrefixes"MalwareProtectionPlanObjectPrefixesList.of_jsoninletbucketName=field_mapjson__"BucketName"String_.of_jsoninmake?objectPrefixes?bucketName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the protected S3 bucket resource."]moduleMalwareProtectionPlanStatusReason=structtypenonrect={code:String_.toption[@ocaml.doc"Issue code."];message:String_.toption[@ocaml.doc"Issue message that specifies the reason. For information about potential troubleshooting steps, see Troubleshooting Malware Protection for S3 status issues in the Amazon GuardDuty User Guide."]}letmake?code=fun?message->fun()->{code;message}letto_valuex=structure_to_value[("code",(Option.mapx.code~f:String_.to_value));("message",(Option.mapx.message~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmessage=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"message")inletcode=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"code")inmake?message?code()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmessage=field_mapjson__"Message"String_.of_jsoninletcode=field_mapjson__"Code"String_.of_jsoninmake?message?code()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the issue code and message associated to the status of your Malware Protection plan."]moduleCountBySeverity=structtypenonrect=(String_.t*Integer.t)listletmakei=iletof_headerxs=make(List.filter_mapxs~f:(fun(k,v)->(Base.String.chop_prefixk~prefix:"x-amz-meta-")|>(Option.map~f:(funchopped->((String_.of_stringchopped),(Integer.of_stringv))))))letto_valuexs=(xs|>(List.map~f:(fun(x,y)->(String_.to_valuex)|>(funx->(Integer.to_valuey)|>(funy->(x,y))))))|>(funx->`Mapx)letto_queryv=to_queryto_valuevletto_header_=failwithf"to_header is not implemented for Map_shape objects"()letof_xml_=failwith"of_xml_converter_of_shape: Map_shape case not implemented"letof_jsonj=object_of_json~key_of_string:String_.of_string~of_json:Integer.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleGroupedByAccount=structtypenonrect=AccountStatistics.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:AccountStatistics.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:AccountStatistics.of_xml)letof_jsonj=list_of_json~kind:"GroupedByAccount"~of_json:AccountStatistics.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleGroupedByDate=structtypenonrect=DateStatistics.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:DateStatistics.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:DateStatistics.of_xml)letof_jsonj=list_of_json~kind:"GroupedByDate"~of_json:DateStatistics.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleGroupedByFindingType=structtypenonrect=FindingTypeStatistics.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:FindingTypeStatistics.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:FindingTypeStatistics.of_xml)letof_jsonj=list_of_json~kind:"GroupedByFindingType"~of_json:FindingTypeStatistics.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleGroupedByResource=structtypenonrect=ResourceStatistics.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ResourceStatistics.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:ResourceStatistics.of_xml)letof_jsonj=list_of_json~kind:"GroupedByResource"~of_json:ResourceStatistics.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleGroupedBySeverity=structtypenonrect=SeverityStatistics.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:SeverityStatistics.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:SeverityStatistics.of_xml)letof_jsonj=list_of_json~kind:"GroupedBySeverity"~of_json:SeverityStatistics.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleFindingStatisticType=structtypenonrect=|COUNT_BY_SEVERITY|Non_static_idofstringletmakei=iletto_string=function|COUNT_BY_SEVERITY->"COUNT_BY_SEVERITY"|Non_static_ids->sletof_string=function|"COUNT_BY_SEVERITY"->COUNT_BY_SEVERITY|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 FindingStatisticType"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"FindingStatisticType"j)letto_json=simple_to_jsonto_valueendmoduleFinding=structtypenonrect={accountId:String_.toption[@ocaml.doc"The ID of the account in which the finding was generated."];arn:String_.toption[@ocaml.doc"The ARN of the finding."];confidence:Double.toption[@ocaml.doc"The confidence score for the finding."];createdAt:String_.toption[@ocaml.doc"The time and date when the finding was created."];description:String_.toption[@ocaml.doc"The description of the finding."];id:String_.toption[@ocaml.doc"The ID of the finding."];partition:String_.toption[@ocaml.doc"The partition associated with the finding."];region:String_.toption[@ocaml.doc"The Region where the finding was generated. For findings generated from Global Service Events, the Region value in the finding might differ from the Region where GuardDuty identifies the potential threat. For more information, see How GuardDuty handles Amazon Web Services CloudTrail global events in the Amazon GuardDuty User Guide."];resource:Resource.toption;schemaVersion:String_.toption[@ocaml.doc"The version of the schema used for the finding."];service:Service.toption;severity:Double.toption[@ocaml.doc"The severity of the finding."];title:String_.toption[@ocaml.doc"The title of the finding."];type_:FindingType.toption[@ocaml.doc"The type of finding."];updatedAt:String_.toption[@ocaml.doc"The time and date when the finding was last updated."];associatedAttackSequenceArn:String_.toption[@ocaml.doc"Amazon Resource Name (ARN) associated with the attack sequence finding."]}letmake?accountId=fun?arn->fun?confidence->fun?createdAt->fun?description->fun?id->fun?partition->fun?region->fun?resource->fun?schemaVersion->fun?service->fun?severity->fun?title->fun?type_->fun?updatedAt->fun?associatedAttackSequenceArn->fun()->{accountId;arn;confidence;createdAt;description;id;partition;region;resource;schemaVersion;service;severity;title;type_;updatedAt;associatedAttackSequenceArn}letto_valuex=structure_to_value[("accountId",(Option.mapx.accountId~f:String_.to_value));("arn",(Option.mapx.arn~f:String_.to_value));("confidence",(Option.mapx.confidence~f:Double.to_value));("createdAt",(Option.mapx.createdAt~f:String_.to_value));("description",(Option.mapx.description~f:String_.to_value));("id",(Option.mapx.id~f:String_.to_value));("partition",(Option.mapx.partition~f:String_.to_value));("region",(Option.mapx.region~f:String_.to_value));("resource",(Option.mapx.resource~f:Resource.to_value));("schemaVersion",(Option.mapx.schemaVersion~f:String_.to_value));("service",(Option.mapx.service~f:Service.to_value));("severity",(Option.mapx.severity~f:Double.to_value));("title",(Option.mapx.title~f:String_.to_value));("type",(Option.mapx.type_~f:FindingType.to_value));("updatedAt",(Option.mapx.updatedAt~f:String_.to_value));("associatedAttackSequenceArn",(Option.mapx.associatedAttackSequenceArn~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letassociatedAttackSequenceArn=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"associatedAttackSequenceArn")inletupdatedAt=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"updatedAt")inlettype_=(Option.map~f:FindingType.of_xml)(Xml.childxml_arg0"type")inlettitle=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"title")inletseverity=(Option.map~f:Double.of_xml)(Xml.childxml_arg0"severity")inletservice=(Option.map~f:Service.of_xml)(Xml.childxml_arg0"service")inletschemaVersion=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"schemaVersion")inletresource=(Option.map~f:Resource.of_xml)(Xml.childxml_arg0"resource")inletregion=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"region")inletpartition=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"partition")inletid=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"id")inletdescription=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"description")inletcreatedAt=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"createdAt")inletconfidence=(Option.map~f:Double.of_xml)(Xml.childxml_arg0"confidence")inletarn=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"arn")inletaccountId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"accountId")inmake?associatedAttackSequenceArn?updatedAt?type_?title?severity?service?schemaVersion?resource?region?partition?id?description?createdAt?confidence?arn?accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letassociatedAttackSequenceArn=field_mapjson__"AssociatedAttackSequenceArn"String_.of_jsoninletupdatedAt=field_mapjson__"UpdatedAt"String_.of_jsoninlettype_=field_mapjson__"Type"FindingType.of_jsoninlettitle=field_mapjson__"Title"String_.of_jsoninletseverity=field_mapjson__"Severity"Double.of_jsoninletservice=field_mapjson__"Service"Service.of_jsoninletschemaVersion=field_mapjson__"SchemaVersion"String_.of_jsoninletresource=field_mapjson__"Resource"Resource.of_jsoninletregion=field_mapjson__"Region"String_.of_jsoninletpartition=field_mapjson__"Partition"String_.of_jsoninletid=field_mapjson__"Id"String_.of_jsoninletdescription=field_mapjson__"Description"String_.of_jsoninletcreatedAt=field_mapjson__"CreatedAt"String_.of_jsoninletconfidence=field_mapjson__"Confidence"Double.of_jsoninletarn=field_mapjson__"Arn"String_.of_jsoninletaccountId=field_mapjson__"AccountId"String_.of_jsoninmake?associatedAttackSequenceArn?updatedAt?type_?title?severity?service?schemaVersion?resource?region?partition?id?description?createdAt?confidence?arn?accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the finding that is generated when abnormal or suspicious activity is detected."]moduleDetectorFeatureConfigurationResult=structtypenonrect={name:DetectorFeatureResult.toption[@ocaml.doc"Indicates the name of the feature that can be enabled for the detector."];status:FeatureStatus.toption[@ocaml.doc"Indicates the status of the feature that is enabled for the detector."];updatedAt:Timestamp.toption[@ocaml.doc"The timestamp at which the feature object was updated."];additionalConfiguration:DetectorAdditionalConfigurationResults.toption[@ocaml.doc"Additional configuration for a resource."]}letmake?name=fun?status->fun?updatedAt->fun?additionalConfiguration->fun()->{name;status;updatedAt;additionalConfiguration}letto_valuex=structure_to_value[("name",(Option.mapx.name~f:DetectorFeatureResult.to_value));("status",(Option.mapx.status~f:FeatureStatus.to_value));("updatedAt",(Option.mapx.updatedAt~f:Timestamp.to_value));("additionalConfiguration",(Option.mapx.additionalConfiguration~f:DetectorAdditionalConfigurationResults.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letadditionalConfiguration=(Option.map~f:DetectorAdditionalConfigurationResults.of_xml)(Xml.childxml_arg0"additionalConfiguration")inletupdatedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"updatedAt")inletstatus=(Option.map~f:FeatureStatus.of_xml)(Xml.childxml_arg0"status")inletname=(Option.map~f:DetectorFeatureResult.of_xml)(Xml.childxml_arg0"name")inmake?additionalConfiguration?updatedAt?status?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letadditionalConfiguration=field_mapjson__"AdditionalConfiguration"DetectorAdditionalConfigurationResults.of_jsoninletupdatedAt=field_mapjson__"UpdatedAt"Timestamp.of_jsoninletstatus=field_mapjson__"Status"FeatureStatus.of_jsoninletname=field_mapjson__"Name"DetectorFeatureResult.of_jsoninmake?additionalConfiguration?updatedAt?status?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about a GuardDuty feature. Specifying both EKS Runtime Monitoring (EKS_RUNTIME_MONITORING) and Runtime Monitoring (RUNTIME_MONITORING) will cause an error. You can add only one of these two features because Runtime Monitoring already includes the threat detection for Amazon EKS resources. For more information, see Runtime Monitoring."]moduleCountByCoverageStatus=structtypenonrect=(CoverageStatus.t*Long.t)listletmakei=iletof_headerxs=make(List.filter_mapxs~f:(fun(k,v)->(Base.String.chop_prefixk~prefix:"x-amz-meta-")|>(Option.map~f:(funchopped->((CoverageStatus.of_stringchopped),(Long.of_stringv))))))letto_valuexs=(xs|>(List.map~f:(fun(x,y)->(CoverageStatus.to_valuex)|>(funx->(Long.to_valuey)|>(funy->(x,y))))))|>(funx->`Mapx)letto_queryv=to_queryto_valuevletto_header_=failwithf"to_header is not implemented for Map_shape objects"()letof_xml_=failwith"of_xml_converter_of_shape: Map_shape case not implemented"letof_jsonj=object_of_json~key_of_string:CoverageStatus.of_string~of_json:Long.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleCountByResourceType=structtypenonrect=(ResourceType.t*Long.t)listletmakei=iletof_headerxs=make(List.filter_mapxs~f:(fun(k,v)->(Base.String.chop_prefixk~prefix:"x-amz-meta-")|>(Option.map~f:(funchopped->((ResourceType.of_stringchopped),(Long.of_stringv))))))letto_valuexs=(xs|>(List.map~f:(fun(x,y)->(ResourceType.to_valuex)|>(funx->(Long.to_valuey)|>(funy->(x,y))))))|>(funx->`Mapx)letto_queryv=to_queryto_valuevletto_header_=failwithf"to_header is not implemented for Map_shape objects"()letof_xml_=failwith"of_xml_converter_of_shape: Map_shape case not implemented"letof_jsonj=object_of_json~key_of_string:ResourceType.of_string~of_json:Long.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleCoverageStatisticsType=structtypenonrect=|COUNT_BY_RESOURCE_TYPE|COUNT_BY_COVERAGE_STATUS|Non_static_idofstringletmakei=iletto_string=function|COUNT_BY_RESOURCE_TYPE->"COUNT_BY_RESOURCE_TYPE"|COUNT_BY_COVERAGE_STATUS->"COUNT_BY_COVERAGE_STATUS"|Non_static_ids->sletof_string=function|"COUNT_BY_RESOURCE_TYPE"->COUNT_BY_RESOURCE_TYPE|"COUNT_BY_COVERAGE_STATUS"->COUNT_BY_COVERAGE_STATUS|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 CoverageStatisticsType"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"CoverageStatisticsType"j)letto_json=simple_to_jsonto_valueendmoduleOrganizationKubernetesConfigurationResult=structtypenonrect={auditLogs:OrganizationKubernetesAuditLogsConfigurationResult.toption[@ocaml.doc"The current configuration of Kubernetes audit logs as a data source for the organization."]}letmake?auditLogs=fun()->{auditLogs}letto_valuex=structure_to_value[("auditLogs",(Option.mapx.auditLogs~f:OrganizationKubernetesAuditLogsConfigurationResult.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letauditLogs=(Option.map~f:OrganizationKubernetesAuditLogsConfigurationResult.of_xml)(Xml.childxml_arg0"auditLogs")inmake?auditLogs()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letauditLogs=field_mapjson__"AuditLogs"OrganizationKubernetesAuditLogsConfigurationResult.of_jsoninmake?auditLogs()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The current configuration of all Kubernetes data sources for the organization."]moduleOrganizationMalwareProtectionConfigurationResult=structtypenonrect={scanEc2InstanceWithFindings:OrganizationScanEc2InstanceWithFindingsResult.toption[@ocaml.doc"Describes the configuration for scanning EC2 instances with findings for an organization."]}letmake?scanEc2InstanceWithFindings=fun()->{scanEc2InstanceWithFindings}letto_valuex=structure_to_value[("scanEc2InstanceWithFindings",(Option.mapx.scanEc2InstanceWithFindings~f:OrganizationScanEc2InstanceWithFindingsResult.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letscanEc2InstanceWithFindings=(Option.map~f:OrganizationScanEc2InstanceWithFindingsResult.of_xml)(Xml.childxml_arg0"scanEc2InstanceWithFindings")inmake?scanEc2InstanceWithFindings()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letscanEc2InstanceWithFindings=field_mapjson__"ScanEc2InstanceWithFindings"OrganizationScanEc2InstanceWithFindingsResult.of_jsoninmake?scanEc2InstanceWithFindings()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"An object that contains information on the status of all Malware Protection data source for an organization."]moduleOrganizationS3LogsConfigurationResult=structtypenonrect={autoEnable:Boolean.toption[@ocaml.doc"A value that describes whether S3 data event logs are automatically enabled for new members of the organization."]}letmake?autoEnable=fun()->{autoEnable}letto_valuex=structure_to_value[("autoEnable",(Option.mapx.autoEnable~f:Boolean.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letautoEnable=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"autoEnable")inmake?autoEnable()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letautoEnable=field_mapjson__"AutoEnable"Boolean.of_jsoninmake?autoEnable()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The current configuration of S3 data event logs as a data source for the organization."]moduleOrganizationFeatureConfigurationResult=structtypenonrect={name:OrgFeature.toption[@ocaml.doc"The name of the feature that is configured for the member accounts within the organization."];autoEnable:OrgFeatureStatus.toption[@ocaml.doc"Describes the status of the feature that is configured for the member accounts within the organization. NEW: Indicates that when a new account joins the organization, they will have the feature enabled automatically. ALL: Indicates that all accounts in the organization have the feature enabled automatically. This includes NEW accounts that join the organization and accounts that may have been suspended or removed from the organization in GuardDuty. NONE: Indicates that the feature will not be automatically enabled for any account in the organization. In this case, each account will be managed individually by the administrator."];additionalConfiguration:OrganizationAdditionalConfigurationResults.toption[@ocaml.doc"The additional configuration that is configured for the member accounts within the organization."]}letmake?name=fun?autoEnable->fun?additionalConfiguration->fun()->{name;autoEnable;additionalConfiguration}letto_valuex=structure_to_value[("name",(Option.mapx.name~f:OrgFeature.to_value));("autoEnable",(Option.mapx.autoEnable~f:OrgFeatureStatus.to_value));("additionalConfiguration",(Option.mapx.additionalConfiguration~f:OrganizationAdditionalConfigurationResults.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letadditionalConfiguration=(Option.map~f:OrganizationAdditionalConfigurationResults.of_xml)(Xml.childxml_arg0"additionalConfiguration")inletautoEnable=(Option.map~f:OrgFeatureStatus.of_xml)(Xml.childxml_arg0"autoEnable")inletname=(Option.map~f:OrgFeature.of_xml)(Xml.childxml_arg0"name")inmake?additionalConfiguration?autoEnable?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letadditionalConfiguration=field_mapjson__"AdditionalConfiguration"OrganizationAdditionalConfigurationResults.of_jsoninletautoEnable=field_mapjson__"AutoEnable"OrgFeatureStatus.of_jsoninletname=field_mapjson__"Name"OrgFeature.of_jsoninmake?additionalConfiguration?autoEnable?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A list of features which will be configured for the organization."]moduleScan=structtypenonrect={detectorId:DetectorId.toption[@ocaml.doc"The unique ID of the detector that is associated with the request. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];adminDetectorId:DetectorId.toption[@ocaml.doc"The unique detector ID of the administrator account that the request is associated with. If the account is an administrator, the AdminDetectorId will be the same as the one used for DetectorId. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];scanId:NonEmptyString.toption[@ocaml.doc"The unique scan ID associated with a scan entry."];scanStatus:ScanStatus.toption[@ocaml.doc"An enum value representing possible scan statuses."];failureReason:NonEmptyString.toption[@ocaml.doc"Represents the reason for FAILED scan status."];scanStartTime:Timestamp.toption[@ocaml.doc"The timestamp of when the scan was triggered."];scanEndTime:Timestamp.toption[@ocaml.doc"The timestamp of when the scan was finished."];triggerDetails:TriggerDetails.toption[@ocaml.doc"Specifies the reason why the scan was initiated."];resourceDetails:ResourceDetails.toption[@ocaml.doc"Represents the resources that were scanned in the scan entry."];scanResultDetails:ScanResultDetails.toption[@ocaml.doc"Represents the result of the scan."];accountId:AccountId.toption[@ocaml.doc"The ID for the account that belongs to the scan."];totalBytes:PositiveLong.toption[@ocaml.doc"Represents total bytes that were scanned."];fileCount:PositiveLong.toption[@ocaml.doc"Represents the number of files that were scanned."];attachedVolumes:VolumeDetails.toption[@ocaml.doc"List of volumes that were attached to the original instance to be scanned."];scanType:ScanType.toption[@ocaml.doc"Specifies the scan type that invoked the malware scan."]}letmake?detectorId=fun?adminDetectorId->fun?scanId->fun?scanStatus->fun?failureReason->fun?scanStartTime->fun?scanEndTime->fun?triggerDetails->fun?resourceDetails->fun?scanResultDetails->fun?accountId->fun?totalBytes->fun?fileCount->fun?attachedVolumes->fun?scanType->fun()->{detectorId;adminDetectorId;scanId;scanStatus;failureReason;scanStartTime;scanEndTime;triggerDetails;resourceDetails;scanResultDetails;accountId;totalBytes;fileCount;attachedVolumes;scanType}letto_valuex=structure_to_value[("detectorId",(Option.mapx.detectorId~f:DetectorId.to_value));("adminDetectorId",(Option.mapx.adminDetectorId~f:DetectorId.to_value));("scanId",(Option.mapx.scanId~f:NonEmptyString.to_value));("scanStatus",(Option.mapx.scanStatus~f:ScanStatus.to_value));("failureReason",(Option.mapx.failureReason~f:NonEmptyString.to_value));("scanStartTime",(Option.mapx.scanStartTime~f:Timestamp.to_value));("scanEndTime",(Option.mapx.scanEndTime~f:Timestamp.to_value));("triggerDetails",(Option.mapx.triggerDetails~f:TriggerDetails.to_value));("resourceDetails",(Option.mapx.resourceDetails~f:ResourceDetails.to_value));("scanResultDetails",(Option.mapx.scanResultDetails~f:ScanResultDetails.to_value));("accountId",(Option.mapx.accountId~f:AccountId.to_value));("totalBytes",(Option.mapx.totalBytes~f:PositiveLong.to_value));("fileCount",(Option.mapx.fileCount~f:PositiveLong.to_value));("attachedVolumes",(Option.mapx.attachedVolumes~f:VolumeDetails.to_value));("scanType",(Option.mapx.scanType~f:ScanType.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letscanType=(Option.map~f:ScanType.of_xml)(Xml.childxml_arg0"scanType")inletattachedVolumes=(Option.map~f:VolumeDetails.of_xml)(Xml.childxml_arg0"attachedVolumes")inletfileCount=(Option.map~f:PositiveLong.of_xml)(Xml.childxml_arg0"fileCount")inlettotalBytes=(Option.map~f:PositiveLong.of_xml)(Xml.childxml_arg0"totalBytes")inletaccountId=(Option.map~f:AccountId.of_xml)(Xml.childxml_arg0"accountId")inletscanResultDetails=(Option.map~f:ScanResultDetails.of_xml)(Xml.childxml_arg0"scanResultDetails")inletresourceDetails=(Option.map~f:ResourceDetails.of_xml)(Xml.childxml_arg0"resourceDetails")inlettriggerDetails=(Option.map~f:TriggerDetails.of_xml)(Xml.childxml_arg0"triggerDetails")inletscanEndTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"scanEndTime")inletscanStartTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"scanStartTime")inletfailureReason=(Option.map~f:NonEmptyString.of_xml)(Xml.childxml_arg0"failureReason")inletscanStatus=(Option.map~f:ScanStatus.of_xml)(Xml.childxml_arg0"scanStatus")inletscanId=(Option.map~f:NonEmptyString.of_xml)(Xml.childxml_arg0"scanId")inletadminDetectorId=(Option.map~f:DetectorId.of_xml)(Xml.childxml_arg0"adminDetectorId")inletdetectorId=(Option.map~f:DetectorId.of_xml)(Xml.childxml_arg0"detectorId")inmake?scanType?attachedVolumes?fileCount?totalBytes?accountId?scanResultDetails?resourceDetails?triggerDetails?scanEndTime?scanStartTime?failureReason?scanStatus?scanId?adminDetectorId?detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letscanType=field_mapjson__"ScanType"ScanType.of_jsoninletattachedVolumes=field_mapjson__"AttachedVolumes"VolumeDetails.of_jsoninletfileCount=field_mapjson__"FileCount"PositiveLong.of_jsoninlettotalBytes=field_mapjson__"TotalBytes"PositiveLong.of_jsoninletaccountId=field_mapjson__"AccountId"AccountId.of_jsoninletscanResultDetails=field_mapjson__"ScanResultDetails"ScanResultDetails.of_jsoninletresourceDetails=field_mapjson__"ResourceDetails"ResourceDetails.of_jsoninlettriggerDetails=field_mapjson__"TriggerDetails"TriggerDetails.of_jsoninletscanEndTime=field_mapjson__"ScanEndTime"Timestamp.of_jsoninletscanStartTime=field_mapjson__"ScanStartTime"Timestamp.of_jsoninletfailureReason=field_mapjson__"FailureReason"NonEmptyString.of_jsoninletscanStatus=field_mapjson__"ScanStatus"ScanStatus.of_jsoninletscanId=field_mapjson__"ScanId"NonEmptyString.of_jsoninletadminDetectorId=field_mapjson__"AdminDetectorId"DetectorId.of_jsoninletdetectorId=field_mapjson__"DetectorId"DetectorId.of_jsoninmake?scanType?attachedVolumes?fileCount?totalBytes?accountId?scanResultDetails?resourceDetails?triggerDetails?scanEndTime?scanStartTime?failureReason?scanStatus?scanId?adminDetectorId?detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about malware scans associated with GuardDuty Malware Protection for EC2."]moduleFilterCriterionList=structtypenonrect=FilterCriterion.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:1)>>=(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:FilterCriterion.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:FilterCriterion.of_xml)letof_jsonj=list_of_json~kind:"FilterCriterionList"~of_json:FilterCriterion.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleAccountDetail=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The member account ID."];email:Email.t[@ocaml.doc"The email address of the member account. The following list includes the rules for a valid email address: The email address must be a minimum of 6 and a maximum of 64 characters long. All characters must be 7-bit ASCII characters. There must be one and only one \\@ symbol, which separates the local name from the domain name. The local name can't contain any of the following characters: whitespace, \" ' ( ) < > \\[ \\] : ' , \\ | % & The local name can't begin with a dot (.). The domain name can consist of only the characters \\[a-z\\], \\[A-Z\\], \\[0-9\\], hyphen (-), or dot (.). The domain name can't begin or end with a dot (.) or hyphen (-). The domain name must contain at least one dot."]}letcontext_="AccountDetail"letmake~accountId=fun~email->fun()->{accountId;email}letto_valuex=structure_to_value[("accountId",(Some(AccountId.to_valuex.accountId)));("email",(Some(Email.to_valuex.email)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letemail=Email.of_xml(Xml.child_exn~context:context_xml_arg0"email")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"accountId")inmake~email~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letemail=field_map_exnjson__"Email"Email.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~email~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the account."]moduleBadRequestException=structtypenonrect={message:String_.toption[@ocaml.doc"The error message."];type_:String_.toption[@ocaml.doc"The error type."]}letmake?message=fun?type_->fun()->{message;type_}letto_valuex=structure_to_value[("message",(Option.mapx.message~f:String_.to_value));("type",(Option.mapx.type_~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettype_=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"type")inletmessage=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"message")inmake?type_?message()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettype_=field_mapjson__"Type"String_.of_jsoninletmessage=field_mapjson__"Message"String_.of_jsoninmake?type_?message()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A bad request exception object."]moduleInternalServerErrorException=structtypenonrect={message:String_.toption[@ocaml.doc"The error message."];type_:String_.toption[@ocaml.doc"The error type."]}letmake?message=fun?type_->fun()->{message;type_}letto_valuex=structure_to_value[("message",(Option.mapx.message~f:String_.to_value));("type",(Option.mapx.type_~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettype_=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"type")inletmessage=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"message")inmake?type_?message()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettype_=field_mapjson__"Type"String_.of_jsoninletmessage=field_mapjson__"Message"String_.of_jsoninmake?type_?message()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"An internal server error exception object."]moduleExpectedBucketOwner=structtypenonrect=stringletcontext_="ExpectedBucketOwner"letmakei=letopenResultinok_or_failwith((check_string_mini~min:12)>>=(fun()->(check_string_maxi~max:12)>>=(fun()->check_patterni~pattern:"[0-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:"ExpectedBucketOwner"jletto_json=simple_to_jsonto_valueendmoduleLocation=structtypenonrect=stringletcontext_="Location"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:300)>>=(fun()->check_string_mini~min:1));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"Location"jletto_json=simple_to_jsonto_valueendmoduleName=structtypenonrect=stringletcontext_="Name"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:300)>>=(fun()->check_string_mini~min:1));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"Name"jletto_json=simple_to_jsonto_valueendmoduleAccessDeniedException=structtypenonrect={message:String_.toption[@ocaml.doc"The error message."];type_:String_.toption[@ocaml.doc"The error type."]}letmake?message=fun?type_->fun()->{message;type_}letto_valuex=structure_to_value[("message",(Option.mapx.message~f:String_.to_value));("type",(Option.mapx.type_~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettype_=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"type")inletmessage=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"message")inmake?type_?message()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettype_=field_mapjson__"Type"String_.of_jsoninletmessage=field_mapjson__"Message"String_.of_jsoninmake?type_?message()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"An access denied exception object."]moduleDestinationProperties=structtypenonrect={destinationArn:String_.toption[@ocaml.doc"The ARN of the resource to publish to. To specify an S3 bucket folder use the following format: arn:aws:s3:::DOC-EXAMPLE-BUCKET/myFolder/"];kmsKeyArn:String_.toption[@ocaml.doc"The ARN of the KMS key to use for encryption."]}letmake?destinationArn=fun?kmsKeyArn->fun()->{destinationArn;kmsKeyArn}letto_valuex=structure_to_value[("destinationArn",(Option.mapx.destinationArn~f:String_.to_value));("kmsKeyArn",(Option.mapx.kmsKeyArn~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letkmsKeyArn=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"kmsKeyArn")inletdestinationArn=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"destinationArn")inmake?kmsKeyArn?destinationArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letkmsKeyArn=field_mapjson__"KmsKeyArn"String_.of_jsoninletdestinationArn=field_mapjson__"DestinationArn"String_.of_jsoninmake?kmsKeyArn?destinationArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains the Amazon Resource Name (ARN) of the resource to publish to, such as an S3 bucket, and the ARN of the KMS key to use to encrypt published findings."]moduleAutoEnableMembers=structtypenonrect=|NEW|ALL|NONE|Non_static_idofstringletmakei=iletto_string=function|NEW->"NEW"|ALL->"ALL"|NONE->"NONE"|Non_static_ids->sletof_string=function|"NEW"->NEW|"ALL"->ALL|"NONE"->NONE|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 AutoEnableMembers"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"AutoEnableMembers"j)letto_json=simple_to_jsonto_valueendmoduleOrganizationDataSourceConfigurations=structtypenonrect={s3Logs:OrganizationS3LogsConfiguration.toption[@ocaml.doc"Describes whether S3 data event logs are enabled for new members of the organization."];kubernetes:OrganizationKubernetesConfiguration.toption[@ocaml.doc"Describes the configuration of Kubernetes data sources for new members of the organization."];malwareProtection:OrganizationMalwareProtectionConfiguration.toption[@ocaml.doc"Describes the configuration of Malware Protection for new members of the organization."]}letmake?s3Logs=fun?kubernetes->fun?malwareProtection->fun()->{s3Logs;kubernetes;malwareProtection}letto_valuex=structure_to_value[("s3Logs",(Option.mapx.s3Logs~f:OrganizationS3LogsConfiguration.to_value));("kubernetes",(Option.mapx.kubernetes~f:OrganizationKubernetesConfiguration.to_value));("malwareProtection",(Option.mapx.malwareProtection~f:OrganizationMalwareProtectionConfiguration.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmalwareProtection=(Option.map~f:OrganizationMalwareProtectionConfiguration.of_xml)(Xml.childxml_arg0"malwareProtection")inletkubernetes=(Option.map~f:OrganizationKubernetesConfiguration.of_xml)(Xml.childxml_arg0"kubernetes")inlets3Logs=(Option.map~f:OrganizationS3LogsConfiguration.of_xml)(Xml.childxml_arg0"s3Logs")inmake?malwareProtection?kubernetes?s3Logs()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmalwareProtection=field_mapjson__"MalwareProtection"OrganizationMalwareProtectionConfiguration.of_jsoninletkubernetes=field_mapjson__"Kubernetes"OrganizationKubernetesConfiguration.of_jsoninlets3Logs=field_mapjson__"S3Logs"OrganizationS3LogsConfiguration.of_jsoninmake?malwareProtection?kubernetes?s3Logs()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"An object that contains information on which data sources will be configured to be automatically enabled for new members within the organization."]moduleOrganizationFeaturesConfigurations=structtypenonrect=OrganizationFeatureConfiguration.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:OrganizationFeatureConfiguration.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:OrganizationFeatureConfiguration.of_xml)letof_jsonj=list_of_json~kind:"OrganizationFeaturesConfigurations"~of_json:OrganizationFeatureConfiguration.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleUnprocessedAccounts=structtypenonrect=UnprocessedAccount.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:50)>>=(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:UnprocessedAccount.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:UnprocessedAccount.of_xml)letof_jsonj=list_of_json~kind:"UnprocessedAccounts"~of_json:UnprocessedAccount.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleDataSourceConfigurations=structtypenonrect={s3Logs:S3LogsConfiguration.toption[@ocaml.doc"Describes whether S3 data event logs are enabled as a data source."];kubernetes:KubernetesConfiguration.toption[@ocaml.doc"Describes whether any Kubernetes logs are enabled as data sources."];malwareProtection:MalwareProtectionConfiguration.toption[@ocaml.doc"Describes whether Malware Protection is enabled as a data source."]}letmake?s3Logs=fun?kubernetes->fun?malwareProtection->fun()->{s3Logs;kubernetes;malwareProtection}letto_valuex=structure_to_value[("s3Logs",(Option.mapx.s3Logs~f:S3LogsConfiguration.to_value));("kubernetes",(Option.mapx.kubernetes~f:KubernetesConfiguration.to_value));("malwareProtection",(Option.mapx.malwareProtection~f:MalwareProtectionConfiguration.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmalwareProtection=(Option.map~f:MalwareProtectionConfiguration.of_xml)(Xml.childxml_arg0"malwareProtection")inletkubernetes=(Option.map~f:KubernetesConfiguration.of_xml)(Xml.childxml_arg0"kubernetes")inlets3Logs=(Option.map~f:S3LogsConfiguration.of_xml)(Xml.childxml_arg0"s3Logs")inmake?malwareProtection?kubernetes?s3Logs()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmalwareProtection=field_mapjson__"MalwareProtection"MalwareProtectionConfiguration.of_jsoninletkubernetes=field_mapjson__"Kubernetes"KubernetesConfiguration.of_jsoninlets3Logs=field_mapjson__"S3Logs"S3LogsConfiguration.of_jsoninmake?malwareProtection?kubernetes?s3Logs()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about which data sources are enabled."]moduleMemberFeaturesConfigurations=structtypenonrect=MemberFeaturesConfiguration.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:MemberFeaturesConfiguration.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:MemberFeaturesConfiguration.of_xml)letof_jsonj=list_of_json~kind:"MemberFeaturesConfigurations"~of_json:MemberFeaturesConfiguration.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleEbsSnapshotPreservation=structtypenonrect=|NO_RETENTION|RETENTION_WITH_FINDING|Non_static_idofstringletmakei=iletto_string=function|NO_RETENTION->"NO_RETENTION"|RETENTION_WITH_FINDING->"RETENTION_WITH_FINDING"|Non_static_ids->sletof_string=function|"NO_RETENTION"->NO_RETENTION|"RETENTION_WITH_FINDING"->RETENTION_WITH_FINDING|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 EbsSnapshotPreservation"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"EbsSnapshotPreservation"j)letto_json=simple_to_jsonto_valueendmoduleScanResourceCriteria=structtypenonrect={include_:ScanCriterion.toption[@ocaml.doc"Represents condition that when matched will allow a malware scan for a certain resource."];exclude:ScanCriterion.toption[@ocaml.doc"Represents condition that when matched will prevent a malware scan for a certain resource."]}letmake?include_=fun?exclude->fun()->{include_;exclude}letto_valuex=structure_to_value[("include",(Option.mapx.include_~f:ScanCriterion.to_value));("exclude",(Option.mapx.exclude~f:ScanCriterion.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letexclude=(Option.map~f:ScanCriterion.of_xml)(Xml.childxml_arg0"exclude")inletinclude_=(Option.map~f:ScanCriterion.of_xml)(Xml.childxml_arg0"include")inmake?exclude?include_()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letexclude=field_mapjson__"Exclude"ScanCriterion.of_jsoninletinclude_=field_mapjson__"Include"ScanCriterion.of_jsoninmake?exclude?include_()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about criteria used to filter resources before triggering malware scan."]moduleMalwareProtectionPlanActions=structtypenonrect={tagging:MalwareProtectionPlanTaggingAction.toption[@ocaml.doc"Indicates whether the scanned S3 object will have tags about the scan result."]}letmake?tagging=fun()->{tagging}letto_valuex=structure_to_value[("tagging",(Option.mapx.tagging~f:MalwareProtectionPlanTaggingAction.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettagging=(Option.map~f:MalwareProtectionPlanTaggingAction.of_xml)(Xml.childxml_arg0"tagging")inmake?tagging()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettagging=field_mapjson__"Tagging"MalwareProtectionPlanTaggingAction.of_jsoninmake?tagging()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about whether the tags will be added to the S3 object after scanning."]moduleUpdateProtectedResource=structtypenonrect={s3Bucket:UpdateS3BucketResource.toption[@ocaml.doc"Information about the protected S3 bucket resource."]}letmake?s3Bucket=fun()->{s3Bucket}letto_valuex=structure_to_value[("s3Bucket",(Option.mapx.s3Bucket~f:UpdateS3BucketResource.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lets3Bucket=(Option.map~f:UpdateS3BucketResource.of_xml)(Xml.childxml_arg0"s3Bucket")inmake?s3Bucket()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lets3Bucket=field_mapjson__"S3Bucket"UpdateS3BucketResource.of_jsoninmake?s3Bucket()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the protected resource that is associated with the created Malware Protection plan. Presently, S3Bucket is the only supported protected resource."]moduleFeedback=structtypenonrect=|USEFUL|NOT_USEFUL|Non_static_idofstringletmakei=iletto_string=function|USEFUL->"USEFUL"|NOT_USEFUL->"NOT_USEFUL"|Non_static_ids->sletof_string=function|"USEFUL"->USEFUL|"NOT_USEFUL"->NOT_USEFUL|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 Feedback"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"Feedback"j)letto_json=simple_to_jsonto_valueendmoduleFindingIds=structtypenonrect=FindingId.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:50)>>=(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:FindingId.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:FindingId.of_xml)letof_jsonj=list_of_json~kind:"FindingIds"~of_json:FindingId.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleFilterAction=structtypenonrect=|NOOP|ARCHIVE|Non_static_idofstringletmakei=iletto_string=function|NOOP->"NOOP"|ARCHIVE->"ARCHIVE"|Non_static_ids->sletof_string=function|"NOOP"->NOOP|"ARCHIVE"->ARCHIVE|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 FilterAction"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"FilterAction"j)letto_json=simple_to_jsonto_valueendmoduleFilterDescription=structtypenonrect=stringletcontext_="FilterDescription"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:512)>>=(fun()->check_string_mini~min:0));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"FilterDescription"jletto_json=simple_to_jsonto_valueendmoduleFilterRank=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 FilterRank"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleFindingCriteria=structtypenonrect={criterion:Criterion.toption[@ocaml.doc"Represents a map of finding properties that match specified conditions and values when querying findings."]}letmake?criterion=fun()->{criterion}letto_valuex=structure_to_value[("criterion",(Option.mapx.criterion~f:Criterion.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcriterion=(Option.map~f:Criterion.of_xml)(Xml.childxml_arg0"criterion")inmake?criterion()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcriterion=field_mapjson__"Criterion"Criterion.of_jsoninmake?criterion()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the criteria used for querying findings."]moduleDetectorFeatureConfigurations=structtypenonrect=DetectorFeatureConfiguration.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:DetectorFeatureConfiguration.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:DetectorFeatureConfiguration.of_xml)letof_jsonj=list_of_json~kind:"DetectorFeatureConfigurations"~of_json:DetectorFeatureConfiguration.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleFindingPublishingFrequency=structtypenonrect=|FIFTEEN_MINUTES|ONE_HOUR|SIX_HOURS|Non_static_idofstringletmakei=iletto_string=function|FIFTEEN_MINUTES->"FIFTEEN_MINUTES"|ONE_HOUR->"ONE_HOUR"|SIX_HOURS->"SIX_HOURS"|Non_static_ids->sletof_string=function|"FIFTEEN_MINUTES"->FIFTEEN_MINUTES|"ONE_HOUR"->ONE_HOUR|"SIX_HOURS"->SIX_HOURS|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 FindingPublishingFrequency"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"FindingPublishingFrequency"j)letto_json=simple_to_jsonto_valueendmoduleGuardDutyArn=structtypenonrect=stringletcontext_="GuardDutyArn"letmakei=letopenResultinok_or_failwith(check_patterni~pattern:"arn:[A-Za-z_.-]{1,20}:guardduty:[A-Za-z0-9_/.-]{0,63}:\\d+:detector/[A-Za-z0-9_/.-]{32,264}");iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"GuardDutyArn"jletto_json=simple_to_jsonto_valueendmoduleTagKeyList=structtypenonrect=TagKey.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:200)>>=(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:TagKey.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:TagKey.of_xml)letof_jsonj=list_of_json~kind:"TagKeyList"~of_json:TagKey.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleTagMap=structtypenonrect=(TagKey.t*TagValue.t)listletmakei=letopenResultinok_or_failwith((check_list_maxi~max:200)>>=(fun()->check_list_mini~min:1));iletof_headerxs=make(List.filter_mapxs~f:(fun(k,v)->(Base.String.chop_prefixk~prefix:"x-amz-meta-")|>(Option.map~f:(funchopped->((TagKey.of_stringchopped),(TagValue.of_stringv))))))letto_valuexs=(xs|>(List.map~f:(fun(x,y)->(TagKey.to_valuex)|>(funx->(TagValue.to_valuey)|>(funy->(x,y))))))|>(funx->`Mapx)letto_queryv=to_queryto_valuevletto_header_=failwithf"to_header is not implemented for Map_shape objects"()letof_xml_=failwith"of_xml_converter_of_shape: Map_shape case not implemented"letof_jsonj=object_of_json~key_of_string:TagKey.of_string~of_json:TagValue.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleConflictException=structtypenonrect={message:String_.toption[@ocaml.doc"The error message."];type_:String_.toption[@ocaml.doc"The error type."]}letmake?message=fun?type_->fun()->{message;type_}letto_valuex=structure_to_value[("message",(Option.mapx.message~f:String_.to_value));("type",(Option.mapx.type_~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettype_=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"type")inletmessage=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"message")inmake?type_?message()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettype_=field_mapjson__"Type"String_.of_jsoninletmessage=field_mapjson__"Message"String_.of_jsoninmake?type_?message()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A request conflict exception object."]moduleClientToken=structtypenonrect=stringletcontext_="ClientToken"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:64)>>=(fun()->check_string_mini~min:0));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_valueendmoduleResourceArn=structtypenonrect=stringletcontext_="ResourceArn"letmakei=letopenResultinok_or_failwith(check_patterni~pattern:"arn:[A-Za-z-]+:[A-Za-z0-9]+:[A-Za-z0-9-]+:\\d+:(([A-Za-z0-9-]+)[:\\/])?[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_valueendmoduleStartMalwareScanConfiguration=structtypenonrect={role:NonEmptyString.t[@ocaml.doc"Amazon Resource Name (ARN) of the IAM role that is used for scanning the resource."];incrementalScanDetails:IncrementalScanDetails.toption[@ocaml.doc"Contains information about the incremental scan configuration. When specified, the scan will only process changes since the baseline resource."];recoveryPoint:RecoveryPoint.toption[@ocaml.doc"Contains information about the recovery point configuration for the requested scan."]}letcontext_="StartMalwareScanConfiguration"letmake?incrementalScanDetails=fun?recoveryPoint->fun~role->fun()->{incrementalScanDetails;recoveryPoint;role}letto_valuex=structure_to_value[("role",(Some(NonEmptyString.to_valuex.role)));("incrementalScanDetails",(Option.mapx.incrementalScanDetails~f:IncrementalScanDetails.to_value));("recoveryPoint",(Option.mapx.recoveryPoint~f:RecoveryPoint.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letrecoveryPoint=(Option.map~f:RecoveryPoint.of_xml)(Xml.childxml_arg0"recoveryPoint")inletincrementalScanDetails=(Option.map~f:IncrementalScanDetails.of_xml)(Xml.childxml_arg0"incrementalScanDetails")inletrole=NonEmptyString.of_xml(Xml.child_exn~context:context_xml_arg0"role")inmake?recoveryPoint?incrementalScanDetails~role()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letrecoveryPoint=field_mapjson__"RecoveryPoint"RecoveryPoint.of_jsoninletincrementalScanDetails=field_mapjson__"IncrementalScanDetails"IncrementalScanDetails.of_jsoninletrole=field_map_exnjson__"Role"NonEmptyString.of_jsoninmake?recoveryPoint?incrementalScanDetails~role()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the configuration to be used for the malware scan."]moduleS3ObjectForSendObjectMalwareScan=structtypenonrect={bucket:String_.toption[@ocaml.doc"The name of the S3 bucket containing the object to scan. The bucket must have GuardDuty Malware Protection enabled."];key:String_.toption[@ocaml.doc"The key (name) of the S3 object to scan for malware. This must be the full key path of the object within the bucket."];versionId:String_.toption[@ocaml.doc"The version ID of the S3 object to scan. If not specified, the latest version of the object is scanned."]}letmake?bucket=fun?key->fun?versionId->fun()->{bucket;key;versionId}letto_valuex=structure_to_value[("bucket",(Option.mapx.bucket~f:String_.to_value));("key",(Option.mapx.key~f:String_.to_value));("versionId",(Option.mapx.versionId~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letversionId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"versionId")inletkey=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"key")inletbucket=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"bucket")inmake?versionId?key?bucket()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letversionId=field_mapjson__"VersionId"String_.of_jsoninletkey=field_mapjson__"Key"String_.of_jsoninletbucket=field_mapjson__"Bucket"String_.of_jsoninmake?versionId?key?bucket()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The S3 object path to initiate a scan, including bucket name, object key, and optional version ID."]moduleTrustedEntitySetIds=structtypenonrect=String_.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:50)>>=(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: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:"TrustedEntitySetIds"~of_json:String_.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleMaxResults=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:50)>>=(fun()->check_int_mini~min:1));iletof_string=Int.of_stringletto_valuex=`Integerxletto_queryv=to_queryto_valuevletto_headerx=Int.to_stringxletof_xmlxml_arg0=Int.of_string(string_of_xml~kind:"an integer for MaxResults"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleThreatIntelSetIds=structtypenonrect=String_.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:50)>>=(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: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:"ThreatIntelSetIds"~of_json:String_.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleThreatEntitySetIds=structtypenonrect=String_.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:50)>>=(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: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:"ThreatEntitySetIds"~of_json:String_.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleDestinations=structtypenonrect=Destination.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:Destination.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:Destination.of_xml)letof_jsonj=list_of_json~kind:"Destinations"~of_json:Destination.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleAdminAccounts=structtypenonrect=AdminAccount.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:1)>>=(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:AdminAccount.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:AdminAccount.of_xml)letof_jsonj=list_of_json~kind:"AdminAccounts"~of_json:AdminAccount.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleMembers=structtypenonrect=Member.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:50)>>=(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:Member.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:Member.of_xml)letof_jsonj=list_of_json~kind:"Members"~of_json:Member.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleMalwareScans=structtypenonrect=MalwareScan.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:MalwareScan.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:MalwareScan.of_xml)letof_jsonj=list_of_json~kind:"MalwareScans"~of_json:MalwareScan.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleListMalwareScansFilterCriteria=structtypenonrect={listMalwareScansFilterCriterion:ListMalwareScansFilterCriterionList.toption[@ocaml.doc"Represents a condition that when matched will be added to the response of the operation."]}letmake?listMalwareScansFilterCriterion=fun()->{listMalwareScansFilterCriterion}letto_valuex=structure_to_value[("filterCriterion",(Option.mapx.listMalwareScansFilterCriterion~f:ListMalwareScansFilterCriterionList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letlistMalwareScansFilterCriterion=(Option.map~f:ListMalwareScansFilterCriterionList.of_xml)(Xml.childxml_arg0"filterCriterion")inmake?listMalwareScansFilterCriterion()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letlistMalwareScansFilterCriterion=field_mapjson__"ListMalwareScansFilterCriterion"ListMalwareScansFilterCriterionList.of_jsoninmake?listMalwareScansFilterCriterion()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Represents the criteria used to filter the malware scan entries."]moduleSortCriteria=structtypenonrect={attributeName:String_.toption[@ocaml.doc"Represents the finding attribute, such as accountId, that sorts the findings."];orderBy:OrderBy.toption[@ocaml.doc"The order by which the sorted findings are to be displayed."]}letmake?attributeName=fun?orderBy->fun()->{attributeName;orderBy}letto_valuex=structure_to_value[("attributeName",(Option.mapx.attributeName~f:String_.to_value));("orderBy",(Option.mapx.orderBy~f:OrderBy.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letorderBy=(Option.map~f:OrderBy.of_xml)(Xml.childxml_arg0"orderBy")inletattributeName=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"attributeName")inmake?orderBy?attributeName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letorderBy=field_mapjson__"OrderBy"OrderBy.of_jsoninletattributeName=field_mapjson__"AttributeName"String_.of_jsoninmake?orderBy?attributeName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the criteria used for sorting findings."]moduleMalwareProtectionPlansSummary=structtypenonrect=MalwareProtectionPlanSummary.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:MalwareProtectionPlanSummary.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:MalwareProtectionPlanSummary.of_xml)letof_jsonj=list_of_json~kind:"MalwareProtectionPlansSummary"~of_json:MalwareProtectionPlanSummary.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleInvitations=structtypenonrect=Invitation.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:50)>>=(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:Invitation.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:Invitation.of_xml)letof_jsonj=list_of_json~kind:"Invitations"~of_json:Invitation.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleIpSetIds=structtypenonrect=String_.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:50)>>=(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: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:"IpSetIds"~of_json:String_.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleFilterNames=structtypenonrect=FilterName.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:50)>>=(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:FilterName.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:FilterName.of_xml)letof_jsonj=list_of_json~kind:"FilterNames"~of_json:FilterName.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleDetectorIds=structtypenonrect=DetectorId.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:50)>>=(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:DetectorId.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:DetectorId.of_xml)letof_jsonj=list_of_json~kind:"DetectorIds"~of_json:DetectorId.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleCoverageResources=structtypenonrect=CoverageResource.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:CoverageResource.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:CoverageResource.of_xml)letof_jsonj=list_of_json~kind:"CoverageResources"~of_json:CoverageResource.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleCoverageFilterCriteria=structtypenonrect={filterCriterion:CoverageFilterCriterionList.toption[@ocaml.doc"Represents a condition that when matched will be added to the response of the operation."]}letmake?filterCriterion=fun()->{filterCriterion}letto_valuex=structure_to_value[("filterCriterion",(Option.mapx.filterCriterion~f:CoverageFilterCriterionList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letfilterCriterion=(Option.map~f:CoverageFilterCriterionList.of_xml)(Xml.childxml_arg0"filterCriterion")inmake?filterCriterion()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letfilterCriterion=field_mapjson__"FilterCriterion"CoverageFilterCriterionList.of_jsoninmake?filterCriterion()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Represents the criteria used in the filter."]moduleCoverageSortCriteria=structtypenonrect={attributeName:CoverageSortKey.toption[@ocaml.doc"Represents the field name used to sort the coverage details. Replace the enum value CLUSTER_NAME with EKS_CLUSTER_NAME. CLUSTER_NAME has been deprecated."];orderBy:OrderBy.toption[@ocaml.doc"The order in which the sorted findings are to be displayed."]}letmake?attributeName=fun?orderBy->fun()->{attributeName;orderBy}letto_valuex=structure_to_value[("attributeName",(Option.mapx.attributeName~f:CoverageSortKey.to_value));("orderBy",(Option.mapx.orderBy~f:OrderBy.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letorderBy=(Option.map~f:OrderBy.of_xml)(Xml.childxml_arg0"orderBy")inletattributeName=(Option.map~f:CoverageSortKey.of_xml)(Xml.childxml_arg0"attributeName")inmake?orderBy?attributeName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letorderBy=field_mapjson__"OrderBy"OrderBy.of_jsoninletattributeName=field_mapjson__"AttributeName"CoverageSortKey.of_jsoninmake?orderBy?attributeName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the sorting criteria used in the coverage statistics."]moduleUsageStatistics=structtypenonrect={sumByAccount:UsageAccountResultList.toption[@ocaml.doc"The usage statistic sum organized by account ID."];topAccountsByFeature:UsageTopAccountsResultList.toption[@ocaml.doc"Lists the top 50 accounts by feature that have generated the most GuardDuty usage, in the order from most to least expensive. Currently, this doesn't support RDS_LOGIN_EVENTS."];sumByDataSource:UsageDataSourceResultList.toption[@ocaml.doc"The usage statistic sum organized by on data source."];sumByResource:UsageResourceResultList.toption[@ocaml.doc"The usage statistic sum organized by resource."];topResources:UsageResourceResultList.toption[@ocaml.doc"Lists the top 50 resources that have generated the most GuardDuty usage, in order from most to least expensive."];sumByFeature:UsageFeatureResultList.toption[@ocaml.doc"The usage statistic sum organized by feature."]}letmake?sumByAccount=fun?topAccountsByFeature->fun?sumByDataSource->fun?sumByResource->fun?topResources->fun?sumByFeature->fun()->{sumByAccount;topAccountsByFeature;sumByDataSource;sumByResource;topResources;sumByFeature}letto_valuex=structure_to_value[("sumByAccount",(Option.mapx.sumByAccount~f:UsageAccountResultList.to_value));("topAccountsByFeature",(Option.mapx.topAccountsByFeature~f:UsageTopAccountsResultList.to_value));("sumByDataSource",(Option.mapx.sumByDataSource~f:UsageDataSourceResultList.to_value));("sumByResource",(Option.mapx.sumByResource~f:UsageResourceResultList.to_value));("topResources",(Option.mapx.topResources~f:UsageResourceResultList.to_value));("sumByFeature",(Option.mapx.sumByFeature~f:UsageFeatureResultList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letsumByFeature=(Option.map~f:UsageFeatureResultList.of_xml)(Xml.childxml_arg0"sumByFeature")inlettopResources=(Option.map~f:UsageResourceResultList.of_xml)(Xml.childxml_arg0"topResources")inletsumByResource=(Option.map~f:UsageResourceResultList.of_xml)(Xml.childxml_arg0"sumByResource")inletsumByDataSource=(Option.map~f:UsageDataSourceResultList.of_xml)(Xml.childxml_arg0"sumByDataSource")inlettopAccountsByFeature=(Option.map~f:UsageTopAccountsResultList.of_xml)(Xml.childxml_arg0"topAccountsByFeature")inletsumByAccount=(Option.map~f:UsageAccountResultList.of_xml)(Xml.childxml_arg0"sumByAccount")inmake?sumByFeature?topResources?sumByResource?sumByDataSource?topAccountsByFeature?sumByAccount()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letsumByFeature=field_mapjson__"SumByFeature"UsageFeatureResultList.of_jsoninlettopResources=field_mapjson__"TopResources"UsageResourceResultList.of_jsoninletsumByResource=field_mapjson__"SumByResource"UsageResourceResultList.of_jsoninletsumByDataSource=field_mapjson__"SumByDataSource"UsageDataSourceResultList.of_jsoninlettopAccountsByFeature=field_mapjson__"TopAccountsByFeature"UsageTopAccountsResultList.of_jsoninletsumByAccount=field_mapjson__"SumByAccount"UsageAccountResultList.of_jsoninmake?sumByFeature?topResources?sumByResource?sumByDataSource?topAccountsByFeature?sumByAccount()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains the result of GuardDuty usage. If a UsageStatisticType is provided the result for other types will be null."]moduleUsageCriteria=structtypenonrect={accountIds:AccountIds.toption[@ocaml.doc"The account IDs to aggregate usage statistics from."];dataSources:DataSourceList.toption[@ocaml.doc"The data sources to aggregate usage statistics from."];resources:ResourceList.toption[@ocaml.doc"The resources to aggregate usage statistics from. Only accepts exact resource names."];features:UsageFeatureList.toption[@ocaml.doc"The features to aggregate usage statistics from."]}letmake?accountIds=fun?dataSources->fun?resources->fun?features->fun()->{accountIds;dataSources;resources;features}letto_valuex=structure_to_value[("accountIds",(Option.mapx.accountIds~f:AccountIds.to_value));("dataSources",(Option.mapx.dataSources~f:DataSourceList.to_value));("resources",(Option.mapx.resources~f:ResourceList.to_value));("features",(Option.mapx.features~f:UsageFeatureList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letfeatures=(Option.map~f:UsageFeatureList.of_xml)(Xml.childxml_arg0"features")inletresources=(Option.map~f:ResourceList.of_xml)(Xml.childxml_arg0"resources")inletdataSources=(Option.map~f:DataSourceList.of_xml)(Xml.childxml_arg0"dataSources")inletaccountIds=(Option.map~f:AccountIds.of_xml)(Xml.childxml_arg0"accountIds")inmake?features?resources?dataSources?accountIds()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letfeatures=field_mapjson__"Features"UsageFeatureList.of_jsoninletresources=field_mapjson__"Resources"ResourceList.of_jsoninletdataSources=field_mapjson__"DataSources"DataSourceList.of_jsoninletaccountIds=field_mapjson__"AccountIds"AccountIds.of_jsoninmake?features?resources?dataSources?accountIds()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the criteria used to query usage statistics."]moduleUsageStatisticType=structtypenonrect=|SUM_BY_ACCOUNT|SUM_BY_DATA_SOURCE|SUM_BY_RESOURCE|TOP_RESOURCES|SUM_BY_FEATURES|TOP_ACCOUNTS_BY_FEATURE|Non_static_idofstringletmakei=iletto_string=function|SUM_BY_ACCOUNT->"SUM_BY_ACCOUNT"|SUM_BY_DATA_SOURCE->"SUM_BY_DATA_SOURCE"|SUM_BY_RESOURCE->"SUM_BY_RESOURCE"|TOP_RESOURCES->"TOP_RESOURCES"|SUM_BY_FEATURES->"SUM_BY_FEATURES"|TOP_ACCOUNTS_BY_FEATURE->"TOP_ACCOUNTS_BY_FEATURE"|Non_static_ids->sletof_string=function|"SUM_BY_ACCOUNT"->SUM_BY_ACCOUNT|"SUM_BY_DATA_SOURCE"->SUM_BY_DATA_SOURCE|"SUM_BY_RESOURCE"->SUM_BY_RESOURCE|"TOP_RESOURCES"->TOP_RESOURCES|"SUM_BY_FEATURES"->SUM_BY_FEATURES|"TOP_ACCOUNTS_BY_FEATURE"->TOP_ACCOUNTS_BY_FEATURE|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 UsageStatisticType"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"UsageStatisticType"j)letto_json=simple_to_jsonto_valueendmoduleTrustedEntitySetFormat=structtypenonrect=|TXT|STIX|OTX_CSV|ALIEN_VAULT|PROOF_POINT|FIRE_EYE|Non_static_idofstringletmakei=iletto_string=function|TXT->"TXT"|STIX->"STIX"|OTX_CSV->"OTX_CSV"|ALIEN_VAULT->"ALIEN_VAULT"|PROOF_POINT->"PROOF_POINT"|FIRE_EYE->"FIRE_EYE"|Non_static_ids->sletof_string=function|"TXT"->TXT|"STIX"->STIX|"OTX_CSV"->OTX_CSV|"ALIEN_VAULT"->ALIEN_VAULT|"PROOF_POINT"->PROOF_POINT|"FIRE_EYE"->FIRE_EYE|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 TrustedEntitySetFormat"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"TrustedEntitySetFormat"j)letto_json=simple_to_jsonto_valueendmoduleTrustedEntitySetStatus=structtypenonrect=|INACTIVE|ACTIVATING|ACTIVE|DEACTIVATING|ERROR|DELETE_PENDING|DELETED|Non_static_idofstringletmakei=iletto_string=function|INACTIVE->"INACTIVE"|ACTIVATING->"ACTIVATING"|ACTIVE->"ACTIVE"|DEACTIVATING->"DEACTIVATING"|ERROR->"ERROR"|DELETE_PENDING->"DELETE_PENDING"|DELETED->"DELETED"|Non_static_ids->sletof_string=function|"INACTIVE"->INACTIVE|"ACTIVATING"->ACTIVATING|"ACTIVE"->ACTIVE|"DEACTIVATING"->DEACTIVATING|"ERROR"->ERROR|"DELETE_PENDING"->DELETE_PENDING|"DELETED"->DELETED|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 TrustedEntitySetStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"TrustedEntitySetStatus"j)letto_json=simple_to_jsonto_valueendmoduleThreatIntelSetFormat=structtypenonrect=|TXT|STIX|OTX_CSV|ALIEN_VAULT|PROOF_POINT|FIRE_EYE|Non_static_idofstringletmakei=iletto_string=function|TXT->"TXT"|STIX->"STIX"|OTX_CSV->"OTX_CSV"|ALIEN_VAULT->"ALIEN_VAULT"|PROOF_POINT->"PROOF_POINT"|FIRE_EYE->"FIRE_EYE"|Non_static_ids->sletof_string=function|"TXT"->TXT|"STIX"->STIX|"OTX_CSV"->OTX_CSV|"ALIEN_VAULT"->ALIEN_VAULT|"PROOF_POINT"->PROOF_POINT|"FIRE_EYE"->FIRE_EYE|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 ThreatIntelSetFormat"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ThreatIntelSetFormat"j)letto_json=simple_to_jsonto_valueendmoduleThreatIntelSetStatus=structtypenonrect=|INACTIVE|ACTIVATING|ACTIVE|DEACTIVATING|ERROR|DELETE_PENDING|DELETED|Non_static_idofstringletmakei=iletto_string=function|INACTIVE->"INACTIVE"|ACTIVATING->"ACTIVATING"|ACTIVE->"ACTIVE"|DEACTIVATING->"DEACTIVATING"|ERROR->"ERROR"|DELETE_PENDING->"DELETE_PENDING"|DELETED->"DELETED"|Non_static_ids->sletof_string=function|"INACTIVE"->INACTIVE|"ACTIVATING"->ACTIVATING|"ACTIVE"->ACTIVE|"DEACTIVATING"->DEACTIVATING|"ERROR"->ERROR|"DELETE_PENDING"->DELETE_PENDING|"DELETED"->DELETED|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 ThreatIntelSetStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ThreatIntelSetStatus"j)letto_json=simple_to_jsonto_valueendmoduleThreatEntitySetFormat=structtypenonrect=|TXT|STIX|OTX_CSV|ALIEN_VAULT|PROOF_POINT|FIRE_EYE|Non_static_idofstringletmakei=iletto_string=function|TXT->"TXT"|STIX->"STIX"|OTX_CSV->"OTX_CSV"|ALIEN_VAULT->"ALIEN_VAULT"|PROOF_POINT->"PROOF_POINT"|FIRE_EYE->"FIRE_EYE"|Non_static_ids->sletof_string=function|"TXT"->TXT|"STIX"->STIX|"OTX_CSV"->OTX_CSV|"ALIEN_VAULT"->ALIEN_VAULT|"PROOF_POINT"->PROOF_POINT|"FIRE_EYE"->FIRE_EYE|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 ThreatEntitySetFormat"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ThreatEntitySetFormat"j)letto_json=simple_to_jsonto_valueendmoduleThreatEntitySetStatus=structtypenonrect=|INACTIVE|ACTIVATING|ACTIVE|DEACTIVATING|ERROR|DELETE_PENDING|DELETED|Non_static_idofstringletmakei=iletto_string=function|INACTIVE->"INACTIVE"|ACTIVATING->"ACTIVATING"|ACTIVE->"ACTIVE"|DEACTIVATING->"DEACTIVATING"|ERROR->"ERROR"|DELETE_PENDING->"DELETE_PENDING"|DELETED->"DELETED"|Non_static_ids->sletof_string=function|"INACTIVE"->INACTIVE|"ACTIVATING"->ACTIVATING|"ACTIVE"->ACTIVE|"DEACTIVATING"->DEACTIVATING|"ERROR"->ERROR|"DELETE_PENDING"->DELETE_PENDING|"DELETED"->DELETED|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 ThreatEntitySetStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ThreatEntitySetStatus"j)letto_json=simple_to_jsonto_valueendmoduleAccountFreeTrialInfos=structtypenonrect=AccountFreeTrialInfo.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:AccountFreeTrialInfo.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:AccountFreeTrialInfo.of_xml)letof_jsonj=list_of_json~kind:"AccountFreeTrialInfos"~of_json:AccountFreeTrialInfo.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleOrganizationDetails=structtypenonrect={updatedAt:Timestamp.toption[@ocaml.doc"The timestamp at which the organization statistics was last updated. This is in UTC format."];organizationStatistics:OrganizationStatistics.toption[@ocaml.doc"Information about the GuardDuty coverage statistics for members in your Amazon Web Services organization."]}letmake?updatedAt=fun?organizationStatistics->fun()->{updatedAt;organizationStatistics}letto_valuex=structure_to_value[("updatedAt",(Option.mapx.updatedAt~f:Timestamp.to_value));("organizationStatistics",(Option.mapx.organizationStatistics~f:OrganizationStatistics.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letorganizationStatistics=(Option.map~f:OrganizationStatistics.of_xml)(Xml.childxml_arg0"organizationStatistics")inletupdatedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"updatedAt")inmake?organizationStatistics?updatedAt()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letorganizationStatistics=field_mapjson__"OrganizationStatistics"OrganizationStatistics.of_jsoninletupdatedAt=field_mapjson__"UpdatedAt"Timestamp.of_jsoninmake?organizationStatistics?updatedAt()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about GuardDuty coverage statistics for members in your Amazon Web Services organization."]moduleMemberDataSourceConfigurations=structtypenonrect=MemberDataSourceConfiguration.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:MemberDataSourceConfiguration.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:MemberDataSourceConfiguration.of_xml)letof_jsonj=list_of_json~kind:"MemberDataSourceConfigurations"~of_json:MemberDataSourceConfiguration.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleMaster=structtypenonrect={accountId:AccountId.toption[@ocaml.doc"The ID of the account used as the administrator account."];invitationId:String_.toption[@ocaml.doc"The value used to validate the administrator account to the member account."];relationshipStatus:String_.toption[@ocaml.doc"The status of the relationship between the administrator and member accounts."];invitedAt:String_.toption[@ocaml.doc"The timestamp when the invitation was sent."]}letmake?accountId=fun?invitationId->fun?relationshipStatus->fun?invitedAt->fun()->{accountId;invitationId;relationshipStatus;invitedAt}letto_valuex=structure_to_value[("accountId",(Option.mapx.accountId~f:AccountId.to_value));("invitationId",(Option.mapx.invitationId~f:String_.to_value));("relationshipStatus",(Option.mapx.relationshipStatus~f:String_.to_value));("invitedAt",(Option.mapx.invitedAt~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letinvitedAt=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"invitedAt")inletrelationshipStatus=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"relationshipStatus")inletinvitationId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"invitationId")inletaccountId=(Option.map~f:AccountId.of_xml)(Xml.childxml_arg0"accountId")inmake?invitedAt?relationshipStatus?invitationId?accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letinvitedAt=field_mapjson__"InvitedAt"String_.of_jsoninletrelationshipStatus=field_mapjson__"RelationshipStatus"String_.of_jsoninletinvitationId=field_mapjson__"InvitationId"String_.of_jsoninletaccountId=field_mapjson__"AccountId"AccountId.of_jsoninmake?invitedAt?relationshipStatus?invitationId?accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the administrator account and invitation."]moduleGetMalwareScanResultDetails=structtypenonrect={scanResultStatus:ScanResultStatus.toption[@ocaml.doc"Status indicating whether threats were found for a completed scan."];skippedFileCount:PositiveLong.toption[@ocaml.doc"The total number of files that were skipped during the scan."];failedFileCount:PositiveLong.toption[@ocaml.doc"The total number of files that failed to be scanned."];threatFoundFileCount:PositiveLong.toption[@ocaml.doc"The total number of files in which threats were detected."];totalFileCount:PositiveLong.toption[@ocaml.doc"The total number of files that were processed during the scan."];totalBytes:PositiveLong.toption[@ocaml.doc"The total number of bytes that were scanned."];uniqueThreatCount:PositiveLong.toption[@ocaml.doc"The total number of unique threats that were detected during the scan."];threats:ScanResultThreats.toption[@ocaml.doc"The threats that were detected during the malware scan."]}letmake?scanResultStatus=fun?skippedFileCount->fun?failedFileCount->fun?threatFoundFileCount->fun?totalFileCount->fun?totalBytes->fun?uniqueThreatCount->fun?threats->fun()->{scanResultStatus;skippedFileCount;failedFileCount;threatFoundFileCount;totalFileCount;totalBytes;uniqueThreatCount;threats}letto_valuex=structure_to_value[("scanResultStatus",(Option.mapx.scanResultStatus~f:ScanResultStatus.to_value));("skippedFileCount",(Option.mapx.skippedFileCount~f:PositiveLong.to_value));("failedFileCount",(Option.mapx.failedFileCount~f:PositiveLong.to_value));("threatFoundFileCount",(Option.mapx.threatFoundFileCount~f:PositiveLong.to_value));("totalFileCount",(Option.mapx.totalFileCount~f:PositiveLong.to_value));("totalBytes",(Option.mapx.totalBytes~f:PositiveLong.to_value));("uniqueThreatCount",(Option.mapx.uniqueThreatCount~f:PositiveLong.to_value));("threats",(Option.mapx.threats~f:ScanResultThreats.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letthreats=(Option.map~f:ScanResultThreats.of_xml)(Xml.childxml_arg0"threats")inletuniqueThreatCount=(Option.map~f:PositiveLong.of_xml)(Xml.childxml_arg0"uniqueThreatCount")inlettotalBytes=(Option.map~f:PositiveLong.of_xml)(Xml.childxml_arg0"totalBytes")inlettotalFileCount=(Option.map~f:PositiveLong.of_xml)(Xml.childxml_arg0"totalFileCount")inletthreatFoundFileCount=(Option.map~f:PositiveLong.of_xml)(Xml.childxml_arg0"threatFoundFileCount")inletfailedFileCount=(Option.map~f:PositiveLong.of_xml)(Xml.childxml_arg0"failedFileCount")inletskippedFileCount=(Option.map~f:PositiveLong.of_xml)(Xml.childxml_arg0"skippedFileCount")inletscanResultStatus=(Option.map~f:ScanResultStatus.of_xml)(Xml.childxml_arg0"scanResultStatus")inmake?threats?uniqueThreatCount?totalBytes?totalFileCount?threatFoundFileCount?failedFileCount?skippedFileCount?scanResultStatus()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letthreats=field_mapjson__"Threats"ScanResultThreats.of_jsoninletuniqueThreatCount=field_mapjson__"UniqueThreatCount"PositiveLong.of_jsoninlettotalBytes=field_mapjson__"TotalBytes"PositiveLong.of_jsoninlettotalFileCount=field_mapjson__"TotalFileCount"PositiveLong.of_jsoninletthreatFoundFileCount=field_mapjson__"ThreatFoundFileCount"PositiveLong.of_jsoninletfailedFileCount=field_mapjson__"FailedFileCount"PositiveLong.of_jsoninletskippedFileCount=field_mapjson__"SkippedFileCount"PositiveLong.of_jsoninletscanResultStatus=field_mapjson__"ScanResultStatus"ScanResultStatus.of_jsoninmake?threats?uniqueThreatCount?totalBytes?totalFileCount?threatFoundFileCount?failedFileCount?skippedFileCount?scanResultStatus()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the results of the malware scan."]moduleNonNegativeInteger=structtypenonrect=intletmakei=letopenResultinok_or_failwith(check_int_mini~min:0);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 NonNegativeInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleResourceNotFoundException=structtypenonrect={message:String_.toption[@ocaml.doc"The error message."];type_:String_.toption[@ocaml.doc"The error type."]}letmake?message=fun?type_->fun()->{message;type_}letto_valuex=structure_to_value[("message",(Option.mapx.message~f:String_.to_value));("type",(Option.mapx.type_~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettype_=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"type")inletmessage=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"message")inmake?type_?message()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettype_=field_mapjson__"Type"String_.of_jsoninletmessage=field_mapjson__"Message"String_.of_jsoninmake?type_?message()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The requested resource can't be found."]moduleScanConfiguration=structtypenonrect={role:NonEmptyString.toption[@ocaml.doc"Amazon Resource Name (ARN) of the IAM role that should contain the required permissions for the scan."];triggerDetails:TriggerDetails.toption[@ocaml.doc"Information about the entity that triggered the malware scan."];incrementalScanDetails:IncrementalScanDetails.toption[@ocaml.doc"Information about the incremental scan configuration, if applicable."];recoveryPoint:ScanConfigurationRecoveryPoint.toption[@ocaml.doc"Information about the recovery point configuration used for the scan, if applicable."]}letmake?role=fun?triggerDetails->fun?incrementalScanDetails->fun?recoveryPoint->fun()->{role;triggerDetails;incrementalScanDetails;recoveryPoint}letto_valuex=structure_to_value[("role",(Option.mapx.role~f:NonEmptyString.to_value));("triggerDetails",(Option.mapx.triggerDetails~f:TriggerDetails.to_value));("incrementalScanDetails",(Option.mapx.incrementalScanDetails~f:IncrementalScanDetails.to_value));("recoveryPoint",(Option.mapx.recoveryPoint~f:ScanConfigurationRecoveryPoint.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letrecoveryPoint=(Option.map~f:ScanConfigurationRecoveryPoint.of_xml)(Xml.childxml_arg0"recoveryPoint")inletincrementalScanDetails=(Option.map~f:IncrementalScanDetails.of_xml)(Xml.childxml_arg0"incrementalScanDetails")inlettriggerDetails=(Option.map~f:TriggerDetails.of_xml)(Xml.childxml_arg0"triggerDetails")inletrole=(Option.map~f:NonEmptyString.of_xml)(Xml.childxml_arg0"role")inmake?recoveryPoint?incrementalScanDetails?triggerDetails?role()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letrecoveryPoint=field_mapjson__"RecoveryPoint"ScanConfigurationRecoveryPoint.of_jsoninletincrementalScanDetails=field_mapjson__"IncrementalScanDetails"IncrementalScanDetails.of_jsoninlettriggerDetails=field_mapjson__"TriggerDetails"TriggerDetails.of_jsoninletrole=field_mapjson__"Role"NonEmptyString.of_jsoninmake?recoveryPoint?incrementalScanDetails?triggerDetails?role()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the configuration used for the malware scan."]moduleScannedResources=structtypenonrect=ScannedResource.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ScannedResource.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:ScannedResource.of_xml)letof_jsonj=list_of_json~kind:"ScannedResources"~of_json:ScannedResource.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleCreateProtectedResource=structtypenonrect={s3Bucket:CreateS3BucketResource.toption[@ocaml.doc"Information about the protected S3 bucket resource."]}letmake?s3Bucket=fun()->{s3Bucket}letto_valuex=structure_to_value[("s3Bucket",(Option.mapx.s3Bucket~f:CreateS3BucketResource.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lets3Bucket=(Option.map~f:CreateS3BucketResource.of_xml)(Xml.childxml_arg0"s3Bucket")inmake?s3Bucket()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lets3Bucket=field_mapjson__"S3Bucket"CreateS3BucketResource.of_jsoninmake?s3Bucket()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the protected resource that is associated with the created Malware Protection plan. Presently, S3Bucket is the only supported protected resource."]moduleMalwareProtectionPlanStatus=structtypenonrect=|ACTIVE|WARNING|ERROR|Non_static_idofstringletmakei=iletto_string=function|ACTIVE->"ACTIVE"|WARNING->"WARNING"|ERROR->"ERROR"|Non_static_ids->sletof_string=function|"ACTIVE"->ACTIVE|"WARNING"->WARNING|"ERROR"->ERROR|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 MalwareProtectionPlanStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"MalwareProtectionPlanStatus"j)letto_json=simple_to_jsonto_valueendmoduleMalwareProtectionPlanStatusReasonsList=structtypenonrect=MalwareProtectionPlanStatusReason.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:50)>>=(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:MalwareProtectionPlanStatusReason.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:MalwareProtectionPlanStatusReason.of_xml)letof_jsonj=list_of_json~kind:"MalwareProtectionPlanStatusReasonsList"~of_json:MalwareProtectionPlanStatusReason.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleIpSetFormat=structtypenonrect=|TXT|STIX|OTX_CSV|ALIEN_VAULT|PROOF_POINT|FIRE_EYE|Non_static_idofstringletmakei=iletto_string=function|TXT->"TXT"|STIX->"STIX"|OTX_CSV->"OTX_CSV"|ALIEN_VAULT->"ALIEN_VAULT"|PROOF_POINT->"PROOF_POINT"|FIRE_EYE->"FIRE_EYE"|Non_static_ids->sletof_string=function|"TXT"->TXT|"STIX"->STIX|"OTX_CSV"->OTX_CSV|"ALIEN_VAULT"->ALIEN_VAULT|"PROOF_POINT"->PROOF_POINT|"FIRE_EYE"->FIRE_EYE|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 IpSetFormat"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"IpSetFormat"j)letto_json=simple_to_jsonto_valueendmoduleIpSetStatus=structtypenonrect=|INACTIVE|ACTIVATING|ACTIVE|DEACTIVATING|ERROR|DELETE_PENDING|DELETED|Non_static_idofstringletmakei=iletto_string=function|INACTIVE->"INACTIVE"|ACTIVATING->"ACTIVATING"|ACTIVE->"ACTIVE"|DEACTIVATING->"DEACTIVATING"|ERROR->"ERROR"|DELETE_PENDING->"DELETE_PENDING"|DELETED->"DELETED"|Non_static_ids->sletof_string=function|"INACTIVE"->INACTIVE|"ACTIVATING"->ACTIVATING|"ACTIVE"->ACTIVE|"DEACTIVATING"->DEACTIVATING|"ERROR"->ERROR|"DELETE_PENDING"->DELETE_PENDING|"DELETED"->DELETED|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 IpSetStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"IpSetStatus"j)letto_json=simple_to_jsonto_valueendmoduleFindingStatistics=structtypenonrect={countBySeverity:CountBySeverity.toption[@ocaml.doc"Represents a list of map of severity to count statistics for a set of findings."];groupedByAccount:GroupedByAccount.toption[@ocaml.doc"Represents a list of map of accounts with a findings count associated with each account."];groupedByDate:GroupedByDate.toption[@ocaml.doc"Represents a list of map of dates with a count of total findings generated on each date per severity level."];groupedByFindingType:GroupedByFindingType.toption[@ocaml.doc"Represents a list of map of finding types with a count of total findings generated for each type. Based on the orderBy parameter, this request returns either the most occurring finding types or the least occurring finding types. If the orderBy parameter is ASC, this will represent the least occurring finding types in your account; otherwise, this will represent the most occurring finding types. The default value of orderBy is DESC."];groupedByResource:GroupedByResource.toption[@ocaml.doc"Represents a list of map of top resources with a count of total findings."];groupedBySeverity:GroupedBySeverity.toption[@ocaml.doc"Represents a list of map of total findings for each severity level."]}letmake?countBySeverity=fun?groupedByAccount->fun?groupedByDate->fun?groupedByFindingType->fun?groupedByResource->fun?groupedBySeverity->fun()->{countBySeverity;groupedByAccount;groupedByDate;groupedByFindingType;groupedByResource;groupedBySeverity}letto_valuex=structure_to_value[("countBySeverity",(Option.mapx.countBySeverity~f:CountBySeverity.to_value));("groupedByAccount",(Option.mapx.groupedByAccount~f:GroupedByAccount.to_value));("groupedByDate",(Option.mapx.groupedByDate~f:GroupedByDate.to_value));("groupedByFindingType",(Option.mapx.groupedByFindingType~f:GroupedByFindingType.to_value));("groupedByResource",(Option.mapx.groupedByResource~f:GroupedByResource.to_value));("groupedBySeverity",(Option.mapx.groupedBySeverity~f:GroupedBySeverity.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letgroupedBySeverity=(Option.map~f:GroupedBySeverity.of_xml)(Xml.childxml_arg0"groupedBySeverity")inletgroupedByResource=(Option.map~f:GroupedByResource.of_xml)(Xml.childxml_arg0"groupedByResource")inletgroupedByFindingType=(Option.map~f:GroupedByFindingType.of_xml)(Xml.childxml_arg0"groupedByFindingType")inletgroupedByDate=(Option.map~f:GroupedByDate.of_xml)(Xml.childxml_arg0"groupedByDate")inletgroupedByAccount=(Option.map~f:GroupedByAccount.of_xml)(Xml.childxml_arg0"groupedByAccount")inletcountBySeverity=(Option.map~f:CountBySeverity.of_xml)(Xml.childxml_arg0"countBySeverity")inmake?groupedBySeverity?groupedByResource?groupedByFindingType?groupedByDate?groupedByAccount?countBySeverity()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letgroupedBySeverity=field_mapjson__"GroupedBySeverity"GroupedBySeverity.of_jsoninletgroupedByResource=field_mapjson__"GroupedByResource"GroupedByResource.of_jsoninletgroupedByFindingType=field_mapjson__"GroupedByFindingType"GroupedByFindingType.of_jsoninletgroupedByDate=field_mapjson__"GroupedByDate"GroupedByDate.of_jsoninletgroupedByAccount=field_mapjson__"GroupedByAccount"GroupedByAccount.of_jsoninletcountBySeverity=field_mapjson__"CountBySeverity"CountBySeverity.of_jsoninmake?groupedBySeverity?groupedByResource?groupedByFindingType?groupedByDate?groupedByAccount?countBySeverity()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about finding statistics."]moduleFindingStatisticTypes=structtypenonrect=FindingStatisticType.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:10)>>=(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:FindingStatisticType.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:FindingStatisticType.of_xml)letof_jsonj=list_of_json~kind:"FindingStatisticTypes"~of_json:FindingStatisticType.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleGroupByType=structtypenonrect=|ACCOUNT|DATE|FINDING_TYPE|RESOURCE|SEVERITY|Non_static_idofstringletmakei=iletto_string=function|ACCOUNT->"ACCOUNT"|DATE->"DATE"|FINDING_TYPE->"FINDING_TYPE"|RESOURCE->"RESOURCE"|SEVERITY->"SEVERITY"|Non_static_ids->sletof_string=function|"ACCOUNT"->ACCOUNT|"DATE"->DATE|"FINDING_TYPE"->FINDING_TYPE|"RESOURCE"->RESOURCE|"SEVERITY"->SEVERITY|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 GroupByType"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"GroupByType"j)letto_json=simple_to_jsonto_valueendmoduleMaxResults100=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 MaxResults100"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleFindings=structtypenonrect=Finding.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:50)>>=(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:Finding.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:Finding.of_xml)letof_jsonj=list_of_json~kind:"Findings"~of_json:Finding.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleDetectorFeatureConfigurationsResults=structtypenonrect=DetectorFeatureConfigurationResult.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:DetectorFeatureConfigurationResult.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:DetectorFeatureConfigurationResult.of_xml)letof_jsonj=list_of_json~kind:"DetectorFeatureConfigurationsResults"~of_json:DetectorFeatureConfigurationResult.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleDetectorStatus=structtypenonrect=|ENABLED|DISABLED|Non_static_idofstringletmakei=iletto_string=function|ENABLED->"ENABLED"|DISABLED->"DISABLED"|Non_static_ids->sletof_string=function|"ENABLED"->ENABLED|"DISABLED"->DISABLED|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 DetectorStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"DetectorStatus"j)letto_json=simple_to_jsonto_valueendmoduleCoverageStatistics=structtypenonrect={countByResourceType:CountByResourceType.toption[@ocaml.doc"Represents coverage statistics for EKS clusters aggregated by resource type."];countByCoverageStatus:CountByCoverageStatus.toption[@ocaml.doc"Represents coverage statistics for EKS clusters aggregated by coverage status."]}letmake?countByResourceType=fun?countByCoverageStatus->fun()->{countByResourceType;countByCoverageStatus}letto_valuex=structure_to_value[("countByResourceType",(Option.mapx.countByResourceType~f:CountByResourceType.to_value));("countByCoverageStatus",(Option.mapx.countByCoverageStatus~f:CountByCoverageStatus.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcountByCoverageStatus=(Option.map~f:CountByCoverageStatus.of_xml)(Xml.childxml_arg0"countByCoverageStatus")inletcountByResourceType=(Option.map~f:CountByResourceType.of_xml)(Xml.childxml_arg0"countByResourceType")inmake?countByCoverageStatus?countByResourceType()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcountByCoverageStatus=field_mapjson__"CountByCoverageStatus"CountByCoverageStatus.of_jsoninletcountByResourceType=field_mapjson__"CountByResourceType"CountByResourceType.of_jsoninmake?countByCoverageStatus?countByResourceType()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the coverage statistics for a resource."]moduleCoverageStatisticsTypeList=structtypenonrect=CoverageStatisticsType.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:CoverageStatisticsType.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:CoverageStatisticsType.of_xml)letof_jsonj=list_of_json~kind:"CoverageStatisticsTypeList"~of_json:CoverageStatisticsType.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleAdministrator=structtypenonrect={accountId:AccountId.toption[@ocaml.doc"The ID of the account used as the administrator account."];invitationId:String_.toption[@ocaml.doc"The value that is used to validate the administrator account to the member account."];relationshipStatus:String_.toption[@ocaml.doc"The status of the relationship between the administrator and member accounts."];invitedAt:String_.toption[@ocaml.doc"The timestamp when the invitation was sent."]}letmake?accountId=fun?invitationId->fun?relationshipStatus->fun?invitedAt->fun()->{accountId;invitationId;relationshipStatus;invitedAt}letto_valuex=structure_to_value[("accountId",(Option.mapx.accountId~f:AccountId.to_value));("invitationId",(Option.mapx.invitationId~f:String_.to_value));("relationshipStatus",(Option.mapx.relationshipStatus~f:String_.to_value));("invitedAt",(Option.mapx.invitedAt~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letinvitedAt=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"invitedAt")inletrelationshipStatus=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"relationshipStatus")inletinvitationId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"invitationId")inletaccountId=(Option.map~f:AccountId.of_xml)(Xml.childxml_arg0"accountId")inmake?invitedAt?relationshipStatus?invitationId?accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letinvitedAt=field_mapjson__"InvitedAt"String_.of_jsoninletrelationshipStatus=field_mapjson__"RelationshipStatus"String_.of_jsoninletinvitationId=field_mapjson__"InvitationId"String_.of_jsoninletaccountId=field_mapjson__"AccountId"AccountId.of_jsoninmake?invitedAt?relationshipStatus?invitationId?accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information about the administrator account and invitation."]moduleOrganizationDataSourceConfigurationsResult=structtypenonrect={s3Logs:OrganizationS3LogsConfigurationResult.toption[@ocaml.doc"Describes whether S3 data event logs are enabled as a data source."];kubernetes:OrganizationKubernetesConfigurationResult.toption[@ocaml.doc"Describes the configuration of Kubernetes data sources."];malwareProtection:OrganizationMalwareProtectionConfigurationResult.toption[@ocaml.doc"Describes the configuration of Malware Protection data source for an organization."]}letmake?s3Logs=fun?kubernetes->fun?malwareProtection->fun()->{s3Logs;kubernetes;malwareProtection}letto_valuex=structure_to_value[("s3Logs",(Option.mapx.s3Logs~f:OrganizationS3LogsConfigurationResult.to_value));("kubernetes",(Option.mapx.kubernetes~f:OrganizationKubernetesConfigurationResult.to_value));("malwareProtection",(Option.mapx.malwareProtection~f:OrganizationMalwareProtectionConfigurationResult.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmalwareProtection=(Option.map~f:OrganizationMalwareProtectionConfigurationResult.of_xml)(Xml.childxml_arg0"malwareProtection")inletkubernetes=(Option.map~f:OrganizationKubernetesConfigurationResult.of_xml)(Xml.childxml_arg0"kubernetes")inlets3Logs=(Option.map~f:OrganizationS3LogsConfigurationResult.of_xml)(Xml.childxml_arg0"s3Logs")inmake?malwareProtection?kubernetes?s3Logs()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmalwareProtection=field_mapjson__"MalwareProtection"OrganizationMalwareProtectionConfigurationResult.of_jsoninletkubernetes=field_mapjson__"Kubernetes"OrganizationKubernetesConfigurationResult.of_jsoninlets3Logs=field_mapjson__"S3Logs"OrganizationS3LogsConfigurationResult.of_jsoninmake?malwareProtection?kubernetes?s3Logs()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"An object that contains information on which data sources are automatically enabled for new members within the organization."]moduleOrganizationFeaturesConfigurationsResults=structtypenonrect=OrganizationFeatureConfigurationResult.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:OrganizationFeatureConfigurationResult.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:OrganizationFeatureConfigurationResult.of_xml)letof_jsonj=list_of_json~kind:"OrganizationFeaturesConfigurationsResults"~of_json:OrganizationFeatureConfigurationResult.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleScans=structtypenonrect=Scan.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:Scan.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:Scan.of_xml)letof_jsonj=list_of_json~kind:"Scans"~of_json:Scan.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleFilterCriteria=structtypenonrect={filterCriterion:FilterCriterionList.toption[@ocaml.doc"Represents a condition that when matched will be added to the response of the operation."]}letmake?filterCriterion=fun()->{filterCriterion}letto_valuex=structure_to_value[("filterCriterion",(Option.mapx.filterCriterion~f:FilterCriterionList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letfilterCriterion=(Option.map~f:FilterCriterionList.of_xml)(Xml.childxml_arg0"filterCriterion")inmake?filterCriterion()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letfilterCriterion=field_mapjson__"FilterCriterion"FilterCriterionList.of_jsoninmake?filterCriterion()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Represents the criteria to be used in the filter for describing scan entries."]moduleIntegerValueWithMax=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:50)>>=(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 IntegerValueWithMax"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleFindingTypes=structtypenonrect=FindingType.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:50)>>=(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:FindingType.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:FindingType.of_xml)letof_jsonj=list_of_json~kind:"FindingTypes"~of_json:FindingType.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleAccountDetails=structtypenonrect=AccountDetail.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:AccountDetail.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:AccountDetail.of_xml)letof_jsonj=list_of_json~kind:"AccountDetails"~of_json:AccountDetail.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleUnprocessedDataSourcesResult=structtypenonrect={malwareProtection:MalwareProtectionConfigurationResult.toption}letmake?malwareProtection=fun()->{malwareProtection}letto_valuex=structure_to_value[("malwareProtection",(Option.mapx.malwareProtection~f:MalwareProtectionConfigurationResult.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmalwareProtection=(Option.map~f:MalwareProtectionConfigurationResult.of_xml)(Xml.childxml_arg0"malwareProtection")inmake?malwareProtection()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmalwareProtection=field_mapjson__"MalwareProtection"MalwareProtectionConfigurationResult.of_jsoninmake?malwareProtection()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Specifies the names of the data sources that couldn't be enabled."]moduleUpdateTrustedEntitySetResponse=structtypenonrect=unittypenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.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"Updates the trusted entity set associated with the specified trustedEntitySetId."]moduleUpdateTrustedEntitySetRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the GuardDuty detector associated with the threat entity set that you want to update. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];trustedEntitySetId:String_.t[@ocaml.doc"The ID returned by GuardDuty after updating the trusted entity set resource."];name:Name.toption[@ocaml.doc"A user-friendly name to identify the trusted entity set. The name of your list can include lowercase letters, uppercase letters, numbers, dash (-), and underscore (_)."];location:Location.toption[@ocaml.doc"The URI of the file that contains the trusted entity set."];expectedBucketOwner:ExpectedBucketOwner.toption[@ocaml.doc"The Amazon Web Services account ID that owns the Amazon S3 bucket specified in the location parameter."];activate:Boolean.toption[@ocaml.doc"A boolean value that indicates whether GuardDuty is to start using this updated trusted entity set. After you update an entity set, you will need to activate it again. It might take up to 15 minutes for the updated entity set to be effective."]}letcontext_="UpdateTrustedEntitySetRequest"letmake?name=fun?location->fun?expectedBucketOwner->fun?activate->fun~detectorId->fun~trustedEntitySetId->fun()->{name;location;expectedBucketOwner;activate;detectorId;trustedEntitySetId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("TrustedEntitySetId",(Some(String_.to_valuex.trustedEntitySetId)));("name",(Option.mapx.name~f:Name.to_value));("location",(Option.mapx.location~f:Location.to_value));("expectedBucketOwner",(Option.mapx.expectedBucketOwner~f:ExpectedBucketOwner.to_value));("activate",(Option.mapx.activate~f:Boolean.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letactivate=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"activate")inletexpectedBucketOwner=(Option.map~f:ExpectedBucketOwner.of_xml)(Xml.childxml_arg0"expectedBucketOwner")inletlocation=(Option.map~f:Location.of_xml)(Xml.childxml_arg0"location")inletname=(Option.map~f:Name.of_xml)(Xml.childxml_arg0"name")inlettrustedEntitySetId=String_.of_xml(Xml.child_exn~context:context_xml_arg0"TrustedEntitySetId")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake?activate?expectedBucketOwner?location?name~trustedEntitySetId~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letactivate=field_mapjson__"Activate"Boolean.of_jsoninletexpectedBucketOwner=field_mapjson__"ExpectedBucketOwner"ExpectedBucketOwner.of_jsoninletlocation=field_mapjson__"Location"Location.of_jsoninletname=field_mapjson__"Name"Name.of_jsoninlettrustedEntitySetId=field_map_exnjson__"TrustedEntitySetId"String_.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake?activate?expectedBucketOwner?location?name~trustedEntitySetId~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Updates the trusted entity set associated with the specified trustedEntitySetId."]moduleUpdateThreatIntelSetResponse=structtypenonrect=unittypenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.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))]|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.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"Updates the ThreatIntelSet specified by the ThreatIntelSet ID."]moduleUpdateThreatIntelSetRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The detectorID that specifies the GuardDuty service whose ThreatIntelSet you want to update. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];threatIntelSetId:String_.t[@ocaml.doc"The unique ID that specifies the ThreatIntelSet that you want to update."];name:Name.toption[@ocaml.doc"The unique ID that specifies the ThreatIntelSet that you want to update."];location:Location.toption[@ocaml.doc"The updated URI of the file that contains the ThreateIntelSet."];activate:Boolean.toption[@ocaml.doc"The updated Boolean value that specifies whether the ThreateIntelSet is active or not."];expectedBucketOwner:AccountId.toption[@ocaml.doc"The Amazon Web Services account ID that owns the Amazon S3 bucket specified in the location parameter."]}letcontext_="UpdateThreatIntelSetRequest"letmake?name=fun?location->fun?activate->fun?expectedBucketOwner->fun~detectorId->fun~threatIntelSetId->fun()->{name;location;activate;expectedBucketOwner;detectorId;threatIntelSetId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("ThreatIntelSetId",(Some(String_.to_valuex.threatIntelSetId)));("name",(Option.mapx.name~f:Name.to_value));("location",(Option.mapx.location~f:Location.to_value));("activate",(Option.mapx.activate~f:Boolean.to_value));("expectedBucketOwner",(Option.mapx.expectedBucketOwner~f:AccountId.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letexpectedBucketOwner=(Option.map~f:AccountId.of_xml)(Xml.childxml_arg0"expectedBucketOwner")inletactivate=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"activate")inletlocation=(Option.map~f:Location.of_xml)(Xml.childxml_arg0"location")inletname=(Option.map~f:Name.of_xml)(Xml.childxml_arg0"name")inletthreatIntelSetId=String_.of_xml(Xml.child_exn~context:context_xml_arg0"ThreatIntelSetId")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake?expectedBucketOwner?activate?location?name~threatIntelSetId~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letexpectedBucketOwner=field_mapjson__"ExpectedBucketOwner"AccountId.of_jsoninletactivate=field_mapjson__"Activate"Boolean.of_jsoninletlocation=field_mapjson__"Location"Location.of_jsoninletname=field_mapjson__"Name"Name.of_jsoninletthreatIntelSetId=field_map_exnjson__"ThreatIntelSetId"String_.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake?expectedBucketOwner?activate?location?name~threatIntelSetId~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Updates the ThreatIntelSet specified by the ThreatIntelSet ID."]moduleUpdateThreatEntitySetResponse=structtypenonrect=unittypenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.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"Updates the threat entity set associated with the specified threatEntitySetId."]moduleUpdateThreatEntitySetRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the GuardDuty detector associated with the threat entity set that you want to update. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];threatEntitySetId:String_.t[@ocaml.doc"The ID returned by GuardDuty after updating the threat entity set resource."];name:Name.toption[@ocaml.doc"A user-friendly name to identify the trusted entity set. The name of your list can include lowercase letters, uppercase letters, numbers, dash (-), and underscore (_)."];location:Location.toption[@ocaml.doc"The URI of the file that contains the trusted entity set."];expectedBucketOwner:ExpectedBucketOwner.toption[@ocaml.doc"The Amazon Web Services account ID that owns the Amazon S3 bucket specified in the location parameter."];activate:Boolean.toption[@ocaml.doc"A boolean value that indicates whether GuardDuty is to start using this updated threat entity set. After you update an entity set, you will need to activate it again. It might take up to 15 minutes for the updated entity set to be effective."]}letcontext_="UpdateThreatEntitySetRequest"letmake?name=fun?location->fun?expectedBucketOwner->fun?activate->fun~detectorId->fun~threatEntitySetId->fun()->{name;location;expectedBucketOwner;activate;detectorId;threatEntitySetId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("ThreatEntitySetId",(Some(String_.to_valuex.threatEntitySetId)));("name",(Option.mapx.name~f:Name.to_value));("location",(Option.mapx.location~f:Location.to_value));("expectedBucketOwner",(Option.mapx.expectedBucketOwner~f:ExpectedBucketOwner.to_value));("activate",(Option.mapx.activate~f:Boolean.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letactivate=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"activate")inletexpectedBucketOwner=(Option.map~f:ExpectedBucketOwner.of_xml)(Xml.childxml_arg0"expectedBucketOwner")inletlocation=(Option.map~f:Location.of_xml)(Xml.childxml_arg0"location")inletname=(Option.map~f:Name.of_xml)(Xml.childxml_arg0"name")inletthreatEntitySetId=String_.of_xml(Xml.child_exn~context:context_xml_arg0"ThreatEntitySetId")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake?activate?expectedBucketOwner?location?name~threatEntitySetId~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letactivate=field_mapjson__"Activate"Boolean.of_jsoninletexpectedBucketOwner=field_mapjson__"ExpectedBucketOwner"ExpectedBucketOwner.of_jsoninletlocation=field_mapjson__"Location"Location.of_jsoninletname=field_mapjson__"Name"Name.of_jsoninletthreatEntitySetId=field_map_exnjson__"ThreatEntitySetId"String_.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake?activate?expectedBucketOwner?location?name~threatEntitySetId~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Updates the threat entity set associated with the specified threatEntitySetId."]moduleUpdatePublishingDestinationResponse=structtypenonrect=unittypenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.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"Updates information about the publishing destination specified by the destinationId."]moduleUpdatePublishingDestinationRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The ID of the detector associated with the publishing destinations to update. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];destinationId:String_.t[@ocaml.doc"The ID of the publishing destination to update."];destinationProperties:DestinationProperties.toption[@ocaml.doc"A DestinationProperties object that includes the DestinationArn and KmsKeyArn of the publishing destination."]}letcontext_="UpdatePublishingDestinationRequest"letmake?destinationProperties=fun~detectorId->fun~destinationId->fun()->{destinationProperties;detectorId;destinationId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("DestinationId",(Some(String_.to_valuex.destinationId)));("destinationProperties",(Option.mapx.destinationProperties~f:DestinationProperties.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdestinationProperties=(Option.map~f:DestinationProperties.of_xml)(Xml.childxml_arg0"destinationProperties")inletdestinationId=String_.of_xml(Xml.child_exn~context:context_xml_arg0"DestinationId")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake?destinationProperties~destinationId~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdestinationProperties=field_mapjson__"DestinationProperties"DestinationProperties.of_jsoninletdestinationId=field_map_exnjson__"DestinationId"String_.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake?destinationProperties~destinationId~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Updates information about the publishing destination specified by the destinationId."]moduleUpdateOrganizationConfigurationResponse=structtypenonrect=unittypenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.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"Configures the delegated administrator account with the provided values. You must provide a value for either autoEnableOrganizationMembers or autoEnable, but not both. Specifying both EKS Runtime Monitoring (EKS_RUNTIME_MONITORING) and Runtime Monitoring (RUNTIME_MONITORING) will cause an error. You can add only one of these two features because Runtime Monitoring already includes the threat detection for Amazon EKS resources. For more information, see Runtime Monitoring. There might be regional differences because some data sources might not be available in all the Amazon Web Services Regions where GuardDuty is presently supported. For more information, see Regions and endpoints."]moduleUpdateOrganizationConfigurationRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The ID of the detector that configures the delegated administrator. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];autoEnable:Boolean.toption[@ocaml.doc"Represents whether to automatically enable member accounts in the organization. This applies to only new member accounts, not the existing member accounts. When a new account joins the organization, the chosen features will be enabled for them by default. Even though this is still supported, we recommend using AutoEnableOrganizationMembers to achieve the similar results. You must provide a value for either autoEnableOrganizationMembers or autoEnable."];dataSources:OrganizationDataSourceConfigurations.toption[@ocaml.doc"Describes which data sources will be updated."];features:OrganizationFeaturesConfigurations.toption[@ocaml.doc"A list of features that will be configured for the organization."];autoEnableOrganizationMembers:AutoEnableMembers.toption[@ocaml.doc"Indicates the auto-enablement configuration of GuardDuty for the member accounts in the organization. You must provide a value for either autoEnableOrganizationMembers or autoEnable. Use one of the following configuration values for autoEnableOrganizationMembers: NEW: Indicates that when a new account joins the organization, they will have GuardDuty enabled automatically. ALL: Indicates that all accounts in the organization have GuardDuty enabled automatically. This includes NEW accounts that join the organization and accounts that may have been suspended or removed from the organization in GuardDuty. It may take up to 24 hours to update the configuration for all the member accounts. NONE: Indicates that GuardDuty will not be automatically enabled for any account in the organization. The administrator must manage GuardDuty for each account in the organization individually. When you update the auto-enable setting from ALL or NEW to NONE, this action doesn't disable the corresponding option for your existing accounts. This configuration will apply to the new accounts that join the organization. After you update the auto-enable settings, no new account will have the corresponding option as enabled."]}letcontext_="UpdateOrganizationConfigurationRequest"letmake?autoEnable=fun?dataSources->fun?features->fun?autoEnableOrganizationMembers->fun~detectorId->fun()->{autoEnable;dataSources;features;autoEnableOrganizationMembers;detectorId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("autoEnable",(Option.mapx.autoEnable~f:Boolean.to_value));("dataSources",(Option.mapx.dataSources~f:OrganizationDataSourceConfigurations.to_value));("features",(Option.mapx.features~f:OrganizationFeaturesConfigurations.to_value));("autoEnableOrganizationMembers",(Option.mapx.autoEnableOrganizationMembers~f:AutoEnableMembers.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letautoEnableOrganizationMembers=(Option.map~f:AutoEnableMembers.of_xml)(Xml.childxml_arg0"autoEnableOrganizationMembers")inletfeatures=(Option.map~f:OrganizationFeaturesConfigurations.of_xml)(Xml.childxml_arg0"features")inletdataSources=(Option.map~f:OrganizationDataSourceConfigurations.of_xml)(Xml.childxml_arg0"dataSources")inletautoEnable=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"autoEnable")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake?autoEnableOrganizationMembers?features?dataSources?autoEnable~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letautoEnableOrganizationMembers=field_mapjson__"AutoEnableOrganizationMembers"AutoEnableMembers.of_jsoninletfeatures=field_mapjson__"Features"OrganizationFeaturesConfigurations.of_jsoninletdataSources=field_mapjson__"DataSources"OrganizationDataSourceConfigurations.of_jsoninletautoEnable=field_mapjson__"AutoEnable"Boolean.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake?autoEnableOrganizationMembers?features?dataSources?autoEnable~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Configures the delegated administrator account with the provided values. You must provide a value for either autoEnableOrganizationMembers or autoEnable, but not both. Specifying both EKS Runtime Monitoring (EKS_RUNTIME_MONITORING) and Runtime Monitoring (RUNTIME_MONITORING) will cause an error. You can add only one of these two features because Runtime Monitoring already includes the threat detection for Amazon EKS resources. For more information, see Runtime Monitoring. There might be regional differences because some data sources might not be available in all the Amazon Web Services Regions where GuardDuty is presently supported. For more information, see Regions and endpoints."]moduleUpdateMemberDetectorsResponse=structtypenonrect={unprocessedAccounts:UnprocessedAccounts.toption[@ocaml.doc"A list of member account IDs that were unable to be processed along with an explanation for why they were not processed."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?unprocessedAccounts=fun()->{unprocessedAccounts}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("unprocessedAccounts",(Option.mapx.unprocessedAccounts~f:UnprocessedAccounts.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letunprocessedAccounts=(Option.map~f:UnprocessedAccounts.of_xml)(Xml.childxml_arg0"unprocessedAccounts")inmake?unprocessedAccounts()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letunprocessedAccounts=field_mapjson__"UnprocessedAccounts"UnprocessedAccounts.of_jsoninmake?unprocessedAccounts()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information on member accounts to be updated. Specifying both EKS Runtime Monitoring (EKS_RUNTIME_MONITORING) and Runtime Monitoring (RUNTIME_MONITORING) will cause an error. You can add only one of these two features because Runtime Monitoring already includes the threat detection for Amazon EKS resources. For more information, see Runtime Monitoring. There might be regional differences because some data sources might not be available in all the Amazon Web Services Regions where GuardDuty is presently supported. For more information, see Regions and endpoints."]moduleUpdateMemberDetectorsRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The detector ID of the administrator account. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];accountIds:AccountIds.t[@ocaml.doc"A list of member account IDs to be updated."];dataSources:DataSourceConfigurations.toption[@ocaml.doc"Describes which data sources will be updated."];features:MemberFeaturesConfigurations.toption[@ocaml.doc"A list of features that will be updated for the specified member accounts."]}letcontext_="UpdateMemberDetectorsRequest"letmake?dataSources=fun?features->fun~detectorId->fun~accountIds->fun()->{dataSources;features;detectorId;accountIds}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("accountIds",(Some(AccountIds.to_valuex.accountIds)));("dataSources",(Option.mapx.dataSources~f:DataSourceConfigurations.to_value));("features",(Option.mapx.features~f:MemberFeaturesConfigurations.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letfeatures=(Option.map~f:MemberFeaturesConfigurations.of_xml)(Xml.childxml_arg0"features")inletdataSources=(Option.map~f:DataSourceConfigurations.of_xml)(Xml.childxml_arg0"dataSources")inletaccountIds=AccountIds.of_xml(Xml.child_exn~context:context_xml_arg0"accountIds")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake?features?dataSources~accountIds~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letfeatures=field_mapjson__"Features"MemberFeaturesConfigurations.of_jsoninletdataSources=field_mapjson__"DataSources"DataSourceConfigurations.of_jsoninletaccountIds=field_map_exnjson__"AccountIds"AccountIds.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake?features?dataSources~accountIds~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains information on member accounts to be updated. Specifying both EKS Runtime Monitoring (EKS_RUNTIME_MONITORING) and Runtime Monitoring (RUNTIME_MONITORING) will cause an error. You can add only one of these two features because Runtime Monitoring already includes the threat detection for Amazon EKS resources. For more information, see Runtime Monitoring. There might be regional differences because some data sources might not be available in all the Amazon Web Services Regions where GuardDuty is presently supported. For more information, see Regions and endpoints."]moduleUpdateMalwareScanSettingsResponse=structtypenonrect=unittypenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.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"Updates the malware scan settings. There might be regional differences because some data sources might not be available in all the Amazon Web Services Regions where GuardDuty is presently supported. For more information, see Regions and endpoints."]moduleUpdateMalwareScanSettingsRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector that specifies the GuardDuty service where you want to update scan settings. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];scanResourceCriteria:ScanResourceCriteria.toption[@ocaml.doc"Represents the criteria to be used in the filter for selecting resources to scan."];ebsSnapshotPreservation:EbsSnapshotPreservation.toption[@ocaml.doc"An enum value representing possible snapshot preservation settings."]}letcontext_="UpdateMalwareScanSettingsRequest"letmake?scanResourceCriteria=fun?ebsSnapshotPreservation->fun~detectorId->fun()->{scanResourceCriteria;ebsSnapshotPreservation;detectorId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("scanResourceCriteria",(Option.mapx.scanResourceCriteria~f:ScanResourceCriteria.to_value));("ebsSnapshotPreservation",(Option.mapx.ebsSnapshotPreservation~f:EbsSnapshotPreservation.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letebsSnapshotPreservation=(Option.map~f:EbsSnapshotPreservation.of_xml)(Xml.childxml_arg0"ebsSnapshotPreservation")inletscanResourceCriteria=(Option.map~f:ScanResourceCriteria.of_xml)(Xml.childxml_arg0"scanResourceCriteria")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake?ebsSnapshotPreservation?scanResourceCriteria~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letebsSnapshotPreservation=field_mapjson__"EbsSnapshotPreservation"EbsSnapshotPreservation.of_jsoninletscanResourceCriteria=field_mapjson__"ScanResourceCriteria"ScanResourceCriteria.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake?ebsSnapshotPreservation?scanResourceCriteria~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Updates the malware scan settings. There might be regional differences because some data sources might not be available in all the Amazon Web Services Regions where GuardDuty is presently supported. For more information, see Regions and endpoints."]moduleUpdateMalwareProtectionPlanRequest=structtypenonrect={malwareProtectionPlanId:String_.t[@ocaml.doc"A unique identifier associated with the Malware Protection plan."];role:String_.toption[@ocaml.doc"Amazon Resource Name (ARN) of the IAM role with permissions to scan and add tags to the associated protected resource."];actions:MalwareProtectionPlanActions.toption[@ocaml.doc"Information about whether the tags will be added to the S3 object after scanning."];protectedResource:UpdateProtectedResource.toption[@ocaml.doc"Information about the protected resource that is associated with the created Malware Protection plan. Presently, S3Bucket is the only supported protected resource."]}letcontext_="UpdateMalwareProtectionPlanRequest"letmake?role=fun?actions->fun?protectedResource->fun~malwareProtectionPlanId->fun()->{role;actions;protectedResource;malwareProtectionPlanId}letto_valuex=structure_to_value[("MalwareProtectionPlanId",(Some(String_.to_valuex.malwareProtectionPlanId)));("role",(Option.mapx.role~f:String_.to_value));("actions",(Option.mapx.actions~f:MalwareProtectionPlanActions.to_value));("protectedResource",(Option.mapx.protectedResource~f:UpdateProtectedResource.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letprotectedResource=(Option.map~f:UpdateProtectedResource.of_xml)(Xml.childxml_arg0"protectedResource")inletactions=(Option.map~f:MalwareProtectionPlanActions.of_xml)(Xml.childxml_arg0"actions")inletrole=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"role")inletmalwareProtectionPlanId=String_.of_xml(Xml.child_exn~context:context_xml_arg0"MalwareProtectionPlanId")inmake?protectedResource?actions?role~malwareProtectionPlanId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letprotectedResource=field_mapjson__"ProtectedResource"UpdateProtectedResource.of_jsoninletactions=field_mapjson__"Actions"MalwareProtectionPlanActions.of_jsoninletrole=field_mapjson__"Role"String_.of_jsoninletmalwareProtectionPlanId=field_map_exnjson__"MalwareProtectionPlanId"String_.of_jsoninmake?protectedResource?actions?role~malwareProtectionPlanId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Updates an existing Malware Protection plan resource."]moduleUpdateIPSetResponse=structtypenonrect=unittypenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.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))]|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.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"Updates the IPSet specified by the IPSet ID."]moduleUpdateIPSetRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The detectorID that specifies the GuardDuty service whose IPSet you want to update. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];ipSetId:String_.t[@ocaml.doc"The unique ID that specifies the IPSet that you want to update."];name:Name.toption[@ocaml.doc"The unique ID that specifies the IPSet that you want to update."];location:Location.toption[@ocaml.doc"The updated URI of the file that contains the IPSet."];activate:Boolean.toption[@ocaml.doc"The updated Boolean value that specifies whether the IPSet is active or not."];expectedBucketOwner:AccountId.toption[@ocaml.doc"The Amazon Web Services account ID that owns the Amazon S3 bucket specified in the location parameter."]}letcontext_="UpdateIPSetRequest"letmake?name=fun?location->fun?activate->fun?expectedBucketOwner->fun~detectorId->fun~ipSetId->fun()->{name;location;activate;expectedBucketOwner;detectorId;ipSetId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("IpSetId",(Some(String_.to_valuex.ipSetId)));("name",(Option.mapx.name~f:Name.to_value));("location",(Option.mapx.location~f:Location.to_value));("activate",(Option.mapx.activate~f:Boolean.to_value));("expectedBucketOwner",(Option.mapx.expectedBucketOwner~f:AccountId.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letexpectedBucketOwner=(Option.map~f:AccountId.of_xml)(Xml.childxml_arg0"expectedBucketOwner")inletactivate=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"activate")inletlocation=(Option.map~f:Location.of_xml)(Xml.childxml_arg0"location")inletname=(Option.map~f:Name.of_xml)(Xml.childxml_arg0"name")inletipSetId=String_.of_xml(Xml.child_exn~context:context_xml_arg0"IpSetId")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake?expectedBucketOwner?activate?location?name~ipSetId~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letexpectedBucketOwner=field_mapjson__"ExpectedBucketOwner"AccountId.of_jsoninletactivate=field_mapjson__"Activate"Boolean.of_jsoninletlocation=field_mapjson__"Location"Location.of_jsoninletname=field_mapjson__"Name"Name.of_jsoninletipSetId=field_map_exnjson__"IpSetId"String_.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake?expectedBucketOwner?activate?location?name~ipSetId~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Updates the IPSet specified by the IPSet ID."]moduleUpdateFindingsFeedbackResponse=structtypenonrect=unittypenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.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"Marks the specified GuardDuty findings as useful or not useful."]moduleUpdateFindingsFeedbackRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The ID of the detector that is associated with the findings for which you want to update the feedback. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];findingIds:FindingIds.t[@ocaml.doc"The IDs of the findings that you want to mark as useful or not useful."];feedback:Feedback.t[@ocaml.doc"The feedback for the finding."];comments:SensitiveString.toption[@ocaml.doc"Additional feedback about the GuardDuty findings."]}letcontext_="UpdateFindingsFeedbackRequest"letmake?comments=fun~detectorId->fun~findingIds->fun~feedback->fun()->{comments;detectorId;findingIds;feedback}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("findingIds",(Some(FindingIds.to_valuex.findingIds)));("feedback",(Some(Feedback.to_valuex.feedback)));("comments",(Option.mapx.comments~f:SensitiveString.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcomments=(Option.map~f:SensitiveString.of_xml)(Xml.childxml_arg0"comments")inletfeedback=Feedback.of_xml(Xml.child_exn~context:context_xml_arg0"feedback")inletfindingIds=FindingIds.of_xml(Xml.child_exn~context:context_xml_arg0"findingIds")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake?comments~feedback~findingIds~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcomments=field_mapjson__"Comments"SensitiveString.of_jsoninletfeedback=field_map_exnjson__"Feedback"Feedback.of_jsoninletfindingIds=field_map_exnjson__"FindingIds"FindingIds.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake?comments~feedback~findingIds~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Marks the specified GuardDuty findings as useful or not useful."]moduleUpdateFilterResponse=structtypenonrect={name:FilterName.toption[@ocaml.doc"The name of the filter."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?name=fun()->{name}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("name",(Option.mapx.name~f:FilterName.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letname=(Option.map~f:FilterName.of_xml)(Xml.childxml_arg0"name")inmake?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letname=field_mapjson__"Name"FilterName.of_jsoninmake?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Updates the filter specified by the filter name."]moduleUpdateFilterRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector that specifies the GuardDuty service where you want to update a filter. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];filterName:String_.t[@ocaml.doc"The name of the filter."];description:FilterDescription.toption[@ocaml.doc"The description of the filter. Valid characters include alphanumeric characters, and special characters such as hyphen, period, colon, underscore, parentheses (\\{ \\}, \\[ \\], and ( )), forward slash, horizontal tab, vertical tab, newline, form feed, return, and whitespace."];action:FilterAction.toption[@ocaml.doc"Specifies the action that is to be applied to the findings that match the filter. Default: NOOP"];rank:FilterRank.toption[@ocaml.doc"Specifies the position of the filter in the list of current filters. Also specifies the order in which this filter is applied to the findings."];findingCriteria:FindingCriteria.toption[@ocaml.doc"Represents the criteria to be used in the filter for querying findings. The following fields are available for filtering: accountId arn associatedAttackSequenceArn confidence createdAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 description id partition region resource.accessKeyDetails.accessKeyId resource.accessKeyDetails.principalId resource.accessKeyDetails.userIdentity.accessKeyId resource.accessKeyDetails.userIdentity.accountId resource.accessKeyDetails.userIdentity.arn resource.accessKeyDetails.userIdentity.principalId resource.accessKeyDetails.userIdentity.sessionContext.attributes.mfaAuthenticated resource.accessKeyDetails.userIdentity.sessionContext.ec2RoleDelivery resource.accessKeyDetails.userIdentity.sessionContext.invokedBy resource.accessKeyDetails.userIdentity.sessionContext.sessionIssuer.accountId resource.accessKeyDetails.userIdentity.sessionContext.sessionIssuer.arn resource.accessKeyDetails.userIdentity.sessionContext.sessionIssuer.principalId resource.accessKeyDetails.userIdentity.sessionContext.sessionIssuer.type resource.accessKeyDetails.userIdentity.sessionContext.sessionIssuer.userName resource.accessKeyDetails.userIdentity.sessionContext.sourceIdentity resource.accessKeyDetails.userIdentity.sessionContext.webIdFederationData.attributes resource.accessKeyDetails.userIdentity.sessionContext.webIdFederationData.federatedProvider resource.accessKeyDetails.userIdentity.type resource.accessKeyDetails.userIdentity.userName resource.accessKeyDetails.userName resource.accessKeyDetails.userType resource.bedrockGuardrailDetails.guardrailArn resource.bedrockGuardrailDetails.guardrailVersion resource.containerDetails.containerRuntime resource.containerDetails.id resource.containerDetails.image resource.containerDetails.imagePrefix resource.containerDetails.name resource.containerDetails.securityContext.allowPrivilegeEscalation resource.containerDetails.securityContext.privileged resource.containerDetails.volumeMounts.mountPath resource.containerDetails.volumeMounts.name resource.ebsSnapshotDetails.snapshotArn resource.ebsVolumeDetails.scannedVolumeDetails.deviceName resource.ebsVolumeDetails.scannedVolumeDetails.encryptionType resource.ebsVolumeDetails.scannedVolumeDetails.kmsKeyArn resource.ebsVolumeDetails.scannedVolumeDetails.snapshotArn resource.ebsVolumeDetails.scannedVolumeDetails.volumeArn resource.ebsVolumeDetails.scannedVolumeDetails.volumeSizeInGB resource.ebsVolumeDetails.scannedVolumeDetails.volumeType resource.ebsVolumeDetails.skippedVolumeDetails.deviceName resource.ebsVolumeDetails.skippedVolumeDetails.encryptionType resource.ebsVolumeDetails.skippedVolumeDetails.kmsKeyArn resource.ebsVolumeDetails.skippedVolumeDetails.snapshotArn resource.ebsVolumeDetails.skippedVolumeDetails.volumeArn resource.ebsVolumeDetails.skippedVolumeDetails.volumeSizeInGB resource.ebsVolumeDetails.skippedVolumeDetails.volumeType resource.ec2ImageDetails.imageArn resource.ecsClusterDetails.activeServicesCount resource.ecsClusterDetails.arn resource.ecsClusterDetails.name resource.ecsClusterDetails.registeredContainerInstancesCount resource.ecsClusterDetails.runningTasksCount resource.ecsClusterDetails.status resource.ecsClusterDetails.tags.key resource.ecsClusterDetails.tags.value resource.ecsClusterDetails.taskDetails.arn resource.ecsClusterDetails.taskDetails.containers.containerRuntime resource.ecsClusterDetails.taskDetails.containers.id resource.ecsClusterDetails.taskDetails.containers.image resource.ecsClusterDetails.taskDetails.containers.imagePrefix resource.ecsClusterDetails.taskDetails.containers.name resource.ecsClusterDetails.taskDetails.containers.securityContext.allowPrivilegeEscalation resource.ecsClusterDetails.taskDetails.containers.securityContext.privileged resource.ecsClusterDetails.taskDetails.containers.volumeMounts.mountPath resource.ecsClusterDetails.taskDetails.containers.volumeMounts.name resource.ecsClusterDetails.taskDetails.createdAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 resource.ecsClusterDetails.taskDetails.definitionArn resource.ecsClusterDetails.taskDetails.group resource.ecsClusterDetails.taskDetails.launchType resource.ecsClusterDetails.taskDetails.startedAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 resource.ecsClusterDetails.taskDetails.startedBy resource.ecsClusterDetails.taskDetails.tags.key resource.ecsClusterDetails.taskDetails.tags.value resource.ecsClusterDetails.taskDetails.version resource.ecsClusterDetails.taskDetails.volumes.hostPath.path resource.ecsClusterDetails.taskDetails.volumes.name resource.eksClusterDetails.arn resource.eksClusterDetails.createdAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 resource.eksClusterDetails.name resource.eksClusterDetails.status resource.eksClusterDetails.tags.key resource.eksClusterDetails.tags.value resource.eksClusterDetails.vpcId resource.instanceDetails.availabilityZone resource.instanceDetails.iamInstanceProfile.arn resource.instanceDetails.iamInstanceProfile.id resource.instanceDetails.imageDescription resource.instanceDetails.imageId resource.instanceDetails.instanceId resource.instanceDetails.instanceState resource.instanceDetails.instanceType resource.instanceDetails.launchTime Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 resource.instanceDetails.networkInterfaces.ipv6Addresses resource.instanceDetails.networkInterfaces.networkInterfaceId resource.instanceDetails.networkInterfaces.privateDnsName resource.instanceDetails.networkInterfaces.privateIpAddress resource.instanceDetails.networkInterfaces.privateIpAddresses.privateDnsName resource.instanceDetails.networkInterfaces.privateIpAddresses.privateIpAddress resource.instanceDetails.networkInterfaces.publicDnsName resource.instanceDetails.networkInterfaces.publicIp resource.instanceDetails.networkInterfaces.securityGroups.groupId resource.instanceDetails.networkInterfaces.securityGroups.groupName resource.instanceDetails.networkInterfaces.subnetId resource.instanceDetails.networkInterfaces.vpcId resource.instanceDetails.outpostArn resource.instanceDetails.platform resource.instanceDetails.productCodes.productCodeId resource.instanceDetails.productCodes.productCodeType resource.instanceDetails.tags.key resource.instanceDetails.tags.value resource.kubernetesDetails.kubernetesUserDetails.groups resource.kubernetesDetails.kubernetesUserDetails.impersonatedUser.groups resource.kubernetesDetails.kubernetesUserDetails.impersonatedUser.username resource.kubernetesDetails.kubernetesUserDetails.sessionName resource.kubernetesDetails.kubernetesUserDetails.uid resource.kubernetesDetails.kubernetesUserDetails.username resource.kubernetesDetails.kubernetesWorkloadDetails.containers.containerRuntime resource.kubernetesDetails.kubernetesWorkloadDetails.containers.id resource.kubernetesDetails.kubernetesWorkloadDetails.containers.image resource.kubernetesDetails.kubernetesWorkloadDetails.containers.imagePrefix resource.kubernetesDetails.kubernetesWorkloadDetails.containers.name resource.kubernetesDetails.kubernetesWorkloadDetails.containers.securityContext.allowPrivilegeEscalation resource.kubernetesDetails.kubernetesWorkloadDetails.containers.securityContext.privileged resource.kubernetesDetails.kubernetesWorkloadDetails.containers.volumeMounts.mountPath resource.kubernetesDetails.kubernetesWorkloadDetails.containers.volumeMounts.name resource.kubernetesDetails.kubernetesWorkloadDetails.hostIpc resource.kubernetesDetails.kubernetesWorkloadDetails.hostNetwork resource.kubernetesDetails.kubernetesWorkloadDetails.hostPid resource.kubernetesDetails.kubernetesWorkloadDetails.name resource.kubernetesDetails.kubernetesWorkloadDetails.namespace resource.kubernetesDetails.kubernetesWorkloadDetails.serviceAccountName resource.kubernetesDetails.kubernetesWorkloadDetails.type resource.kubernetesDetails.kubernetesWorkloadDetails.uid resource.kubernetesDetails.kubernetesWorkloadDetails.volumes.hostPath.path resource.kubernetesDetails.kubernetesWorkloadDetails.volumes.name resource.lambdaDetails.description resource.lambdaDetails.functionArn resource.lambdaDetails.functionName resource.lambdaDetails.functionVersion resource.lambdaDetails.lastModifiedAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 resource.lambdaDetails.revisionId resource.lambdaDetails.role resource.lambdaDetails.tags.key resource.lambdaDetails.tags.value resource.lambdaDetails.vpcConfig.securityGroups.groupId resource.lambdaDetails.vpcConfig.securityGroups.groupName resource.lambdaDetails.vpcConfig.subnetIds resource.lambdaDetails.vpcConfig.vpcId resource.rdsDbInstanceDetails.dbClusterIdentifier resource.rdsDbInstanceDetails.dbInstanceArn resource.rdsDbInstanceDetails.dbInstanceIdentifier resource.rdsDbInstanceDetails.dbSecurityGroups.name resource.rdsDbInstanceDetails.dbSecurityGroups.status resource.rdsDbInstanceDetails.dbiResourceId resource.rdsDbInstanceDetails.engine resource.rdsDbInstanceDetails.engineVersion resource.rdsDbInstanceDetails.iamDatabaseAuthenticationEnabled resource.rdsDbInstanceDetails.publiclyAccessible resource.rdsDbInstanceDetails.tags.key resource.rdsDbInstanceDetails.tags.value resource.rdsDbInstanceDetails.vpcId resource.rdsDbInstanceDetails.vpcSecurityGroups.status resource.rdsDbInstanceDetails.vpcSecurityGroups.vpcSecurityGroupId resource.rdsDbUserDetails.application resource.rdsDbUserDetails.authMethod resource.rdsDbUserDetails.database resource.rdsDbUserDetails.ssl resource.rdsDbUserDetails.user resource.rdsLimitlessDbDetails.dbClusterIdentifier resource.rdsLimitlessDbDetails.dbShardGroupArn resource.rdsLimitlessDbDetails.dbShardGroupIdentifier resource.rdsLimitlessDbDetails.dbShardGroupResourceId resource.rdsLimitlessDbDetails.engine resource.rdsLimitlessDbDetails.engineVersion resource.rdsLimitlessDbDetails.tags.key resource.rdsLimitlessDbDetails.tags.value resource.recoveryPointDetails.backupVaultName resource.recoveryPointDetails.recoveryPointArn resource.resourceType resource.s3BucketDetails.arn resource.s3BucketDetails.createdAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 resource.s3BucketDetails.defaultServerSideEncryption.encryptionType resource.s3BucketDetails.defaultServerSideEncryption.kmsMasterKeyArn resource.s3BucketDetails.name resource.s3BucketDetails.owner.id resource.s3BucketDetails.publicAccess.effectivePermission resource.s3BucketDetails.publicAccess.permissionConfiguration.accountLevelPermissions.blockPublicAccess.blockPublicAcls resource.s3BucketDetails.publicAccess.permissionConfiguration.accountLevelPermissions.blockPublicAccess.blockPublicPolicy resource.s3BucketDetails.publicAccess.permissionConfiguration.accountLevelPermissions.blockPublicAccess.ignorePublicAcls resource.s3BucketDetails.publicAccess.permissionConfiguration.accountLevelPermissions.blockPublicAccess.restrictPublicBuckets resource.s3BucketDetails.publicAccess.permissionConfiguration.bucketLevelPermissions.accessControlList.allowsPublicReadAccess resource.s3BucketDetails.publicAccess.permissionConfiguration.bucketLevelPermissions.accessControlList.allowsPublicWriteAccess resource.s3BucketDetails.publicAccess.permissionConfiguration.bucketLevelPermissions.blockPublicAccess.blockPublicAcls resource.s3BucketDetails.publicAccess.permissionConfiguration.bucketLevelPermissions.blockPublicAccess.blockPublicPolicy resource.s3BucketDetails.publicAccess.permissionConfiguration.bucketLevelPermissions.blockPublicAccess.ignorePublicAcls resource.s3BucketDetails.publicAccess.permissionConfiguration.bucketLevelPermissions.blockPublicAccess.restrictPublicBuckets resource.s3BucketDetails.publicAccess.permissionConfiguration.bucketLevelPermissions.bucketPolicy.allowsPublicReadAccess resource.s3BucketDetails.publicAccess.permissionConfiguration.bucketLevelPermissions.bucketPolicy.allowsPublicWriteAccess resource.s3BucketDetails.s3ObjectDetails.eTag resource.s3BucketDetails.s3ObjectDetails.hash resource.s3BucketDetails.s3ObjectDetails.key resource.s3BucketDetails.s3ObjectDetails.objectArn resource.s3BucketDetails.s3ObjectDetails.versionId resource.s3BucketDetails.tags.key resource.s3BucketDetails.tags.value resource.s3BucketDetails.type schemaVersion service.action.actionType service.action.awsApiCallAction.affectedResources service.action.awsApiCallAction.api service.action.awsApiCallAction.callerType service.action.awsApiCallAction.domainDetails.domain service.action.awsApiCallAction.errorCode service.action.awsApiCallAction.remoteAccountDetails.accountId service.action.awsApiCallAction.remoteAccountDetails.affiliated service.action.awsApiCallAction.remoteAccountDetails.awsServiceName service.action.awsApiCallAction.remoteIpDetails.city.cityName service.action.awsApiCallAction.remoteIpDetails.country.countryCode service.action.awsApiCallAction.remoteIpDetails.country.countryName service.action.awsApiCallAction.remoteIpDetails.geoLocation.lat service.action.awsApiCallAction.remoteIpDetails.geoLocation.lon service.action.awsApiCallAction.remoteIpDetails.ipAddressV4 service.action.awsApiCallAction.remoteIpDetails.ipAddressV6 service.action.awsApiCallAction.remoteIpDetails.organization.asn service.action.awsApiCallAction.remoteIpDetails.organization.asnOrg service.action.awsApiCallAction.remoteIpDetails.organization.isp service.action.awsApiCallAction.remoteIpDetails.organization.org service.action.awsApiCallAction.serviceName service.action.awsApiCallAction.userAgent service.action.dnsRequestAction.blocked service.action.dnsRequestAction.domain service.action.dnsRequestAction.domainWithSuffix service.action.dnsRequestAction.protocol service.action.dnsRequestAction.vpcOwnerAccountId service.action.kubernetesApiCallAction.namespace service.action.kubernetesApiCallAction.parameters service.action.kubernetesApiCallAction.remoteIpDetails.city.cityName service.action.kubernetesApiCallAction.remoteIpDetails.country.countryCode service.action.kubernetesApiCallAction.remoteIpDetails.country.countryName service.action.kubernetesApiCallAction.remoteIpDetails.geoLocation.lat service.action.kubernetesApiCallAction.remoteIpDetails.geoLocation.lon service.action.kubernetesApiCallAction.remoteIpDetails.ipAddressV4 service.action.kubernetesApiCallAction.remoteIpDetails.ipAddressV6 service.action.kubernetesApiCallAction.remoteIpDetails.organization.asn service.action.kubernetesApiCallAction.remoteIpDetails.organization.asnOrg service.action.kubernetesApiCallAction.remoteIpDetails.organization.isp service.action.kubernetesApiCallAction.remoteIpDetails.organization.org service.action.kubernetesApiCallAction.requestUri service.action.kubernetesApiCallAction.resource service.action.kubernetesApiCallAction.resourceName service.action.kubernetesApiCallAction.sourceIPs service.action.kubernetesApiCallAction.statusCode service.action.kubernetesApiCallAction.subresource service.action.kubernetesApiCallAction.userAgent service.action.kubernetesApiCallAction.verb service.action.kubernetesPermissionCheckedDetails.allowed service.action.kubernetesPermissionCheckedDetails.namespace service.action.kubernetesPermissionCheckedDetails.resource service.action.kubernetesPermissionCheckedDetails.verb service.action.kubernetesRoleBindingDetails.kind service.action.kubernetesRoleBindingDetails.name service.action.kubernetesRoleBindingDetails.roleRefKind service.action.kubernetesRoleBindingDetails.roleRefName service.action.kubernetesRoleBindingDetails.uid service.action.kubernetesRoleDetails.kind service.action.kubernetesRoleDetails.name service.action.kubernetesRoleDetails.uid service.action.networkConnectionAction.blocked service.action.networkConnectionAction.connectionDirection service.action.networkConnectionAction.localIpDetails.ipAddressV4 service.action.networkConnectionAction.localIpDetails.ipAddressV6 service.action.networkConnectionAction.localNetworkInterface service.action.networkConnectionAction.localPortDetails.port service.action.networkConnectionAction.localPortDetails.portName service.action.networkConnectionAction.protocol service.action.networkConnectionAction.remoteIpDetails.city.cityName service.action.networkConnectionAction.remoteIpDetails.country.countryCode service.action.networkConnectionAction.remoteIpDetails.country.countryName service.action.networkConnectionAction.remoteIpDetails.geoLocation.lat service.action.networkConnectionAction.remoteIpDetails.geoLocation.lon service.action.networkConnectionAction.remoteIpDetails.ipAddressV4 service.action.networkConnectionAction.remoteIpDetails.ipAddressV6 service.action.networkConnectionAction.remoteIpDetails.organization.asn service.action.networkConnectionAction.remoteIpDetails.organization.asnOrg service.action.networkConnectionAction.remoteIpDetails.organization.isp service.action.networkConnectionAction.remoteIpDetails.organization.org service.action.networkConnectionAction.remotePortDetails.port service.action.networkConnectionAction.remotePortDetails.portName service.action.portProbeAction.blocked service.action.portProbeAction.portProbeDetails.localIpDetails.ipAddressV4 service.action.portProbeAction.portProbeDetails.localIpDetails.ipAddressV6 service.action.portProbeAction.portProbeDetails.localPortDetails.port service.action.portProbeAction.portProbeDetails.localPortDetails.portName service.action.portProbeAction.portProbeDetails.remoteIpDetails.city.cityName service.action.portProbeAction.portProbeDetails.remoteIpDetails.country.countryCode service.action.portProbeAction.portProbeDetails.remoteIpDetails.country.countryName service.action.portProbeAction.portProbeDetails.remoteIpDetails.geoLocation.lat service.action.portProbeAction.portProbeDetails.remoteIpDetails.geoLocation.lon service.action.portProbeAction.portProbeDetails.remoteIpDetails.ipAddressV4 service.action.portProbeAction.portProbeDetails.remoteIpDetails.ipAddressV6 service.action.portProbeAction.portProbeDetails.remoteIpDetails.organization.asn service.action.portProbeAction.portProbeDetails.remoteIpDetails.organization.asnOrg service.action.portProbeAction.portProbeDetails.remoteIpDetails.organization.isp service.action.portProbeAction.portProbeDetails.remoteIpDetails.organization.org service.action.rdsLoginAttemptAction.loginAttributes.application service.action.rdsLoginAttemptAction.loginAttributes.failedLoginAttempts service.action.rdsLoginAttemptAction.loginAttributes.successfulLoginAttempts service.action.rdsLoginAttemptAction.loginAttributes.user service.action.rdsLoginAttemptAction.remoteIpDetails.city.cityName service.action.rdsLoginAttemptAction.remoteIpDetails.country.countryCode service.action.rdsLoginAttemptAction.remoteIpDetails.country.countryName service.action.rdsLoginAttemptAction.remoteIpDetails.geoLocation.lat service.action.rdsLoginAttemptAction.remoteIpDetails.geoLocation.lon service.action.rdsLoginAttemptAction.remoteIpDetails.ipAddressV4 service.action.rdsLoginAttemptAction.remoteIpDetails.ipAddressV6 service.action.rdsLoginAttemptAction.remoteIpDetails.organization.asn service.action.rdsLoginAttemptAction.remoteIpDetails.organization.asnOrg service.action.rdsLoginAttemptAction.remoteIpDetails.organization.isp service.action.rdsLoginAttemptAction.remoteIpDetails.organization.org service.additionalInfo.agentDetails.agentId service.additionalInfo.agentDetails.agentVersion service.additionalInfo.anomalies.anomalousAPIs service.additionalInfo.authenticationMethod service.additionalInfo.averagePacketSizeIn service.additionalInfo.averagePacketSizeOut service.additionalInfo.context service.additionalInfo.domain service.additionalInfo.inBytes service.additionalInfo.localNetworkInterfaceOwner service.additionalInfo.localPort service.additionalInfo.outBytes service.additionalInfo.packetsIn service.additionalInfo.packetsOut service.additionalInfo.policyArn service.additionalInfo.policyName service.additionalInfo.remotePort service.additionalInfo.sample service.additionalInfo.scannedPort service.additionalInfo.threatFileSha256 service.additionalInfo.threatListName service.additionalInfo.threatName service.additionalInfo.totalBytesIn service.additionalInfo.totalBytesOut service.additionalInfo.type service.additionalInfo.unusual.asnOrg service.additionalInfo.unusual.port service.additionalInfo.unusualProtocol service.additionalInfo.userAgent.fullUserAgent service.additionalInfo.userAgent.userAgentCategory service.additionalInfo.value service.additionalInfo.vpcOwnerAccountId service.archived service.count service.detection.anomaly.profiles service.detection.anomaly.unusual.behavior service.detection.sequence.actors.id service.detection.sequence.actors.process.name service.detection.sequence.actors.process.path service.detection.sequence.actors.process.sha256 service.detection.sequence.actors.session.createdTime Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.detection.sequence.actors.session.issuer service.detection.sequence.actors.session.mfaStatus service.detection.sequence.actors.session.uid service.detection.sequence.actors.user.account.account service.detection.sequence.actors.user.account.uid service.detection.sequence.actors.user.credentialUid service.detection.sequence.actors.user.name service.detection.sequence.actors.user.type service.detection.sequence.actors.user.uid service.detection.sequence.additionalSequenceTypes service.detection.sequence.description service.detection.sequence.endpoints.autonomousSystem.name service.detection.sequence.endpoints.autonomousSystem.number service.detection.sequence.endpoints.connection.direction service.detection.sequence.endpoints.domain service.detection.sequence.endpoints.id service.detection.sequence.endpoints.ip service.detection.sequence.endpoints.location.city service.detection.sequence.endpoints.location.country service.detection.sequence.endpoints.location.lat service.detection.sequence.endpoints.location.lon service.detection.sequence.endpoints.port service.detection.sequence.resources.accountId service.detection.sequence.resources.cloudPartition service.detection.sequence.resources.data.accessKey.principalId service.detection.sequence.resources.data.accessKey.userName service.detection.sequence.resources.data.accessKey.userType service.detection.sequence.resources.data.autoscalingAutoScalingGroup.ec2InstanceUids service.detection.sequence.resources.data.cloudformationStack.ec2InstanceUids service.detection.sequence.resources.data.container.image service.detection.sequence.resources.data.container.imageUid service.detection.sequence.resources.data.ec2Image.ec2InstanceUids service.detection.sequence.resources.data.ec2Instance.availabilityZone service.detection.sequence.resources.data.ec2Instance.ec2NetworkInterfaceUids service.detection.sequence.resources.data.ec2Instance.iamInstanceProfile.arn service.detection.sequence.resources.data.ec2Instance.iamInstanceProfile.id service.detection.sequence.resources.data.ec2Instance.imageDescription service.detection.sequence.resources.data.ec2Instance.instanceState service.detection.sequence.resources.data.ec2Instance.instanceType service.detection.sequence.resources.data.ec2Instance.outpostArn service.detection.sequence.resources.data.ec2Instance.platform service.detection.sequence.resources.data.ec2Instance.productCodes.productCodeId service.detection.sequence.resources.data.ec2Instance.productCodes.productCodeType service.detection.sequence.resources.data.ec2LaunchTemplate.ec2InstanceUids service.detection.sequence.resources.data.ec2LaunchTemplate.version service.detection.sequence.resources.data.ec2NetworkInterface.ipv6Addresses service.detection.sequence.resources.data.ec2NetworkInterface.privateIpAddresses.privateDnsName service.detection.sequence.resources.data.ec2NetworkInterface.privateIpAddresses.privateIpAddress service.detection.sequence.resources.data.ec2NetworkInterface.publicIp service.detection.sequence.resources.data.ec2NetworkInterface.securityGroups.groupId service.detection.sequence.resources.data.ec2NetworkInterface.securityGroups.groupName service.detection.sequence.resources.data.ec2NetworkInterface.subNetId service.detection.sequence.resources.data.ec2NetworkInterface.vpcId service.detection.sequence.resources.data.ec2Vpc.ec2InstanceUids service.detection.sequence.resources.data.ecsCluster.ec2InstanceUids service.detection.sequence.resources.data.ecsCluster.status service.detection.sequence.resources.data.ecsTask.containerUids service.detection.sequence.resources.data.ecsTask.createdAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.detection.sequence.resources.data.ecsTask.launchType service.detection.sequence.resources.data.ecsTask.taskDefinitionArn service.detection.sequence.resources.data.eksCluster.arn service.detection.sequence.resources.data.eksCluster.createdAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.detection.sequence.resources.data.eksCluster.ec2InstanceUids service.detection.sequence.resources.data.eksCluster.status service.detection.sequence.resources.data.eksCluster.vpcId service.detection.sequence.resources.data.iamInstanceProfile.ec2InstanceUids service.detection.sequence.resources.data.iamInstanceProfile.id service.detection.sequence.resources.data.kubernetesWorkload.containerUids service.detection.sequence.resources.data.kubernetesWorkload.namespace service.detection.sequence.resources.data.kubernetesWorkload.type service.detection.sequence.resources.data.s3Bucket.accountPublicAccess.publicAclAccess service.detection.sequence.resources.data.s3Bucket.accountPublicAccess.publicAclIgnoreBehavior service.detection.sequence.resources.data.s3Bucket.accountPublicAccess.publicBucketRestrictBehavior service.detection.sequence.resources.data.s3Bucket.accountPublicAccess.publicPolicyAccess service.detection.sequence.resources.data.s3Bucket.bucketPublicAccess.publicAclAccess service.detection.sequence.resources.data.s3Bucket.bucketPublicAccess.publicAclIgnoreBehavior service.detection.sequence.resources.data.s3Bucket.bucketPublicAccess.publicBucketRestrictBehavior service.detection.sequence.resources.data.s3Bucket.bucketPublicAccess.publicPolicyAccess service.detection.sequence.resources.data.s3Bucket.createdAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.detection.sequence.resources.data.s3Bucket.effectivePermission service.detection.sequence.resources.data.s3Bucket.encryptionKeyArn service.detection.sequence.resources.data.s3Bucket.encryptionType service.detection.sequence.resources.data.s3Bucket.ownerId service.detection.sequence.resources.data.s3Bucket.publicReadAccess service.detection.sequence.resources.data.s3Bucket.publicWriteAccess service.detection.sequence.resources.data.s3Bucket.s3ObjectUids service.detection.sequence.resources.data.s3Object.eTag service.detection.sequence.resources.data.s3Object.key service.detection.sequence.resources.data.s3Object.versionId service.detection.sequence.resources.name service.detection.sequence.resources.region service.detection.sequence.resources.resourceType service.detection.sequence.resources.service service.detection.sequence.resources.tags.key service.detection.sequence.resources.tags.value service.detection.sequence.resources.uid service.detection.sequence.sequenceIndicators.key service.detection.sequence.sequenceIndicators.title service.detection.sequence.sequenceIndicators.values service.detection.sequence.signals.actorIds service.detection.sequence.signals.count service.detection.sequence.signals.createdAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.detection.sequence.signals.description service.detection.sequence.signals.endpointIds service.detection.sequence.signals.firstSeenAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.detection.sequence.signals.lastSeenAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.detection.sequence.signals.name service.detection.sequence.signals.resourceUids service.detection.sequence.signals.severity service.detection.sequence.signals.signalIndicators.key service.detection.sequence.signals.signalIndicators.title service.detection.sequence.signals.signalIndicators.values service.detection.sequence.signals.type service.detection.sequence.signals.uid service.detection.sequence.signals.updatedAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.detection.sequence.uid service.detectorId service.ebsVolumeScanDetails.scanCompletedAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.ebsVolumeScanDetails.scanDetections.highestSeverityThreatDetails.count service.ebsVolumeScanDetails.scanDetections.highestSeverityThreatDetails.severity service.ebsVolumeScanDetails.scanDetections.highestSeverityThreatDetails.threatName service.ebsVolumeScanDetails.scanDetections.scannedItemCount.files service.ebsVolumeScanDetails.scanDetections.scannedItemCount.totalGb service.ebsVolumeScanDetails.scanDetections.scannedItemCount.volumes service.ebsVolumeScanDetails.scanDetections.threatDetectedByName.itemCount service.ebsVolumeScanDetails.scanDetections.threatDetectedByName.shortened service.ebsVolumeScanDetails.scanDetections.threatDetectedByName.threatNames.filePaths.fileName service.ebsVolumeScanDetails.scanDetections.threatDetectedByName.threatNames.filePaths.filePath service.ebsVolumeScanDetails.scanDetections.threatDetectedByName.threatNames.filePaths.hash service.ebsVolumeScanDetails.scanDetections.threatDetectedByName.threatNames.filePaths.volumeArn service.ebsVolumeScanDetails.scanDetections.threatDetectedByName.threatNames.itemCount service.ebsVolumeScanDetails.scanDetections.threatDetectedByName.threatNames.name service.ebsVolumeScanDetails.scanDetections.threatDetectedByName.threatNames.severity service.ebsVolumeScanDetails.scanDetections.threatDetectedByName.uniqueThreatNameCount service.ebsVolumeScanDetails.scanDetections.threatsDetectedItemCount.files service.ebsVolumeScanDetails.scanId service.ebsVolumeScanDetails.scanStartedAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.ebsVolumeScanDetails.scanType service.ebsVolumeScanDetails.sources service.ebsVolumeScanDetails.triggerFindingId service.eventFirstSeen Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.eventLastSeen Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.evidence.threatIntelligenceDetails.threatFileSha256 service.evidence.threatIntelligenceDetails.threatListName service.evidence.threatIntelligenceDetails.threatNames service.featureName service.malwareScanDetails.scanCategory service.malwareScanDetails.scanConfiguration.incrementalScanDetails.baselineResourceArn service.malwareScanDetails.scanConfiguration.triggerType service.malwareScanDetails.scanId service.malwareScanDetails.scanType service.malwareScanDetails.threats.count service.malwareScanDetails.threats.hash service.malwareScanDetails.threats.itemDetails.additionalInfo.deviceName service.malwareScanDetails.threats.itemDetails.additionalInfo.versionId service.malwareScanDetails.threats.itemDetails.hash service.malwareScanDetails.threats.itemDetails.itemPath service.malwareScanDetails.threats.itemDetails.resourceArn service.malwareScanDetails.threats.itemPaths.hash service.malwareScanDetails.threats.itemPaths.nestedItemPath service.malwareScanDetails.threats.name service.malwareScanDetails.threats.source service.malwareScanDetails.uniqueThreatCount service.resourceRole service.runtimeDetails.context.addressFamily service.runtimeDetails.context.commandLineExample service.runtimeDetails.context.fileOperation service.runtimeDetails.context.filePath service.runtimeDetails.context.fileSystemType service.runtimeDetails.context.flags service.runtimeDetails.context.ianaProtocolNumber service.runtimeDetails.context.ldPreloadValue service.runtimeDetails.context.libraryPath service.runtimeDetails.context.memoryRegions service.runtimeDetails.context.modifiedAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.runtimeDetails.context.modifyingProcess.euid service.runtimeDetails.context.modifyingProcess.executablePath service.runtimeDetails.context.modifyingProcess.executableSha256 service.runtimeDetails.context.modifyingProcess.lineage.euid service.runtimeDetails.context.modifyingProcess.lineage.executablePath service.runtimeDetails.context.modifyingProcess.lineage.name service.runtimeDetails.context.modifyingProcess.lineage.namespacePid service.runtimeDetails.context.modifyingProcess.lineage.parentUuid service.runtimeDetails.context.modifyingProcess.lineage.pid service.runtimeDetails.context.modifyingProcess.lineage.startTime Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.runtimeDetails.context.modifyingProcess.lineage.userId service.runtimeDetails.context.modifyingProcess.lineage.uuid service.runtimeDetails.context.modifyingProcess.name service.runtimeDetails.context.modifyingProcess.namespacePid service.runtimeDetails.context.modifyingProcess.parentUuid service.runtimeDetails.context.modifyingProcess.pid service.runtimeDetails.context.modifyingProcess.pwd service.runtimeDetails.context.modifyingProcess.startTime Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.runtimeDetails.context.modifyingProcess.user service.runtimeDetails.context.modifyingProcess.userId service.runtimeDetails.context.modifyingProcess.uuid service.runtimeDetails.context.moduleFilePath service.runtimeDetails.context.moduleName service.runtimeDetails.context.moduleSha256 service.runtimeDetails.context.mountSource service.runtimeDetails.context.mountTarget service.runtimeDetails.context.relatedFilePaths service.runtimeDetails.context.releaseAgentPath service.runtimeDetails.context.runcBinaryPath service.runtimeDetails.context.scriptPath service.runtimeDetails.context.serviceName service.runtimeDetails.context.shellHistoryFilePath service.runtimeDetails.context.socketPath service.runtimeDetails.context.targetProcess.euid service.runtimeDetails.context.targetProcess.executablePath service.runtimeDetails.context.targetProcess.executableSha256 service.runtimeDetails.context.targetProcess.lineage.euid service.runtimeDetails.context.targetProcess.lineage.executablePath service.runtimeDetails.context.targetProcess.lineage.name service.runtimeDetails.context.targetProcess.lineage.namespacePid service.runtimeDetails.context.targetProcess.lineage.parentUuid service.runtimeDetails.context.targetProcess.lineage.pid service.runtimeDetails.context.targetProcess.lineage.startTime Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.runtimeDetails.context.targetProcess.lineage.userId service.runtimeDetails.context.targetProcess.lineage.uuid service.runtimeDetails.context.targetProcess.name service.runtimeDetails.context.targetProcess.namespacePid service.runtimeDetails.context.targetProcess.parentUuid service.runtimeDetails.context.targetProcess.pid service.runtimeDetails.context.targetProcess.pwd service.runtimeDetails.context.targetProcess.startTime Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.runtimeDetails.context.targetProcess.user service.runtimeDetails.context.targetProcess.userId service.runtimeDetails.context.targetProcess.uuid service.runtimeDetails.context.threatFilePath service.runtimeDetails.context.toolCategory service.runtimeDetails.context.toolName service.runtimeDetails.process.euid service.runtimeDetails.process.executablePath service.runtimeDetails.process.executableSha256 service.runtimeDetails.process.lineage.euid service.runtimeDetails.process.lineage.executablePath service.runtimeDetails.process.lineage.name service.runtimeDetails.process.lineage.namespacePid service.runtimeDetails.process.lineage.parentUuid service.runtimeDetails.process.lineage.pid service.runtimeDetails.process.lineage.startTime Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.runtimeDetails.process.lineage.userId service.runtimeDetails.process.lineage.uuid service.runtimeDetails.process.name service.runtimeDetails.process.namespacePid service.runtimeDetails.process.parentUuid service.runtimeDetails.process.pid service.runtimeDetails.process.pwd service.runtimeDetails.process.startTime Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.runtimeDetails.process.user service.runtimeDetails.process.userId service.runtimeDetails.process.uuid service.serviceName service.userFeedback severity To configure severity based filters, use the following for the FindingCriteria condition: Low: \\[\"1\", \"2\", \"3\"\\] Medium: \\[\"4\", \"5\", \"6\"\\] High: \\[\"7\", \"8\"\\] Critical: \\[\"9\", \"10\"\\] For more information, see Findings severity levels in the Amazon GuardDuty User Guide. title type updatedAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000"]}letcontext_="UpdateFilterRequest"letmake?description=fun?action->fun?rank->fun?findingCriteria->fun~detectorId->fun~filterName->fun()->{description;action;rank;findingCriteria;detectorId;filterName}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("FilterName",(Some(String_.to_valuex.filterName)));("description",(Option.mapx.description~f:FilterDescription.to_value));("action",(Option.mapx.action~f:FilterAction.to_value));("rank",(Option.mapx.rank~f:FilterRank.to_value));("findingCriteria",(Option.mapx.findingCriteria~f:FindingCriteria.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letfindingCriteria=(Option.map~f:FindingCriteria.of_xml)(Xml.childxml_arg0"findingCriteria")inletrank=(Option.map~f:FilterRank.of_xml)(Xml.childxml_arg0"rank")inletaction=(Option.map~f:FilterAction.of_xml)(Xml.childxml_arg0"action")inletdescription=(Option.map~f:FilterDescription.of_xml)(Xml.childxml_arg0"description")inletfilterName=String_.of_xml(Xml.child_exn~context:context_xml_arg0"FilterName")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake?findingCriteria?rank?action?description~filterName~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letfindingCriteria=field_mapjson__"FindingCriteria"FindingCriteria.of_jsoninletrank=field_mapjson__"Rank"FilterRank.of_jsoninletaction=field_mapjson__"Action"FilterAction.of_jsoninletdescription=field_mapjson__"Description"FilterDescription.of_jsoninletfilterName=field_map_exnjson__"FilterName"String_.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake?findingCriteria?rank?action?description~filterName~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Updates the filter specified by the filter name."]moduleUpdateDetectorResponse=structtypenonrect=unittypenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.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"Updates the GuardDuty detector specified by the detector ID. Specifying both EKS Runtime Monitoring (EKS_RUNTIME_MONITORING) and Runtime Monitoring (RUNTIME_MONITORING) will cause an error. You can add only one of these two features because Runtime Monitoring already includes the threat detection for Amazon EKS resources. For more information, see Runtime Monitoring. There might be regional differences because some data sources might not be available in all the Amazon Web Services Regions where GuardDuty is presently supported. For more information, see Regions and endpoints."]moduleUpdateDetectorRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector to update. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];enable:Boolean.toption[@ocaml.doc"Specifies whether the detector is enabled or not enabled."];findingPublishingFrequency:FindingPublishingFrequency.toption[@ocaml.doc"An enum value that specifies how frequently findings are exported, such as to CloudWatch Events."];dataSources:DataSourceConfigurations.toption[@ocaml.doc"Describes which data sources will be updated. There might be regional differences because some data sources might not be available in all the Amazon Web Services Regions where GuardDuty is presently supported. For more information, see Regions and endpoints."];features:DetectorFeatureConfigurations.toption[@ocaml.doc"Provides the features that will be updated for the detector."]}letcontext_="UpdateDetectorRequest"letmake?enable=fun?findingPublishingFrequency->fun?dataSources->fun?features->fun~detectorId->fun()->{enable;findingPublishingFrequency;dataSources;features;detectorId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("enable",(Option.mapx.enable~f:Boolean.to_value));("findingPublishingFrequency",(Option.mapx.findingPublishingFrequency~f:FindingPublishingFrequency.to_value));("dataSources",(Option.mapx.dataSources~f:DataSourceConfigurations.to_value));("features",(Option.mapx.features~f:DetectorFeatureConfigurations.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letfeatures=(Option.map~f:DetectorFeatureConfigurations.of_xml)(Xml.childxml_arg0"features")inletdataSources=(Option.map~f:DataSourceConfigurations.of_xml)(Xml.childxml_arg0"dataSources")inletfindingPublishingFrequency=(Option.map~f:FindingPublishingFrequency.of_xml)(Xml.childxml_arg0"findingPublishingFrequency")inletenable=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"enable")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake?features?dataSources?findingPublishingFrequency?enable~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letfeatures=field_mapjson__"Features"DetectorFeatureConfigurations.of_jsoninletdataSources=field_mapjson__"DataSources"DataSourceConfigurations.of_jsoninletfindingPublishingFrequency=field_mapjson__"FindingPublishingFrequency"FindingPublishingFrequency.of_jsoninletenable=field_mapjson__"Enable"Boolean.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake?features?dataSources?findingPublishingFrequency?enable~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Updates the GuardDuty detector specified by the detector ID. Specifying both EKS Runtime Monitoring (EKS_RUNTIME_MONITORING) and Runtime Monitoring (RUNTIME_MONITORING) will cause an error. You can add only one of these two features because Runtime Monitoring already includes the threat detection for Amazon EKS resources. For more information, see Runtime Monitoring. There might be regional differences because some data sources might not be available in all the Amazon Web Services Regions where GuardDuty is presently supported. For more information, see Regions and endpoints."]moduleUntagResourceResponse=structtypenonrect=unittypenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.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))]|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.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 a resource."]moduleUntagResourceRequest=structtypenonrect={resourceArn:GuardDutyArn.t[@ocaml.doc"The Amazon Resource Name (ARN) for the resource to remove tags from."];tagKeys:TagKeyList.t[@ocaml.doc"The tag keys to remove from the resource."]}letcontext_="UntagResourceRequest"letmake~resourceArn=fun~tagKeys->fun()->{resourceArn;tagKeys}letto_valuex=structure_to_value[("ResourceArn",(Some(GuardDutyArn.to_valuex.resourceArn)));("tagKeys",(Some(TagKeyList.to_valuex.tagKeys)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettagKeys=TagKeyList.of_xml(Xml.child_exn~context:context_xml_arg0"tagKeys")inletresourceArn=GuardDutyArn.of_xml(Xml.child_exn~context:context_xml_arg0"ResourceArn")inmake~tagKeys~resourceArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettagKeys=field_map_exnjson__"TagKeys"TagKeyList.of_jsoninletresourceArn=field_map_exnjson__"ResourceArn"GuardDutyArn.of_jsoninmake~tagKeys~resourceArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Removes tags from a resource."]moduleUnarchiveFindingsResponse=structtypenonrect=unittypenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.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"Unarchives GuardDuty findings specified by the findingIds."]moduleUnarchiveFindingsRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The ID of the detector associated with the findings to unarchive. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];findingIds:FindingIds.t[@ocaml.doc"The IDs of the findings to unarchive."]}letcontext_="UnarchiveFindingsRequest"letmake~detectorId=fun~findingIds->fun()->{detectorId;findingIds}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("findingIds",(Some(FindingIds.to_valuex.findingIds)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letfindingIds=FindingIds.of_xml(Xml.child_exn~context:context_xml_arg0"findingIds")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake~findingIds~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letfindingIds=field_map_exnjson__"FindingIds"FindingIds.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake~findingIds~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Unarchives GuardDuty findings specified by the findingIds."]moduleTagResourceResponse=structtypenonrect=unittypenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.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))]|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.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 a resource."]moduleTagResourceRequest=structtypenonrect={resourceArn:GuardDutyArn.t[@ocaml.doc"The Amazon Resource Name (ARN) for the GuardDuty resource to apply a tag to."];tags:TagMap.t[@ocaml.doc"The tags to be added to a resource."]}letcontext_="TagResourceRequest"letmake~resourceArn=fun~tags->fun()->{resourceArn;tags}letto_valuex=structure_to_value[("ResourceArn",(Some(GuardDutyArn.to_valuex.resourceArn)));("tags",(Some(TagMap.to_valuex.tags)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=TagMap.of_xml(Xml.child_exn~context:context_xml_arg0"tags")inletresourceArn=GuardDutyArn.of_xml(Xml.child_exn~context:context_xml_arg0"ResourceArn")inmake~tags~resourceArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_map_exnjson__"Tags"TagMap.of_jsoninletresourceArn=field_map_exnjson__"ResourceArn"GuardDutyArn.of_jsoninmake~tags~resourceArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Adds tags to a resource."]moduleStopMonitoringMembersResponse=structtypenonrect={unprocessedAccounts:UnprocessedAccounts.toption[@ocaml.doc"A list of objects that contain an accountId for each account that could not be processed, and a result string that indicates why the account was not processed."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?unprocessedAccounts=fun()->{unprocessedAccounts}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("unprocessedAccounts",(Option.mapx.unprocessedAccounts~f:UnprocessedAccounts.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letunprocessedAccounts=(Option.map~f:UnprocessedAccounts.of_xml)(Xml.childxml_arg0"unprocessedAccounts")inmake?unprocessedAccounts()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letunprocessedAccounts=field_mapjson__"UnprocessedAccounts"UnprocessedAccounts.of_jsoninmake?unprocessedAccounts()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Stops GuardDuty monitoring for the specified member accounts. Use the StartMonitoringMembers operation to restart monitoring for those accounts. With autoEnableOrganizationMembers configuration for your organization set to ALL, you'll receive an error if you attempt to stop monitoring the member accounts in your organization."]moduleStopMonitoringMembersRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector associated with the GuardDuty administrator account that is monitoring member accounts. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];accountIds:AccountIds.t[@ocaml.doc"A list of account IDs for the member accounts to stop monitoring."]}letcontext_="StopMonitoringMembersRequest"letmake~detectorId=fun~accountIds->fun()->{detectorId;accountIds}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("accountIds",(Some(AccountIds.to_valuex.accountIds)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccountIds=AccountIds.of_xml(Xml.child_exn~context:context_xml_arg0"accountIds")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake~accountIds~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccountIds=field_map_exnjson__"AccountIds"AccountIds.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake~accountIds~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Stops GuardDuty monitoring for the specified member accounts. Use the StartMonitoringMembers operation to restart monitoring for those accounts. With autoEnableOrganizationMembers configuration for your organization set to ALL, you'll receive an error if you attempt to stop monitoring the member accounts in your organization."]moduleStartMonitoringMembersResponse=structtypenonrect={unprocessedAccounts:UnprocessedAccounts.toption[@ocaml.doc"A list of objects that contain the unprocessed account and a result string that explains why it was unprocessed."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?unprocessedAccounts=fun()->{unprocessedAccounts}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("unprocessedAccounts",(Option.mapx.unprocessedAccounts~f:UnprocessedAccounts.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letunprocessedAccounts=(Option.map~f:UnprocessedAccounts.of_xml)(Xml.childxml_arg0"unprocessedAccounts")inmake?unprocessedAccounts()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letunprocessedAccounts=field_mapjson__"UnprocessedAccounts"UnprocessedAccounts.of_jsoninmake?unprocessedAccounts()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Turns on GuardDuty monitoring of the specified member accounts. Use this operation to restart monitoring of accounts that you stopped monitoring with the StopMonitoringMembers operation."]moduleStartMonitoringMembersRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector of the GuardDuty administrator account associated with the member accounts to monitor. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];accountIds:AccountIds.t[@ocaml.doc"A list of account IDs of the GuardDuty member accounts to start monitoring."]}letcontext_="StartMonitoringMembersRequest"letmake~detectorId=fun~accountIds->fun()->{detectorId;accountIds}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("accountIds",(Some(AccountIds.to_valuex.accountIds)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccountIds=AccountIds.of_xml(Xml.child_exn~context:context_xml_arg0"accountIds")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake~accountIds~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccountIds=field_map_exnjson__"AccountIds"AccountIds.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake~accountIds~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Turns on GuardDuty monitoring of the specified member accounts. Use this operation to restart monitoring of accounts that you stopped monitoring with the StopMonitoringMembers operation."]moduleStartMalwareScanResponse=structtypenonrect={scanId:NonEmptyString.toption[@ocaml.doc"A unique identifier that gets generated when you invoke the API without any error. Each malware scan has a corresponding scan ID. Using this scan ID, you can monitor the status of your malware scan."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`ConflictExceptionofConflictException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?scanId=fun()->{scanId}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"ConflictException"->`ConflictException(ConflictException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"ConflictException"->`ConflictException(ConflictException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`ConflictExceptione->`Assoc[("error",(`String"ConflictException"));("details",(ConflictException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("scanId",(Option.mapx.scanId~f:NonEmptyString.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letscanId=(Option.map~f:NonEmptyString.of_xml)(Xml.childxml_arg0"scanId")inmake?scanId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letscanId=field_mapjson__"ScanId"NonEmptyString.of_jsoninmake?scanId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Initiates the malware scan. Invoking this API will automatically create the Service-linked role in the corresponding account if the resourceArn belongs to an EC2 instance. When the malware scan starts, you can use the associated scan ID to track the status of the scan. For more information, see ListMalwareScans and GetMalwareScan. When you use this API, the Amazon Web Services service terms for GuardDuty Malware Protection apply. For more information, see Amazon Web Services service terms for GuardDuty Malware Protection."]moduleStartMalwareScanRequest=structtypenonrect={resourceArn:ResourceArn.t[@ocaml.doc"Amazon Resource Name (ARN) of the resource for which you invoked the API."];clientToken:ClientToken.toption[@ocaml.doc"The idempotency token for the create request."];scanConfiguration:StartMalwareScanConfiguration.toption[@ocaml.doc"Contains information about the configuration to be used for the malware scan."]}letcontext_="StartMalwareScanRequest"letmake?clientToken=fun?scanConfiguration->fun~resourceArn->fun()->{clientToken;scanConfiguration;resourceArn}letto_valuex=structure_to_value[("resourceArn",(Some(ResourceArn.to_valuex.resourceArn)));("clientToken",(Option.mapx.clientToken~f:ClientToken.to_value));("scanConfiguration",(Option.mapx.scanConfiguration~f:StartMalwareScanConfiguration.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letscanConfiguration=(Option.map~f:StartMalwareScanConfiguration.of_xml)(Xml.childxml_arg0"scanConfiguration")inletclientToken=(Option.map~f:ClientToken.of_xml)(Xml.childxml_arg0"clientToken")inletresourceArn=ResourceArn.of_xml(Xml.child_exn~context:context_xml_arg0"resourceArn")inmake?scanConfiguration?clientToken~resourceArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letscanConfiguration=field_mapjson__"ScanConfiguration"StartMalwareScanConfiguration.of_jsoninletclientToken=field_mapjson__"ClientToken"ClientToken.of_jsoninletresourceArn=field_map_exnjson__"ResourceArn"ResourceArn.of_jsoninmake?scanConfiguration?clientToken~resourceArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Initiates the malware scan. Invoking this API will automatically create the Service-linked role in the corresponding account if the resourceArn belongs to an EC2 instance. When the malware scan starts, you can use the associated scan ID to track the status of the scan. For more information, see ListMalwareScans and GetMalwareScan. When you use this API, the Amazon Web Services service terms for GuardDuty Malware Protection apply. For more information, see Amazon Web Services service terms for GuardDuty Malware Protection."]moduleSendObjectMalwareScanResponse=structtypenonrect=unittypenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.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))]|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.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"Initiates a malware scan for a specific S3 object. This API allows you to perform on-demand malware scanning of individual objects in S3 buckets that have Malware Protection for S3 enabled. When you use this API, the Amazon Web Services service terms for GuardDuty Malware Protection apply. For more information, see Amazon Web Services service terms for GuardDuty Malware Protection."]moduleSendObjectMalwareScanRequest=structtypenonrect={s3Object:S3ObjectForSendObjectMalwareScan.toption[@ocaml.doc"The S3 object information for the object you want to scan. The bucket must have a Malware Protection plan configured to use this API."]}letmake?s3Object=fun()->{s3Object}letto_valuex=structure_to_value[("s3Object",(Option.mapx.s3Object~f:S3ObjectForSendObjectMalwareScan.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lets3Object=(Option.map~f:S3ObjectForSendObjectMalwareScan.of_xml)(Xml.childxml_arg0"s3Object")inmake?s3Object()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lets3Object=field_mapjson__"S3Object"S3ObjectForSendObjectMalwareScan.of_jsoninmake?s3Object()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Initiates a malware scan for a specific S3 object. This API allows you to perform on-demand malware scanning of individual objects in S3 buckets that have Malware Protection for S3 enabled. When you use this API, the Amazon Web Services service terms for GuardDuty Malware Protection apply. For more information, see Amazon Web Services service terms for GuardDuty Malware Protection."]moduleListTrustedEntitySetsResponse=structtypenonrect={trustedEntitySetIds:TrustedEntitySetIds.toption[@ocaml.doc"The IDs of the trusted entity set resources."];nextToken:String_.toption[@ocaml.doc"The pagination parameter to be used on the next list operation to retrieve more items."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?trustedEntitySetIds=fun?nextToken->fun()->{trustedEntitySetIds;nextToken}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("trustedEntitySetIds",(Option.mapx.trustedEntitySetIds~f:TrustedEntitySetIds.to_value));("nextToken",(Option.mapx.nextToken~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inlettrustedEntitySetIds=(Option.map~f:TrustedEntitySetIds.of_xml)(Xml.childxml_arg0"trustedEntitySetIds")inmake?nextToken?trustedEntitySetIds()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"String_.of_jsoninlettrustedEntitySetIds=field_mapjson__"TrustedEntitySetIds"TrustedEntitySetIds.of_jsoninmake?nextToken?trustedEntitySetIds()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists the trusted entity sets associated with the specified GuardDuty detector ID. If you use this operation from a member account, the trusted entity sets that are returned as a response, belong to the administrator account."]moduleListTrustedEntitySetsRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the GuardDuty detector that is associated with this threat entity set. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];maxResults:MaxResults.toption[@ocaml.doc"You can use this parameter to indicate the maximum number of items you want in the response. The default value is 50."];nextToken:String_.toption[@ocaml.doc"You can use this parameter when paginating results. Set the value of this parameter to null on your first call to the list action. For subsequent calls to the action, fill nextToken in the request with the value of NextToken from the previous response to continue listing data."]}letcontext_="ListTrustedEntitySetsRequest"letmake?maxResults=fun?nextToken->fun~detectorId->fun()->{maxResults;nextToken;detectorId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("maxResults",(Option.mapx.maxResults~f:MaxResults.to_value));("nextToken",(Option.mapx.nextToken~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inletmaxResults=(Option.map~f:MaxResults.of_xml)(Xml.childxml_arg0"maxResults")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake?nextToken?maxResults~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"String_.of_jsoninletmaxResults=field_mapjson__"MaxResults"MaxResults.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake?nextToken?maxResults~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists the trusted entity sets associated with the specified GuardDuty detector ID. If you use this operation from a member account, the trusted entity sets that are returned as a response, belong to the administrator account."]moduleListThreatIntelSetsResponse=structtypenonrect={threatIntelSetIds:ThreatIntelSetIds.toption[@ocaml.doc"The IDs of the ThreatIntelSet resources."];nextToken:String_.toption[@ocaml.doc"The pagination parameter to be used on the next list operation to retrieve more items."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?threatIntelSetIds=fun?nextToken->fun()->{threatIntelSetIds;nextToken}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("threatIntelSetIds",(Option.mapx.threatIntelSetIds~f:ThreatIntelSetIds.to_value));("nextToken",(Option.mapx.nextToken~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inletthreatIntelSetIds=(Option.map~f:ThreatIntelSetIds.of_xml)(Xml.childxml_arg0"threatIntelSetIds")inmake?nextToken?threatIntelSetIds()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"String_.of_jsoninletthreatIntelSetIds=field_mapjson__"ThreatIntelSetIds"ThreatIntelSetIds.of_jsoninmake?nextToken?threatIntelSetIds()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists the ThreatIntelSets of the GuardDuty service specified by the detector ID. If you use this operation from a member account, the ThreatIntelSets associated with the administrator account are returned."]moduleListThreatIntelSetsRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector that is associated with the threatIntelSet. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];maxResults:MaxResults.toption[@ocaml.doc"You can use this parameter to indicate the maximum number of items that you want in the response. The default value is 50. The maximum value is 50."];nextToken:String_.toption[@ocaml.doc"You can use this parameter to paginate results in the response. Set the value of this parameter to null on your first call to the list action. For subsequent calls to the action, fill nextToken in the request with the value of NextToken from the previous response to continue listing data."]}letcontext_="ListThreatIntelSetsRequest"letmake?maxResults=fun?nextToken->fun~detectorId->fun()->{maxResults;nextToken;detectorId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("maxResults",(Option.mapx.maxResults~f:MaxResults.to_value));("nextToken",(Option.mapx.nextToken~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inletmaxResults=(Option.map~f:MaxResults.of_xml)(Xml.childxml_arg0"maxResults")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake?nextToken?maxResults~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"String_.of_jsoninletmaxResults=field_mapjson__"MaxResults"MaxResults.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake?nextToken?maxResults~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists the ThreatIntelSets of the GuardDuty service specified by the detector ID. If you use this operation from a member account, the ThreatIntelSets associated with the administrator account are returned."]moduleListThreatEntitySetsResponse=structtypenonrect={threatEntitySetIds:ThreatEntitySetIds.toption[@ocaml.doc"The IDs of the threat entity set resources."];nextToken:String_.toption[@ocaml.doc"The pagination parameter to be used on the next list operation to retrieve more items."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?threatEntitySetIds=fun?nextToken->fun()->{threatEntitySetIds;nextToken}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("threatEntitySetIds",(Option.mapx.threatEntitySetIds~f:ThreatEntitySetIds.to_value));("nextToken",(Option.mapx.nextToken~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inletthreatEntitySetIds=(Option.map~f:ThreatEntitySetIds.of_xml)(Xml.childxml_arg0"threatEntitySetIds")inmake?nextToken?threatEntitySetIds()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"String_.of_jsoninletthreatEntitySetIds=field_mapjson__"ThreatEntitySetIds"ThreatEntitySetIds.of_jsoninmake?nextToken?threatEntitySetIds()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists the threat entity sets associated with the specified GuardDuty detector ID. If you use this operation from a member account, the threat entity sets that are returned as a response, belong to the administrator account."]moduleListThreatEntitySetsRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the GuardDuty detector that is associated with this threat entity set. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];maxResults:MaxResults.toption[@ocaml.doc"You can use this parameter to indicate the maximum number of items you want in the response. The default value is 50."];nextToken:String_.toption[@ocaml.doc"You can use this parameter when paginating results. Set the value of this parameter to null on your first call to the list action. For subsequent calls to the action, fill nextToken in the request with the value of NextToken from the previous response to continue listing data."]}letcontext_="ListThreatEntitySetsRequest"letmake?maxResults=fun?nextToken->fun~detectorId->fun()->{maxResults;nextToken;detectorId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("maxResults",(Option.mapx.maxResults~f:MaxResults.to_value));("nextToken",(Option.mapx.nextToken~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inletmaxResults=(Option.map~f:MaxResults.of_xml)(Xml.childxml_arg0"maxResults")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake?nextToken?maxResults~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"String_.of_jsoninletmaxResults=field_mapjson__"MaxResults"MaxResults.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake?nextToken?maxResults~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists the threat entity sets associated with the specified GuardDuty detector ID. If you use this operation from a member account, the threat entity sets that are returned as a response, belong to the administrator account."]moduleListTagsForResourceResponse=structtypenonrect={tags:TagMap.toption[@ocaml.doc"The tags associated with the resource."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?tags=fun()->{tags}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.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))]|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.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:TagMap.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:TagMap.of_xml)(Xml.childxml_arg0"tags")inmake?tags()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"Tags"TagMap.of_jsoninmake?tags()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists tags for a resource. Tagging is currently supported for detectors, finding filters, IP sets, threat intel sets, and publishing destination, with a limit of 50 tags per resource. When invoked, this operation returns all assigned tags for a given resource."]moduleListTagsForResourceRequest=structtypenonrect={resourceArn:GuardDutyArn.t[@ocaml.doc"The Amazon Resource Name (ARN) for the given GuardDuty resource."]}letcontext_="ListTagsForResourceRequest"letmake~resourceArn=fun()->{resourceArn}letto_valuex=structure_to_value[("ResourceArn",(Some(GuardDutyArn.to_valuex.resourceArn)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letresourceArn=GuardDutyArn.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"GuardDutyArn.of_jsoninmake~resourceArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists tags for a resource. Tagging is currently supported for detectors, finding filters, IP sets, threat intel sets, and publishing destination, with a limit of 50 tags per resource. When invoked, this operation returns all assigned tags for a given resource."]moduleListPublishingDestinationsResponse=structtypenonrect={destinations:Destinations.toption[@ocaml.doc"A Destinations object that includes information about each publishing destination returned."];nextToken:String_.toption[@ocaml.doc"A token to use for paginating results that are returned in the response. Set the value of this parameter to null for the first request to a list action. For subsequent calls, use the NextToken value returned from the previous request to continue listing results after the first page."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?destinations=fun?nextToken->fun()->{destinations;nextToken}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("destinations",(Option.mapx.destinations~f:Destinations.to_value));("nextToken",(Option.mapx.nextToken~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inletdestinations=(Option.map~f:Destinations.of_xml)(Xml.childxml_arg0"destinations")inmake?nextToken?destinations()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"String_.of_jsoninletdestinations=field_mapjson__"Destinations"Destinations.of_jsoninmake?nextToken?destinations()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns a list of publishing destinations associated with the specified detectorId."]moduleListPublishingDestinationsRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The detector ID for which you want to retrieve the publishing destination. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];maxResults:MaxResults.toption[@ocaml.doc"The maximum number of results to return in the response."];nextToken:String_.toption[@ocaml.doc"A token to use for paginating results that are returned in the response. Set the value of this parameter to null for the first request to a list action. For subsequent calls, use the NextToken value returned from the previous request to continue listing results after the first page."]}letcontext_="ListPublishingDestinationsRequest"letmake?maxResults=fun?nextToken->fun~detectorId->fun()->{maxResults;nextToken;detectorId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("maxResults",(Option.mapx.maxResults~f:MaxResults.to_value));("nextToken",(Option.mapx.nextToken~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inletmaxResults=(Option.map~f:MaxResults.of_xml)(Xml.childxml_arg0"maxResults")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake?nextToken?maxResults~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"String_.of_jsoninletmaxResults=field_mapjson__"MaxResults"MaxResults.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake?nextToken?maxResults~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns a list of publishing destinations associated with the specified detectorId."]moduleListOrganizationAdminAccountsResponse=structtypenonrect={adminAccounts:AdminAccounts.toption[@ocaml.doc"A list of accounts configured as GuardDuty delegated administrators."];nextToken:String_.toption[@ocaml.doc"The pagination parameter to be used on the next list operation to retrieve more items."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?adminAccounts=fun?nextToken->fun()->{adminAccounts;nextToken}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("adminAccounts",(Option.mapx.adminAccounts~f:AdminAccounts.to_value));("nextToken",(Option.mapx.nextToken~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inletadminAccounts=(Option.map~f:AdminAccounts.of_xml)(Xml.childxml_arg0"adminAccounts")inmake?nextToken?adminAccounts()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"String_.of_jsoninletadminAccounts=field_mapjson__"AdminAccounts"AdminAccounts.of_jsoninmake?nextToken?adminAccounts()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists the accounts designated as GuardDuty delegated administrators. Only the organization's management account can run this API operation."]moduleListOrganizationAdminAccountsRequest=structtypenonrect={maxResults:MaxResults.toption[@ocaml.doc"The maximum number of results to return in the response."];nextToken:String_.toption[@ocaml.doc"A token to use for paginating results that are returned in the response. Set the value of this parameter to null for the first request to a list action. For subsequent calls, use the NextToken value returned from the previous request to continue listing results after the first page."]}letmake?maxResults=fun?nextToken->fun()->{maxResults;nextToken}letto_valuex=structure_to_value[("maxResults",(Option.mapx.maxResults~f:MaxResults.to_value));("nextToken",(Option.mapx.nextToken~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inletmaxResults=(Option.map~f:MaxResults.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"String_.of_jsoninletmaxResults=field_mapjson__"MaxResults"MaxResults.of_jsoninmake?nextToken?maxResults()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists the accounts designated as GuardDuty delegated administrators. Only the organization's management account can run this API operation."]moduleListMembersResponse=structtypenonrect={members:Members.toption[@ocaml.doc"A list of members. The values for email and invitedAt are available only if the member accounts are added by invitation."];nextToken:String_.toption[@ocaml.doc"The pagination parameter to be used on the next list operation to retrieve more items."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?members=fun?nextToken->fun()->{members;nextToken}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("members",(Option.mapx.members~f:Members.to_value));("nextToken",(Option.mapx.nextToken~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inletmembers=(Option.map~f:Members.of_xml)(Xml.childxml_arg0"members")inmake?nextToken?members()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"String_.of_jsoninletmembers=field_mapjson__"Members"Members.of_jsoninmake?nextToken?members()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists details about all member accounts for the current GuardDuty administrator account."]moduleListMembersRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector that is associated with the member. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];maxResults:MaxResults.toption[@ocaml.doc"You can use this parameter to indicate the maximum number of items you want in the response. The default value is 50. The maximum value is 50."];nextToken:String_.toption[@ocaml.doc"You can use this parameter when paginating results. Set the value of this parameter to null on your first call to the list action. For subsequent calls to the action, fill nextToken in the request with the value of NextToken from the previous response to continue listing data."];onlyAssociated:String_.toption[@ocaml.doc"Specifies whether to only return associated members or to return all members (including members who haven't been invited yet or have been disassociated). Member accounts must have been previously associated with the GuardDuty administrator account using Create Members ."]}letcontext_="ListMembersRequest"letmake?maxResults=fun?nextToken->fun?onlyAssociated->fun~detectorId->fun()->{maxResults;nextToken;onlyAssociated;detectorId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("maxResults",(Option.mapx.maxResults~f:MaxResults.to_value));("nextToken",(Option.mapx.nextToken~f:String_.to_value));("onlyAssociated",(Option.mapx.onlyAssociated~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letonlyAssociated=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"onlyAssociated")inletnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inletmaxResults=(Option.map~f:MaxResults.of_xml)(Xml.childxml_arg0"maxResults")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake?onlyAssociated?nextToken?maxResults~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letonlyAssociated=field_mapjson__"OnlyAssociated"String_.of_jsoninletnextToken=field_mapjson__"NextToken"String_.of_jsoninletmaxResults=field_mapjson__"MaxResults"MaxResults.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake?onlyAssociated?nextToken?maxResults~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists details about all member accounts for the current GuardDuty administrator account."]moduleListMalwareScansResponse=structtypenonrect={scans:MalwareScans.toption[@ocaml.doc"The list of malware scans associated with the provided input parameters."];nextToken:String_.toption[@ocaml.doc"The pagination parameter to be used on the next list operation to retrieve more scans."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?scans=fun?nextToken->fun()->{scans;nextToken}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("scans",(Option.mapx.scans~f:MalwareScans.to_value));("nextToken",(Option.mapx.nextToken~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inletscans=(Option.map~f:MalwareScans.of_xml)(Xml.childxml_arg0"scans")inmake?nextToken?scans()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"String_.of_jsoninletscans=field_mapjson__"Scans"MalwareScans.of_jsoninmake?nextToken?scans()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns a list of malware scans. Each member account can view the malware scans for their own accounts. An administrator can view the malware scans for all of its members' accounts."]moduleListMalwareScansRequest=structtypenonrect={maxResults:MaxResults.toption[@ocaml.doc"You can use this parameter to indicate the maximum number of items that you want in the response. The default value is 50. The maximum value is 50."];nextToken:String_.toption[@ocaml.doc"You can use this parameter when paginating results. Set the value of this parameter to null on your first call to the list action. For subsequent calls to the action, fill nextToken in the request with the value of NextToken from the previous response to continue listing results."];filterCriteria:ListMalwareScansFilterCriteria.toption[@ocaml.doc"Represents the criteria used to filter the malware scan entries."];sortCriteria:SortCriteria.toption[@ocaml.doc"Represents the criteria used for sorting malware scan entries."]}letmake?maxResults=fun?nextToken->fun?filterCriteria->fun?sortCriteria->fun()->{maxResults;nextToken;filterCriteria;sortCriteria}letto_valuex=structure_to_value[("maxResults",(Option.mapx.maxResults~f:MaxResults.to_value));("nextToken",(Option.mapx.nextToken~f:String_.to_value));("filterCriteria",(Option.mapx.filterCriteria~f:ListMalwareScansFilterCriteria.to_value));("sortCriteria",(Option.mapx.sortCriteria~f:SortCriteria.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letsortCriteria=(Option.map~f:SortCriteria.of_xml)(Xml.childxml_arg0"sortCriteria")inletfilterCriteria=(Option.map~f:ListMalwareScansFilterCriteria.of_xml)(Xml.childxml_arg0"filterCriteria")inletnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inletmaxResults=(Option.map~f:MaxResults.of_xml)(Xml.childxml_arg0"maxResults")inmake?sortCriteria?filterCriteria?nextToken?maxResults()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letsortCriteria=field_mapjson__"SortCriteria"SortCriteria.of_jsoninletfilterCriteria=field_mapjson__"FilterCriteria"ListMalwareScansFilterCriteria.of_jsoninletnextToken=field_mapjson__"NextToken"String_.of_jsoninletmaxResults=field_mapjson__"MaxResults"MaxResults.of_jsoninmake?sortCriteria?filterCriteria?nextToken?maxResults()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns a list of malware scans. Each member account can view the malware scans for their own accounts. An administrator can view the malware scans for all of its members' accounts."]moduleListMalwareProtectionPlansResponse=structtypenonrect={malwareProtectionPlans:MalwareProtectionPlansSummary.toption[@ocaml.doc"A list of unique identifiers associated with each Malware Protection plan."];nextToken:String_.toption[@ocaml.doc"You can use this parameter when paginating results. Set the value of this parameter to null on your first call to the list action. For subsequent calls to the action, fill nextToken in the request with the value of NextToken from the previous response to continue listing data."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?malwareProtectionPlans=fun?nextToken->fun()->{malwareProtectionPlans;nextToken}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.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))]|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("malwareProtectionPlans",(Option.mapx.malwareProtectionPlans~f:MalwareProtectionPlansSummary.to_value));("nextToken",(Option.mapx.nextToken~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inletmalwareProtectionPlans=(Option.map~f:MalwareProtectionPlansSummary.of_xml)(Xml.childxml_arg0"malwareProtectionPlans")inmake?nextToken?malwareProtectionPlans()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"String_.of_jsoninletmalwareProtectionPlans=field_mapjson__"MalwareProtectionPlans"MalwareProtectionPlansSummary.of_jsoninmake?nextToken?malwareProtectionPlans()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists the Malware Protection plan IDs associated with the protected resources in your Amazon Web Services account."]moduleListMalwareProtectionPlansRequest=structtypenonrect={nextToken:String_.toption[@ocaml.doc"You can use this parameter when paginating results. Set the value of this parameter to null on your first call to the list action. For subsequent calls to the action, fill nextToken in the request with the value of NextToken from the previous response to continue listing data. The default page size is 100 plans."]}letmake?nextToken=fun()->{nextToken}letto_valuex=structure_to_value[("nextToken",(Option.mapx.nextToken~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inmake?nextToken()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"String_.of_jsoninmake?nextToken()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists the Malware Protection plan IDs associated with the protected resources in your Amazon Web Services account."]moduleListInvitationsResponse=structtypenonrect={invitations:Invitations.toption[@ocaml.doc"A list of invitation descriptions."];nextToken:String_.toption[@ocaml.doc"The pagination parameter to be used on the next list operation to retrieve more items."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?invitations=fun?nextToken->fun()->{invitations;nextToken}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("invitations",(Option.mapx.invitations~f:Invitations.to_value));("nextToken",(Option.mapx.nextToken~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inletinvitations=(Option.map~f:Invitations.of_xml)(Xml.childxml_arg0"invitations")inmake?nextToken?invitations()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"String_.of_jsoninletinvitations=field_mapjson__"Invitations"Invitations.of_jsoninmake?nextToken?invitations()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists all GuardDuty membership invitations that were sent to the current Amazon Web Services account."]moduleListInvitationsRequest=structtypenonrect={maxResults:MaxResults.toption[@ocaml.doc"You can use this parameter to indicate the maximum number of items that you want in the response. The default value is 50. The maximum value is 50."];nextToken:String_.toption[@ocaml.doc"You can use this parameter when paginating results. Set the value of this parameter to null on your first call to the list action. For subsequent calls to the action, fill nextToken in the request with the value of NextToken from the previous response to continue listing data."]}letmake?maxResults=fun?nextToken->fun()->{maxResults;nextToken}letto_valuex=structure_to_value[("maxResults",(Option.mapx.maxResults~f:MaxResults.to_value));("nextToken",(Option.mapx.nextToken~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inletmaxResults=(Option.map~f:MaxResults.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"String_.of_jsoninletmaxResults=field_mapjson__"MaxResults"MaxResults.of_jsoninmake?nextToken?maxResults()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists all GuardDuty membership invitations that were sent to the current Amazon Web Services account."]moduleListIPSetsResponse=structtypenonrect={ipSetIds:IpSetIds.toption[@ocaml.doc"The IDs of the IPSet resources."];nextToken:String_.toption[@ocaml.doc"The pagination parameter to be used on the next list operation to retrieve more items."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?ipSetIds=fun?nextToken->fun()->{ipSetIds;nextToken}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("ipSetIds",(Option.mapx.ipSetIds~f:IpSetIds.to_value));("nextToken",(Option.mapx.nextToken~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inletipSetIds=(Option.map~f:IpSetIds.of_xml)(Xml.childxml_arg0"ipSetIds")inmake?nextToken?ipSetIds()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"String_.of_jsoninletipSetIds=field_mapjson__"IpSetIds"IpSetIds.of_jsoninmake?nextToken?ipSetIds()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists the IPSets of the GuardDuty service specified by the detector ID. If you use this operation from a member account, the IPSets returned are the IPSets from the associated administrator account."]moduleListIPSetsRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector that is associated with IPSet. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];maxResults:MaxResults.toption[@ocaml.doc"You can use this parameter to indicate the maximum number of items you want in the response. The default value is 50. The maximum value is 50."];nextToken:String_.toption[@ocaml.doc"You can use this parameter when paginating results. Set the value of this parameter to null on your first call to the list action. For subsequent calls to the action, fill nextToken in the request with the value of NextToken from the previous response to continue listing data."]}letcontext_="ListIPSetsRequest"letmake?maxResults=fun?nextToken->fun~detectorId->fun()->{maxResults;nextToken;detectorId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("maxResults",(Option.mapx.maxResults~f:MaxResults.to_value));("nextToken",(Option.mapx.nextToken~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inletmaxResults=(Option.map~f:MaxResults.of_xml)(Xml.childxml_arg0"maxResults")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake?nextToken?maxResults~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"String_.of_jsoninletmaxResults=field_mapjson__"MaxResults"MaxResults.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake?nextToken?maxResults~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists the IPSets of the GuardDuty service specified by the detector ID. If you use this operation from a member account, the IPSets returned are the IPSets from the associated administrator account."]moduleListFindingsResponse=structtypenonrect={findingIds:FindingIds.toption[@ocaml.doc"The IDs of the findings that you're listing."];nextToken:String_.toption[@ocaml.doc"The pagination parameter to be used on the next list operation to retrieve more items."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?findingIds=fun?nextToken->fun()->{findingIds;nextToken}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("findingIds",(Option.mapx.findingIds~f:FindingIds.to_value));("nextToken",(Option.mapx.nextToken~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inletfindingIds=(Option.map~f:FindingIds.of_xml)(Xml.childxml_arg0"findingIds")inmake?nextToken?findingIds()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"String_.of_jsoninletfindingIds=field_mapjson__"FindingIds"FindingIds.of_jsoninmake?nextToken?findingIds()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists GuardDuty findings for the specified detector ID. There might be regional differences because some flags might not be available in all the Regions where GuardDuty is currently supported. For more information, see Regions and endpoints."]moduleListFindingsRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The ID of the detector that specifies the GuardDuty service whose findings you want to list. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];findingCriteria:FindingCriteria.toption[@ocaml.doc"Represents the criteria used for querying findings. Valid values include: JSON field name accountId region confidence id resource.accessKeyDetails.accessKeyId resource.accessKeyDetails.principalId resource.accessKeyDetails.userName resource.accessKeyDetails.userType resource.instanceDetails.iamInstanceProfile.id resource.instanceDetails.imageId resource.instanceDetails.instanceId resource.instanceDetails.networkInterfaces.ipv6Addresses resource.instanceDetails.networkInterfaces.privateIpAddresses.privateIpAddress resource.instanceDetails.networkInterfaces.publicDnsName resource.instanceDetails.networkInterfaces.publicIp resource.instanceDetails.networkInterfaces.securityGroups.groupId resource.instanceDetails.networkInterfaces.securityGroups.groupName resource.instanceDetails.networkInterfaces.subnetId resource.instanceDetails.networkInterfaces.vpcId resource.instanceDetails.tags.key resource.instanceDetails.tags.value resource.resourceType service.action.actionType service.action.awsApiCallAction.api service.action.awsApiCallAction.callerType service.action.awsApiCallAction.remoteIpDetails.city.cityName service.action.awsApiCallAction.remoteIpDetails.country.countryName service.action.awsApiCallAction.remoteIpDetails.ipAddressV4 service.action.awsApiCallAction.remoteIpDetails.organization.asn service.action.awsApiCallAction.remoteIpDetails.organization.asnOrg service.action.awsApiCallAction.serviceName service.action.dnsRequestAction.domain service.action.dnsRequestAction.domainWithSuffix service.action.networkConnectionAction.blocked service.action.networkConnectionAction.connectionDirection service.action.networkConnectionAction.localPortDetails.port service.action.networkConnectionAction.protocol service.action.networkConnectionAction.remoteIpDetails.country.countryName service.action.networkConnectionAction.remoteIpDetails.ipAddressV4 service.action.networkConnectionAction.remoteIpDetails.organization.asn service.action.networkConnectionAction.remoteIpDetails.organization.asnOrg service.action.networkConnectionAction.remotePortDetails.port service.additionalInfo.threatListName service.archived When this attribute is set to 'true', only archived findings are listed. When it's set to 'false', only unarchived findings are listed. When this attribute is not set, all existing findings are listed. service.ebsVolumeScanDetails.scanId service.resourceRole severity type updatedAt Type: Timestamp in Unix Epoch millisecond format: 1486685375000"];sortCriteria:SortCriteria.toption[@ocaml.doc"Represents the criteria used for sorting findings."];maxResults:MaxResults.toption[@ocaml.doc"You can use this parameter to indicate the maximum number of items you want in the response. The default value is 50. The maximum value is 50."];nextToken:String_.toption[@ocaml.doc"You can use this parameter when paginating results. Set the value of this parameter to null on your first call to the list action. For subsequent calls to the action, fill nextToken in the request with the value of NextToken from the previous response to continue listing data."]}letcontext_="ListFindingsRequest"letmake?findingCriteria=fun?sortCriteria->fun?maxResults->fun?nextToken->fun~detectorId->fun()->{findingCriteria;sortCriteria;maxResults;nextToken;detectorId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("findingCriteria",(Option.mapx.findingCriteria~f:FindingCriteria.to_value));("sortCriteria",(Option.mapx.sortCriteria~f:SortCriteria.to_value));("maxResults",(Option.mapx.maxResults~f:MaxResults.to_value));("nextToken",(Option.mapx.nextToken~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inletmaxResults=(Option.map~f:MaxResults.of_xml)(Xml.childxml_arg0"maxResults")inletsortCriteria=(Option.map~f:SortCriteria.of_xml)(Xml.childxml_arg0"sortCriteria")inletfindingCriteria=(Option.map~f:FindingCriteria.of_xml)(Xml.childxml_arg0"findingCriteria")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake?nextToken?maxResults?sortCriteria?findingCriteria~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"String_.of_jsoninletmaxResults=field_mapjson__"MaxResults"MaxResults.of_jsoninletsortCriteria=field_mapjson__"SortCriteria"SortCriteria.of_jsoninletfindingCriteria=field_mapjson__"FindingCriteria"FindingCriteria.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake?nextToken?maxResults?sortCriteria?findingCriteria~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists GuardDuty findings for the specified detector ID. There might be regional differences because some flags might not be available in all the Regions where GuardDuty is currently supported. For more information, see Regions and endpoints."]moduleListFiltersResponse=structtypenonrect={filterNames:FilterNames.toption[@ocaml.doc"A list of filter names."];nextToken:String_.toption[@ocaml.doc"The pagination parameter to be used on the next list operation to retrieve more items."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?filterNames=fun?nextToken->fun()->{filterNames;nextToken}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("filterNames",(Option.mapx.filterNames~f:FilterNames.to_value));("nextToken",(Option.mapx.nextToken~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inletfilterNames=(Option.map~f:FilterNames.of_xml)(Xml.childxml_arg0"filterNames")inmake?nextToken?filterNames()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"String_.of_jsoninletfilterNames=field_mapjson__"FilterNames"FilterNames.of_jsoninmake?nextToken?filterNames()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns a paginated list of the current filters."]moduleListFiltersRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector that is associated with the filter. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];maxResults:MaxResults.toption[@ocaml.doc"You can use this parameter to indicate the maximum number of items that you want in the response. The default value is 50. The maximum value is 50."];nextToken:String_.toption[@ocaml.doc"You can use this parameter when paginating results. Set the value of this parameter to null on your first call to the list action. For subsequent calls to the action, fill nextToken in the request with the value of NextToken from the previous response to continue listing data."]}letcontext_="ListFiltersRequest"letmake?maxResults=fun?nextToken->fun~detectorId->fun()->{maxResults;nextToken;detectorId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("maxResults",(Option.mapx.maxResults~f:MaxResults.to_value));("nextToken",(Option.mapx.nextToken~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inletmaxResults=(Option.map~f:MaxResults.of_xml)(Xml.childxml_arg0"maxResults")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake?nextToken?maxResults~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"String_.of_jsoninletmaxResults=field_mapjson__"MaxResults"MaxResults.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake?nextToken?maxResults~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns a paginated list of the current filters."]moduleListDetectorsResponse=structtypenonrect={detectorIds:DetectorIds.toption[@ocaml.doc"A list of detector IDs."];nextToken:String_.toption[@ocaml.doc"The pagination parameter to be used on the next list operation to retrieve more items."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?detectorIds=fun?nextToken->fun()->{detectorIds;nextToken}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("detectorIds",(Option.mapx.detectorIds~f:DetectorIds.to_value));("nextToken",(Option.mapx.nextToken~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inletdetectorIds=(Option.map~f:DetectorIds.of_xml)(Xml.childxml_arg0"detectorIds")inmake?nextToken?detectorIds()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"String_.of_jsoninletdetectorIds=field_mapjson__"DetectorIds"DetectorIds.of_jsoninmake?nextToken?detectorIds()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists detectorIds of all the existing Amazon GuardDuty detector resources."]moduleListDetectorsRequest=structtypenonrect={maxResults:MaxResults.toption[@ocaml.doc"You can use this parameter to indicate the maximum number of items that you want in the response. The default value is 50. The maximum value is 50."];nextToken:String_.toption[@ocaml.doc"You can use this parameter when paginating results. Set the value of this parameter to null on your first call to the list action. For subsequent calls to the action, fill nextToken in the request with the value of NextToken from the previous response to continue listing data."]}letmake?maxResults=fun?nextToken->fun()->{maxResults;nextToken}letto_valuex=structure_to_value[("maxResults",(Option.mapx.maxResults~f:MaxResults.to_value));("nextToken",(Option.mapx.nextToken~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inletmaxResults=(Option.map~f:MaxResults.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"String_.of_jsoninletmaxResults=field_mapjson__"MaxResults"MaxResults.of_jsoninmake?nextToken?maxResults()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists detectorIds of all the existing Amazon GuardDuty detector resources."]moduleListCoverageResponse=structtypenonrect={resources:CoverageResources.toption[@ocaml.doc"A list of resources and their attributes providing cluster details."];nextToken:String_.toption[@ocaml.doc"The pagination parameter to be used on the next list operation to retrieve more items."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?resources=fun?nextToken->fun()->{resources;nextToken}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("resources",(Option.mapx.resources~f:CoverageResources.to_value));("nextToken",(Option.mapx.nextToken~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inletresources=(Option.map~f:CoverageResources.of_xml)(Xml.childxml_arg0"resources")inmake?nextToken?resources()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"String_.of_jsoninletresources=field_mapjson__"Resources"CoverageResources.of_jsoninmake?nextToken?resources()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists coverage details for your GuardDuty account. If you're a GuardDuty administrator, you can retrieve all resources associated with the active member accounts in your organization. Make sure the accounts have Runtime Monitoring enabled and GuardDuty agent running on their resources."]moduleListCoverageRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector whose coverage details you want to retrieve. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];nextToken:String_.toption[@ocaml.doc"A token to use for paginating results that are returned in the response. Set the value of this parameter to null for the first request to a list action. For subsequent calls, use the NextToken value returned from the previous request to continue listing results after the first page."];maxResults:MaxResults.toption[@ocaml.doc"The maximum number of results to return in the response."];filterCriteria:CoverageFilterCriteria.toption[@ocaml.doc"Represents the criteria used to filter the coverage details."];sortCriteria:CoverageSortCriteria.toption[@ocaml.doc"Represents the criteria used to sort the coverage details."]}letcontext_="ListCoverageRequest"letmake?nextToken=fun?maxResults->fun?filterCriteria->fun?sortCriteria->fun~detectorId->fun()->{nextToken;maxResults;filterCriteria;sortCriteria;detectorId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("nextToken",(Option.mapx.nextToken~f:String_.to_value));("maxResults",(Option.mapx.maxResults~f:MaxResults.to_value));("filterCriteria",(Option.mapx.filterCriteria~f:CoverageFilterCriteria.to_value));("sortCriteria",(Option.mapx.sortCriteria~f:CoverageSortCriteria.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letsortCriteria=(Option.map~f:CoverageSortCriteria.of_xml)(Xml.childxml_arg0"sortCriteria")inletfilterCriteria=(Option.map~f:CoverageFilterCriteria.of_xml)(Xml.childxml_arg0"filterCriteria")inletmaxResults=(Option.map~f:MaxResults.of_xml)(Xml.childxml_arg0"maxResults")inletnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake?sortCriteria?filterCriteria?maxResults?nextToken~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letsortCriteria=field_mapjson__"SortCriteria"CoverageSortCriteria.of_jsoninletfilterCriteria=field_mapjson__"FilterCriteria"CoverageFilterCriteria.of_jsoninletmaxResults=field_mapjson__"MaxResults"MaxResults.of_jsoninletnextToken=field_mapjson__"NextToken"String_.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake?sortCriteria?filterCriteria?maxResults?nextToken~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists coverage details for your GuardDuty account. If you're a GuardDuty administrator, you can retrieve all resources associated with the active member accounts in your organization. Make sure the accounts have Runtime Monitoring enabled and GuardDuty agent running on their resources."]moduleInviteMembersResponse=structtypenonrect={unprocessedAccounts:UnprocessedAccounts.toption[@ocaml.doc"A list of objects that contain the unprocessed account and a result string that explains why it was unprocessed."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?unprocessedAccounts=fun()->{unprocessedAccounts}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("unprocessedAccounts",(Option.mapx.unprocessedAccounts~f:UnprocessedAccounts.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letunprocessedAccounts=(Option.map~f:UnprocessedAccounts.of_xml)(Xml.childxml_arg0"unprocessedAccounts")inmake?unprocessedAccounts()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letunprocessedAccounts=field_mapjson__"UnprocessedAccounts"UnprocessedAccounts.of_jsoninmake?unprocessedAccounts()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Invites Amazon Web Services accounts to become members of an organization administered by the Amazon Web Services account that invokes this API. If you are using Amazon Web Services Organizations to manage your GuardDuty environment, this step is not needed. For more information, see Managing accounts with organizations. To invite Amazon Web Services accounts, the first step is to ensure that GuardDuty has been enabled in the potential member accounts. You can now invoke this API to add accounts by invitation. The invited accounts can either accept or decline the invitation from their GuardDuty accounts. Each invited Amazon Web Services account can choose to accept the invitation from only one Amazon Web Services account. For more information, see Managing GuardDuty accounts by invitation. After the invite has been accepted and you choose to disassociate a member account (by using DisassociateMembers) from your account, the details of the member account obtained by invoking CreateMembers, including the associated email addresses, will be retained. This is done so that you can invoke InviteMembers without the need to invoke CreateMembers again. To remove the details associated with a member account, you must also invoke DeleteMembers. If you disassociate a member account that was added by invitation, the member account details obtained from this API, including the associated email addresses, will be retained. This is done so that the delegated administrator can invoke the InviteMembers API without the need to invoke the CreateMembers API again. To remove the details associated with a member account, the delegated administrator must invoke the DeleteMembers API. When the member accounts added through Organizations are later disassociated, you (administrator) can't invite them by calling the InviteMembers API. You can create an association with these member accounts again only by calling the CreateMembers API."]moduleInviteMembersRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector of the GuardDuty account with which you want to invite members. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];accountIds:AccountIds.t[@ocaml.doc"A list of account IDs of the accounts that you want to invite to GuardDuty as members."];disableEmailNotification:Boolean.toption[@ocaml.doc"A Boolean value that specifies whether you want to disable email notification to the accounts that you are inviting to GuardDuty as members."];message:String_.toption[@ocaml.doc"The invitation message that you want to send to the accounts that you're inviting to GuardDuty as members."]}letcontext_="InviteMembersRequest"letmake?disableEmailNotification=fun?message->fun~detectorId->fun~accountIds->fun()->{disableEmailNotification;message;detectorId;accountIds}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("accountIds",(Some(AccountIds.to_valuex.accountIds)));("disableEmailNotification",(Option.mapx.disableEmailNotification~f:Boolean.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")inletdisableEmailNotification=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"disableEmailNotification")inletaccountIds=AccountIds.of_xml(Xml.child_exn~context:context_xml_arg0"accountIds")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake?message?disableEmailNotification~accountIds~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmessage=field_mapjson__"Message"String_.of_jsoninletdisableEmailNotification=field_mapjson__"DisableEmailNotification"Boolean.of_jsoninletaccountIds=field_map_exnjson__"AccountIds"AccountIds.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake?message?disableEmailNotification~accountIds~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Invites Amazon Web Services accounts to become members of an organization administered by the Amazon Web Services account that invokes this API. If you are using Amazon Web Services Organizations to manage your GuardDuty environment, this step is not needed. For more information, see Managing accounts with organizations. To invite Amazon Web Services accounts, the first step is to ensure that GuardDuty has been enabled in the potential member accounts. You can now invoke this API to add accounts by invitation. The invited accounts can either accept or decline the invitation from their GuardDuty accounts. Each invited Amazon Web Services account can choose to accept the invitation from only one Amazon Web Services account. For more information, see Managing GuardDuty accounts by invitation. After the invite has been accepted and you choose to disassociate a member account (by using DisassociateMembers) from your account, the details of the member account obtained by invoking CreateMembers, including the associated email addresses, will be retained. This is done so that you can invoke InviteMembers without the need to invoke CreateMembers again. To remove the details associated with a member account, you must also invoke DeleteMembers. If you disassociate a member account that was added by invitation, the member account details obtained from this API, including the associated email addresses, will be retained. This is done so that the delegated administrator can invoke the InviteMembers API without the need to invoke the CreateMembers API again. To remove the details associated with a member account, the delegated administrator must invoke the DeleteMembers API. When the member accounts added through Organizations are later disassociated, you (administrator) can't invite them by calling the InviteMembers API. You can create an association with these member accounts again only by calling the CreateMembers API."]moduleGetUsageStatisticsResponse=structtypenonrect={usageStatistics:UsageStatistics.toption[@ocaml.doc"The usage statistics object. If a UsageStatisticType was provided, the objects representing other types will be null."];nextToken:String_.toption[@ocaml.doc"The pagination parameter to be used on the next list operation to retrieve more items."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?usageStatistics=fun?nextToken->fun()->{usageStatistics;nextToken}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("usageStatistics",(Option.mapx.usageStatistics~f:UsageStatistics.to_value));("nextToken",(Option.mapx.nextToken~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inletusageStatistics=(Option.map~f:UsageStatistics.of_xml)(Xml.childxml_arg0"usageStatistics")inmake?nextToken?usageStatistics()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"String_.of_jsoninletusageStatistics=field_mapjson__"UsageStatistics"UsageStatistics.of_jsoninmake?nextToken?usageStatistics()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists Amazon GuardDuty usage statistics over the last 30 days for the specified detector ID. For newly enabled detectors or data sources, the cost returned will include only the usage so far under 30 days. This may differ from the cost metrics in the console, which project usage over 30 days to provide a monthly cost estimate. For more information, see Understanding How Usage Costs are Calculated."]moduleGetUsageStatisticsRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The ID of the detector that specifies the GuardDuty service whose usage statistics you want to retrieve. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];usageStatisticType:UsageStatisticType.t[@ocaml.doc"The type of usage statistics to retrieve."];usageCriteria:UsageCriteria.t[@ocaml.doc"Represents the criteria used for querying usage."];unit:String_.toption[@ocaml.doc"The currency unit you would like to view your usage statistics in. Current valid values are USD."];maxResults:MaxResults.toption[@ocaml.doc"The maximum number of results to return in the response."];nextToken:String_.toption[@ocaml.doc"A token to use for paginating results that are returned in the response. Set the value of this parameter to null for the first request to a list action. For subsequent calls, use the NextToken value returned from the previous request to continue listing results after the first page."]}letcontext_="GetUsageStatisticsRequest"letmake?unit=fun?maxResults->fun?nextToken->fun~detectorId->fun~usageStatisticType->fun~usageCriteria->fun()->{unit;maxResults;nextToken;detectorId;usageStatisticType;usageCriteria}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("usageStatisticsType",(Some(UsageStatisticType.to_valuex.usageStatisticType)));("usageCriteria",(Some(UsageCriteria.to_valuex.usageCriteria)));("unit",(Option.mapx.unit~f:String_.to_value));("maxResults",(Option.mapx.maxResults~f:MaxResults.to_value));("nextToken",(Option.mapx.nextToken~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inletmaxResults=(Option.map~f:MaxResults.of_xml)(Xml.childxml_arg0"maxResults")inletunit=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"unit")inletusageCriteria=UsageCriteria.of_xml(Xml.child_exn~context:context_xml_arg0"usageCriteria")inletusageStatisticType=UsageStatisticType.of_xml(Xml.child_exn~context:context_xml_arg0"usageStatisticsType")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake?nextToken?maxResults?unit~usageCriteria~usageStatisticType~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"String_.of_jsoninletmaxResults=field_mapjson__"MaxResults"MaxResults.of_jsoninletunit=field_mapjson__"Unit"String_.of_jsoninletusageCriteria=field_map_exnjson__"UsageCriteria"UsageCriteria.of_jsoninletusageStatisticType=field_map_exnjson__"UsageStatisticType"UsageStatisticType.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake?nextToken?maxResults?unit~usageCriteria~usageStatisticType~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists Amazon GuardDuty usage statistics over the last 30 days for the specified detector ID. For newly enabled detectors or data sources, the cost returned will include only the usage so far under 30 days. This may differ from the cost metrics in the console, which project usage over 30 days to provide a monthly cost estimate. For more information, see Understanding How Usage Costs are Calculated."]moduleGetTrustedEntitySetResponse=structtypenonrect={name:Name.toption[@ocaml.doc"The name of the threat entity set associated with the specified trustedEntitySetId."];format:TrustedEntitySetFormat.toption[@ocaml.doc"The format of the file that contains the trusted entity set."];location:Location.toption[@ocaml.doc"The URI of the file that contains the trusted entity set."];expectedBucketOwner:ExpectedBucketOwner.toption[@ocaml.doc"The Amazon Web Services account ID that owns the Amazon S3 bucket specified in the location parameter."];status:TrustedEntitySetStatus.toption[@ocaml.doc"The status of the associated trusted entity set."];tags:TagMap.toption[@ocaml.doc"The tags associated with trusted entity set resource."];createdAt:Timestamp.toption[@ocaml.doc"The timestamp when the associated trusted entity set was created."];updatedAt:Timestamp.toption[@ocaml.doc"The timestamp when the associated trusted entity set was updated."];errorDetails:String_.toption[@ocaml.doc"The error details when the status is shown as ERROR."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?name=fun?format->fun?location->fun?expectedBucketOwner->fun?status->fun?tags->fun?createdAt->fun?updatedAt->fun?errorDetails->fun()->{name;format;location;expectedBucketOwner;status;tags;createdAt;updatedAt;errorDetails}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("name",(Option.mapx.name~f:Name.to_value));("format",(Option.mapx.format~f:TrustedEntitySetFormat.to_value));("location",(Option.mapx.location~f:Location.to_value));("expectedBucketOwner",(Option.mapx.expectedBucketOwner~f:ExpectedBucketOwner.to_value));("status",(Option.mapx.status~f:TrustedEntitySetStatus.to_value));("tags",(Option.mapx.tags~f:TagMap.to_value));("createdAt",(Option.mapx.createdAt~f:Timestamp.to_value));("updatedAt",(Option.mapx.updatedAt~f:Timestamp.to_value));("errorDetails",(Option.mapx.errorDetails~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=leterrorDetails=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"errorDetails")inletupdatedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"updatedAt")inletcreatedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"createdAt")inlettags=(Option.map~f:TagMap.of_xml)(Xml.childxml_arg0"tags")inletstatus=(Option.map~f:TrustedEntitySetStatus.of_xml)(Xml.childxml_arg0"status")inletexpectedBucketOwner=(Option.map~f:ExpectedBucketOwner.of_xml)(Xml.childxml_arg0"expectedBucketOwner")inletlocation=(Option.map~f:Location.of_xml)(Xml.childxml_arg0"location")inletformat=(Option.map~f:TrustedEntitySetFormat.of_xml)(Xml.childxml_arg0"format")inletname=(Option.map~f:Name.of_xml)(Xml.childxml_arg0"name")inmake?errorDetails?updatedAt?createdAt?tags?status?expectedBucketOwner?location?format?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=leterrorDetails=field_mapjson__"ErrorDetails"String_.of_jsoninletupdatedAt=field_mapjson__"UpdatedAt"Timestamp.of_jsoninletcreatedAt=field_mapjson__"CreatedAt"Timestamp.of_jsoninlettags=field_mapjson__"Tags"TagMap.of_jsoninletstatus=field_mapjson__"Status"TrustedEntitySetStatus.of_jsoninletexpectedBucketOwner=field_mapjson__"ExpectedBucketOwner"ExpectedBucketOwner.of_jsoninletlocation=field_mapjson__"Location"Location.of_jsoninletformat=field_mapjson__"Format"TrustedEntitySetFormat.of_jsoninletname=field_mapjson__"Name"Name.of_jsoninmake?errorDetails?updatedAt?createdAt?tags?status?expectedBucketOwner?location?format?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves the trusted entity set associated with the specified trustedEntitySetId."]moduleGetTrustedEntitySetRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the GuardDuty detector associated with this trusted entity set."];trustedEntitySetId:String_.t[@ocaml.doc"The unique ID that helps GuardDuty identify the trusted entity set."]}letcontext_="GetTrustedEntitySetRequest"letmake~detectorId=fun~trustedEntitySetId->fun()->{detectorId;trustedEntitySetId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("TrustedEntitySetId",(Some(String_.to_valuex.trustedEntitySetId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettrustedEntitySetId=String_.of_xml(Xml.child_exn~context:context_xml_arg0"TrustedEntitySetId")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake~trustedEntitySetId~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettrustedEntitySetId=field_map_exnjson__"TrustedEntitySetId"String_.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake~trustedEntitySetId~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves the trusted entity set associated with the specified trustedEntitySetId."]moduleGetThreatIntelSetResponse=structtypenonrect={name:Name.toption[@ocaml.doc"A user-friendly ThreatIntelSet name displayed in all findings that are generated by activity that involves IP addresses included in this ThreatIntelSet."];format:ThreatIntelSetFormat.toption[@ocaml.doc"The format of the threatIntelSet."];location:Location.toption[@ocaml.doc"The URI of the file that contains the ThreatIntelSet."];status:ThreatIntelSetStatus.toption[@ocaml.doc"The status of threatIntelSet file uploaded."];tags:TagMap.toption[@ocaml.doc"The tags of the threat list resource."];expectedBucketOwner:AccountId.toption[@ocaml.doc"The Amazon Web Services account ID that owns the Amazon S3 bucket specified in the location parameter. This field appears in the response only if it was provided during ThreatIntelSet creation or update."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?name=fun?format->fun?location->fun?status->fun?tags->fun?expectedBucketOwner->fun()->{name;format;location;status;tags;expectedBucketOwner}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("name",(Option.mapx.name~f:Name.to_value));("format",(Option.mapx.format~f:ThreatIntelSetFormat.to_value));("location",(Option.mapx.location~f:Location.to_value));("status",(Option.mapx.status~f:ThreatIntelSetStatus.to_value));("tags",(Option.mapx.tags~f:TagMap.to_value));("expectedBucketOwner",(Option.mapx.expectedBucketOwner~f:AccountId.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letexpectedBucketOwner=(Option.map~f:AccountId.of_xml)(Xml.childxml_arg0"expectedBucketOwner")inlettags=(Option.map~f:TagMap.of_xml)(Xml.childxml_arg0"tags")inletstatus=(Option.map~f:ThreatIntelSetStatus.of_xml)(Xml.childxml_arg0"status")inletlocation=(Option.map~f:Location.of_xml)(Xml.childxml_arg0"location")inletformat=(Option.map~f:ThreatIntelSetFormat.of_xml)(Xml.childxml_arg0"format")inletname=(Option.map~f:Name.of_xml)(Xml.childxml_arg0"name")inmake?expectedBucketOwner?tags?status?location?format?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letexpectedBucketOwner=field_mapjson__"ExpectedBucketOwner"AccountId.of_jsoninlettags=field_mapjson__"Tags"TagMap.of_jsoninletstatus=field_mapjson__"Status"ThreatIntelSetStatus.of_jsoninletlocation=field_mapjson__"Location"Location.of_jsoninletformat=field_mapjson__"Format"ThreatIntelSetFormat.of_jsoninletname=field_mapjson__"Name"Name.of_jsoninmake?expectedBucketOwner?tags?status?location?format?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves the ThreatIntelSet that is specified by the ThreatIntelSet ID."]moduleGetThreatIntelSetRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector that is associated with the threatIntelSet. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];threatIntelSetId:String_.t[@ocaml.doc"The unique ID of the threatIntelSet that you want to get."]}letcontext_="GetThreatIntelSetRequest"letmake~detectorId=fun~threatIntelSetId->fun()->{detectorId;threatIntelSetId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("ThreatIntelSetId",(Some(String_.to_valuex.threatIntelSetId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letthreatIntelSetId=String_.of_xml(Xml.child_exn~context:context_xml_arg0"ThreatIntelSetId")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake~threatIntelSetId~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letthreatIntelSetId=field_map_exnjson__"ThreatIntelSetId"String_.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake~threatIntelSetId~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves the ThreatIntelSet that is specified by the ThreatIntelSet ID."]moduleGetThreatEntitySetResponse=structtypenonrect={name:Name.toption[@ocaml.doc"The name of the threat entity set associated with the specified threatEntitySetId."];format:ThreatEntitySetFormat.toption[@ocaml.doc"The format of the file that contains the threat entity set."];location:Location.toption[@ocaml.doc"The URI of the file that contains the threat entity set."];expectedBucketOwner:ExpectedBucketOwner.toption[@ocaml.doc"The Amazon Web Services account ID that owns the Amazon S3 bucket specified in the location parameter."];status:ThreatEntitySetStatus.toption[@ocaml.doc"The status of the associated threat entity set."];tags:TagMap.toption[@ocaml.doc"The tags associated with the threat entity set resource."];createdAt:Timestamp.toption[@ocaml.doc"The timestamp when the associated threat entity set was created."];updatedAt:Timestamp.toption[@ocaml.doc"The timestamp when the associated threat entity set was updated."];errorDetails:String_.toption[@ocaml.doc"The error details when the status is shown as ERROR."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?name=fun?format->fun?location->fun?expectedBucketOwner->fun?status->fun?tags->fun?createdAt->fun?updatedAt->fun?errorDetails->fun()->{name;format;location;expectedBucketOwner;status;tags;createdAt;updatedAt;errorDetails}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("name",(Option.mapx.name~f:Name.to_value));("format",(Option.mapx.format~f:ThreatEntitySetFormat.to_value));("location",(Option.mapx.location~f:Location.to_value));("expectedBucketOwner",(Option.mapx.expectedBucketOwner~f:ExpectedBucketOwner.to_value));("status",(Option.mapx.status~f:ThreatEntitySetStatus.to_value));("tags",(Option.mapx.tags~f:TagMap.to_value));("createdAt",(Option.mapx.createdAt~f:Timestamp.to_value));("updatedAt",(Option.mapx.updatedAt~f:Timestamp.to_value));("errorDetails",(Option.mapx.errorDetails~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=leterrorDetails=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"errorDetails")inletupdatedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"updatedAt")inletcreatedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"createdAt")inlettags=(Option.map~f:TagMap.of_xml)(Xml.childxml_arg0"tags")inletstatus=(Option.map~f:ThreatEntitySetStatus.of_xml)(Xml.childxml_arg0"status")inletexpectedBucketOwner=(Option.map~f:ExpectedBucketOwner.of_xml)(Xml.childxml_arg0"expectedBucketOwner")inletlocation=(Option.map~f:Location.of_xml)(Xml.childxml_arg0"location")inletformat=(Option.map~f:ThreatEntitySetFormat.of_xml)(Xml.childxml_arg0"format")inletname=(Option.map~f:Name.of_xml)(Xml.childxml_arg0"name")inmake?errorDetails?updatedAt?createdAt?tags?status?expectedBucketOwner?location?format?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=leterrorDetails=field_mapjson__"ErrorDetails"String_.of_jsoninletupdatedAt=field_mapjson__"UpdatedAt"Timestamp.of_jsoninletcreatedAt=field_mapjson__"CreatedAt"Timestamp.of_jsoninlettags=field_mapjson__"Tags"TagMap.of_jsoninletstatus=field_mapjson__"Status"ThreatEntitySetStatus.of_jsoninletexpectedBucketOwner=field_mapjson__"ExpectedBucketOwner"ExpectedBucketOwner.of_jsoninletlocation=field_mapjson__"Location"Location.of_jsoninletformat=field_mapjson__"Format"ThreatEntitySetFormat.of_jsoninletname=field_mapjson__"Name"Name.of_jsoninmake?errorDetails?updatedAt?createdAt?tags?status?expectedBucketOwner?location?format?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves the threat entity set associated with the specified threatEntitySetId."]moduleGetThreatEntitySetRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector associated with the threat entity set resource. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];threatEntitySetId:String_.t[@ocaml.doc"The unique ID that helps GuardDuty identify the threat entity set."]}letcontext_="GetThreatEntitySetRequest"letmake~detectorId=fun~threatEntitySetId->fun()->{detectorId;threatEntitySetId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("ThreatEntitySetId",(Some(String_.to_valuex.threatEntitySetId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letthreatEntitySetId=String_.of_xml(Xml.child_exn~context:context_xml_arg0"ThreatEntitySetId")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake~threatEntitySetId~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letthreatEntitySetId=field_map_exnjson__"ThreatEntitySetId"String_.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake~threatEntitySetId~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves the threat entity set associated with the specified threatEntitySetId."]moduleGetRemainingFreeTrialDaysResponse=structtypenonrect={accounts:AccountFreeTrialInfos.toption[@ocaml.doc"The member accounts which were included in a request and were processed successfully."];unprocessedAccounts:UnprocessedAccounts.toption[@ocaml.doc"The member account that was included in a request but for which the request could not be processed."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?accounts=fun?unprocessedAccounts->fun()->{accounts;unprocessedAccounts}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.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:AccountFreeTrialInfos.to_value));("unprocessedAccounts",(Option.mapx.unprocessedAccounts~f:UnprocessedAccounts.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letunprocessedAccounts=(Option.map~f:UnprocessedAccounts.of_xml)(Xml.childxml_arg0"unprocessedAccounts")inletaccounts=(Option.map~f:AccountFreeTrialInfos.of_xml)(Xml.childxml_arg0"accounts")inmake?unprocessedAccounts?accounts()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letunprocessedAccounts=field_mapjson__"UnprocessedAccounts"UnprocessedAccounts.of_jsoninletaccounts=field_mapjson__"Accounts"AccountFreeTrialInfos.of_jsoninmake?unprocessedAccounts?accounts()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Provides the number of days left for each data source used in the free trial period."]moduleGetRemainingFreeTrialDaysRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector of the GuardDuty member account. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];accountIds:AccountIds.t[@ocaml.doc"A list of account identifiers of the GuardDuty member account."]}letcontext_="GetRemainingFreeTrialDaysRequest"letmake~detectorId=fun~accountIds->fun()->{detectorId;accountIds}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("accountIds",(Some(AccountIds.to_valuex.accountIds)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccountIds=AccountIds.of_xml(Xml.child_exn~context:context_xml_arg0"accountIds")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake~accountIds~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccountIds=field_map_exnjson__"AccountIds"AccountIds.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake~accountIds~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Provides the number of days left for each data source used in the free trial period."]moduleGetOrganizationStatisticsResponse=structtypenonrect={organizationDetails:OrganizationDetails.toption[@ocaml.doc"Information about the statistics report for your organization."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?organizationDetails=fun()->{organizationDetails}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("organizationDetails",(Option.mapx.organizationDetails~f:OrganizationDetails.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letorganizationDetails=(Option.map~f:OrganizationDetails.of_xml)(Xml.childxml_arg0"organizationDetails")inmake?organizationDetails()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letorganizationDetails=field_mapjson__"OrganizationDetails"OrganizationDetails.of_jsoninmake?organizationDetails()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves how many active member accounts have each feature enabled within GuardDuty. Only a delegated GuardDuty administrator of an organization can run this API. When you create a new organization, it might take up to 24 hours to generate the statistics for the entire organization."]moduleGetMembersResponse=structtypenonrect={members:Members.toption[@ocaml.doc"A list of members."];unprocessedAccounts:UnprocessedAccounts.toption[@ocaml.doc"A list of objects that contain the unprocessed account and a result string that explains why it was unprocessed."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?members=fun?unprocessedAccounts->fun()->{members;unprocessedAccounts}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("members",(Option.mapx.members~f:Members.to_value));("unprocessedAccounts",(Option.mapx.unprocessedAccounts~f:UnprocessedAccounts.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letunprocessedAccounts=(Option.map~f:UnprocessedAccounts.of_xml)(Xml.childxml_arg0"unprocessedAccounts")inletmembers=(Option.map~f:Members.of_xml)(Xml.childxml_arg0"members")inmake?unprocessedAccounts?members()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letunprocessedAccounts=field_mapjson__"UnprocessedAccounts"UnprocessedAccounts.of_jsoninletmembers=field_mapjson__"Members"Members.of_jsoninmake?unprocessedAccounts?members()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves GuardDuty member accounts (of the current GuardDuty administrator account) specified by the account IDs."]moduleGetMembersRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector of the GuardDuty account whose members you want to retrieve. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];accountIds:AccountIds.t[@ocaml.doc"A list of account IDs of the GuardDuty member accounts that you want to describe."]}letcontext_="GetMembersRequest"letmake~detectorId=fun~accountIds->fun()->{detectorId;accountIds}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("accountIds",(Some(AccountIds.to_valuex.accountIds)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccountIds=AccountIds.of_xml(Xml.child_exn~context:context_xml_arg0"accountIds")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake~accountIds~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccountIds=field_map_exnjson__"AccountIds"AccountIds.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake~accountIds~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves GuardDuty member accounts (of the current GuardDuty administrator account) specified by the account IDs."]moduleGetMemberDetectorsResponse=structtypenonrect={memberDataSourceConfigurations:MemberDataSourceConfigurations.toption[@ocaml.doc"An object that describes which data sources are enabled for a member account."];unprocessedAccounts:UnprocessedAccounts.toption[@ocaml.doc"A list of member account IDs that were unable to be processed along with an explanation for why they were not processed."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?memberDataSourceConfigurations=fun?unprocessedAccounts->fun()->{memberDataSourceConfigurations;unprocessedAccounts}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("members",(Option.mapx.memberDataSourceConfigurations~f:MemberDataSourceConfigurations.to_value));("unprocessedAccounts",(Option.mapx.unprocessedAccounts~f:UnprocessedAccounts.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letunprocessedAccounts=(Option.map~f:UnprocessedAccounts.of_xml)(Xml.childxml_arg0"unprocessedAccounts")inletmemberDataSourceConfigurations=(Option.map~f:MemberDataSourceConfigurations.of_xml)(Xml.childxml_arg0"members")inmake?unprocessedAccounts?memberDataSourceConfigurations()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letunprocessedAccounts=field_mapjson__"UnprocessedAccounts"UnprocessedAccounts.of_jsoninletmemberDataSourceConfigurations=field_mapjson__"MemberDataSourceConfigurations"MemberDataSourceConfigurations.of_jsoninmake?unprocessedAccounts?memberDataSourceConfigurations()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Describes which data sources are enabled for the member account's detector. There might be regional differences because some data sources might not be available in all the Amazon Web Services Regions where GuardDuty is presently supported. For more information, see Regions and endpoints."]moduleGetMemberDetectorsRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The detector ID for the administrator account. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];accountIds:AccountIds.t[@ocaml.doc"A list of member account IDs."]}letcontext_="GetMemberDetectorsRequest"letmake~detectorId=fun~accountIds->fun()->{detectorId;accountIds}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("accountIds",(Some(AccountIds.to_valuex.accountIds)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccountIds=AccountIds.of_xml(Xml.child_exn~context:context_xml_arg0"accountIds")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake~accountIds~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccountIds=field_map_exnjson__"AccountIds"AccountIds.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake~accountIds~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Describes which data sources are enabled for the member account's detector. There might be regional differences because some data sources might not be available in all the Amazon Web Services Regions where GuardDuty is presently supported. For more information, see Regions and endpoints."]moduleGetMasterAccountResponse=structtypenonrect={master:Master.toption[@ocaml.doc"The administrator account details."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?master=fun()->{master}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("master",(Option.mapx.master~f:Master.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmaster=(Option.map~f:Master.of_xml)(Xml.childxml_arg0"master")inmake?master()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmaster=field_mapjson__"Master"Master.of_jsoninmake?master()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Provides the details for the GuardDuty administrator account associated with the current GuardDuty member account."]moduleGetMasterAccountRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector of the GuardDuty member account. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."]}letcontext_="GetMasterAccountRequest"letmake~detectorId=fun()->{detectorId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Provides the details for the GuardDuty administrator account associated with the current GuardDuty member account."]moduleGetMalwareScanSettingsResponse=structtypenonrect={scanResourceCriteria:ScanResourceCriteria.toption[@ocaml.doc"Represents the criteria to be used in the filter for scanning resources."];ebsSnapshotPreservation:EbsSnapshotPreservation.toption[@ocaml.doc"An enum value representing possible snapshot preservation settings."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?scanResourceCriteria=fun?ebsSnapshotPreservation->fun()->{scanResourceCriteria;ebsSnapshotPreservation}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("scanResourceCriteria",(Option.mapx.scanResourceCriteria~f:ScanResourceCriteria.to_value));("ebsSnapshotPreservation",(Option.mapx.ebsSnapshotPreservation~f:EbsSnapshotPreservation.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letebsSnapshotPreservation=(Option.map~f:EbsSnapshotPreservation.of_xml)(Xml.childxml_arg0"ebsSnapshotPreservation")inletscanResourceCriteria=(Option.map~f:ScanResourceCriteria.of_xml)(Xml.childxml_arg0"scanResourceCriteria")inmake?ebsSnapshotPreservation?scanResourceCriteria()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letebsSnapshotPreservation=field_mapjson__"EbsSnapshotPreservation"EbsSnapshotPreservation.of_jsoninletscanResourceCriteria=field_mapjson__"ScanResourceCriteria"ScanResourceCriteria.of_jsoninmake?ebsSnapshotPreservation?scanResourceCriteria()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns the details of the malware scan settings. There might be regional differences because some data sources might not be available in all the Amazon Web Services Regions where GuardDuty is presently supported. For more information, see Regions and endpoints."]moduleGetMalwareScanSettingsRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector that is associated with this scan. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."]}letcontext_="GetMalwareScanSettingsRequest"letmake~detectorId=fun()->{detectorId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns the details of the malware scan settings. There might be regional differences because some data sources might not be available in all the Amazon Web Services Regions where GuardDuty is presently supported. For more information, see Regions and endpoints."]moduleGetMalwareScanResponse=structtypenonrect={scanId:NonEmptyString.toption[@ocaml.doc"A unique identifier associated with the malware scan. Each malware scan has a corresponding scan ID. Using this scan ID, you can monitor the status of your malware scan."];detectorId:DetectorId.toption[@ocaml.doc"The unique ID of the detector that is associated with the request, if it belongs to an account which is a GuardDuty customer. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];adminDetectorId:DetectorId.toption[@ocaml.doc"The unique detector ID of the administrator account that the request is associated with. If the account is an administrator, the AdminDetectorId will be the same as the one used for DetectorId. If the customer is not a GuardDuty customer, this field will not be present.. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];resourceArn:NonEmptyString.toption[@ocaml.doc"Amazon Resource Name (ARN) of the resource on which a malware scan was invoked."];resourceType:MalwareProtectionResourceType.toption[@ocaml.doc"The type of resource that was scanned for malware."];scannedResourcesCount:NonNegativeInteger.toption[@ocaml.doc"The total number of resources that were successfully scanned. This is dependent on the resource type."];skippedResourcesCount:NonNegativeInteger.toption[@ocaml.doc"The total number of resources that were skipped during the scan."];failedResourcesCount:NonNegativeInteger.toption[@ocaml.doc"The total number of resources that failed to be scanned."];scannedResources:ScannedResources.toption[@ocaml.doc"A list of resources along with their metadata that were scanned as part of the malware scan operation."];scanConfiguration:ScanConfiguration.toption[@ocaml.doc"Information about the scan configuration used for the malware scan."];scanCategory:ScanCategory.toption[@ocaml.doc"The category of the malware scan, indicating the type of scan performed."];scanStatus:MalwareProtectionScanStatus.toption[@ocaml.doc"A value representing the current status of the malware scan."];scanStatusReason:ScanStatusReason.toption[@ocaml.doc"Represents the reason for the current scan status, if applicable."];scanType:MalwareProtectionScanType.toption[@ocaml.doc"A value representing the initiator of the scan."];scanStartedAt:Timestamp.toption[@ocaml.doc"The timestamp representing when the malware scan was started."];scanCompletedAt:Timestamp.toption[@ocaml.doc"The timestamp representing when the malware scan was completed."];scanResultDetails:GetMalwareScanResultDetails.toption[@ocaml.doc"Detailed information about the results of the malware scan, if the scan completed."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`Unknown_operation_errorof(string*stringoption)]letmake?scanId=fun?detectorId->fun?adminDetectorId->fun?resourceArn->fun?resourceType->fun?scannedResourcesCount->fun?skippedResourcesCount->fun?failedResourcesCount->fun?scannedResources->fun?scanConfiguration->fun?scanCategory->fun?scanStatus->fun?scanStatusReason->fun?scanType->fun?scanStartedAt->fun?scanCompletedAt->fun?scanResultDetails->fun()->{scanId;detectorId;adminDetectorId;resourceArn;resourceType;scannedResourcesCount;skippedResourcesCount;failedResourcesCount;scannedResources;scanConfiguration;scanCategory;scanStatus;scanStatusReason;scanType;scanStartedAt;scanCompletedAt;scanResultDetails}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("scanId",(Option.mapx.scanId~f:NonEmptyString.to_value));("detectorId",(Option.mapx.detectorId~f:DetectorId.to_value));("adminDetectorId",(Option.mapx.adminDetectorId~f:DetectorId.to_value));("resourceArn",(Option.mapx.resourceArn~f:NonEmptyString.to_value));("resourceType",(Option.mapx.resourceType~f:MalwareProtectionResourceType.to_value));("scannedResourcesCount",(Option.mapx.scannedResourcesCount~f:NonNegativeInteger.to_value));("skippedResourcesCount",(Option.mapx.skippedResourcesCount~f:NonNegativeInteger.to_value));("failedResourcesCount",(Option.mapx.failedResourcesCount~f:NonNegativeInteger.to_value));("scannedResources",(Option.mapx.scannedResources~f:ScannedResources.to_value));("scanConfiguration",(Option.mapx.scanConfiguration~f:ScanConfiguration.to_value));("scanCategory",(Option.mapx.scanCategory~f:ScanCategory.to_value));("scanStatus",(Option.mapx.scanStatus~f:MalwareProtectionScanStatus.to_value));("scanStatusReason",(Option.mapx.scanStatusReason~f:ScanStatusReason.to_value));("scanType",(Option.mapx.scanType~f:MalwareProtectionScanType.to_value));("scanStartedAt",(Option.mapx.scanStartedAt~f:Timestamp.to_value));("scanCompletedAt",(Option.mapx.scanCompletedAt~f:Timestamp.to_value));("scanResultDetails",(Option.mapx.scanResultDetails~f:GetMalwareScanResultDetails.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letscanResultDetails=(Option.map~f:GetMalwareScanResultDetails.of_xml)(Xml.childxml_arg0"scanResultDetails")inletscanCompletedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"scanCompletedAt")inletscanStartedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"scanStartedAt")inletscanType=(Option.map~f:MalwareProtectionScanType.of_xml)(Xml.childxml_arg0"scanType")inletscanStatusReason=(Option.map~f:ScanStatusReason.of_xml)(Xml.childxml_arg0"scanStatusReason")inletscanStatus=(Option.map~f:MalwareProtectionScanStatus.of_xml)(Xml.childxml_arg0"scanStatus")inletscanCategory=(Option.map~f:ScanCategory.of_xml)(Xml.childxml_arg0"scanCategory")inletscanConfiguration=(Option.map~f:ScanConfiguration.of_xml)(Xml.childxml_arg0"scanConfiguration")inletscannedResources=(Option.map~f:ScannedResources.of_xml)(Xml.childxml_arg0"scannedResources")inletfailedResourcesCount=(Option.map~f:NonNegativeInteger.of_xml)(Xml.childxml_arg0"failedResourcesCount")inletskippedResourcesCount=(Option.map~f:NonNegativeInteger.of_xml)(Xml.childxml_arg0"skippedResourcesCount")inletscannedResourcesCount=(Option.map~f:NonNegativeInteger.of_xml)(Xml.childxml_arg0"scannedResourcesCount")inletresourceType=(Option.map~f:MalwareProtectionResourceType.of_xml)(Xml.childxml_arg0"resourceType")inletresourceArn=(Option.map~f:NonEmptyString.of_xml)(Xml.childxml_arg0"resourceArn")inletadminDetectorId=(Option.map~f:DetectorId.of_xml)(Xml.childxml_arg0"adminDetectorId")inletdetectorId=(Option.map~f:DetectorId.of_xml)(Xml.childxml_arg0"detectorId")inletscanId=(Option.map~f:NonEmptyString.of_xml)(Xml.childxml_arg0"scanId")inmake?scanResultDetails?scanCompletedAt?scanStartedAt?scanType?scanStatusReason?scanStatus?scanCategory?scanConfiguration?scannedResources?failedResourcesCount?skippedResourcesCount?scannedResourcesCount?resourceType?resourceArn?adminDetectorId?detectorId?scanId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letscanResultDetails=field_mapjson__"ScanResultDetails"GetMalwareScanResultDetails.of_jsoninletscanCompletedAt=field_mapjson__"ScanCompletedAt"Timestamp.of_jsoninletscanStartedAt=field_mapjson__"ScanStartedAt"Timestamp.of_jsoninletscanType=field_mapjson__"ScanType"MalwareProtectionScanType.of_jsoninletscanStatusReason=field_mapjson__"ScanStatusReason"ScanStatusReason.of_jsoninletscanStatus=field_mapjson__"ScanStatus"MalwareProtectionScanStatus.of_jsoninletscanCategory=field_mapjson__"ScanCategory"ScanCategory.of_jsoninletscanConfiguration=field_mapjson__"ScanConfiguration"ScanConfiguration.of_jsoninletscannedResources=field_mapjson__"ScannedResources"ScannedResources.of_jsoninletfailedResourcesCount=field_mapjson__"FailedResourcesCount"NonNegativeInteger.of_jsoninletskippedResourcesCount=field_mapjson__"SkippedResourcesCount"NonNegativeInteger.of_jsoninletscannedResourcesCount=field_mapjson__"ScannedResourcesCount"NonNegativeInteger.of_jsoninletresourceType=field_mapjson__"ResourceType"MalwareProtectionResourceType.of_jsoninletresourceArn=field_mapjson__"ResourceArn"NonEmptyString.of_jsoninletadminDetectorId=field_mapjson__"AdminDetectorId"DetectorId.of_jsoninletdetectorId=field_mapjson__"DetectorId"DetectorId.of_jsoninletscanId=field_mapjson__"ScanId"NonEmptyString.of_jsoninmake?scanResultDetails?scanCompletedAt?scanStartedAt?scanType?scanStatusReason?scanStatus?scanCategory?scanConfiguration?scannedResources?failedResourcesCount?skippedResourcesCount?scannedResourcesCount?resourceType?resourceArn?adminDetectorId?detectorId?scanId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves the detailed information for a specific malware scan. Each member account can view the malware scan details for their own account. An administrator can view malware scan details for all accounts in the organization. There might be regional differences because some data sources might not be available in all the Amazon Web Services Regions where GuardDuty is presently supported. For more information, see Regions and endpoints."]moduleGetMalwareScanRequest=structtypenonrect={scanId:String_.t[@ocaml.doc"A unique identifier that gets generated when you invoke the API without any error. Each malware scan has a corresponding scan ID. Using this scan ID, you can monitor the status of your malware scan."]}letcontext_="GetMalwareScanRequest"letmake~scanId=fun()->{scanId}letto_valuex=structure_to_value[("ScanId",(Some(String_.to_valuex.scanId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letscanId=String_.of_xml(Xml.child_exn~context:context_xml_arg0"ScanId")inmake~scanId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letscanId=field_map_exnjson__"ScanId"String_.of_jsoninmake~scanId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves the detailed information for a specific malware scan. Each member account can view the malware scan details for their own account. An administrator can view malware scan details for all accounts in the organization. There might be regional differences because some data sources might not be available in all the Amazon Web Services Regions where GuardDuty is presently supported. For more information, see Regions and endpoints."]moduleGetMalwareProtectionPlanResponse=structtypenonrect={arn:String_.toption[@ocaml.doc"Amazon Resource Name (ARN) of the protected resource."];role:String_.toption[@ocaml.doc"Amazon Resource Name (ARN) of the IAM role that includes the permissions to scan and add tags to the associated protected resource."];protectedResource:CreateProtectedResource.toption[@ocaml.doc"Information about the protected resource that is associated with the created Malware Protection plan. Presently, S3Bucket is the only supported protected resource."];actions:MalwareProtectionPlanActions.toption[@ocaml.doc"Information about whether the tags will be added to the S3 object after scanning."];createdAt:Timestamp.toption[@ocaml.doc"The timestamp when the Malware Protection plan resource was created."];status:MalwareProtectionPlanStatus.toption[@ocaml.doc"Malware Protection plan status."];statusReasons:MalwareProtectionPlanStatusReasonsList.toption[@ocaml.doc"Information about the issue code and message associated to the status of your Malware Protection plan."];tags:TagMap.toption[@ocaml.doc"Tags added to the Malware Protection plan resource."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`Unknown_operation_errorof(string*stringoption)]letmake?arn=fun?role->fun?protectedResource->fun?actions->fun?createdAt->fun?status->fun?statusReasons->fun?tags->fun()->{arn;role;protectedResource;actions;createdAt;status;statusReasons;tags}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.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))]|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("arn",(Option.mapx.arn~f:String_.to_value));("role",(Option.mapx.role~f:String_.to_value));("protectedResource",(Option.mapx.protectedResource~f:CreateProtectedResource.to_value));("actions",(Option.mapx.actions~f:MalwareProtectionPlanActions.to_value));("createdAt",(Option.mapx.createdAt~f:Timestamp.to_value));("status",(Option.mapx.status~f:MalwareProtectionPlanStatus.to_value));("statusReasons",(Option.mapx.statusReasons~f:MalwareProtectionPlanStatusReasonsList.to_value));("tags",(Option.mapx.tags~f:TagMap.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:TagMap.of_xml)(Xml.childxml_arg0"tags")inletstatusReasons=(Option.map~f:MalwareProtectionPlanStatusReasonsList.of_xml)(Xml.childxml_arg0"statusReasons")inletstatus=(Option.map~f:MalwareProtectionPlanStatus.of_xml)(Xml.childxml_arg0"status")inletcreatedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"createdAt")inletactions=(Option.map~f:MalwareProtectionPlanActions.of_xml)(Xml.childxml_arg0"actions")inletprotectedResource=(Option.map~f:CreateProtectedResource.of_xml)(Xml.childxml_arg0"protectedResource")inletrole=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"role")inletarn=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"arn")inmake?tags?statusReasons?status?createdAt?actions?protectedResource?role?arn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"Tags"TagMap.of_jsoninletstatusReasons=field_mapjson__"StatusReasons"MalwareProtectionPlanStatusReasonsList.of_jsoninletstatus=field_mapjson__"Status"MalwareProtectionPlanStatus.of_jsoninletcreatedAt=field_mapjson__"CreatedAt"Timestamp.of_jsoninletactions=field_mapjson__"Actions"MalwareProtectionPlanActions.of_jsoninletprotectedResource=field_mapjson__"ProtectedResource"CreateProtectedResource.of_jsoninletrole=field_mapjson__"Role"String_.of_jsoninletarn=field_mapjson__"Arn"String_.of_jsoninmake?tags?statusReasons?status?createdAt?actions?protectedResource?role?arn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves the Malware Protection plan details associated with a Malware Protection plan ID."]moduleGetMalwareProtectionPlanRequest=structtypenonrect={malwareProtectionPlanId:String_.t[@ocaml.doc"A unique identifier associated with Malware Protection plan resource."]}letcontext_="GetMalwareProtectionPlanRequest"letmake~malwareProtectionPlanId=fun()->{malwareProtectionPlanId}letto_valuex=structure_to_value[("MalwareProtectionPlanId",(Some(String_.to_valuex.malwareProtectionPlanId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmalwareProtectionPlanId=String_.of_xml(Xml.child_exn~context:context_xml_arg0"MalwareProtectionPlanId")inmake~malwareProtectionPlanId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmalwareProtectionPlanId=field_map_exnjson__"MalwareProtectionPlanId"String_.of_jsoninmake~malwareProtectionPlanId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves the Malware Protection plan details associated with a Malware Protection plan ID."]moduleGetInvitationsCountResponse=structtypenonrect={invitationsCount:Integer.toption[@ocaml.doc"The number of received invitations."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?invitationsCount=fun()->{invitationsCount}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("invitationsCount",(Option.mapx.invitationsCount~f:Integer.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letinvitationsCount=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"invitationsCount")inmake?invitationsCount()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letinvitationsCount=field_mapjson__"InvitationsCount"Integer.of_jsoninmake?invitationsCount()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns the count of all GuardDuty membership invitations that were sent to the current member account except the currently accepted invitation."]moduleGetInvitationsCountRequest=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"Returns the count of all GuardDuty membership invitations that were sent to the current member account except the currently accepted invitation."]moduleGetIPSetResponse=structtypenonrect={name:Name.toption[@ocaml.doc"The user-friendly name for the IPSet."];format:IpSetFormat.toption[@ocaml.doc"The format of the file that contains the IPSet."];location:Location.toption[@ocaml.doc"The URI of the file that contains the IPSet."];status:IpSetStatus.toption[@ocaml.doc"The status of IPSet file that was uploaded."];tags:TagMap.toption[@ocaml.doc"The tags of the IPSet resource."];expectedBucketOwner:AccountId.toption[@ocaml.doc"The Amazon Web Services account ID that owns the Amazon S3 bucket specified in the location parameter. This field appears in the response only if it was provided during IPSet creation or update."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?name=fun?format->fun?location->fun?status->fun?tags->fun?expectedBucketOwner->fun()->{name;format;location;status;tags;expectedBucketOwner}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("name",(Option.mapx.name~f:Name.to_value));("format",(Option.mapx.format~f:IpSetFormat.to_value));("location",(Option.mapx.location~f:Location.to_value));("status",(Option.mapx.status~f:IpSetStatus.to_value));("tags",(Option.mapx.tags~f:TagMap.to_value));("expectedBucketOwner",(Option.mapx.expectedBucketOwner~f:AccountId.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letexpectedBucketOwner=(Option.map~f:AccountId.of_xml)(Xml.childxml_arg0"expectedBucketOwner")inlettags=(Option.map~f:TagMap.of_xml)(Xml.childxml_arg0"tags")inletstatus=(Option.map~f:IpSetStatus.of_xml)(Xml.childxml_arg0"status")inletlocation=(Option.map~f:Location.of_xml)(Xml.childxml_arg0"location")inletformat=(Option.map~f:IpSetFormat.of_xml)(Xml.childxml_arg0"format")inletname=(Option.map~f:Name.of_xml)(Xml.childxml_arg0"name")inmake?expectedBucketOwner?tags?status?location?format?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letexpectedBucketOwner=field_mapjson__"ExpectedBucketOwner"AccountId.of_jsoninlettags=field_mapjson__"Tags"TagMap.of_jsoninletstatus=field_mapjson__"Status"IpSetStatus.of_jsoninletlocation=field_mapjson__"Location"Location.of_jsoninletformat=field_mapjson__"Format"IpSetFormat.of_jsoninletname=field_mapjson__"Name"Name.of_jsoninmake?expectedBucketOwner?tags?status?location?format?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves the IPSet specified by the ipSetId."]moduleGetIPSetRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector that is associated with the IPSet. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];ipSetId:String_.t[@ocaml.doc"The unique ID of the IPSet to retrieve."]}letcontext_="GetIPSetRequest"letmake~detectorId=fun~ipSetId->fun()->{detectorId;ipSetId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("IpSetId",(Some(String_.to_valuex.ipSetId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letipSetId=String_.of_xml(Xml.child_exn~context:context_xml_arg0"IpSetId")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake~ipSetId~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letipSetId=field_map_exnjson__"IpSetId"String_.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake~ipSetId~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves the IPSet specified by the ipSetId."]moduleGetFindingsStatisticsResponse=structtypenonrect={findingStatistics:FindingStatistics.toption[@ocaml.doc"The finding statistics object."];nextToken:String_.toption[@ocaml.doc"The pagination parameter to be used on the next list operation to retrieve more items. This parameter is currently not supported."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?findingStatistics=fun?nextToken->fun()->{findingStatistics;nextToken}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("findingStatistics",(Option.mapx.findingStatistics~f:FindingStatistics.to_value));("nextToken",(Option.mapx.nextToken~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inletfindingStatistics=(Option.map~f:FindingStatistics.of_xml)(Xml.childxml_arg0"findingStatistics")inmake?nextToken?findingStatistics()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"String_.of_jsoninletfindingStatistics=field_mapjson__"FindingStatistics"FindingStatistics.of_jsoninmake?nextToken?findingStatistics()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists GuardDuty findings statistics for the specified detector ID. You must provide either findingStatisticTypes or groupBy parameter, and not both. You can use the maxResults and orderBy parameters only when using groupBy. There might be regional differences because some flags might not be available in all the Regions where GuardDuty is currently supported. For more information, see Regions and endpoints."]moduleGetFindingsStatisticsRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The ID of the detector whose findings statistics you want to retrieve. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];findingStatisticTypes:FindingStatisticTypes.toption[@ocaml.doc"The types of finding statistics to retrieve."];findingCriteria:FindingCriteria.toption[@ocaml.doc"Represents the criteria that is used for querying findings."];groupBy:GroupByType.toption[@ocaml.doc"Displays the findings statistics grouped by one of the listed valid values."];orderBy:OrderBy.toption[@ocaml.doc"Displays the sorted findings in the requested order. The default value of orderBy is DESC. You can use this parameter only with the groupBy parameter."];maxResults:MaxResults100.toption[@ocaml.doc"The maximum number of results to be returned in the response. The default value is 25. You can use this parameter only with the groupBy parameter."]}letcontext_="GetFindingsStatisticsRequest"letmake?findingStatisticTypes=fun?findingCriteria->fun?groupBy->fun?orderBy->fun?maxResults->fun~detectorId->fun()->{findingStatisticTypes;findingCriteria;groupBy;orderBy;maxResults;detectorId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("findingStatisticTypes",(Option.mapx.findingStatisticTypes~f:FindingStatisticTypes.to_value));("findingCriteria",(Option.mapx.findingCriteria~f:FindingCriteria.to_value));("groupBy",(Option.mapx.groupBy~f:GroupByType.to_value));("orderBy",(Option.mapx.orderBy~f:OrderBy.to_value));("maxResults",(Option.mapx.maxResults~f:MaxResults100.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmaxResults=(Option.map~f:MaxResults100.of_xml)(Xml.childxml_arg0"maxResults")inletorderBy=(Option.map~f:OrderBy.of_xml)(Xml.childxml_arg0"orderBy")inletgroupBy=(Option.map~f:GroupByType.of_xml)(Xml.childxml_arg0"groupBy")inletfindingCriteria=(Option.map~f:FindingCriteria.of_xml)(Xml.childxml_arg0"findingCriteria")inletfindingStatisticTypes=(Option.map~f:FindingStatisticTypes.of_xml)(Xml.childxml_arg0"findingStatisticTypes")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake?maxResults?orderBy?groupBy?findingCriteria?findingStatisticTypes~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmaxResults=field_mapjson__"MaxResults"MaxResults100.of_jsoninletorderBy=field_mapjson__"OrderBy"OrderBy.of_jsoninletgroupBy=field_mapjson__"GroupBy"GroupByType.of_jsoninletfindingCriteria=field_mapjson__"FindingCriteria"FindingCriteria.of_jsoninletfindingStatisticTypes=field_mapjson__"FindingStatisticTypes"FindingStatisticTypes.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake?maxResults?orderBy?groupBy?findingCriteria?findingStatisticTypes~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists GuardDuty findings statistics for the specified detector ID. You must provide either findingStatisticTypes or groupBy parameter, and not both. You can use the maxResults and orderBy parameters only when using groupBy. There might be regional differences because some flags might not be available in all the Regions where GuardDuty is currently supported. For more information, see Regions and endpoints."]moduleGetFindingsResponse=structtypenonrect={findings:Findings.toption[@ocaml.doc"A list of findings."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?findings=fun()->{findings}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("findings",(Option.mapx.findings~f:Findings.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letfindings=(Option.map~f:Findings.of_xml)(Xml.childxml_arg0"findings")inmake?findings()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letfindings=field_mapjson__"Findings"Findings.of_jsoninmake?findings()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Describes Amazon GuardDuty findings specified by finding IDs."]moduleGetFindingsRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The ID of the detector that specifies the GuardDuty service whose findings you want to retrieve. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];findingIds:FindingIds.t[@ocaml.doc"The IDs of the findings that you want to retrieve."];sortCriteria:SortCriteria.toption[@ocaml.doc"Represents the criteria used for sorting findings."]}letcontext_="GetFindingsRequest"letmake?sortCriteria=fun~detectorId->fun~findingIds->fun()->{sortCriteria;detectorId;findingIds}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("findingIds",(Some(FindingIds.to_valuex.findingIds)));("sortCriteria",(Option.mapx.sortCriteria~f:SortCriteria.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letsortCriteria=(Option.map~f:SortCriteria.of_xml)(Xml.childxml_arg0"sortCriteria")inletfindingIds=FindingIds.of_xml(Xml.child_exn~context:context_xml_arg0"findingIds")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake?sortCriteria~findingIds~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letsortCriteria=field_mapjson__"SortCriteria"SortCriteria.of_jsoninletfindingIds=field_map_exnjson__"FindingIds"FindingIds.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake?sortCriteria~findingIds~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Describes Amazon GuardDuty findings specified by finding IDs."]moduleGetFilterResponse=structtypenonrect={name:FilterName.toption[@ocaml.doc"The name of the filter."];description:FilterDescription.toption[@ocaml.doc"The description of the filter."];action:FilterAction.toption[@ocaml.doc"Specifies the action that is to be applied to the findings that match the filter."];rank:FilterRank.toption[@ocaml.doc"Specifies the position of the filter in the list of current filters. Also specifies the order in which this filter is applied to the findings."];findingCriteria:FindingCriteria.toption[@ocaml.doc"Represents the criteria to be used in the filter for querying findings."];tags:TagMap.toption[@ocaml.doc"The tags of the filter resource."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?name=fun?description->fun?action->fun?rank->fun?findingCriteria->fun?tags->fun()->{name;description;action;rank;findingCriteria;tags}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("name",(Option.mapx.name~f:FilterName.to_value));("description",(Option.mapx.description~f:FilterDescription.to_value));("action",(Option.mapx.action~f:FilterAction.to_value));("rank",(Option.mapx.rank~f:FilterRank.to_value));("findingCriteria",(Option.mapx.findingCriteria~f:FindingCriteria.to_value));("tags",(Option.mapx.tags~f:TagMap.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:TagMap.of_xml)(Xml.childxml_arg0"tags")inletfindingCriteria=(Option.map~f:FindingCriteria.of_xml)(Xml.childxml_arg0"findingCriteria")inletrank=(Option.map~f:FilterRank.of_xml)(Xml.childxml_arg0"rank")inletaction=(Option.map~f:FilterAction.of_xml)(Xml.childxml_arg0"action")inletdescription=(Option.map~f:FilterDescription.of_xml)(Xml.childxml_arg0"description")inletname=(Option.map~f:FilterName.of_xml)(Xml.childxml_arg0"name")inmake?tags?findingCriteria?rank?action?description?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"Tags"TagMap.of_jsoninletfindingCriteria=field_mapjson__"FindingCriteria"FindingCriteria.of_jsoninletrank=field_mapjson__"Rank"FilterRank.of_jsoninletaction=field_mapjson__"Action"FilterAction.of_jsoninletdescription=field_mapjson__"Description"FilterDescription.of_jsoninletname=field_mapjson__"Name"FilterName.of_jsoninmake?tags?findingCriteria?rank?action?description?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns the details of the filter specified by the filter name."]moduleGetFilterRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector that is associated with this filter. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];filterName:String_.t[@ocaml.doc"The name of the filter you want to get."]}letcontext_="GetFilterRequest"letmake~detectorId=fun~filterName->fun()->{detectorId;filterName}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("FilterName",(Some(String_.to_valuex.filterName)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letfilterName=String_.of_xml(Xml.child_exn~context:context_xml_arg0"FilterName")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake~filterName~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letfilterName=field_map_exnjson__"FilterName"String_.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake~filterName~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns the details of the filter specified by the filter name."]moduleGetDetectorResponse=structtypenonrect={createdAt:String_.toption[@ocaml.doc"The timestamp of when the detector was created."];findingPublishingFrequency:FindingPublishingFrequency.toption[@ocaml.doc"The publishing frequency of the finding."];serviceRole:String_.toption[@ocaml.doc"The GuardDuty service role."];status:DetectorStatus.toption[@ocaml.doc"The detector status."];updatedAt:String_.toption[@ocaml.doc"The last-updated timestamp for the detector."];dataSources:DataSourceConfigurationsResult.toption[@ocaml.doc"Describes which data sources are enabled for the detector."];tags:TagMap.toption[@ocaml.doc"The tags of the detector resource."];features:DetectorFeatureConfigurationsResults.toption[@ocaml.doc"Describes the features that have been enabled for the detector."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?createdAt=fun?findingPublishingFrequency->fun?serviceRole->fun?status->fun?updatedAt->fun?dataSources->fun?tags->fun?features->fun()->{createdAt;findingPublishingFrequency;serviceRole;status;updatedAt;dataSources;tags;features}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("createdAt",(Option.mapx.createdAt~f:String_.to_value));("findingPublishingFrequency",(Option.mapx.findingPublishingFrequency~f:FindingPublishingFrequency.to_value));("serviceRole",(Option.mapx.serviceRole~f:String_.to_value));("status",(Option.mapx.status~f:DetectorStatus.to_value));("updatedAt",(Option.mapx.updatedAt~f:String_.to_value));("dataSources",(Option.mapx.dataSources~f:DataSourceConfigurationsResult.to_value));("tags",(Option.mapx.tags~f:TagMap.to_value));("features",(Option.mapx.features~f:DetectorFeatureConfigurationsResults.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letfeatures=(Option.map~f:DetectorFeatureConfigurationsResults.of_xml)(Xml.childxml_arg0"features")inlettags=(Option.map~f:TagMap.of_xml)(Xml.childxml_arg0"tags")inletdataSources=(Option.map~f:DataSourceConfigurationsResult.of_xml)(Xml.childxml_arg0"dataSources")inletupdatedAt=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"updatedAt")inletstatus=(Option.map~f:DetectorStatus.of_xml)(Xml.childxml_arg0"status")inletserviceRole=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"serviceRole")inletfindingPublishingFrequency=(Option.map~f:FindingPublishingFrequency.of_xml)(Xml.childxml_arg0"findingPublishingFrequency")inletcreatedAt=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"createdAt")inmake?features?tags?dataSources?updatedAt?status?serviceRole?findingPublishingFrequency?createdAt()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letfeatures=field_mapjson__"Features"DetectorFeatureConfigurationsResults.of_jsoninlettags=field_mapjson__"Tags"TagMap.of_jsoninletdataSources=field_mapjson__"DataSources"DataSourceConfigurationsResult.of_jsoninletupdatedAt=field_mapjson__"UpdatedAt"String_.of_jsoninletstatus=field_mapjson__"Status"DetectorStatus.of_jsoninletserviceRole=field_mapjson__"ServiceRole"String_.of_jsoninletfindingPublishingFrequency=field_mapjson__"FindingPublishingFrequency"FindingPublishingFrequency.of_jsoninletcreatedAt=field_mapjson__"CreatedAt"String_.of_jsoninmake?features?tags?dataSources?updatedAt?status?serviceRole?findingPublishingFrequency?createdAt()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves a GuardDuty detector specified by the detectorId. There might be regional differences because some data sources might not be available in all the Amazon Web Services Regions where GuardDuty is presently supported. For more information, see Regions and endpoints."]moduleGetDetectorRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector that you want to get. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."]}letcontext_="GetDetectorRequest"letmake~detectorId=fun()->{detectorId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves a GuardDuty detector specified by the detectorId. There might be regional differences because some data sources might not be available in all the Amazon Web Services Regions where GuardDuty is presently supported. For more information, see Regions and endpoints."]moduleGetCoverageStatisticsResponse=structtypenonrect={coverageStatistics:CoverageStatistics.toption[@ocaml.doc"Represents the count aggregated by the statusCode and resourceType."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?coverageStatistics=fun()->{coverageStatistics}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("coverageStatistics",(Option.mapx.coverageStatistics~f:CoverageStatistics.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcoverageStatistics=(Option.map~f:CoverageStatistics.of_xml)(Xml.childxml_arg0"coverageStatistics")inmake?coverageStatistics()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcoverageStatistics=field_mapjson__"CoverageStatistics"CoverageStatistics.of_jsoninmake?coverageStatistics()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves aggregated statistics for your account. If you are a GuardDuty administrator, you can retrieve the statistics for all the resources associated with the active member accounts in your organization who have enabled Runtime Monitoring and have the GuardDuty security agent running on their resources."]moduleGetCoverageStatisticsRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the GuardDuty detector. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];filterCriteria:CoverageFilterCriteria.toption[@ocaml.doc"Represents the criteria used to filter the coverage statistics."];statisticsType:CoverageStatisticsTypeList.t[@ocaml.doc"Represents the statistics type used to aggregate the coverage details."]}letcontext_="GetCoverageStatisticsRequest"letmake?filterCriteria=fun~detectorId->fun~statisticsType->fun()->{filterCriteria;detectorId;statisticsType}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("filterCriteria",(Option.mapx.filterCriteria~f:CoverageFilterCriteria.to_value));("statisticsType",(Some(CoverageStatisticsTypeList.to_valuex.statisticsType)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstatisticsType=CoverageStatisticsTypeList.of_xml(Xml.child_exn~context:context_xml_arg0"statisticsType")inletfilterCriteria=(Option.map~f:CoverageFilterCriteria.of_xml)(Xml.childxml_arg0"filterCriteria")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake~statisticsType?filterCriteria~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstatisticsType=field_map_exnjson__"StatisticsType"CoverageStatisticsTypeList.of_jsoninletfilterCriteria=field_mapjson__"FilterCriteria"CoverageFilterCriteria.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake~statisticsType?filterCriteria~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves aggregated statistics for your account. If you are a GuardDuty administrator, you can retrieve the statistics for all the resources associated with the active member accounts in your organization who have enabled Runtime Monitoring and have the GuardDuty security agent running on their resources."]moduleGetAdministratorAccountResponse=structtypenonrect={administrator:Administrator.toption[@ocaml.doc"The administrator account details."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?administrator=fun()->{administrator}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("administrator",(Option.mapx.administrator~f:Administrator.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letadministrator=(Option.map~f:Administrator.of_xml)(Xml.childxml_arg0"administrator")inmake?administrator()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letadministrator=field_mapjson__"Administrator"Administrator.of_jsoninmake?administrator()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Provides the details of the GuardDuty administrator account associated with the current GuardDuty member account. Based on the type of account that runs this API, the following list shows how the API behavior varies: When the GuardDuty administrator account runs this API, it will return success (HTTP 200) but no content. When a member account runs this API, it will return the details of the GuardDuty administrator account that is associated with this calling member account. When an individual account (not associated with an organization) runs this API, it will return success (HTTP 200) but no content."]moduleGetAdministratorAccountRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector of the GuardDuty member account."]}letcontext_="GetAdministratorAccountRequest"letmake~detectorId=fun()->{detectorId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Provides the details of the GuardDuty administrator account associated with the current GuardDuty member account. Based on the type of account that runs this API, the following list shows how the API behavior varies: When the GuardDuty administrator account runs this API, it will return success (HTTP 200) but no content. When a member account runs this API, it will return the details of the GuardDuty administrator account that is associated with this calling member account. When an individual account (not associated with an organization) runs this API, it will return success (HTTP 200) but no content."]moduleEnableOrganizationAdminAccountResponse=structtypenonrect=unittypenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.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"Designates an Amazon Web Services account within the organization as your GuardDuty delegated administrator. Only the organization's management account can run this API operation."]moduleEnableOrganizationAdminAccountRequest=structtypenonrect={adminAccountId:String_.t[@ocaml.doc"The Amazon Web Services account ID for the organization account to be enabled as a GuardDuty delegated administrator."]}letcontext_="EnableOrganizationAdminAccountRequest"letmake~adminAccountId=fun()->{adminAccountId}letto_valuex=structure_to_value[("adminAccountId",(Some(String_.to_valuex.adminAccountId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letadminAccountId=String_.of_xml(Xml.child_exn~context:context_xml_arg0"adminAccountId")inmake~adminAccountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letadminAccountId=field_map_exnjson__"AdminAccountId"String_.of_jsoninmake~adminAccountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Designates an Amazon Web Services account within the organization as your GuardDuty delegated administrator. Only the organization's management account can run this API operation."]moduleDisassociateMembersResponse=structtypenonrect={unprocessedAccounts:UnprocessedAccounts.toption[@ocaml.doc"A list of objects that contain the unprocessed account and a result string that explains why it was unprocessed."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?unprocessedAccounts=fun()->{unprocessedAccounts}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("unprocessedAccounts",(Option.mapx.unprocessedAccounts~f:UnprocessedAccounts.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letunprocessedAccounts=(Option.map~f:UnprocessedAccounts.of_xml)(Xml.childxml_arg0"unprocessedAccounts")inmake?unprocessedAccounts()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letunprocessedAccounts=field_mapjson__"UnprocessedAccounts"UnprocessedAccounts.of_jsoninmake?unprocessedAccounts()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Disassociates GuardDuty member accounts (from the current administrator account) specified by the account IDs. When you disassociate an invited member from a GuardDuty delegated administrator, the member account details obtained from the CreateMembers API, including the associated email addresses, are retained. This is done so that the delegated administrator can invoke the InviteMembers API without the need to invoke the CreateMembers API again. To remove the details associated with a member account, the delegated administrator must invoke the DeleteMembers API. With autoEnableOrganizationMembers configuration for your organization set to ALL, you'll receive an error if you attempt to disassociate a member account before removing them from your organization. If you disassociate a member account that was added by invitation, the member account details obtained from this API, including the associated email addresses, will be retained. This is done so that the delegated administrator can invoke the InviteMembers API without the need to invoke the CreateMembers API again. To remove the details associated with a member account, the delegated administrator must invoke the DeleteMembers API. When the member accounts added through Organizations are later disassociated, you (administrator) can't invite them by calling the InviteMembers API. You can create an association with these member accounts again only by calling the CreateMembers API."]moduleDisassociateMembersRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector of the GuardDuty account whose members you want to disassociate from the administrator account."];accountIds:AccountIds.t[@ocaml.doc"A list of account IDs of the GuardDuty member accounts that you want to disassociate from the administrator account."]}letcontext_="DisassociateMembersRequest"letmake~detectorId=fun~accountIds->fun()->{detectorId;accountIds}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("accountIds",(Some(AccountIds.to_valuex.accountIds)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccountIds=AccountIds.of_xml(Xml.child_exn~context:context_xml_arg0"accountIds")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake~accountIds~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccountIds=field_map_exnjson__"AccountIds"AccountIds.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake~accountIds~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Disassociates GuardDuty member accounts (from the current administrator account) specified by the account IDs. When you disassociate an invited member from a GuardDuty delegated administrator, the member account details obtained from the CreateMembers API, including the associated email addresses, are retained. This is done so that the delegated administrator can invoke the InviteMembers API without the need to invoke the CreateMembers API again. To remove the details associated with a member account, the delegated administrator must invoke the DeleteMembers API. With autoEnableOrganizationMembers configuration for your organization set to ALL, you'll receive an error if you attempt to disassociate a member account before removing them from your organization. If you disassociate a member account that was added by invitation, the member account details obtained from this API, including the associated email addresses, will be retained. This is done so that the delegated administrator can invoke the InviteMembers API without the need to invoke the CreateMembers API again. To remove the details associated with a member account, the delegated administrator must invoke the DeleteMembers API. When the member accounts added through Organizations are later disassociated, you (administrator) can't invite them by calling the InviteMembers API. You can create an association with these member accounts again only by calling the CreateMembers API."]moduleDisassociateFromMasterAccountResponse=structtypenonrect=unittypenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.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"Disassociates the current GuardDuty member account from its administrator account. When you disassociate an invited member from a GuardDuty delegated administrator, the member account details obtained from the CreateMembers API, including the associated email addresses, are retained. This is done so that the delegated administrator can invoke the InviteMembers API without the need to invoke the CreateMembers API again. To remove the details associated with a member account, the delegated administrator must invoke the DeleteMembers API."]moduleDisassociateFromMasterAccountRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector of the GuardDuty member account."]}letcontext_="DisassociateFromMasterAccountRequest"letmake~detectorId=fun()->{detectorId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Disassociates the current GuardDuty member account from its administrator account. When you disassociate an invited member from a GuardDuty delegated administrator, the member account details obtained from the CreateMembers API, including the associated email addresses, are retained. This is done so that the delegated administrator can invoke the InviteMembers API without the need to invoke the CreateMembers API again. To remove the details associated with a member account, the delegated administrator must invoke the DeleteMembers API."]moduleDisassociateFromAdministratorAccountResponse=structtypenonrect=unittypenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.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"Disassociates the current GuardDuty member account from its administrator account. When you disassociate an invited member from a GuardDuty delegated administrator, the member account details obtained from the CreateMembers API, including the associated email addresses, are retained. This is done so that the delegated administrator can invoke the InviteMembers API without the need to invoke the CreateMembers API again. To remove the details associated with a member account, the delegated administrator must invoke the DeleteMembers API. With autoEnableOrganizationMembers configuration for your organization set to ALL, you'll receive an error if you attempt to disable GuardDuty in a member account."]moduleDisassociateFromAdministratorAccountRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector of the GuardDuty member account."]}letcontext_="DisassociateFromAdministratorAccountRequest"letmake~detectorId=fun()->{detectorId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Disassociates the current GuardDuty member account from its administrator account. When you disassociate an invited member from a GuardDuty delegated administrator, the member account details obtained from the CreateMembers API, including the associated email addresses, are retained. This is done so that the delegated administrator can invoke the InviteMembers API without the need to invoke the CreateMembers API again. To remove the details associated with a member account, the delegated administrator must invoke the DeleteMembers API. With autoEnableOrganizationMembers configuration for your organization set to ALL, you'll receive an error if you attempt to disable GuardDuty in a member account."]moduleDisableOrganizationAdminAccountResponse=structtypenonrect=unittypenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.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 the existing GuardDuty delegated administrator of the organization. Only the organization's management account can run this API operation."]moduleDisableOrganizationAdminAccountRequest=structtypenonrect={adminAccountId:String_.t[@ocaml.doc"The Amazon Web Services Account ID for the organizations account to be disabled as a GuardDuty delegated administrator."]}letcontext_="DisableOrganizationAdminAccountRequest"letmake~adminAccountId=fun()->{adminAccountId}letto_valuex=structure_to_value[("adminAccountId",(Some(String_.to_valuex.adminAccountId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letadminAccountId=String_.of_xml(Xml.child_exn~context:context_xml_arg0"adminAccountId")inmake~adminAccountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letadminAccountId=field_map_exnjson__"AdminAccountId"String_.of_jsoninmake~adminAccountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Removes the existing GuardDuty delegated administrator of the organization. Only the organization's management account can run this API operation."]moduleDescribePublishingDestinationResponse=structtypenonrect={destinationId:String_.toption[@ocaml.doc"The ID of the publishing destination."];destinationType:DestinationType.toption[@ocaml.doc"The type of publishing destination. Currently, only Amazon S3 buckets are supported."];status:PublishingStatus.toption[@ocaml.doc"The status of the publishing destination."];publishingFailureStartTimestamp:Long.toption[@ocaml.doc"The time, in epoch millisecond format, at which GuardDuty was first unable to publish findings to the destination."];destinationProperties:DestinationProperties.toption[@ocaml.doc"A DestinationProperties object that includes the DestinationArn and KmsKeyArn of the publishing destination."];tags:TagMap.toption[@ocaml.doc"The tags of the publishing destination resource."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?destinationId=fun?destinationType->fun?status->fun?publishingFailureStartTimestamp->fun?destinationProperties->fun?tags->fun()->{destinationId;destinationType;status;publishingFailureStartTimestamp;destinationProperties;tags}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("destinationId",(Option.mapx.destinationId~f:String_.to_value));("destinationType",(Option.mapx.destinationType~f:DestinationType.to_value));("status",(Option.mapx.status~f:PublishingStatus.to_value));("publishingFailureStartTimestamp",(Option.mapx.publishingFailureStartTimestamp~f:Long.to_value));("destinationProperties",(Option.mapx.destinationProperties~f:DestinationProperties.to_value));("tags",(Option.mapx.tags~f:TagMap.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:TagMap.of_xml)(Xml.childxml_arg0"tags")inletdestinationProperties=(Option.map~f:DestinationProperties.of_xml)(Xml.childxml_arg0"destinationProperties")inletpublishingFailureStartTimestamp=(Option.map~f:Long.of_xml)(Xml.childxml_arg0"publishingFailureStartTimestamp")inletstatus=(Option.map~f:PublishingStatus.of_xml)(Xml.childxml_arg0"status")inletdestinationType=(Option.map~f:DestinationType.of_xml)(Xml.childxml_arg0"destinationType")inletdestinationId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"destinationId")inmake?tags?destinationProperties?publishingFailureStartTimestamp?status?destinationType?destinationId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"Tags"TagMap.of_jsoninletdestinationProperties=field_mapjson__"DestinationProperties"DestinationProperties.of_jsoninletpublishingFailureStartTimestamp=field_mapjson__"PublishingFailureStartTimestamp"Long.of_jsoninletstatus=field_mapjson__"Status"PublishingStatus.of_jsoninletdestinationType=field_mapjson__"DestinationType"DestinationType.of_jsoninletdestinationId=field_mapjson__"DestinationId"String_.of_jsoninmake?tags?destinationProperties?publishingFailureStartTimestamp?status?destinationType?destinationId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns information about the publishing destination specified by the provided destinationId."]moduleDescribePublishingDestinationRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector associated with the publishing destination to retrieve. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];destinationId:String_.t[@ocaml.doc"The ID of the publishing destination to retrieve."]}letcontext_="DescribePublishingDestinationRequest"letmake~detectorId=fun~destinationId->fun()->{detectorId;destinationId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("DestinationId",(Some(String_.to_valuex.destinationId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdestinationId=String_.of_xml(Xml.child_exn~context:context_xml_arg0"DestinationId")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake~destinationId~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdestinationId=field_map_exnjson__"DestinationId"String_.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake~destinationId~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns information about the publishing destination specified by the provided destinationId."]moduleDescribeOrganizationConfigurationResponse=structtypenonrect={autoEnable:Boolean.toption[@ocaml.doc"Indicates whether GuardDuty is automatically enabled for accounts added to the organization. Even though this is still supported, we recommend using AutoEnableOrganizationMembers to achieve the similar results."];memberAccountLimitReached:Boolean.toption[@ocaml.doc"Indicates whether the maximum number of allowed member accounts are already associated with the delegated administrator account for your organization."];dataSources:OrganizationDataSourceConfigurationsResult.toption[@ocaml.doc"Describes which data sources are enabled automatically for member accounts."];features:OrganizationFeaturesConfigurationsResults.toption[@ocaml.doc"A list of features that are configured for this organization."];nextToken:String_.toption[@ocaml.doc"The pagination parameter to be used on the next list operation to retrieve more items."];autoEnableOrganizationMembers:AutoEnableMembers.toption[@ocaml.doc"Indicates the auto-enablement configuration of GuardDuty or any of the corresponding protection plans for the member accounts in the organization. NEW: Indicates that when a new account joins the organization, they will have GuardDuty or any of the corresponding protection plans enabled automatically. ALL: Indicates that all accounts in the organization have GuardDuty and any of the corresponding protection plans enabled automatically. This includes NEW accounts that join the organization and accounts that may have been suspended or removed from the organization in GuardDuty. NONE: Indicates that GuardDuty or any of the corresponding protection plans will not be automatically enabled for any account in the organization. The administrator must manage GuardDuty for each account in the organization individually. When you update the auto-enable setting from ALL or NEW to NONE, this action doesn't disable the corresponding option for your existing accounts. This configuration will apply to the new accounts that join the organization. After you update the auto-enable settings, no new account will have the corresponding option as enabled."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?autoEnable=fun?memberAccountLimitReached->fun?dataSources->fun?features->fun?nextToken->fun?autoEnableOrganizationMembers->fun()->{autoEnable;memberAccountLimitReached;dataSources;features;nextToken;autoEnableOrganizationMembers}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("autoEnable",(Option.mapx.autoEnable~f:Boolean.to_value));("memberAccountLimitReached",(Option.mapx.memberAccountLimitReached~f:Boolean.to_value));("dataSources",(Option.mapx.dataSources~f:OrganizationDataSourceConfigurationsResult.to_value));("features",(Option.mapx.features~f:OrganizationFeaturesConfigurationsResults.to_value));("nextToken",(Option.mapx.nextToken~f:String_.to_value));("autoEnableOrganizationMembers",(Option.mapx.autoEnableOrganizationMembers~f:AutoEnableMembers.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letautoEnableOrganizationMembers=(Option.map~f:AutoEnableMembers.of_xml)(Xml.childxml_arg0"autoEnableOrganizationMembers")inletnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inletfeatures=(Option.map~f:OrganizationFeaturesConfigurationsResults.of_xml)(Xml.childxml_arg0"features")inletdataSources=(Option.map~f:OrganizationDataSourceConfigurationsResult.of_xml)(Xml.childxml_arg0"dataSources")inletmemberAccountLimitReached=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"memberAccountLimitReached")inletautoEnable=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"autoEnable")inmake?autoEnableOrganizationMembers?nextToken?features?dataSources?memberAccountLimitReached?autoEnable()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letautoEnableOrganizationMembers=field_mapjson__"AutoEnableOrganizationMembers"AutoEnableMembers.of_jsoninletnextToken=field_mapjson__"NextToken"String_.of_jsoninletfeatures=field_mapjson__"Features"OrganizationFeaturesConfigurationsResults.of_jsoninletdataSources=field_mapjson__"DataSources"OrganizationDataSourceConfigurationsResult.of_jsoninletmemberAccountLimitReached=field_mapjson__"MemberAccountLimitReached"Boolean.of_jsoninletautoEnable=field_mapjson__"AutoEnable"Boolean.of_jsoninmake?autoEnableOrganizationMembers?nextToken?features?dataSources?memberAccountLimitReached?autoEnable()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns information about the account selected as the delegated administrator for GuardDuty. There might be regional differences because some data sources might not be available in all the Amazon Web Services Regions where GuardDuty is presently supported. For more information, see Regions and endpoints."]moduleDescribeOrganizationConfigurationRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The detector ID of the delegated administrator for which you need to retrieve the information. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];maxResults:MaxResults.toption[@ocaml.doc"You can use this parameter to indicate the maximum number of items that you want in the response."];nextToken:String_.toption[@ocaml.doc"You can use this parameter when paginating results. Set the value of this parameter to null on your first call to the list action. For subsequent calls to the action, fill nextToken in the request with the value of NextToken from the previous response to continue listing data."]}letcontext_="DescribeOrganizationConfigurationRequest"letmake?maxResults=fun?nextToken->fun~detectorId->fun()->{maxResults;nextToken;detectorId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("maxResults",(Option.mapx.maxResults~f:MaxResults.to_value));("nextToken",(Option.mapx.nextToken~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inletmaxResults=(Option.map~f:MaxResults.of_xml)(Xml.childxml_arg0"maxResults")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake?nextToken?maxResults~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"String_.of_jsoninletmaxResults=field_mapjson__"MaxResults"MaxResults.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake?nextToken?maxResults~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns information about the account selected as the delegated administrator for GuardDuty. There might be regional differences because some data sources might not be available in all the Amazon Web Services Regions where GuardDuty is presently supported. For more information, see Regions and endpoints."]moduleDescribeMalwareScansResponse=structtypenonrect={scans:Scans.toption[@ocaml.doc"Contains information about malware scans associated with GuardDuty Malware Protection for EC2."];nextToken:String_.toption[@ocaml.doc"The pagination parameter to be used on the next list operation to retrieve more items."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?scans=fun?nextToken->fun()->{scans;nextToken}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("scans",(Option.mapx.scans~f:Scans.to_value));("nextToken",(Option.mapx.nextToken~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inletscans=(Option.map~f:Scans.of_xml)(Xml.childxml_arg0"scans")inmake?nextToken?scans()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"String_.of_jsoninletscans=field_mapjson__"Scans"Scans.of_jsoninmake?nextToken?scans()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns a list of malware scans. Each member account can view the malware scans for their own accounts. An administrator can view the malware scans for all the member accounts. There might be regional differences because some data sources might not be available in all the Amazon Web Services Regions where GuardDuty is presently supported. For more information, see Regions and endpoints."]moduleDescribeMalwareScansRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector that the request is associated with. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];nextToken:String_.toption[@ocaml.doc"You can use this parameter when paginating results. Set the value of this parameter to null on your first call to the list action. For subsequent calls to the action, fill nextToken in the request with the value of NextToken from the previous response to continue listing data."];maxResults:IntegerValueWithMax.toption[@ocaml.doc"You can use this parameter to indicate the maximum number of items that you want in the response. The default value is 50. The maximum value is 50."];filterCriteria:FilterCriteria.toption[@ocaml.doc"Represents the criteria to be used in the filter for describing scan entries."];sortCriteria:SortCriteria.toption[@ocaml.doc"Represents the criteria used for sorting scan entries. The attributeName is required and it must be scanStartTime."]}letcontext_="DescribeMalwareScansRequest"letmake?nextToken=fun?maxResults->fun?filterCriteria->fun?sortCriteria->fun~detectorId->fun()->{nextToken;maxResults;filterCriteria;sortCriteria;detectorId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("nextToken",(Option.mapx.nextToken~f:String_.to_value));("maxResults",(Option.mapx.maxResults~f:IntegerValueWithMax.to_value));("filterCriteria",(Option.mapx.filterCriteria~f:FilterCriteria.to_value));("sortCriteria",(Option.mapx.sortCriteria~f:SortCriteria.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letsortCriteria=(Option.map~f:SortCriteria.of_xml)(Xml.childxml_arg0"sortCriteria")inletfilterCriteria=(Option.map~f:FilterCriteria.of_xml)(Xml.childxml_arg0"filterCriteria")inletmaxResults=(Option.map~f:IntegerValueWithMax.of_xml)(Xml.childxml_arg0"maxResults")inletnextToken=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"nextToken")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake?sortCriteria?filterCriteria?maxResults?nextToken~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letsortCriteria=field_mapjson__"SortCriteria"SortCriteria.of_jsoninletfilterCriteria=field_mapjson__"FilterCriteria"FilterCriteria.of_jsoninletmaxResults=field_mapjson__"MaxResults"IntegerValueWithMax.of_jsoninletnextToken=field_mapjson__"NextToken"String_.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake?sortCriteria?filterCriteria?maxResults?nextToken~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns a list of malware scans. Each member account can view the malware scans for their own accounts. An administrator can view the malware scans for all the member accounts. There might be regional differences because some data sources might not be available in all the Amazon Web Services Regions where GuardDuty is presently supported. For more information, see Regions and endpoints."]moduleDeleteTrustedEntitySetResponse=structtypenonrect=unittypenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.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 the trusted entity set that is associated with the specified trustedEntitySetId."]moduleDeleteTrustedEntitySetRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector associated with the trusted entity set resource. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];trustedEntitySetId:String_.t[@ocaml.doc"The unique ID that helps GuardDuty identify which trusted entity set needs to be deleted."]}letcontext_="DeleteTrustedEntitySetRequest"letmake~detectorId=fun~trustedEntitySetId->fun()->{detectorId;trustedEntitySetId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("TrustedEntitySetId",(Some(String_.to_valuex.trustedEntitySetId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettrustedEntitySetId=String_.of_xml(Xml.child_exn~context:context_xml_arg0"TrustedEntitySetId")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake~trustedEntitySetId~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettrustedEntitySetId=field_map_exnjson__"TrustedEntitySetId"String_.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake~trustedEntitySetId~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Deletes the trusted entity set that is associated with the specified trustedEntitySetId."]moduleDeleteThreatIntelSetResponse=structtypenonrect=unittypenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.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 the ThreatIntelSet specified by the ThreatIntelSet ID."]moduleDeleteThreatIntelSetRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector that is associated with the threatIntelSet. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];threatIntelSetId:String_.t[@ocaml.doc"The unique ID of the threatIntelSet that you want to delete."]}letcontext_="DeleteThreatIntelSetRequest"letmake~detectorId=fun~threatIntelSetId->fun()->{detectorId;threatIntelSetId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("ThreatIntelSetId",(Some(String_.to_valuex.threatIntelSetId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letthreatIntelSetId=String_.of_xml(Xml.child_exn~context:context_xml_arg0"ThreatIntelSetId")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake~threatIntelSetId~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letthreatIntelSetId=field_map_exnjson__"ThreatIntelSetId"String_.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake~threatIntelSetId~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Deletes the ThreatIntelSet specified by the ThreatIntelSet ID."]moduleDeleteThreatEntitySetResponse=structtypenonrect=unittypenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.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 the threat entity set that is associated with the specified threatEntitySetId."]moduleDeleteThreatEntitySetRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector associated with the threat entity set resource. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];threatEntitySetId:String_.t[@ocaml.doc"The unique ID that helps GuardDuty identify which threat entity set needs to be deleted."]}letcontext_="DeleteThreatEntitySetRequest"letmake~detectorId=fun~threatEntitySetId->fun()->{detectorId;threatEntitySetId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("ThreatEntitySetId",(Some(String_.to_valuex.threatEntitySetId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letthreatEntitySetId=String_.of_xml(Xml.child_exn~context:context_xml_arg0"ThreatEntitySetId")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake~threatEntitySetId~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letthreatEntitySetId=field_map_exnjson__"ThreatEntitySetId"String_.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake~threatEntitySetId~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Deletes the threat entity set that is associated with the specified threatEntitySetId."]moduleDeletePublishingDestinationResponse=structtypenonrect=unittypenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.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 the publishing definition with the specified destinationId."]moduleDeletePublishingDestinationRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector associated with the publishing destination to delete. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];destinationId:String_.t[@ocaml.doc"The ID of the publishing destination to delete."]}letcontext_="DeletePublishingDestinationRequest"letmake~detectorId=fun~destinationId->fun()->{detectorId;destinationId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("DestinationId",(Some(String_.to_valuex.destinationId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdestinationId=String_.of_xml(Xml.child_exn~context:context_xml_arg0"DestinationId")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake~destinationId~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdestinationId=field_map_exnjson__"DestinationId"String_.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake~destinationId~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Deletes the publishing definition with the specified destinationId."]moduleDeleteMembersResponse=structtypenonrect={unprocessedAccounts:UnprocessedAccounts.toption[@ocaml.doc"The accounts that could not be processed."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?unprocessedAccounts=fun()->{unprocessedAccounts}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("unprocessedAccounts",(Option.mapx.unprocessedAccounts~f:UnprocessedAccounts.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letunprocessedAccounts=(Option.map~f:UnprocessedAccounts.of_xml)(Xml.childxml_arg0"unprocessedAccounts")inmake?unprocessedAccounts()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letunprocessedAccounts=field_mapjson__"UnprocessedAccounts"UnprocessedAccounts.of_jsoninmake?unprocessedAccounts()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Deletes GuardDuty member accounts (to the current GuardDuty administrator account) specified by the account IDs. With autoEnableOrganizationMembers configuration for your organization set to ALL, you'll receive an error if you attempt to disable GuardDuty for a member account in your organization."]moduleDeleteMembersRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector of the GuardDuty account whose members you want to delete. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];accountIds:AccountIds.t[@ocaml.doc"A list of account IDs of the GuardDuty member accounts that you want to delete."]}letcontext_="DeleteMembersRequest"letmake~detectorId=fun~accountIds->fun()->{detectorId;accountIds}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("accountIds",(Some(AccountIds.to_valuex.accountIds)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccountIds=AccountIds.of_xml(Xml.child_exn~context:context_xml_arg0"accountIds")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake~accountIds~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccountIds=field_map_exnjson__"AccountIds"AccountIds.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake~accountIds~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Deletes GuardDuty member accounts (to the current GuardDuty administrator account) specified by the account IDs. With autoEnableOrganizationMembers configuration for your organization set to ALL, you'll receive an error if you attempt to disable GuardDuty for a member account in your organization."]moduleDeleteMalwareProtectionPlanRequest=structtypenonrect={malwareProtectionPlanId:String_.t[@ocaml.doc"A unique identifier associated with Malware Protection plan resource."]}letcontext_="DeleteMalwareProtectionPlanRequest"letmake~malwareProtectionPlanId=fun()->{malwareProtectionPlanId}letto_valuex=structure_to_value[("MalwareProtectionPlanId",(Some(String_.to_valuex.malwareProtectionPlanId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmalwareProtectionPlanId=String_.of_xml(Xml.child_exn~context:context_xml_arg0"MalwareProtectionPlanId")inmake~malwareProtectionPlanId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmalwareProtectionPlanId=field_map_exnjson__"MalwareProtectionPlanId"String_.of_jsoninmake~malwareProtectionPlanId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Deletes the Malware Protection plan ID associated with the Malware Protection plan resource. Use this API only when you no longer want to protect the resource associated with this Malware Protection plan ID."]moduleDeleteInvitationsResponse=structtypenonrect={unprocessedAccounts:UnprocessedAccounts.toption[@ocaml.doc"A list of objects that contain the unprocessed account and a result string that explains why it was unprocessed."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?unprocessedAccounts=fun()->{unprocessedAccounts}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("unprocessedAccounts",(Option.mapx.unprocessedAccounts~f:UnprocessedAccounts.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letunprocessedAccounts=(Option.map~f:UnprocessedAccounts.of_xml)(Xml.childxml_arg0"unprocessedAccounts")inmake?unprocessedAccounts()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letunprocessedAccounts=field_mapjson__"UnprocessedAccounts"UnprocessedAccounts.of_jsoninmake?unprocessedAccounts()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Deletes invitations sent to the current member account by Amazon Web Services accounts specified by their account IDs."]moduleDeleteInvitationsRequest=structtypenonrect={accountIds:AccountIds.t[@ocaml.doc"A list of account IDs of the Amazon Web Services accounts that sent invitations to the current member account that you want to delete invitations from."]}letcontext_="DeleteInvitationsRequest"letmake~accountIds=fun()->{accountIds}letto_valuex=structure_to_value[("accountIds",(Some(AccountIds.to_valuex.accountIds)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccountIds=AccountIds.of_xml(Xml.child_exn~context:context_xml_arg0"accountIds")inmake~accountIds()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccountIds=field_map_exnjson__"AccountIds"AccountIds.of_jsoninmake~accountIds()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Deletes invitations sent to the current member account by Amazon Web Services accounts specified by their account IDs."]moduleDeleteIPSetResponse=structtypenonrect=unittypenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.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 the IPSet specified by the ipSetId. IPSets are called trusted IP lists in the console user interface."]moduleDeleteIPSetRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector associated with the IPSet. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];ipSetId:String_.t[@ocaml.doc"The unique ID of the IPSet to delete."]}letcontext_="DeleteIPSetRequest"letmake~detectorId=fun~ipSetId->fun()->{detectorId;ipSetId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("IpSetId",(Some(String_.to_valuex.ipSetId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letipSetId=String_.of_xml(Xml.child_exn~context:context_xml_arg0"IpSetId")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake~ipSetId~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letipSetId=field_map_exnjson__"IpSetId"String_.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake~ipSetId~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Deletes the IPSet specified by the ipSetId. IPSets are called trusted IP lists in the console user interface."]moduleDeleteFilterResponse=structtypenonrect=unittypenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.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 the filter specified by the filter name."]moduleDeleteFilterRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector that is associated with the filter. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];filterName:String_.t[@ocaml.doc"The name of the filter that you want to delete."]}letcontext_="DeleteFilterRequest"letmake~detectorId=fun~filterName->fun()->{detectorId;filterName}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("FilterName",(Some(String_.to_valuex.filterName)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letfilterName=String_.of_xml(Xml.child_exn~context:context_xml_arg0"FilterName")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake~filterName~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letfilterName=field_map_exnjson__"FilterName"String_.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake~filterName~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Deletes the filter specified by the filter name."]moduleDeleteDetectorResponse=structtypenonrect=unittypenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.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 Amazon GuardDuty detector that is specified by the detector ID."]moduleDeleteDetectorRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector that you want to delete. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."]}letcontext_="DeleteDetectorRequest"letmake~detectorId=fun()->{detectorId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Deletes an Amazon GuardDuty detector that is specified by the detector ID."]moduleDeclineInvitationsResponse=structtypenonrect={unprocessedAccounts:UnprocessedAccounts.toption[@ocaml.doc"A list of objects that contain the unprocessed account and a result string that explains why it was unprocessed."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?unprocessedAccounts=fun()->{unprocessedAccounts}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("unprocessedAccounts",(Option.mapx.unprocessedAccounts~f:UnprocessedAccounts.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letunprocessedAccounts=(Option.map~f:UnprocessedAccounts.of_xml)(Xml.childxml_arg0"unprocessedAccounts")inmake?unprocessedAccounts()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letunprocessedAccounts=field_mapjson__"UnprocessedAccounts"UnprocessedAccounts.of_jsoninmake?unprocessedAccounts()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Declines invitations sent to the current member account by Amazon Web Services accounts specified by their account IDs."]moduleDeclineInvitationsRequest=structtypenonrect={accountIds:AccountIds.t[@ocaml.doc"A list of account IDs of the Amazon Web Services accounts that sent invitations to the current member account that you want to decline invitations from."]}letcontext_="DeclineInvitationsRequest"letmake~accountIds=fun()->{accountIds}letto_valuex=structure_to_value[("accountIds",(Some(AccountIds.to_valuex.accountIds)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccountIds=AccountIds.of_xml(Xml.child_exn~context:context_xml_arg0"accountIds")inmake~accountIds()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccountIds=field_map_exnjson__"AccountIds"AccountIds.of_jsoninmake~accountIds()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Declines invitations sent to the current member account by Amazon Web Services accounts specified by their account IDs."]moduleCreateTrustedEntitySetResponse=structtypenonrect={trustedEntitySetId:String_.toption[@ocaml.doc"The ID returned by GuardDuty after creation of the trusted entity set resource."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?trustedEntitySetId=fun()->{trustedEntitySetId}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("trustedEntitySetId",(Option.mapx.trustedEntitySetId~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettrustedEntitySetId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"trustedEntitySetId")inmake?trustedEntitySetId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettrustedEntitySetId=field_mapjson__"TrustedEntitySetId"String_.of_jsoninmake?trustedEntitySetId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates a new trusted entity set. In the trusted entity set, you can provide IP addresses and domains that you believe are secure for communication in your Amazon Web Services environment. GuardDuty will not generate findings for the entries that are specified in a trusted entity set. At any given time, you can have only one trusted entity set. Only users of the administrator account can manage the entity sets, which automatically apply to member accounts."]moduleCreateTrustedEntitySetRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector of the GuardDuty account for which you want to create a trusted entity set. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];name:Name.t[@ocaml.doc"A user-friendly name to identify the trusted entity set. The name of your list can include lowercase letters, uppercase letters, numbers, dash (-), and underscore (_)."];format:TrustedEntitySetFormat.t[@ocaml.doc"The format of the file that contains the trusted entity set."];location:Location.t[@ocaml.doc"The URI of the file that contains the threat entity set. The format of the Location URL must be a valid Amazon S3 URL format. Invalid URL formats will result in an error, regardless of whether you activate the entity set or not. For more information about format of the location URLs, see Format of location URL under Step 2: Adding trusted or threat intelligence data in the Amazon GuardDuty User Guide."];expectedBucketOwner:ExpectedBucketOwner.toption[@ocaml.doc"The Amazon Web Services account ID that owns the Amazon S3 bucket specified in the location parameter."];activate:Boolean.t[@ocaml.doc"A boolean value that indicates whether GuardDuty is to start using the uploaded trusted entity set."];clientToken:ClientToken.toption[@ocaml.doc"The idempotency token for the create request."];tags:TagMap.toption[@ocaml.doc"The tags to be added to a new trusted entity set resource."]}letcontext_="CreateTrustedEntitySetRequest"letmake?expectedBucketOwner=fun?clientToken->fun?tags->fun~detectorId->fun~name->fun~format->fun~location->fun~activate->fun()->{expectedBucketOwner;clientToken;tags;detectorId;name;format;location;activate}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("name",(Some(Name.to_valuex.name)));("format",(Some(TrustedEntitySetFormat.to_valuex.format)));("location",(Some(Location.to_valuex.location)));("expectedBucketOwner",(Option.mapx.expectedBucketOwner~f:ExpectedBucketOwner.to_value));("activate",(Some(Boolean.to_valuex.activate)));("clientToken",(Option.mapx.clientToken~f:ClientToken.to_value));("tags",(Option.mapx.tags~f:TagMap.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:TagMap.of_xml)(Xml.childxml_arg0"tags")inletclientToken=(Option.map~f:ClientToken.of_xml)(Xml.childxml_arg0"clientToken")inletactivate=Boolean.of_xml(Xml.child_exn~context:context_xml_arg0"activate")inletexpectedBucketOwner=(Option.map~f:ExpectedBucketOwner.of_xml)(Xml.childxml_arg0"expectedBucketOwner")inletlocation=Location.of_xml(Xml.child_exn~context:context_xml_arg0"location")inletformat=TrustedEntitySetFormat.of_xml(Xml.child_exn~context:context_xml_arg0"format")inletname=Name.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake?tags?clientToken~activate?expectedBucketOwner~location~format~name~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"Tags"TagMap.of_jsoninletclientToken=field_mapjson__"ClientToken"ClientToken.of_jsoninletactivate=field_map_exnjson__"Activate"Boolean.of_jsoninletexpectedBucketOwner=field_mapjson__"ExpectedBucketOwner"ExpectedBucketOwner.of_jsoninletlocation=field_map_exnjson__"Location"Location.of_jsoninletformat=field_map_exnjson__"Format"TrustedEntitySetFormat.of_jsoninletname=field_map_exnjson__"Name"Name.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake?tags?clientToken~activate?expectedBucketOwner~location~format~name~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates a new trusted entity set. In the trusted entity set, you can provide IP addresses and domains that you believe are secure for communication in your Amazon Web Services environment. GuardDuty will not generate findings for the entries that are specified in a trusted entity set. At any given time, you can have only one trusted entity set. Only users of the administrator account can manage the entity sets, which automatically apply to member accounts."]moduleCreateThreatIntelSetResponse=structtypenonrect={threatIntelSetId:String_.toption[@ocaml.doc"The ID of the ThreatIntelSet resource."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?threatIntelSetId=fun()->{threatIntelSetId}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.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))]|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("threatIntelSetId",(Option.mapx.threatIntelSetId~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letthreatIntelSetId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"threatIntelSetId")inmake?threatIntelSetId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letthreatIntelSetId=field_mapjson__"ThreatIntelSetId"String_.of_jsoninmake?threatIntelSetId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates a new ThreatIntelSet. ThreatIntelSets consist of known malicious IP addresses. GuardDuty generates findings based on ThreatIntelSets. Only users of the administrator account can use this operation."]moduleCreateThreatIntelSetRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector of the GuardDuty account for which you want to create a threatIntelSet. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];name:Name.t[@ocaml.doc"A user-friendly ThreatIntelSet name displayed in all findings that are generated by activity that involves IP addresses included in this ThreatIntelSet."];format:ThreatIntelSetFormat.t[@ocaml.doc"The format of the file that contains the ThreatIntelSet."];location:Location.t[@ocaml.doc"The URI of the file that contains the ThreatIntelSet."];activate:Boolean.t[@ocaml.doc"A Boolean value that indicates whether GuardDuty is to start using the uploaded ThreatIntelSet."];clientToken:ClientToken.toption[@ocaml.doc"The idempotency token for the create request."];tags:TagMap.toption[@ocaml.doc"The tags to be added to a new threat list resource."];expectedBucketOwner:AccountId.toption[@ocaml.doc"The Amazon Web Services account ID that owns the Amazon S3 bucket specified in the location parameter."]}letcontext_="CreateThreatIntelSetRequest"letmake?clientToken=fun?tags->fun?expectedBucketOwner->fun~detectorId->fun~name->fun~format->fun~location->fun~activate->fun()->{clientToken;tags;expectedBucketOwner;detectorId;name;format;location;activate}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("name",(Some(Name.to_valuex.name)));("format",(Some(ThreatIntelSetFormat.to_valuex.format)));("location",(Some(Location.to_valuex.location)));("activate",(Some(Boolean.to_valuex.activate)));("clientToken",(Option.mapx.clientToken~f:ClientToken.to_value));("tags",(Option.mapx.tags~f:TagMap.to_value));("expectedBucketOwner",(Option.mapx.expectedBucketOwner~f:AccountId.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letexpectedBucketOwner=(Option.map~f:AccountId.of_xml)(Xml.childxml_arg0"expectedBucketOwner")inlettags=(Option.map~f:TagMap.of_xml)(Xml.childxml_arg0"tags")inletclientToken=(Option.map~f:ClientToken.of_xml)(Xml.childxml_arg0"clientToken")inletactivate=Boolean.of_xml(Xml.child_exn~context:context_xml_arg0"activate")inletlocation=Location.of_xml(Xml.child_exn~context:context_xml_arg0"location")inletformat=ThreatIntelSetFormat.of_xml(Xml.child_exn~context:context_xml_arg0"format")inletname=Name.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake?expectedBucketOwner?tags?clientToken~activate~location~format~name~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letexpectedBucketOwner=field_mapjson__"ExpectedBucketOwner"AccountId.of_jsoninlettags=field_mapjson__"Tags"TagMap.of_jsoninletclientToken=field_mapjson__"ClientToken"ClientToken.of_jsoninletactivate=field_map_exnjson__"Activate"Boolean.of_jsoninletlocation=field_map_exnjson__"Location"Location.of_jsoninletformat=field_map_exnjson__"Format"ThreatIntelSetFormat.of_jsoninletname=field_map_exnjson__"Name"Name.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake?expectedBucketOwner?tags?clientToken~activate~location~format~name~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates a new ThreatIntelSet. ThreatIntelSets consist of known malicious IP addresses. GuardDuty generates findings based on ThreatIntelSets. Only users of the administrator account can use this operation."]moduleCreateThreatEntitySetResponse=structtypenonrect={threatEntitySetId:String_.toption[@ocaml.doc"The ID returned by GuardDuty after creation of the threat entity set resource."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?threatEntitySetId=fun()->{threatEntitySetId}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("threatEntitySetId",(Option.mapx.threatEntitySetId~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letthreatEntitySetId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"threatEntitySetId")inmake?threatEntitySetId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letthreatEntitySetId=field_mapjson__"ThreatEntitySetId"String_.of_jsoninmake?threatEntitySetId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates a new threat entity set. In a threat entity set, you can provide known malicious IP addresses and domains for your Amazon Web Services environment. GuardDuty generates findings based on the entries in the threat entity sets. Only users of the administrator account can manage entity sets, which automatically apply to member accounts."]moduleCreateThreatEntitySetRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector of the GuardDuty account for which you want to create a threat entity set. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];name:Name.t[@ocaml.doc"A user-friendly name to identify the threat entity set. The name of your list can include lowercase letters, uppercase letters, numbers, dash (-), and underscore (_)."];format:ThreatEntitySetFormat.t[@ocaml.doc"The format of the file that contains the threat entity set."];location:Location.t[@ocaml.doc"The URI of the file that contains the threat entity set. The format of the Location URL must be a valid Amazon S3 URL format. Invalid URL formats will result in an error, regardless of whether you activate the entity set or not. For more information about format of the location URLs, see Format of location URL under Step 2: Adding trusted or threat intelligence data in the Amazon GuardDuty User Guide."];expectedBucketOwner:ExpectedBucketOwner.toption[@ocaml.doc"The Amazon Web Services account ID that owns the Amazon S3 bucket specified in the location parameter."];activate:Boolean.t[@ocaml.doc"A boolean value that indicates whether GuardDuty should start using the uploaded threat entity set to generate findings."];clientToken:ClientToken.toption[@ocaml.doc"The idempotency token for the create request."];tags:TagMap.toption[@ocaml.doc"The tags to be added to a new threat entity set resource."]}letcontext_="CreateThreatEntitySetRequest"letmake?expectedBucketOwner=fun?clientToken->fun?tags->fun~detectorId->fun~name->fun~format->fun~location->fun~activate->fun()->{expectedBucketOwner;clientToken;tags;detectorId;name;format;location;activate}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("name",(Some(Name.to_valuex.name)));("format",(Some(ThreatEntitySetFormat.to_valuex.format)));("location",(Some(Location.to_valuex.location)));("expectedBucketOwner",(Option.mapx.expectedBucketOwner~f:ExpectedBucketOwner.to_value));("activate",(Some(Boolean.to_valuex.activate)));("clientToken",(Option.mapx.clientToken~f:ClientToken.to_value));("tags",(Option.mapx.tags~f:TagMap.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:TagMap.of_xml)(Xml.childxml_arg0"tags")inletclientToken=(Option.map~f:ClientToken.of_xml)(Xml.childxml_arg0"clientToken")inletactivate=Boolean.of_xml(Xml.child_exn~context:context_xml_arg0"activate")inletexpectedBucketOwner=(Option.map~f:ExpectedBucketOwner.of_xml)(Xml.childxml_arg0"expectedBucketOwner")inletlocation=Location.of_xml(Xml.child_exn~context:context_xml_arg0"location")inletformat=ThreatEntitySetFormat.of_xml(Xml.child_exn~context:context_xml_arg0"format")inletname=Name.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake?tags?clientToken~activate?expectedBucketOwner~location~format~name~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"Tags"TagMap.of_jsoninletclientToken=field_mapjson__"ClientToken"ClientToken.of_jsoninletactivate=field_map_exnjson__"Activate"Boolean.of_jsoninletexpectedBucketOwner=field_mapjson__"ExpectedBucketOwner"ExpectedBucketOwner.of_jsoninletlocation=field_map_exnjson__"Location"Location.of_jsoninletformat=field_map_exnjson__"Format"ThreatEntitySetFormat.of_jsoninletname=field_map_exnjson__"Name"Name.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake?tags?clientToken~activate?expectedBucketOwner~location~format~name~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates a new threat entity set. In a threat entity set, you can provide known malicious IP addresses and domains for your Amazon Web Services environment. GuardDuty generates findings based on the entries in the threat entity sets. Only users of the administrator account can manage entity sets, which automatically apply to member accounts."]moduleCreateSampleFindingsResponse=structtypenonrect=unittypenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.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"Generates sample findings of types specified by the list of finding types. If 'NULL' is specified for findingTypes, the API generates sample findings of all supported finding types."]moduleCreateSampleFindingsRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The ID of the detector for which you need to create sample findings. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];findingTypes:FindingTypes.toption[@ocaml.doc"The types of sample findings to generate."]}letcontext_="CreateSampleFindingsRequest"letmake?findingTypes=fun~detectorId->fun()->{findingTypes;detectorId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("findingTypes",(Option.mapx.findingTypes~f:FindingTypes.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letfindingTypes=(Option.map~f:FindingTypes.of_xml)(Xml.childxml_arg0"findingTypes")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake?findingTypes~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letfindingTypes=field_mapjson__"FindingTypes"FindingTypes.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake?findingTypes~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Generates sample findings of types specified by the list of finding types. If 'NULL' is specified for findingTypes, the API generates sample findings of all supported finding types."]moduleCreatePublishingDestinationResponse=structtypenonrect={destinationId:String_.toption[@ocaml.doc"The ID of the publishing destination that is created."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?destinationId=fun()->{destinationId}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("destinationId",(Option.mapx.destinationId~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdestinationId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"destinationId")inmake?destinationId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdestinationId=field_mapjson__"DestinationId"String_.of_jsoninmake?destinationId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates a publishing destination where you can export your GuardDuty findings. Before you start exporting the findings, the destination resource must exist."]moduleCreatePublishingDestinationRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The ID of the GuardDuty detector associated with the publishing destination. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];destinationType:DestinationType.t[@ocaml.doc"The type of resource for the publishing destination. Currently only Amazon S3 buckets are supported."];destinationProperties:DestinationProperties.t[@ocaml.doc"The properties of the publishing destination, including the ARNs for the destination and the KMS key used for encryption."];clientToken:ClientToken.toption[@ocaml.doc"The idempotency token for the request."];tags:TagMap.toption[@ocaml.doc"The tags to be added to a new publishing destination resource."]}letcontext_="CreatePublishingDestinationRequest"letmake?clientToken=fun?tags->fun~detectorId->fun~destinationType->fun~destinationProperties->fun()->{clientToken;tags;detectorId;destinationType;destinationProperties}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("destinationType",(Some(DestinationType.to_valuex.destinationType)));("destinationProperties",(Some(DestinationProperties.to_valuex.destinationProperties)));("clientToken",(Option.mapx.clientToken~f:ClientToken.to_value));("tags",(Option.mapx.tags~f:TagMap.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:TagMap.of_xml)(Xml.childxml_arg0"tags")inletclientToken=(Option.map~f:ClientToken.of_xml)(Xml.childxml_arg0"clientToken")inletdestinationProperties=DestinationProperties.of_xml(Xml.child_exn~context:context_xml_arg0"destinationProperties")inletdestinationType=DestinationType.of_xml(Xml.child_exn~context:context_xml_arg0"destinationType")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake?tags?clientToken~destinationProperties~destinationType~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"Tags"TagMap.of_jsoninletclientToken=field_mapjson__"ClientToken"ClientToken.of_jsoninletdestinationProperties=field_map_exnjson__"DestinationProperties"DestinationProperties.of_jsoninletdestinationType=field_map_exnjson__"DestinationType"DestinationType.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake?tags?clientToken~destinationProperties~destinationType~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates a publishing destination where you can export your GuardDuty findings. Before you start exporting the findings, the destination resource must exist."]moduleCreateMembersResponse=structtypenonrect={unprocessedAccounts:UnprocessedAccounts.toption[@ocaml.doc"A list of objects that include the accountIds of the unprocessed accounts and a result string that explains why each was unprocessed."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?unprocessedAccounts=fun()->{unprocessedAccounts}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("unprocessedAccounts",(Option.mapx.unprocessedAccounts~f:UnprocessedAccounts.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letunprocessedAccounts=(Option.map~f:UnprocessedAccounts.of_xml)(Xml.childxml_arg0"unprocessedAccounts")inmake?unprocessedAccounts()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letunprocessedAccounts=field_mapjson__"UnprocessedAccounts"UnprocessedAccounts.of_jsoninmake?unprocessedAccounts()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates member accounts of the current Amazon Web Services account by specifying a list of Amazon Web Services account IDs. This step is a prerequisite for managing the associated member accounts either by invitation or through an organization. As a delegated administrator, using CreateMembers will enable GuardDuty in the added member accounts, with the exception of the organization delegated administrator account. A delegated administrator must enable GuardDuty prior to being added as a member. When you use CreateMembers as an Organizations delegated administrator, GuardDuty applies your organization's auto-enable settings to the member accounts in this request, irrespective of the accounts being new or existing members. For more information about the existing auto-enable settings for your organization, see DescribeOrganizationConfiguration. If you disassociate a member account that was added by invitation, the member account details obtained from this API, including the associated email addresses, will be retained. This is done so that the delegated administrator can invoke the InviteMembers API without the need to invoke the CreateMembers API again. To remove the details associated with a member account, the delegated administrator must invoke the DeleteMembers API. When the member accounts added through Organizations are later disassociated, you (administrator) can't invite them by calling the InviteMembers API. You can create an association with these member accounts again only by calling the CreateMembers API."]moduleCreateMembersRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector of the GuardDuty account for which you want to associate member accounts. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];accountDetails:AccountDetails.t[@ocaml.doc"A list of account ID and email address pairs of the accounts that you want to associate with the GuardDuty administrator account."]}letcontext_="CreateMembersRequest"letmake~detectorId=fun~accountDetails->fun()->{detectorId;accountDetails}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("accountDetails",(Some(AccountDetails.to_valuex.accountDetails)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccountDetails=AccountDetails.of_xml(Xml.child_exn~context:context_xml_arg0"accountDetails")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake~accountDetails~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccountDetails=field_map_exnjson__"AccountDetails"AccountDetails.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake~accountDetails~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates member accounts of the current Amazon Web Services account by specifying a list of Amazon Web Services account IDs. This step is a prerequisite for managing the associated member accounts either by invitation or through an organization. As a delegated administrator, using CreateMembers will enable GuardDuty in the added member accounts, with the exception of the organization delegated administrator account. A delegated administrator must enable GuardDuty prior to being added as a member. When you use CreateMembers as an Organizations delegated administrator, GuardDuty applies your organization's auto-enable settings to the member accounts in this request, irrespective of the accounts being new or existing members. For more information about the existing auto-enable settings for your organization, see DescribeOrganizationConfiguration. If you disassociate a member account that was added by invitation, the member account details obtained from this API, including the associated email addresses, will be retained. This is done so that the delegated administrator can invoke the InviteMembers API without the need to invoke the CreateMembers API again. To remove the details associated with a member account, the delegated administrator must invoke the DeleteMembers API. When the member accounts added through Organizations are later disassociated, you (administrator) can't invite them by calling the InviteMembers API. You can create an association with these member accounts again only by calling the CreateMembers API."]moduleCreateMalwareProtectionPlanResponse=structtypenonrect={malwareProtectionPlanId:String_.toption[@ocaml.doc"A unique identifier associated with the Malware Protection plan resource."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`BadRequestExceptionofBadRequestException.t|`ConflictExceptionofConflictException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?malwareProtectionPlanId=fun()->{malwareProtectionPlanId}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"ConflictException"->`ConflictException(ConflictException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"ConflictException"->`ConflictException(ConflictException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.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))]|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`ConflictExceptione->`Assoc[("error",(`String"ConflictException"));("details",(ConflictException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("malwareProtectionPlanId",(Option.mapx.malwareProtectionPlanId~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmalwareProtectionPlanId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"malwareProtectionPlanId")inmake?malwareProtectionPlanId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmalwareProtectionPlanId=field_mapjson__"MalwareProtectionPlanId"String_.of_jsoninmake?malwareProtectionPlanId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates a new Malware Protection plan for the protected resource. When you create a Malware Protection plan, the Amazon Web Services service terms for GuardDuty Malware Protection apply. For more information, see Amazon Web Services service terms for GuardDuty Malware Protection."]moduleCreateMalwareProtectionPlanRequest=structtypenonrect={clientToken:ClientToken.toption[@ocaml.doc"The idempotency token for the create request."];role:String_.t[@ocaml.doc"Amazon Resource Name (ARN) of the IAM role that has the permissions to scan and add tags to the associated protected resource."];protectedResource:CreateProtectedResource.t[@ocaml.doc"Information about the protected resource that is associated with the created Malware Protection plan. Presently, S3Bucket is the only supported protected resource."];actions:MalwareProtectionPlanActions.toption[@ocaml.doc"Information about whether the tags will be added to the S3 object after scanning."];tags:TagMap.toption[@ocaml.doc"Tags added to the Malware Protection plan resource."]}letcontext_="CreateMalwareProtectionPlanRequest"letmake?clientToken=fun?actions->fun?tags->fun~role->fun~protectedResource->fun()->{clientToken;actions;tags;role;protectedResource}letto_valuex=structure_to_value[("clientToken",(Option.mapx.clientToken~f:ClientToken.to_value));("role",(Some(String_.to_valuex.role)));("protectedResource",(Some(CreateProtectedResource.to_valuex.protectedResource)));("actions",(Option.mapx.actions~f:MalwareProtectionPlanActions.to_value));("tags",(Option.mapx.tags~f:TagMap.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:TagMap.of_xml)(Xml.childxml_arg0"tags")inletactions=(Option.map~f:MalwareProtectionPlanActions.of_xml)(Xml.childxml_arg0"actions")inletprotectedResource=CreateProtectedResource.of_xml(Xml.child_exn~context:context_xml_arg0"protectedResource")inletrole=String_.of_xml(Xml.child_exn~context:context_xml_arg0"role")inletclientToken=(Option.map~f:ClientToken.of_xml)(Xml.childxml_arg0"clientToken")inmake?tags?actions~protectedResource~role?clientToken()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"Tags"TagMap.of_jsoninletactions=field_mapjson__"Actions"MalwareProtectionPlanActions.of_jsoninletprotectedResource=field_map_exnjson__"ProtectedResource"CreateProtectedResource.of_jsoninletrole=field_map_exnjson__"Role"String_.of_jsoninletclientToken=field_mapjson__"ClientToken"ClientToken.of_jsoninmake?tags?actions~protectedResource~role?clientToken()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates a new Malware Protection plan for the protected resource. When you create a Malware Protection plan, the Amazon Web Services service terms for GuardDuty Malware Protection apply. For more information, see Amazon Web Services service terms for GuardDuty Malware Protection."]moduleCreateIPSetResponse=structtypenonrect={ipSetId:String_.toption[@ocaml.doc"The ID of the IPSet resource."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?ipSetId=fun()->{ipSetId}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.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))]|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("ipSetId",(Option.mapx.ipSetId~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letipSetId=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"ipSetId")inmake?ipSetId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letipSetId=field_mapjson__"IpSetId"String_.of_jsoninmake?ipSetId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates a new IPSet, which is called a trusted IP list in the console user interface. An IPSet is a list of IP addresses that are trusted for secure communication with Amazon Web Services infrastructure and applications. GuardDuty doesn't generate findings for IP addresses that are included in IPSets. Only users from the administrator account can use this operation."]moduleCreateIPSetRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector of the GuardDuty account for which you want to create an IPSet. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];name:Name.t[@ocaml.doc"The user-friendly name to identify the IPSet. Allowed characters are alphanumeric, whitespace, dash (-), and underscores (_)."];format:IpSetFormat.t[@ocaml.doc"The format of the file that contains the IPSet."];location:Location.t[@ocaml.doc"The URI of the file that contains the IPSet."];activate:Boolean.t[@ocaml.doc"A Boolean value that indicates whether GuardDuty is to start using the uploaded IPSet."];clientToken:ClientToken.toption[@ocaml.doc"The idempotency token for the create request."];tags:TagMap.toption[@ocaml.doc"The tags to be added to a new IP set resource."];expectedBucketOwner:AccountId.toption[@ocaml.doc"The Amazon Web Services account ID that owns the Amazon S3 bucket specified in the location parameter."]}letcontext_="CreateIPSetRequest"letmake?clientToken=fun?tags->fun?expectedBucketOwner->fun~detectorId->fun~name->fun~format->fun~location->fun~activate->fun()->{clientToken;tags;expectedBucketOwner;detectorId;name;format;location;activate}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("name",(Some(Name.to_valuex.name)));("format",(Some(IpSetFormat.to_valuex.format)));("location",(Some(Location.to_valuex.location)));("activate",(Some(Boolean.to_valuex.activate)));("clientToken",(Option.mapx.clientToken~f:ClientToken.to_value));("tags",(Option.mapx.tags~f:TagMap.to_value));("expectedBucketOwner",(Option.mapx.expectedBucketOwner~f:AccountId.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letexpectedBucketOwner=(Option.map~f:AccountId.of_xml)(Xml.childxml_arg0"expectedBucketOwner")inlettags=(Option.map~f:TagMap.of_xml)(Xml.childxml_arg0"tags")inletclientToken=(Option.map~f:ClientToken.of_xml)(Xml.childxml_arg0"clientToken")inletactivate=Boolean.of_xml(Xml.child_exn~context:context_xml_arg0"activate")inletlocation=Location.of_xml(Xml.child_exn~context:context_xml_arg0"location")inletformat=IpSetFormat.of_xml(Xml.child_exn~context:context_xml_arg0"format")inletname=Name.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake?expectedBucketOwner?tags?clientToken~activate~location~format~name~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letexpectedBucketOwner=field_mapjson__"ExpectedBucketOwner"AccountId.of_jsoninlettags=field_mapjson__"Tags"TagMap.of_jsoninletclientToken=field_mapjson__"ClientToken"ClientToken.of_jsoninletactivate=field_map_exnjson__"Activate"Boolean.of_jsoninletlocation=field_map_exnjson__"Location"Location.of_jsoninletformat=field_map_exnjson__"Format"IpSetFormat.of_jsoninletname=field_map_exnjson__"Name"Name.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake?expectedBucketOwner?tags?clientToken~activate~location~format~name~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates a new IPSet, which is called a trusted IP list in the console user interface. An IPSet is a list of IP addresses that are trusted for secure communication with Amazon Web Services infrastructure and applications. GuardDuty doesn't generate findings for IP addresses that are included in IPSets. Only users from the administrator account can use this operation."]moduleCreateFilterResponse=structtypenonrect={name:FilterName.toption[@ocaml.doc"The name of the successfully created filter."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?name=fun()->{name}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("name",(Option.mapx.name~f:FilterName.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letname=(Option.map~f:FilterName.of_xml)(Xml.childxml_arg0"name")inmake?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letname=field_mapjson__"Name"FilterName.of_jsoninmake?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates a filter using the specified finding criteria. The maximum number of saved filters per Amazon Web Services account per Region is 100. For more information, see Quotas for GuardDuty."]moduleCreateFilterRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The detector ID associated with the GuardDuty account for which you want to create a filter. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];name:FilterName.t[@ocaml.doc"The name of the filter. Valid characters include period (.), underscore (_), dash (-), and alphanumeric characters. A whitespace is considered to be an invalid character."];description:FilterDescription.toption[@ocaml.doc"The description of the filter. Valid characters include alphanumeric characters, and special characters such as hyphen, period, colon, underscore, parentheses (\\{ \\}, \\[ \\], and ( )), forward slash, horizontal tab, vertical tab, newline, form feed, return, and whitespace."];action:FilterAction.toption[@ocaml.doc"Specifies the action that is to be applied to the findings that match the filter. Default: NOOP"];rank:FilterRank.toption[@ocaml.doc"Specifies the position of the filter in the list of current filters. Also specifies the order in which this filter is applied to the findings."];findingCriteria:FindingCriteria.t[@ocaml.doc"Represents the criteria to be used in the filter for querying findings. The following fields are available for filtering: accountId arn associatedAttackSequenceArn confidence createdAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 description id partition region resource.accessKeyDetails.accessKeyId resource.accessKeyDetails.principalId resource.accessKeyDetails.userIdentity.accessKeyId resource.accessKeyDetails.userIdentity.accountId resource.accessKeyDetails.userIdentity.arn resource.accessKeyDetails.userIdentity.principalId resource.accessKeyDetails.userIdentity.sessionContext.attributes.mfaAuthenticated resource.accessKeyDetails.userIdentity.sessionContext.ec2RoleDelivery resource.accessKeyDetails.userIdentity.sessionContext.invokedBy resource.accessKeyDetails.userIdentity.sessionContext.sessionIssuer.accountId resource.accessKeyDetails.userIdentity.sessionContext.sessionIssuer.arn resource.accessKeyDetails.userIdentity.sessionContext.sessionIssuer.principalId resource.accessKeyDetails.userIdentity.sessionContext.sessionIssuer.type resource.accessKeyDetails.userIdentity.sessionContext.sessionIssuer.userName resource.accessKeyDetails.userIdentity.sessionContext.sourceIdentity resource.accessKeyDetails.userIdentity.sessionContext.webIdFederationData.attributes resource.accessKeyDetails.userIdentity.sessionContext.webIdFederationData.federatedProvider resource.accessKeyDetails.userIdentity.type resource.accessKeyDetails.userIdentity.userName resource.accessKeyDetails.userName resource.accessKeyDetails.userType resource.bedrockGuardrailDetails.guardrailArn resource.bedrockGuardrailDetails.guardrailVersion resource.containerDetails.containerRuntime resource.containerDetails.id resource.containerDetails.image resource.containerDetails.imagePrefix resource.containerDetails.name resource.containerDetails.securityContext.allowPrivilegeEscalation resource.containerDetails.securityContext.privileged resource.containerDetails.volumeMounts.mountPath resource.containerDetails.volumeMounts.name resource.ebsSnapshotDetails.snapshotArn resource.ebsVolumeDetails.scannedVolumeDetails.deviceName resource.ebsVolumeDetails.scannedVolumeDetails.encryptionType resource.ebsVolumeDetails.scannedVolumeDetails.kmsKeyArn resource.ebsVolumeDetails.scannedVolumeDetails.snapshotArn resource.ebsVolumeDetails.scannedVolumeDetails.volumeArn resource.ebsVolumeDetails.scannedVolumeDetails.volumeSizeInGB resource.ebsVolumeDetails.scannedVolumeDetails.volumeType resource.ebsVolumeDetails.skippedVolumeDetails.deviceName resource.ebsVolumeDetails.skippedVolumeDetails.encryptionType resource.ebsVolumeDetails.skippedVolumeDetails.kmsKeyArn resource.ebsVolumeDetails.skippedVolumeDetails.snapshotArn resource.ebsVolumeDetails.skippedVolumeDetails.volumeArn resource.ebsVolumeDetails.skippedVolumeDetails.volumeSizeInGB resource.ebsVolumeDetails.skippedVolumeDetails.volumeType resource.ec2ImageDetails.imageArn resource.ecsClusterDetails.activeServicesCount resource.ecsClusterDetails.arn resource.ecsClusterDetails.name resource.ecsClusterDetails.registeredContainerInstancesCount resource.ecsClusterDetails.runningTasksCount resource.ecsClusterDetails.status resource.ecsClusterDetails.tags.key resource.ecsClusterDetails.tags.value resource.ecsClusterDetails.taskDetails.arn resource.ecsClusterDetails.taskDetails.containers.containerRuntime resource.ecsClusterDetails.taskDetails.containers.id resource.ecsClusterDetails.taskDetails.containers.image resource.ecsClusterDetails.taskDetails.containers.imagePrefix resource.ecsClusterDetails.taskDetails.containers.name resource.ecsClusterDetails.taskDetails.containers.securityContext.allowPrivilegeEscalation resource.ecsClusterDetails.taskDetails.containers.securityContext.privileged resource.ecsClusterDetails.taskDetails.containers.volumeMounts.mountPath resource.ecsClusterDetails.taskDetails.containers.volumeMounts.name resource.ecsClusterDetails.taskDetails.createdAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 resource.ecsClusterDetails.taskDetails.definitionArn resource.ecsClusterDetails.taskDetails.group resource.ecsClusterDetails.taskDetails.launchType resource.ecsClusterDetails.taskDetails.startedAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 resource.ecsClusterDetails.taskDetails.startedBy resource.ecsClusterDetails.taskDetails.tags.key resource.ecsClusterDetails.taskDetails.tags.value resource.ecsClusterDetails.taskDetails.version resource.ecsClusterDetails.taskDetails.volumes.hostPath.path resource.ecsClusterDetails.taskDetails.volumes.name resource.eksClusterDetails.arn resource.eksClusterDetails.createdAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 resource.eksClusterDetails.name resource.eksClusterDetails.status resource.eksClusterDetails.tags.key resource.eksClusterDetails.tags.value resource.eksClusterDetails.vpcId resource.instanceDetails.availabilityZone resource.instanceDetails.iamInstanceProfile.arn resource.instanceDetails.iamInstanceProfile.id resource.instanceDetails.imageDescription resource.instanceDetails.imageId resource.instanceDetails.instanceId resource.instanceDetails.instanceState resource.instanceDetails.instanceType resource.instanceDetails.launchTime Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 resource.instanceDetails.networkInterfaces.ipv6Addresses resource.instanceDetails.networkInterfaces.networkInterfaceId resource.instanceDetails.networkInterfaces.privateDnsName resource.instanceDetails.networkInterfaces.privateIpAddress resource.instanceDetails.networkInterfaces.privateIpAddresses.privateDnsName resource.instanceDetails.networkInterfaces.privateIpAddresses.privateIpAddress resource.instanceDetails.networkInterfaces.publicDnsName resource.instanceDetails.networkInterfaces.publicIp resource.instanceDetails.networkInterfaces.securityGroups.groupId resource.instanceDetails.networkInterfaces.securityGroups.groupName resource.instanceDetails.networkInterfaces.subnetId resource.instanceDetails.networkInterfaces.vpcId resource.instanceDetails.outpostArn resource.instanceDetails.platform resource.instanceDetails.productCodes.productCodeId resource.instanceDetails.productCodes.productCodeType resource.instanceDetails.tags.key resource.instanceDetails.tags.value resource.kubernetesDetails.kubernetesUserDetails.groups resource.kubernetesDetails.kubernetesUserDetails.impersonatedUser.groups resource.kubernetesDetails.kubernetesUserDetails.impersonatedUser.username resource.kubernetesDetails.kubernetesUserDetails.sessionName resource.kubernetesDetails.kubernetesUserDetails.uid resource.kubernetesDetails.kubernetesUserDetails.username resource.kubernetesDetails.kubernetesWorkloadDetails.containers.containerRuntime resource.kubernetesDetails.kubernetesWorkloadDetails.containers.id resource.kubernetesDetails.kubernetesWorkloadDetails.containers.image resource.kubernetesDetails.kubernetesWorkloadDetails.containers.imagePrefix resource.kubernetesDetails.kubernetesWorkloadDetails.containers.name resource.kubernetesDetails.kubernetesWorkloadDetails.containers.securityContext.allowPrivilegeEscalation resource.kubernetesDetails.kubernetesWorkloadDetails.containers.securityContext.privileged resource.kubernetesDetails.kubernetesWorkloadDetails.containers.volumeMounts.mountPath resource.kubernetesDetails.kubernetesWorkloadDetails.containers.volumeMounts.name resource.kubernetesDetails.kubernetesWorkloadDetails.hostIpc resource.kubernetesDetails.kubernetesWorkloadDetails.hostNetwork resource.kubernetesDetails.kubernetesWorkloadDetails.hostPid resource.kubernetesDetails.kubernetesWorkloadDetails.name resource.kubernetesDetails.kubernetesWorkloadDetails.namespace resource.kubernetesDetails.kubernetesWorkloadDetails.serviceAccountName resource.kubernetesDetails.kubernetesWorkloadDetails.type resource.kubernetesDetails.kubernetesWorkloadDetails.uid resource.kubernetesDetails.kubernetesWorkloadDetails.volumes.hostPath.path resource.kubernetesDetails.kubernetesWorkloadDetails.volumes.name resource.lambdaDetails.description resource.lambdaDetails.functionArn resource.lambdaDetails.functionName resource.lambdaDetails.functionVersion resource.lambdaDetails.lastModifiedAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 resource.lambdaDetails.revisionId resource.lambdaDetails.role resource.lambdaDetails.tags.key resource.lambdaDetails.tags.value resource.lambdaDetails.vpcConfig.securityGroups.groupId resource.lambdaDetails.vpcConfig.securityGroups.groupName resource.lambdaDetails.vpcConfig.subnetIds resource.lambdaDetails.vpcConfig.vpcId resource.rdsDbInstanceDetails.dbClusterIdentifier resource.rdsDbInstanceDetails.dbInstanceArn resource.rdsDbInstanceDetails.dbInstanceIdentifier resource.rdsDbInstanceDetails.dbSecurityGroups.name resource.rdsDbInstanceDetails.dbSecurityGroups.status resource.rdsDbInstanceDetails.dbiResourceId resource.rdsDbInstanceDetails.engine resource.rdsDbInstanceDetails.engineVersion resource.rdsDbInstanceDetails.iamDatabaseAuthenticationEnabled resource.rdsDbInstanceDetails.publiclyAccessible resource.rdsDbInstanceDetails.tags.key resource.rdsDbInstanceDetails.tags.value resource.rdsDbInstanceDetails.vpcId resource.rdsDbInstanceDetails.vpcSecurityGroups.status resource.rdsDbInstanceDetails.vpcSecurityGroups.vpcSecurityGroupId resource.rdsDbUserDetails.application resource.rdsDbUserDetails.authMethod resource.rdsDbUserDetails.database resource.rdsDbUserDetails.ssl resource.rdsDbUserDetails.user resource.rdsLimitlessDbDetails.dbClusterIdentifier resource.rdsLimitlessDbDetails.dbShardGroupArn resource.rdsLimitlessDbDetails.dbShardGroupIdentifier resource.rdsLimitlessDbDetails.dbShardGroupResourceId resource.rdsLimitlessDbDetails.engine resource.rdsLimitlessDbDetails.engineVersion resource.rdsLimitlessDbDetails.tags.key resource.rdsLimitlessDbDetails.tags.value resource.recoveryPointDetails.backupVaultName resource.recoveryPointDetails.recoveryPointArn resource.resourceType resource.s3BucketDetails.arn resource.s3BucketDetails.createdAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 resource.s3BucketDetails.defaultServerSideEncryption.encryptionType resource.s3BucketDetails.defaultServerSideEncryption.kmsMasterKeyArn resource.s3BucketDetails.name resource.s3BucketDetails.owner.id resource.s3BucketDetails.publicAccess.effectivePermission resource.s3BucketDetails.publicAccess.permissionConfiguration.accountLevelPermissions.blockPublicAccess.blockPublicAcls resource.s3BucketDetails.publicAccess.permissionConfiguration.accountLevelPermissions.blockPublicAccess.blockPublicPolicy resource.s3BucketDetails.publicAccess.permissionConfiguration.accountLevelPermissions.blockPublicAccess.ignorePublicAcls resource.s3BucketDetails.publicAccess.permissionConfiguration.accountLevelPermissions.blockPublicAccess.restrictPublicBuckets resource.s3BucketDetails.publicAccess.permissionConfiguration.bucketLevelPermissions.accessControlList.allowsPublicReadAccess resource.s3BucketDetails.publicAccess.permissionConfiguration.bucketLevelPermissions.accessControlList.allowsPublicWriteAccess resource.s3BucketDetails.publicAccess.permissionConfiguration.bucketLevelPermissions.blockPublicAccess.blockPublicAcls resource.s3BucketDetails.publicAccess.permissionConfiguration.bucketLevelPermissions.blockPublicAccess.blockPublicPolicy resource.s3BucketDetails.publicAccess.permissionConfiguration.bucketLevelPermissions.blockPublicAccess.ignorePublicAcls resource.s3BucketDetails.publicAccess.permissionConfiguration.bucketLevelPermissions.blockPublicAccess.restrictPublicBuckets resource.s3BucketDetails.publicAccess.permissionConfiguration.bucketLevelPermissions.bucketPolicy.allowsPublicReadAccess resource.s3BucketDetails.publicAccess.permissionConfiguration.bucketLevelPermissions.bucketPolicy.allowsPublicWriteAccess resource.s3BucketDetails.s3ObjectDetails.eTag resource.s3BucketDetails.s3ObjectDetails.hash resource.s3BucketDetails.s3ObjectDetails.key resource.s3BucketDetails.s3ObjectDetails.objectArn resource.s3BucketDetails.s3ObjectDetails.versionId resource.s3BucketDetails.tags.key resource.s3BucketDetails.tags.value resource.s3BucketDetails.type schemaVersion service.action.actionType service.action.awsApiCallAction.affectedResources service.action.awsApiCallAction.api service.action.awsApiCallAction.callerType service.action.awsApiCallAction.domainDetails.domain service.action.awsApiCallAction.errorCode service.action.awsApiCallAction.remoteAccountDetails.accountId service.action.awsApiCallAction.remoteAccountDetails.affiliated service.action.awsApiCallAction.remoteAccountDetails.awsServiceName service.action.awsApiCallAction.remoteIpDetails.city.cityName service.action.awsApiCallAction.remoteIpDetails.country.countryCode service.action.awsApiCallAction.remoteIpDetails.country.countryName service.action.awsApiCallAction.remoteIpDetails.geoLocation.lat service.action.awsApiCallAction.remoteIpDetails.geoLocation.lon service.action.awsApiCallAction.remoteIpDetails.ipAddressV4 service.action.awsApiCallAction.remoteIpDetails.ipAddressV6 service.action.awsApiCallAction.remoteIpDetails.organization.asn service.action.awsApiCallAction.remoteIpDetails.organization.asnOrg service.action.awsApiCallAction.remoteIpDetails.organization.isp service.action.awsApiCallAction.remoteIpDetails.organization.org service.action.awsApiCallAction.serviceName service.action.awsApiCallAction.userAgent service.action.dnsRequestAction.blocked service.action.dnsRequestAction.domain service.action.dnsRequestAction.domainWithSuffix service.action.dnsRequestAction.protocol service.action.dnsRequestAction.vpcOwnerAccountId service.action.kubernetesApiCallAction.namespace service.action.kubernetesApiCallAction.parameters service.action.kubernetesApiCallAction.remoteIpDetails.city.cityName service.action.kubernetesApiCallAction.remoteIpDetails.country.countryCode service.action.kubernetesApiCallAction.remoteIpDetails.country.countryName service.action.kubernetesApiCallAction.remoteIpDetails.geoLocation.lat service.action.kubernetesApiCallAction.remoteIpDetails.geoLocation.lon service.action.kubernetesApiCallAction.remoteIpDetails.ipAddressV4 service.action.kubernetesApiCallAction.remoteIpDetails.ipAddressV6 service.action.kubernetesApiCallAction.remoteIpDetails.organization.asn service.action.kubernetesApiCallAction.remoteIpDetails.organization.asnOrg service.action.kubernetesApiCallAction.remoteIpDetails.organization.isp service.action.kubernetesApiCallAction.remoteIpDetails.organization.org service.action.kubernetesApiCallAction.requestUri service.action.kubernetesApiCallAction.resource service.action.kubernetesApiCallAction.resourceName service.action.kubernetesApiCallAction.sourceIPs service.action.kubernetesApiCallAction.statusCode service.action.kubernetesApiCallAction.subresource service.action.kubernetesApiCallAction.userAgent service.action.kubernetesApiCallAction.verb service.action.kubernetesPermissionCheckedDetails.allowed service.action.kubernetesPermissionCheckedDetails.namespace service.action.kubernetesPermissionCheckedDetails.resource service.action.kubernetesPermissionCheckedDetails.verb service.action.kubernetesRoleBindingDetails.kind service.action.kubernetesRoleBindingDetails.name service.action.kubernetesRoleBindingDetails.roleRefKind service.action.kubernetesRoleBindingDetails.roleRefName service.action.kubernetesRoleBindingDetails.uid service.action.kubernetesRoleDetails.kind service.action.kubernetesRoleDetails.name service.action.kubernetesRoleDetails.uid service.action.networkConnectionAction.blocked service.action.networkConnectionAction.connectionDirection service.action.networkConnectionAction.localIpDetails.ipAddressV4 service.action.networkConnectionAction.localIpDetails.ipAddressV6 service.action.networkConnectionAction.localNetworkInterface service.action.networkConnectionAction.localPortDetails.port service.action.networkConnectionAction.localPortDetails.portName service.action.networkConnectionAction.protocol service.action.networkConnectionAction.remoteIpDetails.city.cityName service.action.networkConnectionAction.remoteIpDetails.country.countryCode service.action.networkConnectionAction.remoteIpDetails.country.countryName service.action.networkConnectionAction.remoteIpDetails.geoLocation.lat service.action.networkConnectionAction.remoteIpDetails.geoLocation.lon service.action.networkConnectionAction.remoteIpDetails.ipAddressV4 service.action.networkConnectionAction.remoteIpDetails.ipAddressV6 service.action.networkConnectionAction.remoteIpDetails.organization.asn service.action.networkConnectionAction.remoteIpDetails.organization.asnOrg service.action.networkConnectionAction.remoteIpDetails.organization.isp service.action.networkConnectionAction.remoteIpDetails.organization.org service.action.networkConnectionAction.remotePortDetails.port service.action.networkConnectionAction.remotePortDetails.portName service.action.portProbeAction.blocked service.action.portProbeAction.portProbeDetails.localIpDetails.ipAddressV4 service.action.portProbeAction.portProbeDetails.localIpDetails.ipAddressV6 service.action.portProbeAction.portProbeDetails.localPortDetails.port service.action.portProbeAction.portProbeDetails.localPortDetails.portName service.action.portProbeAction.portProbeDetails.remoteIpDetails.city.cityName service.action.portProbeAction.portProbeDetails.remoteIpDetails.country.countryCode service.action.portProbeAction.portProbeDetails.remoteIpDetails.country.countryName service.action.portProbeAction.portProbeDetails.remoteIpDetails.geoLocation.lat service.action.portProbeAction.portProbeDetails.remoteIpDetails.geoLocation.lon service.action.portProbeAction.portProbeDetails.remoteIpDetails.ipAddressV4 service.action.portProbeAction.portProbeDetails.remoteIpDetails.ipAddressV6 service.action.portProbeAction.portProbeDetails.remoteIpDetails.organization.asn service.action.portProbeAction.portProbeDetails.remoteIpDetails.organization.asnOrg service.action.portProbeAction.portProbeDetails.remoteIpDetails.organization.isp service.action.portProbeAction.portProbeDetails.remoteIpDetails.organization.org service.action.rdsLoginAttemptAction.loginAttributes.application service.action.rdsLoginAttemptAction.loginAttributes.failedLoginAttempts service.action.rdsLoginAttemptAction.loginAttributes.successfulLoginAttempts service.action.rdsLoginAttemptAction.loginAttributes.user service.action.rdsLoginAttemptAction.remoteIpDetails.city.cityName service.action.rdsLoginAttemptAction.remoteIpDetails.country.countryCode service.action.rdsLoginAttemptAction.remoteIpDetails.country.countryName service.action.rdsLoginAttemptAction.remoteIpDetails.geoLocation.lat service.action.rdsLoginAttemptAction.remoteIpDetails.geoLocation.lon service.action.rdsLoginAttemptAction.remoteIpDetails.ipAddressV4 service.action.rdsLoginAttemptAction.remoteIpDetails.ipAddressV6 service.action.rdsLoginAttemptAction.remoteIpDetails.organization.asn service.action.rdsLoginAttemptAction.remoteIpDetails.organization.asnOrg service.action.rdsLoginAttemptAction.remoteIpDetails.organization.isp service.action.rdsLoginAttemptAction.remoteIpDetails.organization.org service.additionalInfo.agentDetails.agentId service.additionalInfo.agentDetails.agentVersion service.additionalInfo.anomalies.anomalousAPIs service.additionalInfo.authenticationMethod service.additionalInfo.averagePacketSizeIn service.additionalInfo.averagePacketSizeOut service.additionalInfo.context service.additionalInfo.domain service.additionalInfo.inBytes service.additionalInfo.localNetworkInterfaceOwner service.additionalInfo.localPort service.additionalInfo.outBytes service.additionalInfo.packetsIn service.additionalInfo.packetsOut service.additionalInfo.policyArn service.additionalInfo.policyName service.additionalInfo.remotePort service.additionalInfo.sample service.additionalInfo.scannedPort service.additionalInfo.threatFileSha256 service.additionalInfo.threatListName service.additionalInfo.threatName service.additionalInfo.totalBytesIn service.additionalInfo.totalBytesOut service.additionalInfo.type service.additionalInfo.unusual.asnOrg service.additionalInfo.unusual.port service.additionalInfo.unusualProtocol service.additionalInfo.userAgent.fullUserAgent service.additionalInfo.userAgent.userAgentCategory service.additionalInfo.value service.additionalInfo.vpcOwnerAccountId service.archived service.count service.detection.anomaly.profiles service.detection.anomaly.unusual.behavior service.detection.sequence.actors.id service.detection.sequence.actors.process.name service.detection.sequence.actors.process.path service.detection.sequence.actors.process.sha256 service.detection.sequence.actors.session.createdTime Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.detection.sequence.actors.session.issuer service.detection.sequence.actors.session.mfaStatus service.detection.sequence.actors.session.uid service.detection.sequence.actors.user.account.account service.detection.sequence.actors.user.account.uid service.detection.sequence.actors.user.credentialUid service.detection.sequence.actors.user.name service.detection.sequence.actors.user.type service.detection.sequence.actors.user.uid service.detection.sequence.additionalSequenceTypes service.detection.sequence.description service.detection.sequence.endpoints.autonomousSystem.name service.detection.sequence.endpoints.autonomousSystem.number service.detection.sequence.endpoints.connection.direction service.detection.sequence.endpoints.domain service.detection.sequence.endpoints.id service.detection.sequence.endpoints.ip service.detection.sequence.endpoints.location.city service.detection.sequence.endpoints.location.country service.detection.sequence.endpoints.location.lat service.detection.sequence.endpoints.location.lon service.detection.sequence.endpoints.port service.detection.sequence.resources.accountId service.detection.sequence.resources.cloudPartition service.detection.sequence.resources.data.accessKey.principalId service.detection.sequence.resources.data.accessKey.userName service.detection.sequence.resources.data.accessKey.userType service.detection.sequence.resources.data.autoscalingAutoScalingGroup.ec2InstanceUids service.detection.sequence.resources.data.cloudformationStack.ec2InstanceUids service.detection.sequence.resources.data.container.image service.detection.sequence.resources.data.container.imageUid service.detection.sequence.resources.data.ec2Image.ec2InstanceUids service.detection.sequence.resources.data.ec2Instance.availabilityZone service.detection.sequence.resources.data.ec2Instance.ec2NetworkInterfaceUids service.detection.sequence.resources.data.ec2Instance.iamInstanceProfile.arn service.detection.sequence.resources.data.ec2Instance.iamInstanceProfile.id service.detection.sequence.resources.data.ec2Instance.imageDescription service.detection.sequence.resources.data.ec2Instance.instanceState service.detection.sequence.resources.data.ec2Instance.instanceType service.detection.sequence.resources.data.ec2Instance.outpostArn service.detection.sequence.resources.data.ec2Instance.platform service.detection.sequence.resources.data.ec2Instance.productCodes.productCodeId service.detection.sequence.resources.data.ec2Instance.productCodes.productCodeType service.detection.sequence.resources.data.ec2LaunchTemplate.ec2InstanceUids service.detection.sequence.resources.data.ec2LaunchTemplate.version service.detection.sequence.resources.data.ec2NetworkInterface.ipv6Addresses service.detection.sequence.resources.data.ec2NetworkInterface.privateIpAddresses.privateDnsName service.detection.sequence.resources.data.ec2NetworkInterface.privateIpAddresses.privateIpAddress service.detection.sequence.resources.data.ec2NetworkInterface.publicIp service.detection.sequence.resources.data.ec2NetworkInterface.securityGroups.groupId service.detection.sequence.resources.data.ec2NetworkInterface.securityGroups.groupName service.detection.sequence.resources.data.ec2NetworkInterface.subNetId service.detection.sequence.resources.data.ec2NetworkInterface.vpcId service.detection.sequence.resources.data.ec2Vpc.ec2InstanceUids service.detection.sequence.resources.data.ecsCluster.ec2InstanceUids service.detection.sequence.resources.data.ecsCluster.status service.detection.sequence.resources.data.ecsTask.containerUids service.detection.sequence.resources.data.ecsTask.createdAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.detection.sequence.resources.data.ecsTask.launchType service.detection.sequence.resources.data.ecsTask.taskDefinitionArn service.detection.sequence.resources.data.eksCluster.arn service.detection.sequence.resources.data.eksCluster.createdAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.detection.sequence.resources.data.eksCluster.ec2InstanceUids service.detection.sequence.resources.data.eksCluster.status service.detection.sequence.resources.data.eksCluster.vpcId service.detection.sequence.resources.data.iamInstanceProfile.ec2InstanceUids service.detection.sequence.resources.data.iamInstanceProfile.id service.detection.sequence.resources.data.kubernetesWorkload.containerUids service.detection.sequence.resources.data.kubernetesWorkload.namespace service.detection.sequence.resources.data.kubernetesWorkload.type service.detection.sequence.resources.data.s3Bucket.accountPublicAccess.publicAclAccess service.detection.sequence.resources.data.s3Bucket.accountPublicAccess.publicAclIgnoreBehavior service.detection.sequence.resources.data.s3Bucket.accountPublicAccess.publicBucketRestrictBehavior service.detection.sequence.resources.data.s3Bucket.accountPublicAccess.publicPolicyAccess service.detection.sequence.resources.data.s3Bucket.bucketPublicAccess.publicAclAccess service.detection.sequence.resources.data.s3Bucket.bucketPublicAccess.publicAclIgnoreBehavior service.detection.sequence.resources.data.s3Bucket.bucketPublicAccess.publicBucketRestrictBehavior service.detection.sequence.resources.data.s3Bucket.bucketPublicAccess.publicPolicyAccess service.detection.sequence.resources.data.s3Bucket.createdAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.detection.sequence.resources.data.s3Bucket.effectivePermission service.detection.sequence.resources.data.s3Bucket.encryptionKeyArn service.detection.sequence.resources.data.s3Bucket.encryptionType service.detection.sequence.resources.data.s3Bucket.ownerId service.detection.sequence.resources.data.s3Bucket.publicReadAccess service.detection.sequence.resources.data.s3Bucket.publicWriteAccess service.detection.sequence.resources.data.s3Bucket.s3ObjectUids service.detection.sequence.resources.data.s3Object.eTag service.detection.sequence.resources.data.s3Object.key service.detection.sequence.resources.data.s3Object.versionId service.detection.sequence.resources.name service.detection.sequence.resources.region service.detection.sequence.resources.resourceType service.detection.sequence.resources.service service.detection.sequence.resources.tags.key service.detection.sequence.resources.tags.value service.detection.sequence.resources.uid service.detection.sequence.sequenceIndicators.key service.detection.sequence.sequenceIndicators.title service.detection.sequence.sequenceIndicators.values service.detection.sequence.signals.actorIds service.detection.sequence.signals.count service.detection.sequence.signals.createdAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.detection.sequence.signals.description service.detection.sequence.signals.endpointIds service.detection.sequence.signals.firstSeenAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.detection.sequence.signals.lastSeenAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.detection.sequence.signals.name service.detection.sequence.signals.resourceUids service.detection.sequence.signals.severity service.detection.sequence.signals.signalIndicators.key service.detection.sequence.signals.signalIndicators.title service.detection.sequence.signals.signalIndicators.values service.detection.sequence.signals.type service.detection.sequence.signals.uid service.detection.sequence.signals.updatedAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.detection.sequence.uid service.detectorId service.ebsVolumeScanDetails.scanCompletedAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.ebsVolumeScanDetails.scanDetections.highestSeverityThreatDetails.count service.ebsVolumeScanDetails.scanDetections.highestSeverityThreatDetails.severity service.ebsVolumeScanDetails.scanDetections.highestSeverityThreatDetails.threatName service.ebsVolumeScanDetails.scanDetections.scannedItemCount.files service.ebsVolumeScanDetails.scanDetections.scannedItemCount.totalGb service.ebsVolumeScanDetails.scanDetections.scannedItemCount.volumes service.ebsVolumeScanDetails.scanDetections.threatDetectedByName.itemCount service.ebsVolumeScanDetails.scanDetections.threatDetectedByName.shortened service.ebsVolumeScanDetails.scanDetections.threatDetectedByName.threatNames.filePaths.fileName service.ebsVolumeScanDetails.scanDetections.threatDetectedByName.threatNames.filePaths.filePath service.ebsVolumeScanDetails.scanDetections.threatDetectedByName.threatNames.filePaths.hash service.ebsVolumeScanDetails.scanDetections.threatDetectedByName.threatNames.filePaths.volumeArn service.ebsVolumeScanDetails.scanDetections.threatDetectedByName.threatNames.itemCount service.ebsVolumeScanDetails.scanDetections.threatDetectedByName.threatNames.name service.ebsVolumeScanDetails.scanDetections.threatDetectedByName.threatNames.severity service.ebsVolumeScanDetails.scanDetections.threatDetectedByName.uniqueThreatNameCount service.ebsVolumeScanDetails.scanDetections.threatsDetectedItemCount.files service.ebsVolumeScanDetails.scanId service.ebsVolumeScanDetails.scanStartedAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.ebsVolumeScanDetails.scanType service.ebsVolumeScanDetails.sources service.ebsVolumeScanDetails.triggerFindingId service.eventFirstSeen Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.eventLastSeen Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.evidence.threatIntelligenceDetails.threatFileSha256 service.evidence.threatIntelligenceDetails.threatListName service.evidence.threatIntelligenceDetails.threatNames service.featureName service.malwareScanDetails.scanCategory service.malwareScanDetails.scanConfiguration.incrementalScanDetails.baselineResourceArn service.malwareScanDetails.scanConfiguration.triggerType service.malwareScanDetails.scanId service.malwareScanDetails.scanType service.malwareScanDetails.threats.count service.malwareScanDetails.threats.hash service.malwareScanDetails.threats.itemDetails.additionalInfo.deviceName service.malwareScanDetails.threats.itemDetails.additionalInfo.versionId service.malwareScanDetails.threats.itemDetails.hash service.malwareScanDetails.threats.itemDetails.itemPath service.malwareScanDetails.threats.itemDetails.resourceArn service.malwareScanDetails.threats.itemPaths.hash service.malwareScanDetails.threats.itemPaths.nestedItemPath service.malwareScanDetails.threats.name service.malwareScanDetails.threats.source service.malwareScanDetails.uniqueThreatCount service.resourceRole service.runtimeDetails.context.addressFamily service.runtimeDetails.context.commandLineExample service.runtimeDetails.context.fileOperation service.runtimeDetails.context.filePath service.runtimeDetails.context.fileSystemType service.runtimeDetails.context.flags service.runtimeDetails.context.ianaProtocolNumber service.runtimeDetails.context.ldPreloadValue service.runtimeDetails.context.libraryPath service.runtimeDetails.context.memoryRegions service.runtimeDetails.context.modifiedAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.runtimeDetails.context.modifyingProcess.euid service.runtimeDetails.context.modifyingProcess.executablePath service.runtimeDetails.context.modifyingProcess.executableSha256 service.runtimeDetails.context.modifyingProcess.lineage.euid service.runtimeDetails.context.modifyingProcess.lineage.executablePath service.runtimeDetails.context.modifyingProcess.lineage.name service.runtimeDetails.context.modifyingProcess.lineage.namespacePid service.runtimeDetails.context.modifyingProcess.lineage.parentUuid service.runtimeDetails.context.modifyingProcess.lineage.pid service.runtimeDetails.context.modifyingProcess.lineage.startTime Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.runtimeDetails.context.modifyingProcess.lineage.userId service.runtimeDetails.context.modifyingProcess.lineage.uuid service.runtimeDetails.context.modifyingProcess.name service.runtimeDetails.context.modifyingProcess.namespacePid service.runtimeDetails.context.modifyingProcess.parentUuid service.runtimeDetails.context.modifyingProcess.pid service.runtimeDetails.context.modifyingProcess.pwd service.runtimeDetails.context.modifyingProcess.startTime Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.runtimeDetails.context.modifyingProcess.user service.runtimeDetails.context.modifyingProcess.userId service.runtimeDetails.context.modifyingProcess.uuid service.runtimeDetails.context.moduleFilePath service.runtimeDetails.context.moduleName service.runtimeDetails.context.moduleSha256 service.runtimeDetails.context.mountSource service.runtimeDetails.context.mountTarget service.runtimeDetails.context.relatedFilePaths service.runtimeDetails.context.releaseAgentPath service.runtimeDetails.context.runcBinaryPath service.runtimeDetails.context.scriptPath service.runtimeDetails.context.serviceName service.runtimeDetails.context.shellHistoryFilePath service.runtimeDetails.context.socketPath service.runtimeDetails.context.targetProcess.euid service.runtimeDetails.context.targetProcess.executablePath service.runtimeDetails.context.targetProcess.executableSha256 service.runtimeDetails.context.targetProcess.lineage.euid service.runtimeDetails.context.targetProcess.lineage.executablePath service.runtimeDetails.context.targetProcess.lineage.name service.runtimeDetails.context.targetProcess.lineage.namespacePid service.runtimeDetails.context.targetProcess.lineage.parentUuid service.runtimeDetails.context.targetProcess.lineage.pid service.runtimeDetails.context.targetProcess.lineage.startTime Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.runtimeDetails.context.targetProcess.lineage.userId service.runtimeDetails.context.targetProcess.lineage.uuid service.runtimeDetails.context.targetProcess.name service.runtimeDetails.context.targetProcess.namespacePid service.runtimeDetails.context.targetProcess.parentUuid service.runtimeDetails.context.targetProcess.pid service.runtimeDetails.context.targetProcess.pwd service.runtimeDetails.context.targetProcess.startTime Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.runtimeDetails.context.targetProcess.user service.runtimeDetails.context.targetProcess.userId service.runtimeDetails.context.targetProcess.uuid service.runtimeDetails.context.threatFilePath service.runtimeDetails.context.toolCategory service.runtimeDetails.context.toolName service.runtimeDetails.process.euid service.runtimeDetails.process.executablePath service.runtimeDetails.process.executableSha256 service.runtimeDetails.process.lineage.euid service.runtimeDetails.process.lineage.executablePath service.runtimeDetails.process.lineage.name service.runtimeDetails.process.lineage.namespacePid service.runtimeDetails.process.lineage.parentUuid service.runtimeDetails.process.lineage.pid service.runtimeDetails.process.lineage.startTime Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.runtimeDetails.process.lineage.userId service.runtimeDetails.process.lineage.uuid service.runtimeDetails.process.name service.runtimeDetails.process.namespacePid service.runtimeDetails.process.parentUuid service.runtimeDetails.process.pid service.runtimeDetails.process.pwd service.runtimeDetails.process.startTime Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000 service.runtimeDetails.process.user service.runtimeDetails.process.userId service.runtimeDetails.process.uuid service.serviceName service.userFeedback severity To configure severity based filters, use the following for the FindingCriteria condition: Low: \\[\"1\", \"2\", \"3\"\\] Medium: \\[\"4\", \"5\", \"6\"\\] High: \\[\"7\", \"8\"\\] Critical: \\[\"9\", \"10\"\\] For more information, see Findings severity levels in the Amazon GuardDuty User Guide. title type updatedAt Type: Timestamp in Unix Epoch millisecond format. Ex: 1486685375000"];clientToken:ClientToken.toption[@ocaml.doc"The idempotency token for the create request."];tags:TagMap.toption[@ocaml.doc"The tags to be added to a new filter resource."]}letcontext_="CreateFilterRequest"letmake?description=fun?action->fun?rank->fun?clientToken->fun?tags->fun~detectorId->fun~name->fun~findingCriteria->fun()->{description;action;rank;clientToken;tags;detectorId;name;findingCriteria}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("name",(Some(FilterName.to_valuex.name)));("description",(Option.mapx.description~f:FilterDescription.to_value));("action",(Option.mapx.action~f:FilterAction.to_value));("rank",(Option.mapx.rank~f:FilterRank.to_value));("findingCriteria",(Some(FindingCriteria.to_valuex.findingCriteria)));("clientToken",(Option.mapx.clientToken~f:ClientToken.to_value));("tags",(Option.mapx.tags~f:TagMap.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:TagMap.of_xml)(Xml.childxml_arg0"tags")inletclientToken=(Option.map~f:ClientToken.of_xml)(Xml.childxml_arg0"clientToken")inletfindingCriteria=FindingCriteria.of_xml(Xml.child_exn~context:context_xml_arg0"findingCriteria")inletrank=(Option.map~f:FilterRank.of_xml)(Xml.childxml_arg0"rank")inletaction=(Option.map~f:FilterAction.of_xml)(Xml.childxml_arg0"action")inletdescription=(Option.map~f:FilterDescription.of_xml)(Xml.childxml_arg0"description")inletname=FilterName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake?tags?clientToken~findingCriteria?rank?action?description~name~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"Tags"TagMap.of_jsoninletclientToken=field_mapjson__"ClientToken"ClientToken.of_jsoninletfindingCriteria=field_map_exnjson__"FindingCriteria"FindingCriteria.of_jsoninletrank=field_mapjson__"Rank"FilterRank.of_jsoninletaction=field_mapjson__"Action"FilterAction.of_jsoninletdescription=field_mapjson__"Description"FilterDescription.of_jsoninletname=field_map_exnjson__"Name"FilterName.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake?tags?clientToken~findingCriteria?rank?action?description~name~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates a filter using the specified finding criteria. The maximum number of saved filters per Amazon Web Services account per Region is 100. For more information, see Quotas for GuardDuty."]moduleCreateDetectorResponse=structtypenonrect={detectorId:DetectorId.toption[@ocaml.doc"The unique ID of the created detector."];unprocessedDataSources:UnprocessedDataSourcesResult.toption[@ocaml.doc"Specifies the data sources that couldn't be enabled when GuardDuty was enabled for the first time."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake?detectorId=fun?unprocessedDataSources->fun()->{detectorId;unprocessedDataSources}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("detectorId",(Option.mapx.detectorId~f:DetectorId.to_value));("unprocessedDataSources",(Option.mapx.unprocessedDataSources~f:UnprocessedDataSourcesResult.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letunprocessedDataSources=(Option.map~f:UnprocessedDataSourcesResult.of_xml)(Xml.childxml_arg0"unprocessedDataSources")inletdetectorId=(Option.map~f:DetectorId.of_xml)(Xml.childxml_arg0"detectorId")inmake?unprocessedDataSources?detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letunprocessedDataSources=field_mapjson__"UnprocessedDataSources"UnprocessedDataSourcesResult.of_jsoninletdetectorId=field_mapjson__"DetectorId"DetectorId.of_jsoninmake?unprocessedDataSources?detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates a single GuardDuty detector. A detector is a resource that represents the GuardDuty service. To start using GuardDuty, you must create a detector in each Region where you enable the service. You can have only one detector per account per Region. All data sources are enabled in a new detector by default. When you don't specify any features, with an exception to RUNTIME_MONITORING, all the optional features are enabled by default. When you specify some of the features, any feature that is not specified in the API call gets enabled by default, with an exception to RUNTIME_MONITORING. Specifying both EKS Runtime Monitoring (EKS_RUNTIME_MONITORING) and Runtime Monitoring (RUNTIME_MONITORING) will cause an error. You can add only one of these two features because Runtime Monitoring already includes the threat detection for Amazon EKS resources. For more information, see Runtime Monitoring. There might be regional differences because some data sources might not be available in all the Amazon Web Services Regions where GuardDuty is presently supported. For more information, see Regions and endpoints."]moduleCreateDetectorRequest=structtypenonrect={enable:Boolean.t[@ocaml.doc"A Boolean value that specifies whether the detector is to be enabled."];clientToken:ClientToken.toption[@ocaml.doc"The idempotency token for the create request."];findingPublishingFrequency:FindingPublishingFrequency.toption[@ocaml.doc"A value that specifies how frequently updated findings are exported."];dataSources:DataSourceConfigurations.toption[@ocaml.doc"Describes which data sources will be enabled for the detector. There might be regional differences because some data sources might not be available in all the Amazon Web Services Regions where GuardDuty is presently supported. For more information, see Regions and endpoints."];tags:TagMap.toption[@ocaml.doc"The tags to be added to a new detector resource."];features:DetectorFeatureConfigurations.toption[@ocaml.doc"A list of features that will be configured for the detector."]}letcontext_="CreateDetectorRequest"letmake?clientToken=fun?findingPublishingFrequency->fun?dataSources->fun?tags->fun?features->fun~enable->fun()->{clientToken;findingPublishingFrequency;dataSources;tags;features;enable}letto_valuex=structure_to_value[("enable",(Some(Boolean.to_valuex.enable)));("clientToken",(Option.mapx.clientToken~f:ClientToken.to_value));("findingPublishingFrequency",(Option.mapx.findingPublishingFrequency~f:FindingPublishingFrequency.to_value));("dataSources",(Option.mapx.dataSources~f:DataSourceConfigurations.to_value));("tags",(Option.mapx.tags~f:TagMap.to_value));("features",(Option.mapx.features~f:DetectorFeatureConfigurations.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letfeatures=(Option.map~f:DetectorFeatureConfigurations.of_xml)(Xml.childxml_arg0"features")inlettags=(Option.map~f:TagMap.of_xml)(Xml.childxml_arg0"tags")inletdataSources=(Option.map~f:DataSourceConfigurations.of_xml)(Xml.childxml_arg0"dataSources")inletfindingPublishingFrequency=(Option.map~f:FindingPublishingFrequency.of_xml)(Xml.childxml_arg0"findingPublishingFrequency")inletclientToken=(Option.map~f:ClientToken.of_xml)(Xml.childxml_arg0"clientToken")inletenable=Boolean.of_xml(Xml.child_exn~context:context_xml_arg0"enable")inmake?features?tags?dataSources?findingPublishingFrequency?clientToken~enable()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letfeatures=field_mapjson__"Features"DetectorFeatureConfigurations.of_jsoninlettags=field_mapjson__"Tags"TagMap.of_jsoninletdataSources=field_mapjson__"DataSources"DataSourceConfigurations.of_jsoninletfindingPublishingFrequency=field_mapjson__"FindingPublishingFrequency"FindingPublishingFrequency.of_jsoninletclientToken=field_mapjson__"ClientToken"ClientToken.of_jsoninletenable=field_map_exnjson__"Enable"Boolean.of_jsoninmake?features?tags?dataSources?findingPublishingFrequency?clientToken~enable()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates a single GuardDuty detector. A detector is a resource that represents the GuardDuty service. To start using GuardDuty, you must create a detector in each Region where you enable the service. You can have only one detector per account per Region. All data sources are enabled in a new detector by default. When you don't specify any features, with an exception to RUNTIME_MONITORING, all the optional features are enabled by default. When you specify some of the features, any feature that is not specified in the API call gets enabled by default, with an exception to RUNTIME_MONITORING. Specifying both EKS Runtime Monitoring (EKS_RUNTIME_MONITORING) and Runtime Monitoring (RUNTIME_MONITORING) will cause an error. You can add only one of these two features because Runtime Monitoring already includes the threat detection for Amazon EKS resources. For more information, see Runtime Monitoring. There might be regional differences because some data sources might not be available in all the Amazon Web Services Regions where GuardDuty is presently supported. For more information, see Regions and endpoints."]moduleArchiveFindingsResponse=structtypenonrect=unittypenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.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"Archives GuardDuty findings that are specified by the list of finding IDs. Only the administrator account can archive findings. Member accounts don't have permission to archive findings from their accounts."]moduleArchiveFindingsRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The ID of the detector that specifies the GuardDuty service whose findings you want to archive. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];findingIds:FindingIds.t[@ocaml.doc"The IDs of the findings that you want to archive."]}letcontext_="ArchiveFindingsRequest"letmake~detectorId=fun~findingIds->fun()->{detectorId;findingIds}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("findingIds",(Some(FindingIds.to_valuex.findingIds)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letfindingIds=FindingIds.of_xml(Xml.child_exn~context:context_xml_arg0"findingIds")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake~findingIds~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letfindingIds=field_map_exnjson__"FindingIds"FindingIds.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake~findingIds~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Archives GuardDuty findings that are specified by the list of finding IDs. Only the administrator account can archive findings. Member accounts don't have permission to archive findings from their accounts."]moduleAcceptInvitationResponse=structtypenonrect=unittypenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.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"Accepts the invitation to be monitored by a GuardDuty administrator account."]moduleAcceptInvitationRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector of the GuardDuty member account. To find the detectorId in the current Region, see the Settings page in the GuardDuty console, or run the ListDetectors API."];masterId:String_.t[@ocaml.doc"The account ID of the GuardDuty administrator account whose invitation you're accepting."];invitationId:String_.t[@ocaml.doc"The value that is used to validate the administrator account to the member account."]}letcontext_="AcceptInvitationRequest"letmake~detectorId=fun~masterId->fun~invitationId->fun()->{detectorId;masterId;invitationId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("masterId",(Some(String_.to_valuex.masterId)));("invitationId",(Some(String_.to_valuex.invitationId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letinvitationId=String_.of_xml(Xml.child_exn~context:context_xml_arg0"invitationId")inletmasterId=String_.of_xml(Xml.child_exn~context:context_xml_arg0"masterId")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake~invitationId~masterId~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letinvitationId=field_map_exnjson__"InvitationId"String_.of_jsoninletmasterId=field_map_exnjson__"MasterId"String_.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake~invitationId~masterId~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Accepts the invitation to be monitored by a GuardDuty administrator account."]moduleAcceptAdministratorInvitationResponse=structtypenonrect=unittypenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServerErrorExceptionofInternalServerErrorException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServerErrorException"->`InternalServerErrorException(InternalServerErrorException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BadRequestExceptione->`Assoc[("error",(`String"BadRequestException"));("details",(BadRequestException.to_jsone))]|`InternalServerErrorExceptione->`Assoc[("error",(`String"InternalServerErrorException"));("details",(InternalServerErrorException.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"Accepts the invitation to be a member account and get monitored by a GuardDuty administrator account that sent the invitation."]moduleAcceptAdministratorInvitationRequest=structtypenonrect={detectorId:DetectorId.t[@ocaml.doc"The unique ID of the detector of the GuardDuty member account."];administratorId:String_.t[@ocaml.doc"The account ID of the GuardDuty administrator account whose invitation you're accepting."];invitationId:String_.t[@ocaml.doc"The value that is used to validate the administrator account to the member account."]}letcontext_="AcceptAdministratorInvitationRequest"letmake~detectorId=fun~administratorId->fun~invitationId->fun()->{detectorId;administratorId;invitationId}letto_valuex=structure_to_value[("DetectorId",(Some(DetectorId.to_valuex.detectorId)));("administratorId",(Some(String_.to_valuex.administratorId)));("invitationId",(Some(String_.to_valuex.invitationId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letinvitationId=String_.of_xml(Xml.child_exn~context:context_xml_arg0"invitationId")inletadministratorId=String_.of_xml(Xml.child_exn~context:context_xml_arg0"administratorId")inletdetectorId=DetectorId.of_xml(Xml.child_exn~context:context_xml_arg0"DetectorId")inmake~invitationId~administratorId~detectorId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letinvitationId=field_map_exnjson__"InvitationId"String_.of_jsoninletadministratorId=field_map_exnjson__"AdministratorId"String_.of_jsoninletdetectorId=field_map_exnjson__"DetectorId"DetectorId.of_jsoninmake~invitationId~administratorId~detectorId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Accepts the invitation to be a member account and get monitored by a GuardDuty administrator account that sent the invitation."]