12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344934593469347934893499350935193529353935493559356935793589359936093619362936393649365936693679368936993709371937293739374937593769377937893799380938193829383938493859386938793889389939093919392939393949395939693979398939994009401940294039404940594069407940894099410941194129413941494159416941794189419942094219422942394249425942694279428942994309431943294339434943594369437943894399440944194429443944494459446944794489449945094519452945394549455945694579458945994609461946294639464946594669467946894699470947194729473947494759476947794789479948094819482948394849485948694879488948994909491949294939494949594969497949894999500950195029503950495059506950795089509951095119512951395149515951695179518951995209521952295239524952595269527952895299530953195329533953495359536953795389539954095419542954395449545954695479548954995509551955295539554955595569557955895599560956195629563956495659566956795689569957095719572957395749575957695779578957995809581958295839584958595869587958895899590959195929593959495959596959795989599960096019602960396049605960696079608960996109611961296139614961596169617961896199620962196229623962496259626962796289629963096319632963396349635963696379638963996409641964296439644964596469647964896499650965196529653965496559656965796589659966096619662966396649665966696679668966996709671967296739674967596769677967896799680968196829683968496859686968796889689969096919692969396949695969696979698969997009701970297039704970597069707970897099710971197129713971497159716971797189719972097219722972397249725972697279728972997309731973297339734973597369737973897399740974197429743974497459746974797489749975097519752975397549755975697579758975997609761976297639764976597669767976897699770977197729773977497759776977797789779978097819782978397849785978697879788978997909791979297939794979597969797979897999800980198029803980498059806980798089809981098119812981398149815981698179818981998209821982298239824982598269827982898299830983198329833983498359836983798389839984098419842984398449845984698479848984998509851985298539854985598569857985898599860986198629863986498659866986798689869987098719872987398749875987698779878987998809881988298839884988598869887988898899890989198929893989498959896989798989899990099019902990399049905990699079908990999109911991299139914991599169917991899199920992199229923992499259926992799289929993099319932993399349935993699379938993999409941994299439944994599469947994899499950995199529953995499559956995799589959996099619962996399649965996699679968996999709971997299739974997599769977997899799980998199829983998499859986998799889989999099919992999399949995999699979998999910000100011000210003100041000510006100071000810009100101001110012100131001410015100161001710018100191002010021100221002310024100251002610027100281002910030100311003210033100341003510036100371003810039100401004110042100431004410045100461004710048100491005010051100521005310054100551005610057100581005910060100611006210063100641006510066100671006810069100701007110072100731007410075100761007710078100791008010081100821008310084100851008610087100881008910090100911009210093100941009510096100971009810099101001010110102101031010410105101061010710108101091011010111101121011310114101151011610117101181011910120101211012210123101241012510126101271012810129101301013110132101331013410135101361013710138101391014010141101421014310144101451014610147101481014910150101511015210153101541015510156101571015810159101601016110162101631016410165101661016710168101691017010171101721017310174101751017610177101781017910180101811018210183101841018510186101871018810189101901019110192101931019410195101961019710198101991020010201102021020310204102051020610207102081020910210102111021210213102141021510216102171021810219102201022110222102231022410225102261022710228102291023010231102321023310234102351023610237102381023910240102411024210243102441024510246102471024810249102501025110252102531025410255102561025710258102591026010261102621026310264102651026610267102681026910270102711027210273102741027510276102771027810279102801028110282102831028410285102861028710288102891029010291102921029310294102951029610297102981029910300103011030210303103041030510306103071030810309103101031110312103131031410315103161031710318103191032010321103221032310324103251032610327103281032910330103311033210333103341033510336103371033810339103401034110342103431034410345103461034710348103491035010351103521035310354103551035610357103581035910360103611036210363103641036510366103671036810369103701037110372103731037410375103761037710378103791038010381103821038310384103851038610387103881038910390103911039210393103941039510396103971039810399104001040110402104031040410405104061040710408104091041010411104121041310414104151041610417104181041910420104211042210423104241042510426104271042810429104301043110432104331043410435104361043710438104391044010441104421044310444104451044610447104481044910450104511045210453104541045510456104571045810459104601046110462104631046410465104661046710468104691047010471104721047310474104751047610477104781047910480104811048210483104841048510486104871048810489104901049110492104931049410495104961049710498104991050010501105021050310504105051050610507105081050910510105111051210513105141051510516105171051810519105201052110522105231052410525105261052710528105291053010531105321053310534105351053610537105381053910540105411054210543105441054510546105471054810549105501055110552105531055410555105561055710558105591056010561105621056310564105651056610567105681056910570105711057210573105741057510576105771057810579105801058110582105831058410585105861058710588105891059010591105921059310594105951059610597105981059910600106011060210603106041060510606106071060810609106101061110612106131061410615106161061710618106191062010621106221062310624106251062610627106281062910630106311063210633106341063510636106371063810639106401064110642106431064410645106461064710648106491065010651106521065310654106551065610657106581065910660106611066210663106641066510666106671066810669106701067110672106731067410675106761067710678106791068010681106821068310684106851068610687106881068910690106911069210693106941069510696106971069810699107001070110702107031070410705107061070710708107091071010711107121071310714107151071610717107181071910720107211072210723107241072510726107271072810729107301073110732107331073410735107361073710738107391074010741107421074310744107451074610747107481074910750107511075210753107541075510756107571075810759107601076110762107631076410765107661076710768107691077010771107721077310774107751077610777107781077910780107811078210783107841078510786107871078810789107901079110792107931079410795107961079710798107991080010801108021080310804108051080610807108081080910810108111081210813108141081510816108171081810819108201082110822108231082410825108261082710828108291083010831108321083310834108351083610837108381083910840108411084210843108441084510846108471084810849108501085110852108531085410855108561085710858108591086010861108621086310864108651086610867108681086910870108711087210873108741087510876108771087810879108801088110882108831088410885108861088710888108891089010891108921089310894108951089610897108981089910900109011090210903109041090510906109071090810909109101091110912109131091410915109161091710918109191092010921109221092310924109251092610927109281092910930109311093210933109341093510936109371093810939109401094110942109431094410945109461094710948109491095010951109521095310954109551095610957109581095910960109611096210963109641096510966109671096810969109701097110972109731097410975109761097710978109791098010981109821098310984109851098610987109881098910990109911099210993109941099510996109971099810999110001100111002110031100411005110061100711008110091101011011110121101311014110151101611017110181101911020110211102211023110241102511026110271102811029110301103111032110331103411035110361103711038110391104011041110421104311044110451104611047110481104911050110511105211053110541105511056110571105811059110601106111062110631106411065110661106711068110691107011071110721107311074110751107611077110781107911080110811108211083110841108511086110871108811089110901109111092110931109411095110961109711098110991110011101111021110311104111051110611107111081110911110111111111211113111141111511116111171111811119111201112111122111231112411125111261112711128111291113011131111321113311134111351113611137111381113911140111411114211143111441114511146111471114811149111501115111152111531115411155111561115711158111591116011161111621116311164111651116611167111681116911170111711117211173111741117511176111771117811179111801118111182111831118411185111861118711188111891119011191111921119311194111951119611197111981119911200112011120211203112041120511206112071120811209112101121111212112131121411215112161121711218112191122011221112221122311224112251122611227112281122911230112311123211233112341123511236112371123811239112401124111242112431124411245112461124711248112491125011251112521125311254112551125611257112581125911260112611126211263112641126511266112671126811269112701127111272112731127411275112761127711278112791128011281112821128311284112851128611287112881128911290112911129211293112941129511296112971129811299113001130111302113031130411305113061130711308113091131011311113121131311314113151131611317113181131911320113211132211323113241132511326113271132811329113301133111332113331133411335113361133711338113391134011341113421134311344113451134611347113481134911350113511135211353113541135511356113571135811359113601136111362113631136411365113661136711368113691137011371113721137311374113751137611377113781137911380113811138211383113841138511386113871138811389113901139111392113931139411395113961139711398113991140011401114021140311404114051140611407114081140911410114111141211413114141141511416114171141811419114201142111422114231142411425114261142711428114291143011431114321143311434114351143611437114381143911440114411144211443114441144511446114471144811449114501145111452114531145411455114561145711458114591146011461114621146311464114651146611467114681146911470114711147211473114741147511476114771147811479114801148111482114831148411485114861148711488114891149011491114921149311494114951149611497114981149911500115011150211503115041150511506115071150811509115101151111512115131151411515115161151711518115191152011521115221152311524115251152611527115281152911530115311153211533115341153511536115371153811539115401154111542115431154411545115461154711548115491155011551115521155311554115551155611557115581155911560115611156211563115641156511566115671156811569115701157111572115731157411575115761157711578115791158011581115821158311584115851158611587115881158911590115911159211593115941159511596115971159811599116001160111602116031160411605116061160711608116091161011611116121161311614116151161611617116181161911620116211162211623116241162511626116271162811629116301163111632116331163411635116361163711638116391164011641116421164311644116451164611647116481164911650116511165211653116541165511656116571165811659116601166111662116631166411665116661166711668116691167011671116721167311674116751167611677116781167911680116811168211683116841168511686116871168811689116901169111692116931169411695116961169711698116991170011701117021170311704117051170611707117081170911710117111171211713117141171511716117171171811719117201172111722117231172411725117261172711728117291173011731117321173311734117351173611737117381173911740117411174211743117441174511746117471174811749117501175111752117531175411755117561175711758117591176011761117621176311764117651176611767117681176911770117711177211773117741177511776117771177811779117801178111782117831178411785117861178711788117891179011791117921179311794117951179611797117981179911800118011180211803118041180511806118071180811809118101181111812118131181411815118161181711818118191182011821118221182311824118251182611827118281182911830118311183211833118341183511836118371183811839118401184111842118431184411845118461184711848118491185011851118521185311854118551185611857118581185911860118611186211863118641186511866118671186811869118701187111872118731187411875118761187711878118791188011881118821188311884118851188611887118881188911890118911189211893118941189511896118971189811899119001190111902119031190411905119061190711908119091191011911119121191311914119151191611917119181191911920119211192211923119241192511926119271192811929119301193111932119331193411935119361193711938119391194011941119421194311944119451194611947119481194911950119511195211953119541195511956119571195811959119601196111962119631196411965119661196711968119691197011971119721197311974119751197611977119781197911980119811198211983119841198511986119871198811989119901199111992119931199411995119961199711998119991200012001120021200312004120051200612007120081200912010120111201212013120141201512016120171201812019120201202112022120231202412025120261202712028120291203012031120321203312034120351203612037120381203912040120411204212043120441204512046120471204812049120501205112052120531205412055120561205712058120591206012061120621206312064120651206612067120681206912070120711207212073120741207512076120771207812079120801208112082120831208412085120861208712088120891209012091120921209312094120951209612097120981209912100121011210212103121041210512106121071210812109121101211112112121131211412115121161211712118121191212012121121221212312124121251212612127121281212912130121311213212133121341213512136121371213812139121401214112142121431214412145121461214712148121491215012151121521215312154121551215612157121581215912160121611216212163121641216512166121671216812169121701217112172121731217412175121761217712178121791218012181121821218312184121851218612187121881218912190121911219212193121941219512196121971219812199122001220112202122031220412205122061220712208122091221012211122121221312214122151221612217122181221912220122211222212223122241222512226122271222812229122301223112232122331223412235122361223712238122391224012241122421224312244122451224612247122481224912250122511225212253122541225512256122571225812259122601226112262122631226412265122661226712268122691227012271122721227312274122751227612277122781227912280122811228212283122841228512286122871228812289122901229112292122931229412295122961229712298122991230012301123021230312304123051230612307123081230912310123111231212313123141231512316123171231812319123201232112322123231232412325123261232712328123291233012331123321233312334123351233612337123381233912340123411234212343123441234512346123471234812349123501235112352123531235412355123561235712358123591236012361123621236312364123651236612367123681236912370123711237212373123741237512376123771237812379123801238112382123831238412385123861238712388123891239012391123921239312394123951239612397123981239912400124011240212403124041240512406124071240812409124101241112412124131241412415124161241712418124191242012421124221242312424124251242612427124281242912430124311243212433124341243512436124371243812439124401244112442124431244412445124461244712448124491245012451124521245312454124551245612457124581245912460124611246212463124641246512466124671246812469124701247112472124731247412475124761247712478124791248012481124821248312484124851248612487124881248912490124911249212493124941249512496124971249812499125001250112502125031250412505125061250712508125091251012511125121251312514125151251612517125181251912520125211252212523125241252512526125271252812529125301253112532125331253412535125361253712538125391254012541125421254312544125451254612547125481254912550125511255212553125541255512556125571255812559125601256112562125631256412565125661256712568125691257012571125721257312574125751257612577125781257912580125811258212583125841258512586125871258812589125901259112592125931259412595125961259712598125991260012601126021260312604126051260612607126081260912610126111261212613126141261512616126171261812619126201262112622126231262412625126261262712628126291263012631126321263312634126351263612637126381263912640126411264212643126441264512646126471264812649126501265112652126531265412655126561265712658126591266012661126621266312664126651266612667126681266912670126711267212673126741267512676126771267812679126801268112682126831268412685126861268712688126891269012691126921269312694126951269612697126981269912700127011270212703127041270512706127071270812709127101271112712127131271412715127161271712718127191272012721127221272312724127251272612727127281272912730127311273212733127341273512736127371273812739127401274112742127431274412745127461274712748127491275012751127521275312754127551275612757127581275912760127611276212763127641276512766127671276812769127701277112772127731277412775127761277712778127791278012781127821278312784127851278612787127881278912790127911279212793127941279512796127971279812799128001280112802128031280412805128061280712808128091281012811128121281312814128151281612817128181281912820128211282212823128241282512826128271282812829128301283112832128331283412835128361283712838128391284012841128421284312844128451284612847128481284912850128511285212853128541285512856128571285812859128601286112862128631286412865128661286712868128691287012871128721287312874128751287612877128781287912880128811288212883128841288512886128871288812889128901289112892128931289412895128961289712898128991290012901129021290312904129051290612907129081290912910129111291212913129141291512916129171291812919129201292112922129231292412925129261292712928129291293012931129321293312934129351293612937129381293912940129411294212943129441294512946129471294812949129501295112952129531295412955129561295712958129591296012961129621296312964129651296612967129681296912970129711297212973129741297512976129771297812979129801298112982129831298412985129861298712988129891299012991129921299312994129951299612997129981299913000130011300213003130041300513006130071300813009130101301113012130131301413015130161301713018130191302013021130221302313024130251302613027130281302913030130311303213033130341303513036130371303813039130401304113042130431304413045130461304713048130491305013051130521305313054130551305613057130581305913060130611306213063130641306513066130671306813069130701307113072130731307413075130761307713078130791308013081130821308313084130851308613087130881308913090130911309213093130941309513096130971309813099131001310113102131031310413105131061310713108131091311013111131121311313114131151311613117131181311913120131211312213123131241312513126131271312813129131301313113132131331313413135131361313713138131391314013141131421314313144131451314613147131481314913150131511315213153131541315513156131571315813159131601316113162131631316413165131661316713168131691317013171131721317313174131751317613177131781317913180131811318213183131841318513186131871318813189131901319113192131931319413195131961319713198131991320013201132021320313204132051320613207132081320913210132111321213213132141321513216132171321813219132201322113222132231322413225132261322713228132291323013231132321323313234132351323613237132381323913240132411324213243132441324513246132471324813249132501325113252132531325413255132561325713258132591326013261132621326313264132651326613267132681326913270132711327213273132741327513276132771327813279132801328113282132831328413285132861328713288132891329013291132921329313294132951329613297132981329913300133011330213303133041330513306133071330813309133101331113312133131331413315133161331713318133191332013321133221332313324133251332613327133281332913330133311333213333133341333513336133371333813339133401334113342133431334413345133461334713348133491335013351133521335313354133551335613357133581335913360133611336213363133641336513366133671336813369133701337113372133731337413375133761337713378133791338013381133821338313384133851338613387133881338913390133911339213393133941339513396133971339813399134001340113402134031340413405134061340713408134091341013411134121341313414134151341613417134181341913420134211342213423134241342513426134271342813429134301343113432134331343413435134361343713438134391344013441134421344313444134451344613447134481344913450134511345213453134541345513456134571345813459134601346113462134631346413465134661346713468134691347013471134721347313474134751347613477134781347913480134811348213483134841348513486134871348813489134901349113492134931349413495134961349713498134991350013501135021350313504135051350613507135081350913510135111351213513135141351513516135171351813519135201352113522135231352413525135261352713528135291353013531135321353313534135351353613537135381353913540135411354213543135441354513546135471354813549135501355113552135531355413555135561355713558135591356013561135621356313564135651356613567135681356913570135711357213573135741357513576135771357813579135801358113582135831358413585135861358713588135891359013591135921359313594135951359613597135981359913600136011360213603136041360513606136071360813609136101361113612136131361413615136161361713618136191362013621136221362313624136251362613627136281362913630136311363213633136341363513636136371363813639136401364113642136431364413645136461364713648136491365013651136521365313654136551365613657136581365913660136611366213663136641366513666136671366813669136701367113672136731367413675136761367713678136791368013681136821368313684136851368613687136881368913690136911369213693136941369513696136971369813699137001370113702137031370413705137061370713708137091371013711137121371313714137151371613717137181371913720137211372213723137241372513726137271372813729137301373113732137331373413735137361373713738137391374013741137421374313744137451374613747137481374913750137511375213753137541375513756137571375813759137601376113762137631376413765137661376713768137691377013771137721377313774137751377613777137781377913780137811378213783137841378513786137871378813789137901379113792137931379413795137961379713798137991380013801138021380313804138051380613807138081380913810138111381213813138141381513816138171381813819138201382113822138231382413825138261382713828138291383013831138321383313834138351383613837138381383913840138411384213843138441384513846138471384813849138501385113852138531385413855138561385713858138591386013861138621386313864138651386613867138681386913870138711387213873138741387513876138771387813879138801388113882138831388413885138861388713888138891389013891138921389313894138951389613897138981389913900139011390213903139041390513906139071390813909139101391113912139131391413915139161391713918139191392013921139221392313924139251392613927139281392913930139311393213933139341393513936139371393813939139401394113942139431394413945139461394713948139491395013951139521395313954139551395613957139581395913960139611396213963139641396513966139671396813969139701397113972139731397413975139761397713978139791398013981139821398313984139851398613987139881398913990139911399213993139941399513996139971399813999140001400114002140031400414005140061400714008140091401014011140121401314014140151401614017140181401914020140211402214023140241402514026140271402814029140301403114032140331403414035140361403714038140391404014041140421404314044140451404614047140481404914050140511405214053140541405514056140571405814059140601406114062140631406414065140661406714068140691407014071140721407314074140751407614077140781407914080140811408214083140841408514086140871408814089140901409114092140931409414095140961409714098140991410014101141021410314104141051410614107141081410914110141111411214113141141411514116141171411814119141201412114122141231412414125141261412714128141291413014131141321413314134141351413614137141381413914140141411414214143141441414514146141471414814149141501415114152141531415414155141561415714158141591416014161141621416314164141651416614167141681416914170141711417214173141741417514176141771417814179141801418114182141831418414185141861418714188141891419014191141921419314194141951419614197141981419914200142011420214203142041420514206142071420814209142101421114212142131421414215142161421714218142191422014221142221422314224142251422614227142281422914230142311423214233142341423514236142371423814239142401424114242142431424414245142461424714248142491425014251142521425314254142551425614257142581425914260142611426214263142641426514266142671426814269142701427114272142731427414275142761427714278142791428014281142821428314284142851428614287142881428914290142911429214293142941429514296142971429814299143001430114302143031430414305143061430714308143091431014311143121431314314143151431614317143181431914320143211432214323143241432514326143271432814329143301433114332143331433414335143361433714338143391434014341143421434314344143451434614347143481434914350143511435214353143541435514356143571435814359143601436114362143631436414365143661436714368143691437014371143721437314374143751437614377143781437914380143811438214383143841438514386143871438814389143901439114392143931439414395143961439714398143991440014401144021440314404144051440614407144081440914410144111441214413144141441514416144171441814419144201442114422144231442414425144261442714428144291443014431144321443314434144351443614437144381443914440144411444214443144441444514446144471444814449144501445114452144531445414455144561445714458144591446014461144621446314464144651446614467144681446914470144711447214473144741447514476144771447814479144801448114482144831448414485144861448714488144891449014491144921449314494144951449614497144981449914500145011450214503145041450514506145071450814509145101451114512145131451414515145161451714518145191452014521145221452314524145251452614527145281452914530145311453214533145341453514536145371453814539145401454114542145431454414545145461454714548145491455014551145521455314554145551455614557145581455914560145611456214563145641456514566145671456814569145701457114572145731457414575145761457714578145791458014581145821458314584145851458614587145881458914590145911459214593145941459514596145971459814599146001460114602146031460414605146061460714608146091461014611146121461314614146151461614617146181461914620146211462214623146241462514626146271462814629146301463114632146331463414635146361463714638146391464014641146421464314644146451464614647146481464914650146511465214653146541465514656146571465814659146601466114662146631466414665146661466714668146691467014671146721467314674146751467614677146781467914680146811468214683146841468514686146871468814689146901469114692146931469414695146961469714698146991470014701147021470314704147051470614707147081470914710147111471214713147141471514716147171471814719147201472114722147231472414725147261472714728147291473014731147321473314734147351473614737147381473914740147411474214743147441474514746147471474814749147501475114752147531475414755147561475714758147591476014761147621476314764147651476614767147681476914770147711477214773147741477514776147771477814779147801478114782147831478414785147861478714788147891479014791147921479314794147951479614797147981479914800148011480214803148041480514806148071480814809148101481114812148131481414815148161481714818148191482014821148221482314824148251482614827148281482914830148311483214833148341483514836148371483814839148401484114842148431484414845148461484714848148491485014851148521485314854148551485614857148581485914860148611486214863148641486514866148671486814869148701487114872148731487414875148761487714878148791488014881148821488314884148851488614887148881488914890148911489214893148941489514896148971489814899149001490114902149031490414905149061490714908149091491014911149121491314914149151491614917149181491914920149211492214923149241492514926149271492814929149301493114932149331493414935149361493714938149391494014941149421494314944149451494614947149481494914950149511495214953149541495514956149571495814959149601496114962149631496414965149661496714968149691497014971149721497314974149751497614977149781497914980149811498214983149841498514986149871498814989149901499114992149931499414995149961499714998149991500015001150021500315004150051500615007150081500915010150111501215013150141501515016150171501815019150201502115022150231502415025150261502715028150291503015031150321503315034150351503615037150381503915040150411504215043150441504515046150471504815049150501505115052150531505415055150561505715058150591506015061150621506315064150651506615067150681506915070150711507215073150741507515076150771507815079150801508115082150831508415085150861508715088150891509015091150921509315094150951509615097150981509915100151011510215103151041510515106151071510815109151101511115112151131511415115151161511715118151191512015121151221512315124151251512615127151281512915130151311513215133151341513515136151371513815139151401514115142151431514415145151461514715148151491515015151151521515315154151551515615157151581515915160151611516215163151641516515166151671516815169151701517115172151731517415175151761517715178151791518015181151821518315184151851518615187151881518915190151911519215193151941519515196151971519815199152001520115202152031520415205152061520715208152091521015211152121521315214152151521615217152181521915220152211522215223152241522515226152271522815229152301523115232152331523415235152361523715238152391524015241152421524315244152451524615247152481524915250152511525215253152541525515256152571525815259152601526115262152631526415265152661526715268152691527015271152721527315274152751527615277152781527915280152811528215283152841528515286152871528815289152901529115292152931529415295152961529715298152991530015301153021530315304153051530615307153081530915310153111531215313153141531515316153171531815319153201532115322153231532415325153261532715328153291533015331153321533315334153351533615337153381533915340153411534215343153441534515346153471534815349153501535115352153531535415355153561535715358153591536015361153621536315364153651536615367153681536915370153711537215373153741537515376153771537815379153801538115382153831538415385153861538715388153891539015391153921539315394153951539615397153981539915400154011540215403154041540515406154071540815409154101541115412154131541415415154161541715418154191542015421154221542315424154251542615427154281542915430154311543215433154341543515436154371543815439154401544115442154431544415445154461544715448154491545015451154521545315454154551545615457154581545915460154611546215463154641546515466154671546815469154701547115472154731547415475154761547715478154791548015481154821548315484154851548615487154881548915490154911549215493154941549515496154971549815499155001550115502155031550415505155061550715508155091551015511155121551315514155151551615517155181551915520155211552215523155241552515526155271552815529155301553115532155331553415535155361553715538155391554015541155421554315544155451554615547155481554915550155511555215553155541555515556155571555815559155601556115562155631556415565155661556715568155691557015571155721557315574155751557615577155781557915580155811558215583155841558515586155871558815589155901559115592155931559415595155961559715598155991560015601156021560315604156051560615607156081560915610156111561215613156141561515616156171561815619156201562115622156231562415625156261562715628156291563015631156321563315634156351563615637156381563915640156411564215643156441564515646156471564815649156501565115652156531565415655156561565715658156591566015661156621566315664156651566615667156681566915670156711567215673156741567515676156771567815679156801568115682156831568415685156861568715688156891569015691156921569315694156951569615697156981569915700157011570215703157041570515706157071570815709157101571115712157131571415715157161571715718157191572015721157221572315724157251572615727157281572915730157311573215733157341573515736157371573815739157401574115742157431574415745157461574715748157491575015751157521575315754157551575615757157581575915760157611576215763157641576515766157671576815769157701577115772157731577415775157761577715778157791578015781157821578315784157851578615787157881578915790157911579215793157941579515796157971579815799158001580115802158031580415805158061580715808158091581015811158121581315814158151581615817158181581915820158211582215823158241582515826158271582815829158301583115832158331583415835158361583715838158391584015841158421584315844158451584615847158481584915850158511585215853158541585515856158571585815859158601586115862158631586415865158661586715868158691587015871158721587315874158751587615877158781587915880158811588215883158841588515886158871588815889158901589115892158931589415895158961589715898158991590015901159021590315904159051590615907159081590915910159111591215913159141591515916159171591815919159201592115922159231592415925159261592715928159291593015931159321593315934159351593615937159381593915940159411594215943159441594515946159471594815949159501595115952159531595415955159561595715958159591596015961159621596315964159651596615967159681596915970159711597215973159741597515976159771597815979159801598115982159831598415985159861598715988159891599015991159921599315994159951599615997159981599916000160011600216003160041600516006160071600816009160101601116012160131601416015160161601716018160191602016021160221602316024160251602616027160281602916030160311603216033160341603516036160371603816039160401604116042160431604416045160461604716048160491605016051160521605316054160551605616057160581605916060160611606216063160641606516066160671606816069160701607116072160731607416075160761607716078160791608016081160821608316084160851608616087160881608916090160911609216093160941609516096160971609816099161001610116102161031610416105161061610716108161091611016111161121611316114161151611616117161181611916120161211612216123161241612516126161271612816129161301613116132161331613416135161361613716138161391614016141161421614316144161451614616147161481614916150161511615216153161541615516156161571615816159161601616116162161631616416165161661616716168161691617016171161721617316174161751617616177161781617916180161811618216183161841618516186161871618816189161901619116192161931619416195161961619716198161991620016201162021620316204162051620616207162081620916210162111621216213162141621516216162171621816219162201622116222162231622416225162261622716228162291623016231162321623316234162351623616237162381623916240162411624216243162441624516246162471624816249162501625116252162531625416255162561625716258162591626016261162621626316264162651626616267162681626916270162711627216273162741627516276162771627816279162801628116282162831628416285162861628716288162891629016291162921629316294162951629616297162981629916300163011630216303163041630516306163071630816309163101631116312163131631416315163161631716318163191632016321163221632316324163251632616327163281632916330163311633216333163341633516336163371633816339163401634116342163431634416345163461634716348163491635016351163521635316354163551635616357163581635916360163611636216363163641636516366163671636816369163701637116372163731637416375163761637716378163791638016381163821638316384163851638616387163881638916390163911639216393163941639516396163971639816399164001640116402164031640416405164061640716408164091641016411164121641316414164151641616417164181641916420164211642216423164241642516426164271642816429164301643116432164331643416435164361643716438164391644016441164421644316444164451644616447164481644916450164511645216453164541645516456164571645816459164601646116462164631646416465164661646716468164691647016471164721647316474164751647616477164781647916480164811648216483164841648516486164871648816489164901649116492164931649416495164961649716498164991650016501165021650316504165051650616507165081650916510165111651216513165141651516516165171651816519165201652116522165231652416525165261652716528165291653016531165321653316534165351653616537165381653916540165411654216543165441654516546165471654816549165501655116552165531655416555165561655716558165591656016561165621656316564165651656616567165681656916570165711657216573165741657516576165771657816579165801658116582165831658416585165861658716588165891659016591165921659316594165951659616597165981659916600166011660216603166041660516606166071660816609166101661116612166131661416615166161661716618166191662016621166221662316624166251662616627166281662916630166311663216633166341663516636166371663816639166401664116642166431664416645166461664716648166491665016651166521665316654166551665616657166581665916660166611666216663166641666516666166671666816669166701667116672166731667416675166761667716678166791668016681166821668316684166851668616687166881668916690166911669216693166941669516696166971669816699167001670116702167031670416705167061670716708167091671016711167121671316714167151671616717167181671916720167211672216723167241672516726167271672816729167301673116732167331673416735167361673716738167391674016741167421674316744167451674616747167481674916750167511675216753167541675516756167571675816759167601676116762167631676416765167661676716768167691677016771167721677316774167751677616777167781677916780167811678216783167841678516786167871678816789167901679116792167931679416795167961679716798167991680016801168021680316804168051680616807168081680916810168111681216813168141681516816168171681816819168201682116822168231682416825168261682716828168291683016831168321683316834168351683616837168381683916840168411684216843168441684516846168471684816849168501685116852168531685416855168561685716858168591686016861168621686316864168651686616867168681686916870168711687216873168741687516876168771687816879168801688116882168831688416885168861688716888168891689016891168921689316894168951689616897168981689916900169011690216903169041690516906169071690816909169101691116912169131691416915169161691716918169191692016921169221692316924169251692616927169281692916930169311693216933169341693516936169371693816939169401694116942169431694416945169461694716948169491695016951169521695316954169551695616957169581695916960169611696216963169641696516966169671696816969169701697116972169731697416975169761697716978169791698016981169821698316984169851698616987169881698916990169911699216993169941699516996169971699816999170001700117002170031700417005170061700717008170091701017011170121701317014170151701617017170181701917020170211702217023170241702517026170271702817029170301703117032170331703417035170361703717038170391704017041170421704317044170451704617047170481704917050170511705217053170541705517056170571705817059170601706117062170631706417065170661706717068170691707017071170721707317074170751707617077170781707917080170811708217083170841708517086170871708817089170901709117092170931709417095170961709717098170991710017101171021710317104171051710617107171081710917110171111711217113171141711517116171171711817119171201712117122171231712417125171261712717128171291713017131171321713317134171351713617137171381713917140171411714217143171441714517146171471714817149171501715117152171531715417155171561715717158171591716017161171621716317164171651716617167171681716917170171711717217173171741717517176171771717817179171801718117182171831718417185171861718717188171891719017191171921719317194171951719617197171981719917200172011720217203172041720517206172071720817209172101721117212172131721417215172161721717218172191722017221172221722317224172251722617227172281722917230172311723217233172341723517236172371723817239172401724117242172431724417245172461724717248172491725017251172521725317254172551725617257172581725917260172611726217263172641726517266172671726817269172701727117272172731727417275172761727717278172791728017281172821728317284172851728617287172881728917290172911729217293172941729517296172971729817299173001730117302173031730417305173061730717308173091731017311173121731317314173151731617317173181731917320173211732217323173241732517326173271732817329173301733117332173331733417335173361733717338173391734017341173421734317344173451734617347173481734917350173511735217353173541735517356173571735817359173601736117362173631736417365173661736717368173691737017371173721737317374173751737617377173781737917380173811738217383173841738517386173871738817389173901739117392173931739417395173961739717398173991740017401174021740317404174051740617407174081740917410174111741217413174141741517416174171741817419174201742117422174231742417425174261742717428174291743017431174321743317434174351743617437174381743917440174411744217443174441744517446174471744817449174501745117452174531745417455174561745717458174591746017461174621746317464174651746617467174681746917470174711747217473174741747517476174771747817479174801748117482174831748417485174861748717488174891749017491174921749317494174951749617497174981749917500175011750217503175041750517506175071750817509175101751117512175131751417515175161751717518175191752017521175221752317524175251752617527175281752917530175311753217533175341753517536175371753817539175401754117542175431754417545175461754717548175491755017551175521755317554175551755617557175581755917560175611756217563175641756517566175671756817569175701757117572175731757417575175761757717578175791758017581175821758317584175851758617587175881758917590175911759217593175941759517596175971759817599176001760117602176031760417605176061760717608176091761017611176121761317614176151761617617176181761917620176211762217623176241762517626176271762817629176301763117632176331763417635176361763717638176391764017641176421764317644176451764617647176481764917650176511765217653176541765517656176571765817659176601766117662176631766417665176661766717668176691767017671176721767317674176751767617677176781767917680176811768217683176841768517686176871768817689176901769117692176931769417695176961769717698176991770017701177021770317704177051770617707177081770917710177111771217713177141771517716177171771817719177201772117722177231772417725177261772717728177291773017731177321773317734177351773617737177381773917740177411774217743177441774517746177471774817749177501775117752177531775417755177561775717758177591776017761177621776317764177651776617767177681776917770177711777217773177741777517776177771777817779177801778117782177831778417785177861778717788177891779017791177921779317794177951779617797177981779917800178011780217803178041780517806178071780817809178101781117812178131781417815178161781717818178191782017821178221782317824178251782617827178281782917830178311783217833178341783517836178371783817839178401784117842178431784417845178461784717848178491785017851178521785317854178551785617857178581785917860178611786217863178641786517866178671786817869178701787117872178731787417875178761787717878178791788017881178821788317884178851788617887178881788917890178911789217893178941789517896178971789817899179001790117902179031790417905179061790717908179091791017911179121791317914179151791617917179181791917920179211792217923179241792517926179271792817929179301793117932179331793417935179361793717938179391794017941179421794317944179451794617947179481794917950179511795217953179541795517956179571795817959179601796117962179631796417965179661796717968179691797017971179721797317974179751797617977179781797917980179811798217983179841798517986179871798817989179901799117992179931799417995179961799717998179991800018001180021800318004180051800618007180081800918010180111801218013180141801518016180171801818019180201802118022180231802418025180261802718028180291803018031180321803318034180351803618037180381803918040180411804218043180441804518046180471804818049180501805118052180531805418055180561805718058180591806018061180621806318064180651806618067180681806918070180711807218073180741807518076180771807818079180801808118082180831808418085180861808718088180891809018091180921809318094180951809618097180981809918100181011810218103181041810518106181071810818109181101811118112181131811418115181161811718118181191812018121181221812318124181251812618127181281812918130181311813218133181341813518136181371813818139181401814118142181431814418145181461814718148181491815018151181521815318154181551815618157181581815918160181611816218163181641816518166181671816818169181701817118172181731817418175181761817718178181791818018181181821818318184181851818618187181881818918190181911819218193181941819518196181971819818199182001820118202182031820418205182061820718208182091821018211182121821318214182151821618217182181821918220182211822218223182241822518226182271822818229182301823118232182331823418235182361823718238182391824018241182421824318244182451824618247182481824918250182511825218253182541825518256182571825818259182601826118262182631826418265182661826718268182691827018271182721827318274182751827618277182781827918280182811828218283182841828518286182871828818289182901829118292182931829418295182961829718298182991830018301183021830318304183051830618307183081830918310183111831218313183141831518316183171831818319183201832118322183231832418325183261832718328183291833018331183321833318334183351833618337183381833918340183411834218343183441834518346183471834818349183501835118352183531835418355183561835718358183591836018361183621836318364183651836618367183681836918370183711837218373183741837518376183771837818379183801838118382183831838418385183861838718388183891839018391183921839318394183951839618397183981839918400184011840218403184041840518406184071840818409184101841118412184131841418415184161841718418184191842018421184221842318424184251842618427184281842918430184311843218433184341843518436184371843818439184401844118442184431844418445184461844718448184491845018451184521845318454184551845618457184581845918460184611846218463184641846518466184671846818469184701847118472184731847418475184761847718478184791848018481184821848318484184851848618487184881848918490184911849218493184941849518496184971849818499185001850118502185031850418505185061850718508185091851018511185121851318514185151851618517185181851918520185211852218523185241852518526185271852818529185301853118532185331853418535185361853718538185391854018541185421854318544185451854618547185481854918550185511855218553185541855518556185571855818559185601856118562185631856418565185661856718568185691857018571185721857318574185751857618577185781857918580185811858218583185841858518586185871858818589185901859118592185931859418595185961859718598185991860018601186021860318604186051860618607186081860918610186111861218613186141861518616186171861818619186201862118622186231862418625186261862718628186291863018631186321863318634186351863618637186381863918640186411864218643186441864518646186471864818649186501865118652186531865418655186561865718658186591866018661186621866318664186651866618667186681866918670186711867218673186741867518676186771867818679186801868118682186831868418685186861868718688186891869018691186921869318694186951869618697186981869918700187011870218703187041870518706187071870818709187101871118712187131871418715187161871718718187191872018721187221872318724187251872618727187281872918730187311873218733187341873518736187371873818739187401874118742187431874418745187461874718748187491875018751187521875318754187551875618757187581875918760187611876218763187641876518766187671876818769187701877118772187731877418775187761877718778187791878018781187821878318784187851878618787187881878918790187911879218793187941879518796187971879818799188001880118802188031880418805188061880718808188091881018811188121881318814188151881618817188181881918820188211882218823188241882518826188271882818829188301883118832188331883418835188361883718838188391884018841188421884318844188451884618847188481884918850188511885218853188541885518856188571885818859188601886118862188631886418865188661886718868188691887018871188721887318874188751887618877188781887918880188811888218883188841888518886188871888818889188901889118892188931889418895188961889718898188991890018901189021890318904189051890618907189081890918910189111891218913189141891518916189171891818919189201892118922189231892418925189261892718928189291893018931189321893318934189351893618937189381893918940189411894218943189441894518946189471894818949189501895118952189531895418955189561895718958189591896018961189621896318964189651896618967189681896918970189711897218973189741897518976189771897818979189801898118982189831898418985189861898718988189891899018991189921899318994189951899618997189981899919000190011900219003190041900519006190071900819009190101901119012190131901419015190161901719018190191902019021190221902319024190251902619027190281902919030190311903219033190341903519036190371903819039190401904119042190431904419045190461904719048190491905019051190521905319054190551905619057190581905919060190611906219063190641906519066190671906819069190701907119072190731907419075190761907719078190791908019081190821908319084190851908619087190881908919090190911909219093190941909519096190971909819099191001910119102191031910419105191061910719108191091911019111191121911319114191151911619117191181911919120191211912219123191241912519126191271912819129191301913119132191331913419135191361913719138191391914019141191421914319144191451914619147191481914919150191511915219153191541915519156191571915819159191601916119162191631916419165191661916719168191691917019171191721917319174191751917619177191781917919180191811918219183191841918519186191871918819189191901919119192191931919419195191961919719198191991920019201192021920319204192051920619207192081920919210192111921219213192141921519216192171921819219192201922119222192231922419225192261922719228192291923019231192321923319234192351923619237192381923919240192411924219243192441924519246192471924819249192501925119252192531925419255192561925719258192591926019261192621926319264192651926619267192681926919270192711927219273192741927519276192771927819279192801928119282192831928419285192861928719288192891929019291192921929319294192951929619297192981929919300193011930219303193041930519306193071930819309193101931119312193131931419315193161931719318193191932019321193221932319324193251932619327193281932919330193311933219333193341933519336193371933819339193401934119342193431934419345193461934719348193491935019351193521935319354193551935619357193581935919360193611936219363193641936519366193671936819369193701937119372193731937419375193761937719378193791938019381193821938319384193851938619387193881938919390193911939219393193941939519396193971939819399194001940119402194031940419405194061940719408194091941019411194121941319414194151941619417194181941919420194211942219423194241942519426194271942819429194301943119432194331943419435194361943719438194391944019441194421944319444194451944619447194481944919450194511945219453194541945519456194571945819459194601946119462194631946419465194661946719468194691947019471194721947319474194751947619477194781947919480194811948219483194841948519486194871948819489194901949119492194931949419495194961949719498194991950019501195021950319504195051950619507195081950919510195111951219513195141951519516195171951819519195201952119522195231952419525195261952719528195291953019531195321953319534195351953619537195381953919540195411954219543195441954519546195471954819549195501955119552195531955419555195561955719558195591956019561195621956319564195651956619567195681956919570195711957219573195741957519576195771957819579195801958119582195831958419585195861958719588195891959019591195921959319594195951959619597195981959919600196011960219603196041960519606196071960819609196101961119612196131961419615196161961719618196191962019621196221962319624196251962619627196281962919630196311963219633196341963519636196371963819639196401964119642196431964419645196461964719648196491965019651196521965319654196551965619657196581965919660196611966219663196641966519666196671966819669196701967119672196731967419675196761967719678196791968019681196821968319684196851968619687196881968919690196911969219693196941969519696196971969819699197001970119702197031970419705197061970719708197091971019711197121971319714197151971619717197181971919720197211972219723197241972519726197271972819729197301973119732197331973419735197361973719738197391974019741197421974319744197451974619747197481974919750197511975219753197541975519756197571975819759197601976119762197631976419765197661976719768197691977019771197721977319774197751977619777197781977919780197811978219783197841978519786197871978819789197901979119792197931979419795197961979719798197991980019801198021980319804198051980619807198081980919810198111981219813198141981519816198171981819819198201982119822198231982419825198261982719828198291983019831198321983319834198351983619837198381983919840198411984219843198441984519846198471984819849198501985119852198531985419855198561985719858198591986019861198621986319864198651986619867198681986919870198711987219873198741987519876198771987819879198801988119882198831988419885198861988719888198891989019891198921989319894198951989619897198981989919900199011990219903199041990519906199071990819909199101991119912199131991419915199161991719918199191992019921199221992319924199251992619927199281992919930199311993219933199341993519936199371993819939199401994119942199431994419945199461994719948199491995019951199521995319954199551995619957199581995919960199611996219963199641996519966199671996819969199701997119972199731997419975199761997719978199791998019981199821998319984199851998619987199881998919990199911999219993199941999519996199971999819999200002000120002200032000420005200062000720008200092001020011200122001320014200152001620017200182001920020200212002220023200242002520026200272002820029200302003120032200332003420035200362003720038200392004020041200422004320044200452004620047200482004920050200512005220053200542005520056200572005820059200602006120062200632006420065200662006720068200692007020071200722007320074200752007620077200782007920080200812008220083200842008520086200872008820089200902009120092200932009420095200962009720098200992010020101201022010320104201052010620107201082010920110201112011220113201142011520116201172011820119201202012120122201232012420125201262012720128201292013020131201322013320134201352013620137201382013920140201412014220143201442014520146201472014820149201502015120152201532015420155201562015720158201592016020161201622016320164201652016620167201682016920170201712017220173201742017520176201772017820179201802018120182201832018420185201862018720188201892019020191201922019320194201952019620197201982019920200202012020220203202042020520206202072020820209202102021120212202132021420215202162021720218202192022020221202222022320224202252022620227202282022920230202312023220233202342023520236202372023820239202402024120242202432024420245202462024720248202492025020251202522025320254202552025620257202582025920260202612026220263202642026520266202672026820269202702027120272202732027420275202762027720278202792028020281202822028320284202852028620287202882028920290202912029220293202942029520296202972029820299203002030120302203032030420305203062030720308203092031020311203122031320314203152031620317203182031920320(* 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.s3controlletapiVersion="2018-08-20"letendpointPrefix="s3-control"letserviceFullName="AWS S3 Control"letsignatureVersion="s3v4"letprotocol="rest_xml"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[]))])moduleNonEmptyMaxLength1024String=structtypenonrect=stringletcontext_="NonEmptyMaxLength1024String"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:"NonEmptyMaxLength1024String"jletto_json=simple_to_jsonto_valueendmoduleS3GranteeTypeIdentifier=structtypenonrect=|Id|EmailAddress|Uri_|Non_static_idofstringletmakei=iletto_string=function|Id->"id"|EmailAddress->"emailAddress"|Uri_->"uri"|Non_static_ids->sletof_string=function|"id"->Id|"emailAddress"->EmailAddress|"uri"->Uri_|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 S3GranteeTypeIdentifier"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"S3GranteeTypeIdentifier"j)letto_json=simple_to_jsonto_valueendmoduleTagKeyString=structtypenonrect=stringletcontext_="TagKeyString"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:128)>>=(fun()->check_patterni~pattern:"^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"TagKeyString"jletto_json=simple_to_jsonto_valueendmoduleTagValueString=structtypenonrect=stringletcontext_="TagValueString"letmakei=letopenResultinok_or_failwith((check_string_mini~min:0)>>=(fun()->(check_string_maxi~max:256)>>=(fun()->check_patterni~pattern:"^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"TagValueString"jletto_json=simple_to_jsonto_valueendmoduleNonEmptyKmsKeyArnString=structtypenonrect=stringletcontext_="NonEmptyKmsKeyArnString"letmakei=letopenResultinok_or_failwith((check_string_mini~min:20)>>=(fun()->(check_string_maxi~max:2048)>>=(fun()->check_patterni~pattern:"arn:aws[a-zA-Z0-9-]*:kms:[a-z0-9-]+:[0-9]{12}:key/[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:"NonEmptyKmsKeyArnString"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_valueendmoduleS3Grantee=structtypenonrect={typeIdentifier:S3GranteeTypeIdentifier.toption;identifier:NonEmptyMaxLength1024String.toption;displayName:NonEmptyMaxLength1024String.toption}letmake?typeIdentifier=fun?identifier->fun?displayName->fun()->{typeIdentifier;identifier;displayName}letto_valuex=structure_to_value[("TypeIdentifier",(Option.mapx.typeIdentifier~f:S3GranteeTypeIdentifier.to_value));("Identifier",(Option.mapx.identifier~f:NonEmptyMaxLength1024String.to_value));("DisplayName",(Option.mapx.displayName~f:NonEmptyMaxLength1024String.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdisplayName=(Option.map~f:NonEmptyMaxLength1024String.of_xml)(Xml.childxml_arg0"DisplayName")inletidentifier=(Option.map~f:NonEmptyMaxLength1024String.of_xml)(Xml.childxml_arg0"Identifier")inlettypeIdentifier=(Option.map~f:S3GranteeTypeIdentifier.of_xml)(Xml.childxml_arg0"TypeIdentifier")inmake?displayName?identifier?typeIdentifier()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdisplayName=field_mapjson__"DisplayName"NonEmptyMaxLength1024String.of_jsoninletidentifier=field_mapjson__"Identifier"NonEmptyMaxLength1024String.of_jsoninlettypeIdentifier=field_mapjson__"TypeIdentifier"S3GranteeTypeIdentifier.of_jsoninmake?displayName?identifier?typeIdentifier()letto_jsonv=composed_to_jsonto_valuevendmoduleS3Permission=structtypenonrect=|FULL_CONTROL|READ|WRITE|READ_ACP|WRITE_ACP|Non_static_idofstringletmakei=iletto_string=function|FULL_CONTROL->"FULL_CONTROL"|READ->"READ"|WRITE->"WRITE"|READ_ACP->"READ_ACP"|WRITE_ACP->"WRITE_ACP"|Non_static_ids->sletof_string=function|"FULL_CONTROL"->FULL_CONTROL|"READ"->READ|"WRITE"->WRITE|"READ_ACP"->READ_ACP|"WRITE_ACP"->WRITE_ACP|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 S3Permission"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"S3Permission"j)letto_json=simple_to_jsonto_valueendmoduleMinStorageBytesPercentage=structtypenonrect=floatletmakei=letopenResultinok_or_failwith((check_float_mini~min:100.)>>=(fun()->check_float_mini~min:0.1));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_valueendmoduleStorageLensPrefixLevelDelimiter=structtypenonrect=stringletcontext_="StorageLensPrefixLevelDelimiter"letmakei=letopenResultinok_or_failwith(check_string_maxi~max: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:"StorageLensPrefixLevelDelimiter"jletto_json=simple_to_jsonto_valueendmoduleStorageLensPrefixLevelMaxDepth=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:10)>>=(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 StorageLensPrefixLevelMaxDepth"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleMinutes=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 Minutes"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleS3Tag=structtypenonrect={key:TagKeyString.t[@ocaml.doc"Key of the tag"];value:TagValueString.t[@ocaml.doc"Value of the tag"]}letcontext_="S3Tag"letmake~key=fun~value->fun()->{key;value}letto_valuex=structure_to_value[("Key",(Some(TagKeyString.to_valuex.key)));("Value",(Some(TagValueString.to_valuex.value)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letvalue=TagValueString.of_xml(Xml.child_exn~context:context_xml_arg0"Value")inletkey=TagKeyString.of_xml(Xml.child_exn~context:context_xml_arg0"Key")inmake~value~key()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letvalue=field_map_exnjson__"Value"TagValueString.of_jsoninletkey=field_map_exnjson__"Key"TagKeyString.of_jsoninmake~value~key()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A container for a key-value name pair."]moduleDSSEKMSFilter=structtypenonrect={kmsKeyArn:NonEmptyKmsKeyArnString.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the customer managed KMS key to use for the filter to return objects that are encrypted by the specified key. For best performance, use keys in the same Region as the S3 Batch Operations job."]}letmake?kmsKeyArn=fun()->{kmsKeyArn}letto_valuex=structure_to_value[("KmsKeyArn",(Option.mapx.kmsKeyArn~f:NonEmptyKmsKeyArnString.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letkmsKeyArn=(Option.map~f:NonEmptyKmsKeyArnString.of_xml)(Xml.childxml_arg0"KmsKeyArn")inmake?kmsKeyArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letkmsKeyArn=field_mapjson__"KmsKeyArn"NonEmptyKmsKeyArnString.of_jsoninmake?kmsKeyArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A filter that returns objects that are encrypted by dual-layer server-side encryption with Amazon Web Services Key Management Service (KMS) keys (DSSE-KMS). You can further refine your filtering by optionally providing a KMS Key ARN to filter objects encrypted by a specific key."]moduleNotSSEFilter=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"A filter that returns objects that aren't server-side encrypted."]moduleSSECFilter=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"A filter that returns objects that are encrypted by server-side encryption with customer-provided keys (SSE-C)."]moduleSSEKMSFilter=structtypenonrect={kmsKeyArn:NonEmptyKmsKeyArnString.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the customer managed KMS key to use for the filter to return objects that are encrypted by the specified key. For best performance, use keys in the same Region as the S3 Batch Operations job."];bucketKeyEnabled:Boolean.toption[@ocaml.doc"Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption with server-side encryption using Amazon Web Services Key Management Service (Amazon Web Services KMS) keys (SSE-KMS). If specified, will filter SSE-KMS encrypted objects by S3 Bucket Key status."]}letmake?kmsKeyArn=fun?bucketKeyEnabled->fun()->{kmsKeyArn;bucketKeyEnabled}letto_valuex=structure_to_value[("KmsKeyArn",(Option.mapx.kmsKeyArn~f:NonEmptyKmsKeyArnString.to_value));("BucketKeyEnabled",(Option.mapx.bucketKeyEnabled~f:Boolean.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letbucketKeyEnabled=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"BucketKeyEnabled")inletkmsKeyArn=(Option.map~f:NonEmptyKmsKeyArnString.of_xml)(Xml.childxml_arg0"KmsKeyArn")inmake?bucketKeyEnabled?kmsKeyArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letbucketKeyEnabled=field_mapjson__"BucketKeyEnabled"Boolean.of_jsoninletkmsKeyArn=field_mapjson__"KmsKeyArn"NonEmptyKmsKeyArnString.of_jsoninmake?bucketKeyEnabled?kmsKeyArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A filter that returns objects that are encrypted by server-side encryption with Amazon Web Services KMS (SSE-KMS)."]moduleSSES3Filter=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"A filter that returns objects that are encrypted by server-side encryption with Amazon S3 managed keys (SSE-S3)."]moduleKmsKeyArnString=structtypenonrect=stringletcontext_="KmsKeyArnString"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:2000)>>=(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:"KmsKeyArnString"jletto_json=simple_to_jsonto_valueendmoduleS3Grant=structtypenonrect={grantee:S3Grantee.toption;permission:S3Permission.toption}letmake?grantee=fun?permission->fun()->{grantee;permission}letto_valuex=structure_to_value[("Grantee",(Option.mapx.grantee~f:S3Grantee.to_value));("Permission",(Option.mapx.permission~f:S3Permission.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letpermission=(Option.map~f:S3Permission.of_xml)(Xml.childxml_arg0"Permission")inletgrantee=(Option.map~f:S3Grantee.of_xml)(Xml.childxml_arg0"Grantee")inmake?permission?grantee()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letpermission=field_mapjson__"Permission"S3Permission.of_jsoninletgrantee=field_mapjson__"Grantee"S3Grantee.of_jsoninmake?permission?grantee()letto_jsonv=composed_to_jsonto_valuevendmoduleIsEnabled=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_valueendmoduleSelectionCriteria=structtypenonrect={delimiter:StorageLensPrefixLevelDelimiter.toption[@ocaml.doc"A container for the delimiter of the selection criteria being used."];maxDepth:StorageLensPrefixLevelMaxDepth.toption[@ocaml.doc"The max depth of the selection criteria"];minStorageBytesPercentage:MinStorageBytesPercentage.toption[@ocaml.doc"The minimum number of storage bytes percentage whose metrics will be selected. You must choose a value greater than or equal to 1.0."]}letmake?delimiter=fun?maxDepth->fun?minStorageBytesPercentage->fun()->{delimiter;maxDepth;minStorageBytesPercentage}letto_valuex=structure_to_value[("Delimiter",(Option.mapx.delimiter~f:StorageLensPrefixLevelDelimiter.to_value));("MaxDepth",(Option.mapx.maxDepth~f:StorageLensPrefixLevelMaxDepth.to_value));("MinStorageBytesPercentage",(Option.mapx.minStorageBytesPercentage~f:MinStorageBytesPercentage.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letminStorageBytesPercentage=(Option.map~f:MinStorageBytesPercentage.of_xml)(Xml.childxml_arg0"MinStorageBytesPercentage")inletmaxDepth=(Option.map~f:StorageLensPrefixLevelMaxDepth.of_xml)(Xml.childxml_arg0"MaxDepth")inletdelimiter=(Option.map~f:StorageLensPrefixLevelDelimiter.of_xml)(Xml.childxml_arg0"Delimiter")inmake?minStorageBytesPercentage?maxDepth?delimiter()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letminStorageBytesPercentage=field_mapjson__"MinStorageBytesPercentage"MinStorageBytesPercentage.of_jsoninletmaxDepth=field_mapjson__"MaxDepth"StorageLensPrefixLevelMaxDepth.of_jsoninletdelimiter=field_mapjson__"Delimiter"StorageLensPrefixLevelDelimiter.of_jsoninmake?minStorageBytesPercentage?maxDepth?delimiter()letto_jsonv=composed_to_jsonto_valuevendmoduleStorageLensGroupArn=structtypenonrect=stringletcontext_="StorageLensGroupArn"letmakei=letopenResultinok_or_failwith((check_string_mini~min:4)>>=(fun()->(check_string_maxi~max:1024)>>=(fun()->check_patterni~pattern:"arn:[a-z\\-]+:s3:[a-z0-9\\-]+:\\d{12}:storage\\-lens\\-group\\/.*")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"StorageLensGroupArn"jletto_json=simple_to_jsonto_valueendmoduleSSEKMSKeyId=structtypenonrect=stringletcontext_="SSEKMSKeyId"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:"SSEKMSKeyId"jletto_json=simple_to_jsonto_valueendmoduleOwnerOverride=structtypenonrect=|Destination|Non_static_idofstringletmakei=iletto_string=function|Destination->"Destination"|Non_static_ids->sletof_string=function|"Destination"->Destination|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 OwnerOverride"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"OwnerOverride"j)letto_json=simple_to_jsonto_valueendmoduleReplicaKmsKeyID=structtypenonrect=stringletcontext_="ReplicaKmsKeyID"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:"ReplicaKmsKeyID"jletto_json=simple_to_jsonto_valueendmoduleMetricsStatus=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 MetricsStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"MetricsStatus"j)letto_json=simple_to_jsonto_valueendmoduleReplicationTimeValue=structtypenonrect={minutes:Minutes.toption[@ocaml.doc"Contains an integer that specifies the time period in minutes. Valid value: 15"]}letmake?minutes=fun()->{minutes}letto_valuex=structure_to_value[("Minutes",(Option.mapx.minutes~f:Minutes.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letminutes=(Option.map~f:Minutes.of_xml)(Xml.childxml_arg0"Minutes")inmake?minutes()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letminutes=field_mapjson__"Minutes"Minutes.of_jsoninmake?minutes()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A container that specifies the time value for S3 Replication Time Control (S3 RTC). This value is also used for the replication metrics EventThreshold element. This is not supported by Amazon S3 on Outposts buckets."]moduleReplicationTimeStatus=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 ReplicationTimeStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ReplicationTimeStatus"j)letto_json=simple_to_jsonto_valueendmodulePrefix=structtypenonrect=stringletcontext_="Prefix"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:"Prefix"jletto_json=simple_to_jsonto_valueendmoduleS3TagSet=structtypenonrect=S3Tag.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:S3Tag.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:S3Tag.of_xml)letof_jsonj=list_of_json~kind:"S3TagSet"~of_json:S3Tag.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleReplicaModificationsStatus=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 ReplicaModificationsStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ReplicaModificationsStatus"j)letto_json=simple_to_jsonto_valueendmoduleSseKmsEncryptedObjectsStatus=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 SseKmsEncryptedObjectsStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"SseKmsEncryptedObjectsStatus"j)letto_json=simple_to_jsonto_valueendmoduleObjectSizeGreaterThanBytes=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_valueendmoduleObjectSizeLessThanBytes=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_valueendmoduleDays=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 Days"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleTransitionStorageClass=structtypenonrect=|GLACIER|STANDARD_IA|ONEZONE_IA|INTELLIGENT_TIERING|DEEP_ARCHIVE|Non_static_idofstringletmakei=iletto_string=function|GLACIER->"GLACIER"|STANDARD_IA->"STANDARD_IA"|ONEZONE_IA->"ONEZONE_IA"|INTELLIGENT_TIERING->"INTELLIGENT_TIERING"|DEEP_ARCHIVE->"DEEP_ARCHIVE"|Non_static_ids->sletof_string=function|"GLACIER"->GLACIER|"STANDARD_IA"->STANDARD_IA|"ONEZONE_IA"->ONEZONE_IA|"INTELLIGENT_TIERING"->INTELLIGENT_TIERING|"DEEP_ARCHIVE"->DEEP_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 TransitionStorageClass"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"TransitionStorageClass"j)letto_json=simple_to_jsonto_valueendmoduleDate=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_valueendmoduleAwsLambdaTransformationPayload=structtypenonrect=stringletcontext_="AwsLambdaTransformationPayload"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:"AwsLambdaTransformationPayload"jletto_json=simple_to_jsonto_valueendmoduleFunctionArnString=structtypenonrect=stringletcontext_="FunctionArnString"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:1024)>>=(fun()->check_patterni~pattern:"(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}((-gov)|(-iso([a-z]?)))?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\\$LATEST|[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:"FunctionArnString"jletto_json=simple_to_jsonto_valueendmoduleAccountId=structtypenonrect=stringletcontext_="AccountId"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:64)>>=(fun()->check_patterni~pattern:"^\\d{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_valueendmoduleBucketName=structtypenonrect=stringletcontext_="BucketName"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:255)>>=(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:"BucketName"jletto_json=simple_to_jsonto_valueendmoduleAsyncRequestStatus=structtypenonrect=stringletcontext_="AsyncRequestStatus"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:"AsyncRequestStatus"jletto_json=simple_to_jsonto_valueendmoduleRegionName=structtypenonrect=stringletcontext_="RegionName"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:"RegionName"jletto_json=simple_to_jsonto_valueendmoduleNonEmptyMaxLength1024StringList=structtypenonrect=NonEmptyMaxLength1024String.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:NonEmptyMaxLength1024String.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:NonEmptyMaxLength1024String.of_xml)letof_jsonj=list_of_json~kind:"NonEmptyMaxLength1024StringList"~of_json:NonEmptyMaxLength1024String.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleObjectEncryptionFilter=structtypenonrect={sSES3:SSES3Filter.toption[@ocaml.doc"Filters for objects that are encrypted by server-side encryption with Amazon S3 managed keys (SSE-S3)."];sSEKMS:SSEKMSFilter.toption[@ocaml.doc"Filters for objects that are encrypted by server-side encryption with Amazon Web Services Key Management Service (KMS) keys (SSE-KMS)."];dSSEKMS:DSSEKMSFilter.toption[@ocaml.doc"Filters for objects that are encrypted by dual-layer server-side encryption with Amazon Web Services Key Management Service (KMS) keys (DSSE-KMS)."];sSEC:SSECFilter.toption[@ocaml.doc"Filters for objects that are encrypted by server-side encryption with customer-provided keys (SSE-C)."];nOTSSE:NotSSEFilter.toption[@ocaml.doc"Filters for objects that are not encrypted by server-side encryption."]}letmake?sSES3=fun?sSEKMS->fun?dSSEKMS->fun?sSEC->fun?nOTSSE->fun()->{sSES3;sSEKMS;dSSEKMS;sSEC;nOTSSE}letto_valuex=structure_to_value[("SSE-S3",(Option.mapx.sSES3~f:SSES3Filter.to_value));("SSE-KMS",(Option.mapx.sSEKMS~f:SSEKMSFilter.to_value));("DSSE-KMS",(Option.mapx.dSSEKMS~f:DSSEKMSFilter.to_value));("SSE-C",(Option.mapx.sSEC~f:SSECFilter.to_value));("NOT-SSE",(Option.mapx.nOTSSE~f:NotSSEFilter.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnOTSSE=(Option.map~f:NotSSEFilter.of_xml)(Xml.childxml_arg0"NOT-SSE")inletsSEC=(Option.map~f:SSECFilter.of_xml)(Xml.childxml_arg0"SSE-C")inletdSSEKMS=(Option.map~f:DSSEKMSFilter.of_xml)(Xml.childxml_arg0"DSSE-KMS")inletsSEKMS=(Option.map~f:SSEKMSFilter.of_xml)(Xml.childxml_arg0"SSE-KMS")inletsSES3=(Option.map~f:SSES3Filter.of_xml)(Xml.childxml_arg0"SSE-S3")inmake?nOTSSE?sSEC?dSSEKMS?sSEKMS?sSES3()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnOTSSE=field_mapjson__"NOTSSE"NotSSEFilter.of_jsoninletsSEC=field_mapjson__"SSEC"SSECFilter.of_jsoninletdSSEKMS=field_mapjson__"DSSEKMS"DSSEKMSFilter.of_jsoninletsSEKMS=field_mapjson__"SSEKMS"SSEKMSFilter.of_jsoninletsSES3=field_mapjson__"SSES3"SSES3Filter.of_jsoninmake?nOTSSE?sSEC?dSSEKMS?sSEKMS?sSES3()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"An optional filter for the S3JobManifestGenerator that identifies the subset of objects by encryption type."]moduleReplicationStatus=structtypenonrect=|COMPLETED|FAILED|REPLICA|NONE|Non_static_idofstringletmakei=iletto_string=function|COMPLETED->"COMPLETED"|FAILED->"FAILED"|REPLICA->"REPLICA"|NONE->"NONE"|Non_static_ids->sletof_string=function|"COMPLETED"->COMPLETED|"FAILED"->FAILED|"REPLICA"->REPLICA|"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 ReplicationStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ReplicationStatus"j)letto_json=simple_to_jsonto_valueendmoduleS3StorageClass=structtypenonrect=|STANDARD|STANDARD_IA|ONEZONE_IA|GLACIER|INTELLIGENT_TIERING|DEEP_ARCHIVE|GLACIER_IR|Non_static_idofstringletmakei=iletto_string=function|STANDARD->"STANDARD"|STANDARD_IA->"STANDARD_IA"|ONEZONE_IA->"ONEZONE_IA"|GLACIER->"GLACIER"|INTELLIGENT_TIERING->"INTELLIGENT_TIERING"|DEEP_ARCHIVE->"DEEP_ARCHIVE"|GLACIER_IR->"GLACIER_IR"|Non_static_ids->sletof_string=function|"STANDARD"->STANDARD|"STANDARD_IA"->STANDARD_IA|"ONEZONE_IA"->ONEZONE_IA|"GLACIER"->GLACIER|"INTELLIGENT_TIERING"->INTELLIGENT_TIERING|"DEEP_ARCHIVE"->DEEP_ARCHIVE|"GLACIER_IR"->GLACIER_IR|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 S3StorageClass"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"S3StorageClass"j)letto_json=simple_to_jsonto_valueendmoduleSSEKMSEncryption=structtypenonrect={keyId:KmsKeyArnString.t[@ocaml.doc"Specifies the ID of the Amazon Web Services Key Management Service (Amazon Web Services KMS) symmetric encryption customer managed key to use for encrypting generated manifest objects."]}letcontext_="SSEKMSEncryption"letmake~keyId=fun()->{keyId}letto_valuex=structure_to_value[("KeyId",(Some(KmsKeyArnString.to_valuex.keyId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letkeyId=KmsKeyArnString.of_xml(Xml.child_exn~context:context_xml_arg0"KeyId")inmake~keyId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letkeyId=field_map_exnjson__"KeyId"KmsKeyArnString.of_jsoninmake~keyId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Configuration for the use of SSE-KMS to encrypt generated manifest objects."]moduleSSES3Encryption=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"Configuration for the use of SSE-S3 to encrypt generated manifest objects."]moduleMaxLength1024String=structtypenonrect=stringletcontext_="MaxLength1024String"letmakei=letopenResultinok_or_failwith(check_string_maxi~max:1024);iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"MaxLength1024String"jletto_json=simple_to_jsonto_valueendmoduleS3GrantList=structtypenonrect=S3Grant.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:S3Grant.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:S3Grant.of_xml)letof_jsonj=list_of_json~kind:"S3GrantList"~of_json:S3Grant.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleS3ObjectOwner=structtypenonrect={iD:NonEmptyMaxLength1024String.toption;displayName:NonEmptyMaxLength1024String.toption}letmake?iD=fun?displayName->fun()->{iD;displayName}letto_valuex=structure_to_value[("ID",(Option.mapx.iD~f:NonEmptyMaxLength1024String.to_value));("DisplayName",(Option.mapx.displayName~f:NonEmptyMaxLength1024String.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdisplayName=(Option.map~f:NonEmptyMaxLength1024String.of_xml)(Xml.childxml_arg0"DisplayName")inletiD=(Option.map~f:NonEmptyMaxLength1024String.of_xml)(Xml.childxml_arg0"ID")inmake?displayName?iD()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdisplayName=field_mapjson__"DisplayName"NonEmptyMaxLength1024String.of_jsoninletiD=field_mapjson__"ID"NonEmptyMaxLength1024String.of_jsoninmake?displayName?iD()letto_jsonv=composed_to_jsonto_valuevendmoduleSuffix=structtypenonrect=stringletcontext_="Suffix"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:"Suffix"jletto_json=simple_to_jsonto_valueendmoduleObjectAgeValue=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 ObjectAgeValue"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleObjectSizeValue=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_valueendmodulePrefixLevelStorageMetrics=structtypenonrect={isEnabled:IsEnabled.toption[@ocaml.doc"A container for whether prefix-level storage metrics are enabled."];selectionCriteria:SelectionCriteria.toption}letmake?isEnabled=fun?selectionCriteria->fun()->{isEnabled;selectionCriteria}letto_valuex=structure_to_value[("IsEnabled",(Option.mapx.isEnabled~f:IsEnabled.to_value));("SelectionCriteria",(Option.mapx.selectionCriteria~f:SelectionCriteria.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letselectionCriteria=(Option.map~f:SelectionCriteria.of_xml)(Xml.childxml_arg0"SelectionCriteria")inletisEnabled=(Option.map~f:IsEnabled.of_xml)(Xml.childxml_arg0"IsEnabled")inmake?selectionCriteria?isEnabled()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letselectionCriteria=field_mapjson__"SelectionCriteria"SelectionCriteria.of_jsoninletisEnabled=field_mapjson__"IsEnabled"IsEnabled.of_jsoninmake?selectionCriteria?isEnabled()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A container for the prefix-level storage metrics for S3 Storage Lens."]moduleStorageLensGroupLevelExclude=structtypenonrect=StorageLensGroupArn.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:StorageLensGroupArn.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:StorageLensGroupArn.of_xml)letof_jsonj=list_of_json~kind:"StorageLensGroupLevelExclude"~of_json:StorageLensGroupArn.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleStorageLensGroupLevelInclude=structtypenonrect=StorageLensGroupArn.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:StorageLensGroupArn.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:StorageLensGroupArn.of_xml)letof_jsonj=list_of_json~kind:"StorageLensGroupLevelInclude"~of_json:StorageLensGroupArn.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleSSEKMS=structtypenonrect={keyId:SSEKMSKeyId.t[@ocaml.doc"A container for the ARN of the SSE-KMS encryption. This property is read-only and follows the following format: arn:aws:kms:us-east-1:example-account-id:key/example-9a73-4afc-8d29-8f5900cef44e"]}letcontext_="SSEKMS"letmake~keyId=fun()->{keyId}letto_valuex=structure_to_value[("KeyId",(Some(SSEKMSKeyId.to_valuex.keyId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letkeyId=SSEKMSKeyId.of_xml(Xml.child_exn~context:context_xml_arg0"KeyId")inmake~keyId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letkeyId=field_map_exnjson__"KeyId"SSEKMSKeyId.of_jsoninmake~keyId()letto_jsonv=composed_to_jsonto_valuevendmoduleSSES3=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_valuevendmoduleDeleteMarkerReplicationStatus=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 DeleteMarkerReplicationStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"DeleteMarkerReplicationStatus"j)letto_json=simple_to_jsonto_valueendmoduleAccessControlTranslation=structtypenonrect={owner:OwnerOverride.t[@ocaml.doc"Specifies the replica ownership."]}letcontext_="AccessControlTranslation"letmake~owner=fun()->{owner}letto_valuex=structure_to_value[("Owner",(Some(OwnerOverride.to_valuex.owner)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letowner=OwnerOverride.of_xml(Xml.child_exn~context:context_xml_arg0"Owner")inmake~owner()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letowner=field_map_exnjson__"Owner"OwnerOverride.of_jsoninmake~owner()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A container for information about access control for replicas. This is not supported by Amazon S3 on Outposts buckets."]moduleBucketIdentifierString=structtypenonrect=stringletcontext_="BucketIdentifierString"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:"BucketIdentifierString"jletto_json=simple_to_jsonto_valueendmoduleEncryptionConfiguration=structtypenonrect={replicaKmsKeyID:ReplicaKmsKeyID.toption[@ocaml.doc"Specifies the ID of the customer managed KMS key that's stored in Key Management Service (KMS) for the destination bucket. This ID is either the Amazon Resource Name (ARN) for the KMS key or the alias ARN for the KMS key. Amazon S3 uses this KMS key to encrypt replica objects. Amazon S3 supports only symmetric encryption KMS keys. For more information, see Symmetric encryption KMS keys in the Amazon Web Services Key Management Service Developer Guide."]}letmake?replicaKmsKeyID=fun()->{replicaKmsKeyID}letto_valuex=structure_to_value[("ReplicaKmsKeyID",(Option.mapx.replicaKmsKeyID~f:ReplicaKmsKeyID.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letreplicaKmsKeyID=(Option.map~f:ReplicaKmsKeyID.of_xml)(Xml.childxml_arg0"ReplicaKmsKeyID")inmake?replicaKmsKeyID()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letreplicaKmsKeyID=field_mapjson__"ReplicaKmsKeyID"ReplicaKmsKeyID.of_jsoninmake?replicaKmsKeyID()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Specifies encryption-related information for an Amazon S3 bucket that is a destination for replicated objects. If you're specifying a customer managed KMS key, we recommend using a fully qualified KMS key ARN. If you use a KMS key alias instead, then KMS resolves the key within the requester\226\128\153s account. This behavior can result in data that's encrypted with a KMS key that belongs to the requester, and not the bucket owner. This is not supported by Amazon S3 on Outposts buckets."]moduleMetrics=structtypenonrect={status:MetricsStatus.t[@ocaml.doc"Specifies whether replication metrics are enabled."];eventThreshold:ReplicationTimeValue.toption[@ocaml.doc"A container that specifies the time threshold for emitting the s3:Replication:OperationMissedThreshold event. This is not supported by Amazon S3 on Outposts buckets."]}letcontext_="Metrics"letmake?eventThreshold=fun~status->fun()->{eventThreshold;status}letto_valuex=structure_to_value[("Status",(Some(MetricsStatus.to_valuex.status)));("EventThreshold",(Option.mapx.eventThreshold~f:ReplicationTimeValue.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=leteventThreshold=(Option.map~f:ReplicationTimeValue.of_xml)(Xml.childxml_arg0"EventThreshold")inletstatus=MetricsStatus.of_xml(Xml.child_exn~context:context_xml_arg0"Status")inmake?eventThreshold~status()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=leteventThreshold=field_mapjson__"EventThreshold"ReplicationTimeValue.of_jsoninletstatus=field_map_exnjson__"Status"MetricsStatus.of_jsoninmake?eventThreshold~status()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A container that specifies replication metrics-related settings."]moduleReplicationStorageClass=structtypenonrect=|STANDARD|REDUCED_REDUNDANCY|STANDARD_IA|ONEZONE_IA|INTELLIGENT_TIERING|GLACIER|DEEP_ARCHIVE|OUTPOSTS|GLACIER_IR|Non_static_idofstringletmakei=iletto_string=function|STANDARD->"STANDARD"|REDUCED_REDUNDANCY->"REDUCED_REDUNDANCY"|STANDARD_IA->"STANDARD_IA"|ONEZONE_IA->"ONEZONE_IA"|INTELLIGENT_TIERING->"INTELLIGENT_TIERING"|GLACIER->"GLACIER"|DEEP_ARCHIVE->"DEEP_ARCHIVE"|OUTPOSTS->"OUTPOSTS"|GLACIER_IR->"GLACIER_IR"|Non_static_ids->sletof_string=function|"STANDARD"->STANDARD|"REDUCED_REDUNDANCY"->REDUCED_REDUNDANCY|"STANDARD_IA"->STANDARD_IA|"ONEZONE_IA"->ONEZONE_IA|"INTELLIGENT_TIERING"->INTELLIGENT_TIERING|"GLACIER"->GLACIER|"DEEP_ARCHIVE"->DEEP_ARCHIVE|"OUTPOSTS"->OUTPOSTS|"GLACIER_IR"->GLACIER_IR|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 ReplicationStorageClass"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ReplicationStorageClass"j)letto_json=simple_to_jsonto_valueendmoduleReplicationTime=structtypenonrect={status:ReplicationTimeStatus.t[@ocaml.doc"Specifies whether S3 Replication Time Control (S3 RTC) is enabled."];time:ReplicationTimeValue.t[@ocaml.doc"A container that specifies the time by which replication should be complete for all objects and operations on objects."]}letcontext_="ReplicationTime"letmake~status=fun~time->fun()->{status;time}letto_valuex=structure_to_value[("Status",(Some(ReplicationTimeStatus.to_valuex.status)));("Time",(Some(ReplicationTimeValue.to_valuex.time)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettime=ReplicationTimeValue.of_xml(Xml.child_exn~context:context_xml_arg0"Time")inletstatus=ReplicationTimeStatus.of_xml(Xml.child_exn~context:context_xml_arg0"Status")inmake~time~status()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettime=field_map_exnjson__"Time"ReplicationTimeValue.of_jsoninletstatus=field_map_exnjson__"Status"ReplicationTimeStatus.of_jsoninmake~time~status()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A container that specifies S3 Replication Time Control (S3 RTC) related information, including whether S3 RTC is enabled and the time when all objects and operations on objects must be replicated. This is not supported by Amazon S3 on Outposts buckets."]moduleExistingObjectReplicationStatus=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 ExistingObjectReplicationStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ExistingObjectReplicationStatus"j)letto_json=simple_to_jsonto_valueendmoduleReplicationRuleAndOperator=structtypenonrect={prefix:Prefix.toption[@ocaml.doc"An object key name prefix that identifies the subset of objects that the rule applies to."];tags:S3TagSet.toption[@ocaml.doc"An array of tags that contain key and value pairs."]}letmake?prefix=fun?tags->fun()->{prefix;tags}letto_valuex=structure_to_value[("Prefix",(Option.mapx.prefix~f:Prefix.to_value));("Tags",(Option.mapx.tags~f:S3TagSet.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:S3TagSet.of_xml)(Xml.childxml_arg0"Tags")inletprefix=(Option.map~f:Prefix.of_xml)(Xml.childxml_arg0"Prefix")inmake?tags?prefix()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"Tags"S3TagSet.of_jsoninletprefix=field_mapjson__"Prefix"Prefix.of_jsoninmake?tags?prefix()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A container for specifying rule filters. The filters determine the subset of objects to which the rule applies. This element is required only if you specify more than one filter. For example: If you specify both a Prefix and a Tag filter, wrap these filters in an And element. If you specify a filter based on multiple tags, wrap the Tag elements in an And element."]moduleReplicaModifications=structtypenonrect={status:ReplicaModificationsStatus.t[@ocaml.doc"Specifies whether S3 on Outposts replicates modifications to object metadata on replicas."]}letcontext_="ReplicaModifications"letmake~status=fun()->{status}letto_valuex=structure_to_value[("Status",(Some(ReplicaModificationsStatus.to_valuex.status)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstatus=ReplicaModificationsStatus.of_xml(Xml.child_exn~context:context_xml_arg0"Status")inmake~status()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstatus=field_map_exnjson__"Status"ReplicaModificationsStatus.of_jsoninmake~status()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A filter that you can use to specify whether replica modification sync is enabled. S3 on Outposts replica modification sync can help you keep object metadata synchronized between replicas and source objects. By default, S3 on Outposts replicates metadata from the source objects to the replicas only. When replica modification sync is enabled, S3 on Outposts replicates metadata changes made to the replica copies back to the source object, making the replication bidirectional. To replicate object metadata modifications on replicas, you can specify this element and set the Status of this element to Enabled. You must enable replica modification sync on the source and destination buckets to replicate replica metadata changes between the source and the replicas."]moduleSseKmsEncryptedObjects=structtypenonrect={status:SseKmsEncryptedObjectsStatus.t[@ocaml.doc"Specifies whether Amazon S3 replicates objects that are created with server-side encryption by using an KMS key stored in Key Management Service."]}letcontext_="SseKmsEncryptedObjects"letmake~status=fun()->{status}letto_valuex=structure_to_value[("Status",(Some(SseKmsEncryptedObjectsStatus.to_valuex.status)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstatus=SseKmsEncryptedObjectsStatus.of_xml(Xml.child_exn~context:context_xml_arg0"Status")inmake~status()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstatus=field_map_exnjson__"Status"SseKmsEncryptedObjectsStatus.of_jsoninmake~status()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A container for filter information that you can use to select S3 objects that are encrypted with Key Management Service (KMS). This is not supported by Amazon S3 on Outposts buckets."]moduleDaysAfterInitiation=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 DaysAfterInitiation"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleExpiredObjectDeleteMarker=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_valueendmoduleLifecycleRuleAndOperator=structtypenonrect={prefix:Prefix.toption[@ocaml.doc"Prefix identifying one or more objects to which the rule applies."];tags:S3TagSet.toption[@ocaml.doc"All of these tags must exist in the object's tag set in order for the rule to apply."];objectSizeGreaterThan:ObjectSizeGreaterThanBytes.toption[@ocaml.doc"The non-inclusive minimum object size for the lifecycle rule. Setting this property to 7 means the rule applies to objects with a size that is greater than 7."];objectSizeLessThan:ObjectSizeLessThanBytes.toption[@ocaml.doc"The non-inclusive maximum object size for the lifecycle rule. Setting this property to 77 means the rule applies to objects with a size that is less than 77."]}letmake?prefix=fun?tags->fun?objectSizeGreaterThan->fun?objectSizeLessThan->fun()->{prefix;tags;objectSizeGreaterThan;objectSizeLessThan}letto_valuex=structure_to_value[("Prefix",(Option.mapx.prefix~f:Prefix.to_value));("Tags",(Option.mapx.tags~f:S3TagSet.to_value));("ObjectSizeGreaterThan",(Option.mapx.objectSizeGreaterThan~f:ObjectSizeGreaterThanBytes.to_value));("ObjectSizeLessThan",(Option.mapx.objectSizeLessThan~f:ObjectSizeLessThanBytes.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letobjectSizeLessThan=(Option.map~f:ObjectSizeLessThanBytes.of_xml)(Xml.childxml_arg0"ObjectSizeLessThan")inletobjectSizeGreaterThan=(Option.map~f:ObjectSizeGreaterThanBytes.of_xml)(Xml.childxml_arg0"ObjectSizeGreaterThan")inlettags=(Option.map~f:S3TagSet.of_xml)(Xml.childxml_arg0"Tags")inletprefix=(Option.map~f:Prefix.of_xml)(Xml.childxml_arg0"Prefix")inmake?objectSizeLessThan?objectSizeGreaterThan?tags?prefix()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letobjectSizeLessThan=field_mapjson__"ObjectSizeLessThan"ObjectSizeLessThanBytes.of_jsoninletobjectSizeGreaterThan=field_mapjson__"ObjectSizeGreaterThan"ObjectSizeGreaterThanBytes.of_jsoninlettags=field_mapjson__"Tags"S3TagSet.of_jsoninletprefix=field_mapjson__"Prefix"Prefix.of_jsoninmake?objectSizeLessThan?objectSizeGreaterThan?tags?prefix()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The container for the Outposts bucket lifecycle rule and operator."]moduleNoncurrentVersionCount=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 NoncurrentVersionCount"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleNoncurrentVersionTransition=structtypenonrect={noncurrentDays:Days.toption[@ocaml.doc"Specifies the number of days an object is noncurrent before Amazon S3 can perform the associated action. For information about the noncurrent days calculations, see How Amazon S3 Calculates How Long an Object Has Been Noncurrent in the Amazon S3 User Guide."];storageClass:TransitionStorageClass.toption[@ocaml.doc"The class of storage used to store the object."]}letmake?noncurrentDays=fun?storageClass->fun()->{noncurrentDays;storageClass}letto_valuex=structure_to_value[("NoncurrentDays",(Option.mapx.noncurrentDays~f:Days.to_value));("StorageClass",(Option.mapx.storageClass~f:TransitionStorageClass.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstorageClass=(Option.map~f:TransitionStorageClass.of_xml)(Xml.childxml_arg0"StorageClass")inletnoncurrentDays=(Option.map~f:Days.of_xml)(Xml.childxml_arg0"NoncurrentDays")inmake?storageClass?noncurrentDays()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstorageClass=field_mapjson__"StorageClass"TransitionStorageClass.of_jsoninletnoncurrentDays=field_mapjson__"NoncurrentDays"Days.of_jsoninmake?storageClass?noncurrentDays()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The container for the noncurrent version transition."]moduleTransition=structtypenonrect={date:Date.toption[@ocaml.doc"Indicates when objects are transitioned to the specified storage class. The date value must be in ISO 8601 format. The time is always midnight UTC."];days:Days.toption[@ocaml.doc"Indicates the number of days after creation when objects are transitioned to the specified storage class. The value must be a positive integer."];storageClass:TransitionStorageClass.toption[@ocaml.doc"The storage class to which you want the object to transition."]}letmake?date=fun?days->fun?storageClass->fun()->{date;days;storageClass}letto_valuex=structure_to_value[("Date",(Option.mapx.date~f:Date.to_value));("Days",(Option.mapx.days~f:Days.to_value));("StorageClass",(Option.mapx.storageClass~f:TransitionStorageClass.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstorageClass=(Option.map~f:TransitionStorageClass.of_xml)(Xml.childxml_arg0"StorageClass")inletdays=(Option.map~f:Days.of_xml)(Xml.childxml_arg0"Days")inletdate=(Option.map~f:Date.of_xml)(Xml.childxml_arg0"Date")inmake?storageClass?days?date()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstorageClass=field_mapjson__"StorageClass"TransitionStorageClass.of_jsoninletdays=field_mapjson__"Days"Days.of_jsoninletdate=field_mapjson__"Date"Date.of_jsoninmake?storageClass?days?date()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Specifies when an object transitions to a specified storage class. For more information about Amazon S3 Lifecycle configuration rules, see Transitioning objects using Amazon S3 Lifecycle in the Amazon S3 User Guide."]moduleAwsLambdaTransformation=structtypenonrect={functionArn:FunctionArnString.t[@ocaml.doc"The Amazon Resource Name (ARN) of the Lambda function."];functionPayload:AwsLambdaTransformationPayload.toption[@ocaml.doc"Additional JSON that provides supplemental data to the Lambda function used to transform objects."]}letcontext_="AwsLambdaTransformation"letmake?functionPayload=fun~functionArn->fun()->{functionPayload;functionArn}letto_valuex=structure_to_value[("FunctionArn",(Some(FunctionArnString.to_valuex.functionArn)));("FunctionPayload",(Option.mapx.functionPayload~f:AwsLambdaTransformationPayload.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letfunctionPayload=(Option.map~f:AwsLambdaTransformationPayload.of_xml)(Xml.childxml_arg0"FunctionPayload")inletfunctionArn=FunctionArnString.of_xml(Xml.child_exn~context:context_xml_arg0"FunctionArn")inmake?functionPayload~functionArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letfunctionPayload=field_mapjson__"FunctionPayload"AwsLambdaTransformationPayload.of_jsoninletfunctionArn=field_map_exnjson__"FunctionArn"FunctionArnString.of_jsoninmake?functionPayload~functionArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lambda function used to transform objects through an Object Lambda Access Point."]moduleObjectLambdaTransformationConfigurationAction=structtypenonrect=|GetObject|HeadObject|ListObjects|ListObjectsV2|Non_static_idofstringletmakei=iletto_string=function|GetObject->"GetObject"|HeadObject->"HeadObject"|ListObjects->"ListObjects"|ListObjectsV2->"ListObjectsV2"|Non_static_ids->sletof_string=function|"GetObject"->GetObject|"HeadObject"->HeadObject|"ListObjects"->ListObjects|"ListObjectsV2"->ListObjectsV2|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 ObjectLambdaTransformationConfigurationAction"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ObjectLambdaTransformationConfigurationAction"j)letto_json=simple_to_jsonto_valueendmoduleJobTimeInStateSeconds=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_valueendmoduleSetting=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_valueendmoduleRegion=structtypenonrect={bucket:BucketName.t[@ocaml.doc"The name of the associated bucket for the Region."];bucketAccountId:AccountId.toption[@ocaml.doc"The Amazon Web Services account ID that owns the Amazon S3 bucket that's associated with this Multi-Region Access Point."]}letcontext_="Region"letmake?bucketAccountId=fun~bucket->fun()->{bucketAccountId;bucket}letto_valuex=structure_to_value[("Bucket",(Some(BucketName.to_valuex.bucket)));("BucketAccountId",(Option.mapx.bucketAccountId~f:AccountId.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letbucketAccountId=(Option.map~f:AccountId.of_xml)(Xml.childxml_arg0"BucketAccountId")inletbucket=BucketName.of_xml(Xml.child_exn~context:context_xml_arg0"Bucket")inmake?bucketAccountId~bucket()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letbucketAccountId=field_mapjson__"BucketAccountId"AccountId.of_jsoninletbucket=field_map_exnjson__"Bucket"BucketName.of_jsoninmake?bucketAccountId~bucket()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A Region that supports a Multi-Region Access Point as well as the associated bucket for the Region."]moduleMultiRegionAccessPointRegionalResponse=structtypenonrect={name:RegionName.toption[@ocaml.doc"The name of the Region in the Multi-Region Access Point."];requestStatus:AsyncRequestStatus.toption[@ocaml.doc"The current status of the Multi-Region Access Point in this Region."]}letmake?name=fun?requestStatus->fun()->{name;requestStatus}letto_valuex=structure_to_value[("Name",(Option.mapx.name~f:RegionName.to_value));("RequestStatus",(Option.mapx.requestStatus~f:AsyncRequestStatus.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letrequestStatus=(Option.map~f:AsyncRequestStatus.of_xml)(Xml.childxml_arg0"RequestStatus")inletname=(Option.map~f:RegionName.of_xml)(Xml.childxml_arg0"Name")inmake?requestStatus?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letrequestStatus=field_mapjson__"RequestStatus"AsyncRequestStatus.of_jsoninletname=field_mapjson__"Name"RegionName.of_jsoninmake?requestStatus?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Status information for a single Multi-Region Access Point Region."]moduleJobManifestFieldName=structtypenonrect=|Ignore|Bucket|Key|VersionId|Non_static_idofstringletmakei=iletto_string=function|Ignore->"Ignore"|Bucket->"Bucket"|Key->"Key"|VersionId->"VersionId"|Non_static_ids->sletof_string=function|"Ignore"->Ignore|"Bucket"->Bucket|"Key"->Key|"VersionId"->VersionId|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 JobManifestFieldName"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"JobManifestFieldName"j)letto_json=simple_to_jsonto_valueendmoduleKeyNameConstraint=structtypenonrect={matchAnyPrefix:NonEmptyMaxLength1024StringList.toption[@ocaml.doc"If provided, the generated manifest includes objects where the specified string appears at the start of the object key string. Each KeyNameConstraint filter accepts an array of strings with a length of 1 string."];matchAnySuffix:NonEmptyMaxLength1024StringList.toption[@ocaml.doc"If provided, the generated manifest includes objects where the specified string appears at the end of the object key string. Each KeyNameConstraint filter accepts an array of strings with a length of 1 string."];matchAnySubstring:NonEmptyMaxLength1024StringList.toption[@ocaml.doc"If provided, the generated manifest includes objects where the specified string appears anywhere within the object key string. Each KeyNameConstraint filter accepts an array of strings with a length of 1 string."]}letmake?matchAnyPrefix=fun?matchAnySuffix->fun?matchAnySubstring->fun()->{matchAnyPrefix;matchAnySuffix;matchAnySubstring}letto_valuex=structure_to_value[("MatchAnyPrefix",(Option.mapx.matchAnyPrefix~f:NonEmptyMaxLength1024StringList.to_value));("MatchAnySuffix",(Option.mapx.matchAnySuffix~f:NonEmptyMaxLength1024StringList.to_value));("MatchAnySubstring",(Option.mapx.matchAnySubstring~f:NonEmptyMaxLength1024StringList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmatchAnySubstring=(Option.map~f:NonEmptyMaxLength1024StringList.of_xml)(Xml.childxml_arg0"MatchAnySubstring")inletmatchAnySuffix=(Option.map~f:NonEmptyMaxLength1024StringList.of_xml)(Xml.childxml_arg0"MatchAnySuffix")inletmatchAnyPrefix=(Option.map~f:NonEmptyMaxLength1024StringList.of_xml)(Xml.childxml_arg0"MatchAnyPrefix")inmake?matchAnySubstring?matchAnySuffix?matchAnyPrefix()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmatchAnySubstring=field_mapjson__"MatchAnySubstring"NonEmptyMaxLength1024StringList.of_jsoninletmatchAnySuffix=field_mapjson__"MatchAnySuffix"NonEmptyMaxLength1024StringList.of_jsoninletmatchAnyPrefix=field_mapjson__"MatchAnyPrefix"NonEmptyMaxLength1024StringList.of_jsoninmake?matchAnySubstring?matchAnySuffix?matchAnyPrefix()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"If provided, the generated manifest includes only source bucket objects whose object keys match the string constraints specified for MatchAnyPrefix, MatchAnySuffix, and MatchAnySubstring."]moduleObjectCreationTime=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_valueendmoduleObjectEncryptionFilterList=structtypenonrect=ObjectEncryptionFilter.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:1)>>=(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:ObjectEncryptionFilter.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:ObjectEncryptionFilter.of_xml)letof_jsonj=list_of_json~kind:"ObjectEncryptionFilterList"~of_json:ObjectEncryptionFilter.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleReplicationStatusFilterList=structtypenonrect=ReplicationStatus.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ReplicationStatus.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:ReplicationStatus.of_xml)letof_jsonj=list_of_json~kind:"ReplicationStatusFilterList"~of_json:ReplicationStatus.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleStorageClassList=structtypenonrect=S3StorageClass.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:S3StorageClass.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:S3StorageClass.of_xml)letof_jsonj=list_of_json~kind:"StorageClassList"~of_json:S3StorageClass.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleGeneratedManifestEncryption=structtypenonrect={sSES3:SSES3Encryption.toption[@ocaml.doc"Specifies the use of SSE-S3 to encrypt generated manifest objects."];sSEKMS:SSEKMSEncryption.toption[@ocaml.doc"Configuration details on how SSE-KMS is used to encrypt generated manifest objects."]}letmake?sSES3=fun?sSEKMS->fun()->{sSES3;sSEKMS}letto_valuex=structure_to_value[("SSE-S3",(Option.mapx.sSES3~f:SSES3Encryption.to_value));("SSE-KMS",(Option.mapx.sSEKMS~f:SSEKMSEncryption.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letsSEKMS=(Option.map~f:SSEKMSEncryption.of_xml)(Xml.childxml_arg0"SSE-KMS")inletsSES3=(Option.map~f:SSES3Encryption.of_xml)(Xml.childxml_arg0"SSE-S3")inmake?sSEKMS?sSES3()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letsSEKMS=field_mapjson__"SSEKMS"SSEKMSEncryption.of_jsoninletsSES3=field_mapjson__"SSES3"SSES3Encryption.of_jsoninmake?sSEKMS?sSES3()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The encryption configuration to use when storing the generated manifest."]moduleGeneratedManifestFormat=structtypenonrect=|S3InventoryReport_CSV_20211130|Non_static_idofstringletmakei=iletto_string=function|S3InventoryReport_CSV_20211130->"S3InventoryReport_CSV_20211130"|Non_static_ids->sletof_string=function|"S3InventoryReport_CSV_20211130"->S3InventoryReport_CSV_20211130|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 GeneratedManifestFormat"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"GeneratedManifestFormat"j)letto_json=simple_to_jsonto_valueendmoduleManifestPrefixString=structtypenonrect=stringletcontext_="ManifestPrefixString"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:"ManifestPrefixString"jletto_json=simple_to_jsonto_valueendmoduleS3BucketArnString=structtypenonrect=stringletcontext_="S3BucketArnString"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:128)>>=(fun()->check_patterni~pattern:"arn:[^:]+:s3:.*")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"S3BucketArnString"jletto_json=simple_to_jsonto_valueendmoduleNonEmptyMaxLength64String=structtypenonrect=stringletcontext_="NonEmptyMaxLength64String"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:"NonEmptyMaxLength64String"jletto_json=simple_to_jsonto_valueendmoduleS3ContentLength=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_valueendmoduleS3SSEAlgorithm=structtypenonrect=|AES256|KMS|Non_static_idofstringletmakei=iletto_string=function|AES256->"AES256"|KMS->"KMS"|Non_static_ids->sletof_string=function|"AES256"->AES256|"KMS"->KMS|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 S3SSEAlgorithm"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"S3SSEAlgorithm"j)letto_json=simple_to_jsonto_valueendmoduleS3UserMetadata=structtypenonrect=(NonEmptyMaxLength1024String.t*MaxLength1024String.t)listletmakei=letopenResultinok_or_failwith(check_list_maxi~max:8192);iletof_headerxs=make(List.filter_mapxs~f:(fun(k,v)->(Base.String.chop_prefixk~prefix:"x-amz-meta-")|>(Option.map~f:(funchopped->((NonEmptyMaxLength1024String.of_stringchopped),(MaxLength1024String.of_stringv))))))letto_valuexs=(xs|>(List.map~f:(fun(x,y)->(NonEmptyMaxLength1024String.to_valuex)|>(funx->(MaxLength1024String.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:NonEmptyMaxLength1024String.of_string~of_json:MaxLength1024String.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleTimeStamp=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_valueendmoduleS3AccessControlList=structtypenonrect={owner:S3ObjectOwner.t;grants:S3GrantList.toption}letcontext_="S3AccessControlList"letmake?grants=fun~owner->fun()->{grants;owner}letto_valuex=structure_to_value[("Owner",(Some(S3ObjectOwner.to_valuex.owner)));("Grants",(Option.mapx.grants~f:S3GrantList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letgrants=(Option.map~f:S3GrantList.of_xml)(Xml.childxml_arg0"Grants")inletowner=S3ObjectOwner.of_xml(Xml.child_exn~context:context_xml_arg0"Owner")inmake?grants~owner()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letgrants=field_mapjson__"Grants"S3GrantList.of_jsoninletowner=field_map_exnjson__"Owner"S3ObjectOwner.of_jsoninmake?grants~owner()letto_jsonv=composed_to_jsonto_valuevendmoduleS3CannedAccessControlList=structtypenonrect=|Private|Public_read|Public_read_write|Aws_exec_read|Authenticated_read|Bucket_owner_read|Bucket_owner_full_control|Non_static_idofstringletmakei=iletto_string=function|Private->"private"|Public_read->"public-read"|Public_read_write->"public-read-write"|Aws_exec_read->"aws-exec-read"|Authenticated_read->"authenticated-read"|Bucket_owner_read->"bucket-owner-read"|Bucket_owner_full_control->"bucket-owner-full-control"|Non_static_ids->sletof_string=function|"private"->Private|"public-read"->Public_read|"public-read-write"->Public_read_write|"aws-exec-read"->Aws_exec_read|"authenticated-read"->Authenticated_read|"bucket-owner-read"->Bucket_owner_read|"bucket-owner-full-control"->Bucket_owner_full_control|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 S3CannedAccessControlList"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"S3CannedAccessControlList"j)letto_json=simple_to_jsonto_valueendmoduleS3ObjectLockLegalHoldStatus=structtypenonrect=|OFF|ON|Non_static_idofstringletmakei=iletto_string=function|OFF->"OFF"|ON->"ON"|Non_static_ids->sletof_string=function|"OFF"->OFF|"ON"->ON|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 S3ObjectLockLegalHoldStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"S3ObjectLockLegalHoldStatus"j)letto_json=simple_to_jsonto_valueendmoduleS3ObjectLockRetentionMode=structtypenonrect=|COMPLIANCE|GOVERNANCE|Non_static_idofstringletmakei=iletto_string=function|COMPLIANCE->"COMPLIANCE"|GOVERNANCE->"GOVERNANCE"|Non_static_ids->sletof_string=function|"COMPLIANCE"->COMPLIANCE|"GOVERNANCE"->GOVERNANCE|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 S3ObjectLockRetentionMode"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"S3ObjectLockRetentionMode"j)letto_json=simple_to_jsonto_valueendmoduleS3UpdateObjectEncryptionSSEKMS=structtypenonrect={kMSKeyArn:NonEmptyKmsKeyArnString.t[@ocaml.doc"Specifies the Amazon Web Services KMS key Amazon Resource Name (ARN) to use for the updated server-side encryption type. Required if UpdateObjectEncryption specifies SSEKMS."];bucketKeyEnabled:Boolean.toption[@ocaml.doc"Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption with server-side encryption using Key Management Service (KMS) keys (SSE-KMS). If this value isn't specified, it defaults to false. Setting this value to true causes Amazon S3 to use an S3 Bucket Key for update object encryption with SSE-KMS."]}letcontext_="S3UpdateObjectEncryptionSSEKMS"letmake?bucketKeyEnabled=fun~kMSKeyArn->fun()->{bucketKeyEnabled;kMSKeyArn}letto_valuex=structure_to_value[("KMSKeyArn",(Some(NonEmptyKmsKeyArnString.to_valuex.kMSKeyArn)));("BucketKeyEnabled",(Option.mapx.bucketKeyEnabled~f:Boolean.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letbucketKeyEnabled=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"BucketKeyEnabled")inletkMSKeyArn=NonEmptyKmsKeyArnString.of_xml(Xml.child_exn~context:context_xml_arg0"KMSKeyArn")inmake?bucketKeyEnabled~kMSKeyArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letbucketKeyEnabled=field_mapjson__"BucketKeyEnabled"Boolean.of_jsoninletkMSKeyArn=field_map_exnjson__"KMSKeyArn"NonEmptyKmsKeyArnString.of_jsoninmake?bucketKeyEnabled~kMSKeyArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"If SSEKMS is specified for UpdateObjectEncryption, this data type specifies the Amazon Web Services KMS key Amazon Resource Name (ARN) to use and whether to use an S3 Bucket Key for server-side encryption using Key Management Service (KMS) keys (SSE-KMS)."]moduleMatchAnyPrefix=structtypenonrect=Prefix.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:Prefix.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:Prefix.of_xml)letof_jsonj=list_of_json~kind:"MatchAnyPrefix"~of_json:Prefix.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleMatchAnySuffix=structtypenonrect=Suffix.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:Suffix.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:Suffix.of_xml)letof_jsonj=list_of_json~kind:"MatchAnySuffix"~of_json:Suffix.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleMatchAnyTag=structtypenonrect=S3Tag.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:S3Tag.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:S3Tag.of_xml)letof_jsonj=list_of_json~kind:"MatchAnyTag"~of_json:S3Tag.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleMatchObjectAge=structtypenonrect={daysGreaterThan:ObjectAgeValue.toption[@ocaml.doc"Specifies the maximum object age in days. Must be a positive whole number, greater than the minimum object age and less than or equal to 2,147,483,647."];daysLessThan:ObjectAgeValue.toption[@ocaml.doc"Specifies the minimum object age in days. The value must be a positive whole number, greater than 0 and less than or equal to 2,147,483,647."]}letmake?daysGreaterThan=fun?daysLessThan->fun()->{daysGreaterThan;daysLessThan}letto_valuex=structure_to_value[("DaysGreaterThan",(Option.mapx.daysGreaterThan~f:ObjectAgeValue.to_value));("DaysLessThan",(Option.mapx.daysLessThan~f:ObjectAgeValue.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdaysLessThan=(Option.map~f:ObjectAgeValue.of_xml)(Xml.childxml_arg0"DaysLessThan")inletdaysGreaterThan=(Option.map~f:ObjectAgeValue.of_xml)(Xml.childxml_arg0"DaysGreaterThan")inmake?daysLessThan?daysGreaterThan()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdaysLessThan=field_mapjson__"DaysLessThan"ObjectAgeValue.of_jsoninletdaysGreaterThan=field_mapjson__"DaysGreaterThan"ObjectAgeValue.of_jsoninmake?daysLessThan?daysGreaterThan()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A filter condition that specifies the object age range of included objects in days. Only integers are supported."]moduleMatchObjectSize=structtypenonrect={bytesGreaterThan:ObjectSizeValue.toption[@ocaml.doc"Specifies the minimum object size in Bytes. The value must be a positive number, greater than 0 and less than 50 TB."];bytesLessThan:ObjectSizeValue.toption[@ocaml.doc"Specifies the maximum object size in Bytes. The value must be a positive number, greater than the minimum object size and less than 50 TB."]}letmake?bytesGreaterThan=fun?bytesLessThan->fun()->{bytesGreaterThan;bytesLessThan}letto_valuex=structure_to_value[("BytesGreaterThan",(Option.mapx.bytesGreaterThan~f:ObjectSizeValue.to_value));("BytesLessThan",(Option.mapx.bytesLessThan~f:ObjectSizeValue.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letbytesLessThan=(Option.map~f:ObjectSizeValue.of_xml)(Xml.childxml_arg0"BytesLessThan")inletbytesGreaterThan=(Option.map~f:ObjectSizeValue.of_xml)(Xml.childxml_arg0"BytesGreaterThan")inmake?bytesLessThan?bytesGreaterThan()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letbytesLessThan=field_mapjson__"BytesLessThan"ObjectSizeValue.of_jsoninletbytesGreaterThan=field_mapjson__"BytesGreaterThan"ObjectSizeValue.of_jsoninmake?bytesLessThan?bytesGreaterThan()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A filter condition that specifies the object size range of included objects in bytes. Only integers are supported."]moduleActivityMetrics=structtypenonrect={isEnabled:IsEnabled.toption[@ocaml.doc"A container that indicates whether activity metrics are enabled."]}letmake?isEnabled=fun()->{isEnabled}letto_valuex=structure_to_value[("IsEnabled",(Option.mapx.isEnabled~f:IsEnabled.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letisEnabled=(Option.map~f:IsEnabled.of_xml)(Xml.childxml_arg0"IsEnabled")inmake?isEnabled()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letisEnabled=field_mapjson__"IsEnabled"IsEnabled.of_jsoninmake?isEnabled()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The container element for Amazon S3 Storage Lens activity metrics. Activity metrics show details about how your storage is requested, such as requests (for example, All requests, Get requests, Put requests), bytes uploaded or downloaded, and errors. For more information about S3 Storage Lens, see Assessing your storage activity and usage with S3 Storage Lens in the Amazon S3 User Guide. For a complete list of S3 Storage Lens metrics, see S3 Storage Lens metrics glossary in the Amazon S3 User Guide."]moduleAdvancedCostOptimizationMetrics=structtypenonrect={isEnabled:IsEnabled.toption[@ocaml.doc"A container that indicates whether advanced cost-optimization metrics are enabled."]}letmake?isEnabled=fun()->{isEnabled}letto_valuex=structure_to_value[("IsEnabled",(Option.mapx.isEnabled~f:IsEnabled.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letisEnabled=(Option.map~f:IsEnabled.of_xml)(Xml.childxml_arg0"IsEnabled")inmake?isEnabled()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letisEnabled=field_mapjson__"IsEnabled"IsEnabled.of_jsoninmake?isEnabled()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The container element for Amazon S3 Storage Lens advanced cost-optimization metrics. Advanced cost-optimization metrics provide insights that you can use to manage and optimize your storage costs, for example, lifecycle rule counts for transitions, expirations, and incomplete multipart uploads. For more information about S3 Storage Lens, see Assessing your storage activity and usage with S3 Storage Lens in the Amazon S3 User Guide. For a complete list of S3 Storage Lens metrics, see S3 Storage Lens metrics glossary in the Amazon S3 User Guide."]moduleAdvancedDataProtectionMetrics=structtypenonrect={isEnabled:IsEnabled.toption[@ocaml.doc"A container that indicates whether advanced data-protection metrics are enabled."]}letmake?isEnabled=fun()->{isEnabled}letto_valuex=structure_to_value[("IsEnabled",(Option.mapx.isEnabled~f:IsEnabled.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letisEnabled=(Option.map~f:IsEnabled.of_xml)(Xml.childxml_arg0"IsEnabled")inmake?isEnabled()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letisEnabled=field_mapjson__"IsEnabled"IsEnabled.of_jsoninmake?isEnabled()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The container element for Amazon S3 Storage Lens advanced data-protection metrics. Advanced data-protection metrics provide insights that you can use to perform audits and protect your data, for example replication rule counts within and across Regions. For more information about S3 Storage Lens, see Assessing your storage activity and usage with S3 Storage Lens in the Amazon S3 User Guide. For a complete list of S3 Storage Lens metrics, see S3 Storage Lens metrics glossary in the Amazon S3 User Guide."]moduleAdvancedPerformanceMetrics=structtypenonrect={isEnabled:IsEnabled.toption[@ocaml.doc"A container that indicates whether S3 Storage Lens advanced performance metrics are enabled."]}letmake?isEnabled=fun()->{isEnabled}letto_valuex=structure_to_value[("IsEnabled",(Option.mapx.isEnabled~f:IsEnabled.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letisEnabled=(Option.map~f:IsEnabled.of_xml)(Xml.childxml_arg0"IsEnabled")inmake?isEnabled()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letisEnabled=field_mapjson__"IsEnabled"IsEnabled.of_jsoninmake?isEnabled()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The container element for S3 Storage Lens advanced performance metrics. Advanced performance metrics provide insights into application performance, such as request efficiency and access patterns. These metrics help you optimize your S3 storage for both cost and performance by providing detailed analytics on how your applications interact with S3 resources. For more information about S3 Storage Lens, see Assessing your storage activity and usage with S3 Storage Lens in the Amazon S3 User Guide. For a complete list of S3 Storage Lens metrics, see S3 Storage Lens metrics glossary in the Amazon S3 User Guide."]moduleDetailedStatusCodesMetrics=structtypenonrect={isEnabled:IsEnabled.toption[@ocaml.doc"A container that indicates whether detailed status code metrics are enabled."]}letmake?isEnabled=fun()->{isEnabled}letto_valuex=structure_to_value[("IsEnabled",(Option.mapx.isEnabled~f:IsEnabled.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letisEnabled=(Option.map~f:IsEnabled.of_xml)(Xml.childxml_arg0"IsEnabled")inmake?isEnabled()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letisEnabled=field_mapjson__"IsEnabled"IsEnabled.of_jsoninmake?isEnabled()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The container element for Amazon S3 Storage Lens detailed status code metrics. Detailed status code metrics generate metrics for HTTP status codes, such as 200 OK, 403 Forbidden, 503 Service Unavailable and others. For more information about S3 Storage Lens, see Assessing your storage activity and usage with S3 Storage Lens in the Amazon S3 User Guide. For a complete list of S3 Storage Lens metrics, see S3 Storage Lens metrics glossary in the Amazon S3 User Guide."]modulePrefixLevel=structtypenonrect={storageMetrics:PrefixLevelStorageMetrics.t[@ocaml.doc"A container for the prefix-level storage metrics for S3 Storage Lens."]}letcontext_="PrefixLevel"letmake~storageMetrics=fun()->{storageMetrics}letto_valuex=structure_to_value[("StorageMetrics",(Some(PrefixLevelStorageMetrics.to_valuex.storageMetrics)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstorageMetrics=PrefixLevelStorageMetrics.of_xml(Xml.child_exn~context:context_xml_arg0"StorageMetrics")inmake~storageMetrics()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstorageMetrics=field_map_exnjson__"StorageMetrics"PrefixLevelStorageMetrics.of_jsoninmake~storageMetrics()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A container for the prefix-level configuration."]moduleStorageLensGroupLevelSelectionCriteria=structtypenonrect={include_:StorageLensGroupLevelInclude.toption[@ocaml.doc"Indicates which Storage Lens group ARNs to include in the Storage Lens group aggregation."];exclude:StorageLensGroupLevelExclude.toption[@ocaml.doc"Indicates which Storage Lens group ARNs to exclude from the Storage Lens group aggregation."]}letmake?include_=fun?exclude->fun()->{include_;exclude}letto_valuex=structure_to_value[("Include",(Option.mapx.include_~f:StorageLensGroupLevelInclude.to_value));("Exclude",(Option.mapx.exclude~f:StorageLensGroupLevelExclude.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letexclude=(Option.map~f:StorageLensGroupLevelExclude.of_xml)(Xml.childxml_arg0"Exclude")inletinclude_=(Option.map~f:StorageLensGroupLevelInclude.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"StorageLensGroupLevelExclude.of_jsoninletinclude_=field_mapjson__"Include"StorageLensGroupLevelInclude.of_jsoninmake?exclude?include_()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Indicates which Storage Lens group ARNs to include or exclude in the Storage Lens group aggregation. You can only attach Storage Lens groups to your Storage Lens dashboard if they're included in your Storage Lens group aggregation. If this value is left null, then all Storage Lens groups are selected."]moduleS3AWSRegion=structtypenonrect=stringletcontext_="S3AWSRegion"letmakei=letopenResultinok_or_failwith((check_string_mini~min:5)>>=(fun()->(check_string_maxi~max:30)>>=(fun()->check_patterni~pattern:"[a-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:"S3AWSRegion"jletto_json=simple_to_jsonto_valueendmoduleFormat_=structtypenonrect=|CSV|Parquet|Non_static_idofstringletmakei=iletto_string=function|CSV->"CSV"|Parquet->"Parquet"|Non_static_ids->sletof_string=function|"CSV"->CSV|"Parquet"->Parquet|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 Format"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"Format"j)letto_json=simple_to_jsonto_valueendmoduleOutputSchemaVersion=structtypenonrect=|V_1|Non_static_idofstringletmakei=iletto_string=function|V_1->"V_1"|Non_static_ids->sletof_string=function|"V_1"->V_1|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 OutputSchemaVersion"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"OutputSchemaVersion"j)letto_json=simple_to_jsonto_valueendmoduleStorageLensDataExportEncryption=structtypenonrect={sSES3:SSES3.toption;sSEKMS:SSEKMS.toption}letmake?sSES3=fun?sSEKMS->fun()->{sSES3;sSEKMS}letto_valuex=structure_to_value[("SSE-S3",(Option.mapx.sSES3~f:SSES3.to_value));("SSE-KMS",(Option.mapx.sSEKMS~f:SSEKMS.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letsSEKMS=(Option.map~f:SSEKMS.of_xml)(Xml.childxml_arg0"SSE-KMS")inletsSES3=(Option.map~f:SSES3.of_xml)(Xml.childxml_arg0"SSE-S3")inmake?sSEKMS?sSES3()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letsSEKMS=field_mapjson__"SSEKMS"SSEKMS.of_jsoninletsSES3=field_mapjson__"SSES3"SSES3.of_jsoninmake?sSEKMS?sSES3()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A container for the encryption of the S3 Storage Lens metrics exports."]moduleDeleteMarkerReplication=structtypenonrect={status:DeleteMarkerReplicationStatus.t[@ocaml.doc"Indicates whether to replicate delete markers."]}letcontext_="DeleteMarkerReplication"letmake~status=fun()->{status}letto_valuex=structure_to_value[("Status",(Some(DeleteMarkerReplicationStatus.to_valuex.status)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstatus=DeleteMarkerReplicationStatus.of_xml(Xml.child_exn~context:context_xml_arg0"Status")inmake~status()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstatus=field_map_exnjson__"Status"DeleteMarkerReplicationStatus.of_jsoninmake~status()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Specifies whether S3 on Outposts replicates delete markers. If you specify a Filter element in your replication configuration, you must also include a DeleteMarkerReplication element. If your Filter includes a Tag element, the DeleteMarkerReplication element's Status child element must be set to Disabled, because S3 on Outposts does not support replicating delete markers for tag-based rules. For more information about delete marker replication, see How delete operations affect replication in the Amazon S3 User Guide."]moduleDestination=structtypenonrect={account:AccountId.toption[@ocaml.doc"The destination bucket owner's account ID."];bucket:BucketIdentifierString.t[@ocaml.doc"The Amazon Resource Name (ARN) of the access point for the destination bucket where you want S3 on Outposts to store the replication results."];replicationTime:ReplicationTime.toption[@ocaml.doc"A container that specifies S3 Replication Time Control (S3 RTC) settings, including whether S3 RTC is enabled and the time when all objects and operations on objects must be replicated. Must be specified together with a Metrics block. This is not supported by Amazon S3 on Outposts buckets."];accessControlTranslation:AccessControlTranslation.toption[@ocaml.doc"Specify this property only in a cross-account scenario (where the source and destination bucket owners are not the same), and you want to change replica ownership to the Amazon Web Services account that owns the destination bucket. If this property is not specified in the replication configuration, the replicas are owned by same Amazon Web Services account that owns the source object. This is not supported by Amazon S3 on Outposts buckets."];encryptionConfiguration:EncryptionConfiguration.toption[@ocaml.doc"A container that provides information about encryption. If SourceSelectionCriteria is specified, you must specify this element. This is not supported by Amazon S3 on Outposts buckets."];metrics:Metrics.toption[@ocaml.doc"A container that specifies replication metrics-related settings."];storageClass:ReplicationStorageClass.toption[@ocaml.doc"The storage class to use when replicating objects. All objects stored on S3 on Outposts are stored in the OUTPOSTS storage class. S3 on Outposts uses the OUTPOSTS storage class to create the object replicas. Values other than OUTPOSTS aren't supported by Amazon S3 on Outposts."]}letcontext_="Destination"letmake?account=fun?replicationTime->fun?accessControlTranslation->fun?encryptionConfiguration->fun?metrics->fun?storageClass->fun~bucket->fun()->{account;replicationTime;accessControlTranslation;encryptionConfiguration;metrics;storageClass;bucket}letto_valuex=structure_to_value[("Account",(Option.mapx.account~f:AccountId.to_value));("Bucket",(Some(BucketIdentifierString.to_valuex.bucket)));("ReplicationTime",(Option.mapx.replicationTime~f:ReplicationTime.to_value));("AccessControlTranslation",(Option.mapx.accessControlTranslation~f:AccessControlTranslation.to_value));("EncryptionConfiguration",(Option.mapx.encryptionConfiguration~f:EncryptionConfiguration.to_value));("Metrics",(Option.mapx.metrics~f:Metrics.to_value));("StorageClass",(Option.mapx.storageClass~f:ReplicationStorageClass.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstorageClass=(Option.map~f:ReplicationStorageClass.of_xml)(Xml.childxml_arg0"StorageClass")inletmetrics=(Option.map~f:Metrics.of_xml)(Xml.childxml_arg0"Metrics")inletencryptionConfiguration=(Option.map~f:EncryptionConfiguration.of_xml)(Xml.childxml_arg0"EncryptionConfiguration")inletaccessControlTranslation=(Option.map~f:AccessControlTranslation.of_xml)(Xml.childxml_arg0"AccessControlTranslation")inletreplicationTime=(Option.map~f:ReplicationTime.of_xml)(Xml.childxml_arg0"ReplicationTime")inletbucket=BucketIdentifierString.of_xml(Xml.child_exn~context:context_xml_arg0"Bucket")inletaccount=(Option.map~f:AccountId.of_xml)(Xml.childxml_arg0"Account")inmake?storageClass?metrics?encryptionConfiguration?accessControlTranslation?replicationTime~bucket?account()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstorageClass=field_mapjson__"StorageClass"ReplicationStorageClass.of_jsoninletmetrics=field_mapjson__"Metrics"Metrics.of_jsoninletencryptionConfiguration=field_mapjson__"EncryptionConfiguration"EncryptionConfiguration.of_jsoninletaccessControlTranslation=field_mapjson__"AccessControlTranslation"AccessControlTranslation.of_jsoninletreplicationTime=field_mapjson__"ReplicationTime"ReplicationTime.of_jsoninletbucket=field_map_exnjson__"Bucket"BucketIdentifierString.of_jsoninletaccount=field_mapjson__"Account"AccountId.of_jsoninmake?storageClass?metrics?encryptionConfiguration?accessControlTranslation?replicationTime~bucket?account()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Specifies information about the replication destination bucket and its settings for an S3 on Outposts replication configuration."]moduleExistingObjectReplication=structtypenonrect={status:ExistingObjectReplicationStatus.t[@ocaml.doc"Specifies whether Amazon S3 replicates existing source bucket objects."]}letcontext_="ExistingObjectReplication"letmake~status=fun()->{status}letto_valuex=structure_to_value[("Status",(Some(ExistingObjectReplicationStatus.to_valuex.status)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstatus=ExistingObjectReplicationStatus.of_xml(Xml.child_exn~context:context_xml_arg0"Status")inmake~status()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstatus=field_map_exnjson__"Status"ExistingObjectReplicationStatus.of_jsoninmake~status()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"An optional configuration to replicate existing source bucket objects. This is not supported by Amazon S3 on Outposts buckets."]moduleID=structtypenonrect=stringletcontext_="ID"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:"ID"jletto_json=simple_to_jsonto_valueendmodulePriority=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 Priority"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleReplicationRuleFilter=structtypenonrect={prefix:Prefix.toption[@ocaml.doc"An object key name prefix that identifies the subset of objects that the rule applies to. When you're using XML requests, you must replace special characters (such as carriage returns) in object keys with their equivalent XML entity codes. For more information, see XML-related object key constraints in the Amazon S3 User Guide."];tag:S3Tag.toption;and_:ReplicationRuleAndOperator.toption[@ocaml.doc"A container for specifying rule filters. The filters determine the subset of objects that the rule applies to. This element is required only if you specify more than one filter. For example: If you specify both a Prefix and a Tag filter, wrap these filters in an And element. If you specify a filter based on multiple tags, wrap the Tag elements in an And element."]}letmake?prefix=fun?tag->fun?and_->fun()->{prefix;tag;and_}letto_valuex=structure_to_value[("Prefix",(Option.mapx.prefix~f:Prefix.to_value));("Tag",(Option.mapx.tag~f:S3Tag.to_value));("And",(Option.mapx.and_~f:ReplicationRuleAndOperator.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letand_=(Option.map~f:ReplicationRuleAndOperator.of_xml)(Xml.childxml_arg0"And")inlettag=(Option.map~f:S3Tag.of_xml)(Xml.childxml_arg0"Tag")inletprefix=(Option.map~f:Prefix.of_xml)(Xml.childxml_arg0"Prefix")inmake?and_?tag?prefix()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letand_=field_mapjson__"And"ReplicationRuleAndOperator.of_jsoninlettag=field_mapjson__"Tag"S3Tag.of_jsoninletprefix=field_mapjson__"Prefix"Prefix.of_jsoninmake?and_?tag?prefix()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A filter that identifies the subset of objects to which the replication rule applies. A Filter element must specify exactly one Prefix, Tag, or And child element."]moduleReplicationRuleStatus=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 ReplicationRuleStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ReplicationRuleStatus"j)letto_json=simple_to_jsonto_valueendmoduleSourceSelectionCriteria=structtypenonrect={sseKmsEncryptedObjects:SseKmsEncryptedObjects.toption[@ocaml.doc"A filter that you can use to select Amazon S3 objects that are encrypted with server-side encryption by using Key Management Service (KMS) keys. If you include SourceSelectionCriteria in the replication configuration, this element is required. This is not supported by Amazon S3 on Outposts buckets."];replicaModifications:ReplicaModifications.toption[@ocaml.doc"A filter that you can use to specify whether replica modification sync is enabled. S3 on Outposts replica modification sync can help you keep object metadata synchronized between replicas and source objects. By default, S3 on Outposts replicates metadata from the source objects to the replicas only. When replica modification sync is enabled, S3 on Outposts replicates metadata changes made to the replica copies back to the source object, making the replication bidirectional. To replicate object metadata modifications on replicas, you can specify this element and set the Status of this element to Enabled. You must enable replica modification sync on the source and destination buckets to replicate replica metadata changes between the source and the replicas."]}letmake?sseKmsEncryptedObjects=fun?replicaModifications->fun()->{sseKmsEncryptedObjects;replicaModifications}letto_valuex=structure_to_value[("SseKmsEncryptedObjects",(Option.mapx.sseKmsEncryptedObjects~f:SseKmsEncryptedObjects.to_value));("ReplicaModifications",(Option.mapx.replicaModifications~f:ReplicaModifications.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letreplicaModifications=(Option.map~f:ReplicaModifications.of_xml)(Xml.childxml_arg0"ReplicaModifications")inletsseKmsEncryptedObjects=(Option.map~f:SseKmsEncryptedObjects.of_xml)(Xml.childxml_arg0"SseKmsEncryptedObjects")inmake?replicaModifications?sseKmsEncryptedObjects()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letreplicaModifications=field_mapjson__"ReplicaModifications"ReplicaModifications.of_jsoninletsseKmsEncryptedObjects=field_mapjson__"SseKmsEncryptedObjects"SseKmsEncryptedObjects.of_jsoninmake?replicaModifications?sseKmsEncryptedObjects()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A container that describes additional filters for identifying the source objects that you want to replicate. You can choose to enable or disable the replication of these objects."]moduleAbortIncompleteMultipartUpload=structtypenonrect={daysAfterInitiation:DaysAfterInitiation.toption[@ocaml.doc"Specifies the number of days after which Amazon S3 aborts an incomplete multipart upload to the Outposts bucket."]}letmake?daysAfterInitiation=fun()->{daysAfterInitiation}letto_valuex=structure_to_value[("DaysAfterInitiation",(Option.mapx.daysAfterInitiation~f:DaysAfterInitiation.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdaysAfterInitiation=(Option.map~f:DaysAfterInitiation.of_xml)(Xml.childxml_arg0"DaysAfterInitiation")inmake?daysAfterInitiation()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdaysAfterInitiation=field_mapjson__"DaysAfterInitiation"DaysAfterInitiation.of_jsoninmake?daysAfterInitiation()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The container for abort incomplete multipart upload"]moduleExpirationStatus=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 ExpirationStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ExpirationStatus"j)letto_json=simple_to_jsonto_valueendmoduleLifecycleExpiration=structtypenonrect={date:Date.toption[@ocaml.doc"Indicates at what date the object is to be deleted. Should be in GMT ISO 8601 format."];days:Days.toption[@ocaml.doc"Indicates the lifetime, in days, of the objects that are subject to the rule. The value must be a non-zero positive integer."];expiredObjectDeleteMarker:ExpiredObjectDeleteMarker.toption[@ocaml.doc"Indicates whether Amazon S3 will remove a delete marker with no noncurrent versions. If set to true, the delete marker will be expired. If set to false, the policy takes no action. This cannot be specified with Days or Date in a Lifecycle Expiration Policy. To learn more about delete markers, see Working with delete markers."]}letmake?date=fun?days->fun?expiredObjectDeleteMarker->fun()->{date;days;expiredObjectDeleteMarker}letto_valuex=structure_to_value[("Date",(Option.mapx.date~f:Date.to_value));("Days",(Option.mapx.days~f:Days.to_value));("ExpiredObjectDeleteMarker",(Option.mapx.expiredObjectDeleteMarker~f:ExpiredObjectDeleteMarker.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letexpiredObjectDeleteMarker=(Option.map~f:ExpiredObjectDeleteMarker.of_xml)(Xml.childxml_arg0"ExpiredObjectDeleteMarker")inletdays=(Option.map~f:Days.of_xml)(Xml.childxml_arg0"Days")inletdate=(Option.map~f:Date.of_xml)(Xml.childxml_arg0"Date")inmake?expiredObjectDeleteMarker?days?date()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letexpiredObjectDeleteMarker=field_mapjson__"ExpiredObjectDeleteMarker"ExpiredObjectDeleteMarker.of_jsoninletdays=field_mapjson__"Days"Days.of_jsoninletdate=field_mapjson__"Date"Date.of_jsoninmake?expiredObjectDeleteMarker?days?date()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The container of the Outposts bucket lifecycle expiration."]moduleLifecycleRuleFilter=structtypenonrect={prefix:Prefix.toption[@ocaml.doc"Prefix identifying one or more objects to which the rule applies. When you're using XML requests, you must replace special characters (such as carriage returns) in object keys with their equivalent XML entity codes. For more information, see XML-related object key constraints in the Amazon S3 User Guide."];tag:S3Tag.toption;and_:LifecycleRuleAndOperator.toption[@ocaml.doc"The container for the AND condition for the lifecycle rule."];objectSizeGreaterThan:ObjectSizeGreaterThanBytes.toption[@ocaml.doc"Minimum object size to which the rule applies."];objectSizeLessThan:ObjectSizeLessThanBytes.toption[@ocaml.doc"Maximum object size to which the rule applies."]}letmake?prefix=fun?tag->fun?and_->fun?objectSizeGreaterThan->fun?objectSizeLessThan->fun()->{prefix;tag;and_;objectSizeGreaterThan;objectSizeLessThan}letto_valuex=structure_to_value[("Prefix",(Option.mapx.prefix~f:Prefix.to_value));("Tag",(Option.mapx.tag~f:S3Tag.to_value));("And",(Option.mapx.and_~f:LifecycleRuleAndOperator.to_value));("ObjectSizeGreaterThan",(Option.mapx.objectSizeGreaterThan~f:ObjectSizeGreaterThanBytes.to_value));("ObjectSizeLessThan",(Option.mapx.objectSizeLessThan~f:ObjectSizeLessThanBytes.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letobjectSizeLessThan=(Option.map~f:ObjectSizeLessThanBytes.of_xml)(Xml.childxml_arg0"ObjectSizeLessThan")inletobjectSizeGreaterThan=(Option.map~f:ObjectSizeGreaterThanBytes.of_xml)(Xml.childxml_arg0"ObjectSizeGreaterThan")inletand_=(Option.map~f:LifecycleRuleAndOperator.of_xml)(Xml.childxml_arg0"And")inlettag=(Option.map~f:S3Tag.of_xml)(Xml.childxml_arg0"Tag")inletprefix=(Option.map~f:Prefix.of_xml)(Xml.childxml_arg0"Prefix")inmake?objectSizeLessThan?objectSizeGreaterThan?and_?tag?prefix()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letobjectSizeLessThan=field_mapjson__"ObjectSizeLessThan"ObjectSizeLessThanBytes.of_jsoninletobjectSizeGreaterThan=field_mapjson__"ObjectSizeGreaterThan"ObjectSizeGreaterThanBytes.of_jsoninletand_=field_mapjson__"And"LifecycleRuleAndOperator.of_jsoninlettag=field_mapjson__"Tag"S3Tag.of_jsoninletprefix=field_mapjson__"Prefix"Prefix.of_jsoninmake?objectSizeLessThan?objectSizeGreaterThan?and_?tag?prefix()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The container for the filter of the lifecycle rule."]moduleNoncurrentVersionExpiration=structtypenonrect={noncurrentDays:Days.toption[@ocaml.doc"Specifies the number of days an object is noncurrent before Amazon S3 can perform the associated action. For information about the noncurrent days calculations, see How Amazon S3 Calculates When an Object Became Noncurrent in the Amazon S3 User Guide."];newerNoncurrentVersions:NoncurrentVersionCount.toption[@ocaml.doc"Specifies how many noncurrent versions S3 on Outposts will retain. If there are this many more recent noncurrent versions, S3 on Outposts will take the associated action. For more information about noncurrent versions, see Lifecycle configuration elements in the Amazon S3 User Guide."]}letmake?noncurrentDays=fun?newerNoncurrentVersions->fun()->{noncurrentDays;newerNoncurrentVersions}letto_valuex=structure_to_value[("NoncurrentDays",(Option.mapx.noncurrentDays~f:Days.to_value));("NewerNoncurrentVersions",(Option.mapx.newerNoncurrentVersions~f:NoncurrentVersionCount.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnewerNoncurrentVersions=(Option.map~f:NoncurrentVersionCount.of_xml)(Xml.childxml_arg0"NewerNoncurrentVersions")inletnoncurrentDays=(Option.map~f:Days.of_xml)(Xml.childxml_arg0"NoncurrentDays")inmake?newerNoncurrentVersions?noncurrentDays()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnewerNoncurrentVersions=field_mapjson__"NewerNoncurrentVersions"NoncurrentVersionCount.of_jsoninletnoncurrentDays=field_mapjson__"NoncurrentDays"Days.of_jsoninmake?newerNoncurrentVersions?noncurrentDays()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The container of the noncurrent version expiration."]moduleNoncurrentVersionTransitionList=structtypenonrect=NoncurrentVersionTransition.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:NoncurrentVersionTransition.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:NoncurrentVersionTransition.of_xml)letof_jsonj=list_of_json~kind:"NoncurrentVersionTransitionList"~of_json:NoncurrentVersionTransition.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleTransitionList=structtypenonrect=Transition.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:Transition.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:Transition.of_xml)letof_jsonj=list_of_json~kind:"TransitionList"~of_json:Transition.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleObjectLambdaContentTransformation=structtypenonrect={awsLambda:AwsLambdaTransformation.toption[@ocaml.doc"A container for an Lambda function."]}letmake?awsLambda=fun()->{awsLambda}letto_valuex=structure_to_value[("AwsLambda",(Option.mapx.awsLambda~f:AwsLambdaTransformation.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letawsLambda=(Option.map~f:AwsLambdaTransformation.of_xml)(Xml.childxml_arg0"AwsLambda")inmake?awsLambda()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letawsLambda=field_mapjson__"AwsLambda"AwsLambdaTransformation.of_jsoninmake?awsLambda()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A container for AwsLambdaTransformation."]moduleObjectLambdaTransformationConfigurationActionsList=structtypenonrect=ObjectLambdaTransformationConfigurationAction.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ObjectLambdaTransformationConfigurationAction.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:ObjectLambdaTransformationConfigurationAction.of_xml)letof_jsonj=list_of_json~kind:"ObjectLambdaTransformationConfigurationActionsList"~of_json:ObjectLambdaTransformationConfigurationAction.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleRegionReport=structtypenonrect={bucket:BucketName.toption[@ocaml.doc"The name of the bucket."];region:RegionName.toption[@ocaml.doc"The name of the Region."];bucketAccountId:AccountId.toption[@ocaml.doc"The Amazon Web Services account ID that owns the Amazon S3 bucket that's associated with this Multi-Region Access Point."]}letmake?bucket=fun?region->fun?bucketAccountId->fun()->{bucket;region;bucketAccountId}letto_valuex=structure_to_value[("Bucket",(Option.mapx.bucket~f:BucketName.to_value));("Region",(Option.mapx.region~f:RegionName.to_value));("BucketAccountId",(Option.mapx.bucketAccountId~f:AccountId.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letbucketAccountId=(Option.map~f:AccountId.of_xml)(Xml.childxml_arg0"BucketAccountId")inletregion=(Option.map~f:RegionName.of_xml)(Xml.childxml_arg0"Region")inletbucket=(Option.map~f:BucketName.of_xml)(Xml.childxml_arg0"Bucket")inmake?bucketAccountId?region?bucket()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letbucketAccountId=field_mapjson__"BucketAccountId"AccountId.of_jsoninletregion=field_mapjson__"Region"RegionName.of_jsoninletbucket=field_mapjson__"Bucket"BucketName.of_jsoninmake?bucketAccountId?region?bucket()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A combination of a bucket and Region that's part of a Multi-Region Access Point."]moduleJobNumberOfTasksFailed=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_valueendmoduleJobNumberOfTasksSucceeded=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_valueendmoduleJobTimers=structtypenonrect={elapsedTimeInActiveSeconds:JobTimeInStateSeconds.toption[@ocaml.doc"Indicates the elapsed time in seconds the job has been in the Active job state."]}letmake?elapsedTimeInActiveSeconds=fun()->{elapsedTimeInActiveSeconds}letto_valuex=structure_to_value[("ElapsedTimeInActiveSeconds",(Option.mapx.elapsedTimeInActiveSeconds~f:JobTimeInStateSeconds.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letelapsedTimeInActiveSeconds=(Option.map~f:JobTimeInStateSeconds.of_xml)(Xml.childxml_arg0"ElapsedTimeInActiveSeconds")inmake?elapsedTimeInActiveSeconds()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letelapsedTimeInActiveSeconds=field_mapjson__"ElapsedTimeInActiveSeconds"JobTimeInStateSeconds.of_jsoninmake?elapsedTimeInActiveSeconds()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Provides timing details for the job."]moduleJobTotalNumberOfTasks=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_valueendmoduleVpcId=structtypenonrect=stringletcontext_="VpcId"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:"VpcId"jletto_json=simple_to_jsonto_valueendmoduleObjectLambdaAccessPointAliasStatus=structtypenonrect=|PROVISIONING|READY|Non_static_idofstringletmakei=iletto_string=function|PROVISIONING->"PROVISIONING"|READY->"READY"|Non_static_ids->sletof_string=function|"PROVISIONING"->PROVISIONING|"READY"->READY|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 ObjectLambdaAccessPointAliasStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ObjectLambdaAccessPointAliasStatus"j)letto_json=simple_to_jsonto_valueendmoduleObjectLambdaAccessPointAliasValue=structtypenonrect=stringletcontext_="ObjectLambdaAccessPointAliasValue"letmakei=letopenResultinok_or_failwith((check_string_mini~min:3)>>=(fun()->(check_string_maxi~max:63)>>=(fun()->check_patterni~pattern:"^[0-9a-z\\\\-]{3,63}")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"ObjectLambdaAccessPointAliasValue"jletto_json=simple_to_jsonto_valueendmoduleS3Prefix=structtypenonrect=stringletcontext_="S3Prefix"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:2000)>>=(fun()->check_patterni~pattern:"^.+$")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"S3Prefix"jletto_json=simple_to_jsonto_valueendmoduleGranteeIdentifier=structtypenonrect=stringletcontext_="GranteeIdentifier"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:"GranteeIdentifier"jletto_json=simple_to_jsonto_valueendmoduleGranteeType=structtypenonrect=|DIRECTORY_USER|DIRECTORY_GROUP|IAM|Non_static_idofstringletmakei=iletto_string=function|DIRECTORY_USER->"DIRECTORY_USER"|DIRECTORY_GROUP->"DIRECTORY_GROUP"|IAM->"IAM"|Non_static_ids->sletof_string=function|"DIRECTORY_USER"->DIRECTORY_USER|"DIRECTORY_GROUP"->DIRECTORY_GROUP|"IAM"->IAM|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 GranteeType"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"GranteeType"j)letto_json=simple_to_jsonto_valueendmoduleMultiRegionAccessPointName=structtypenonrect=stringletcontext_="MultiRegionAccessPointName"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:50)>>=(fun()->check_patterni~pattern:"^[a-z0-9][-a-z0-9]{1,48}[a-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:"MultiRegionAccessPointName"jletto_json=simple_to_jsonto_valueendmodulePublicAccessBlockConfiguration=structtypenonrect={blockPublicAcls:Setting.toption[@ocaml.doc"Specifies whether Amazon S3 should block public access control lists (ACLs) for buckets in this account. Setting this element to TRUE causes the following behavior: PutBucketAcl and PutObjectAcl calls fail if the specified ACL is public. PUT Object calls fail if the request includes a public ACL. PUT Bucket calls fail if the request includes a public ACL. Enabling this setting doesn't affect existing policies or ACLs. This property is not supported for Amazon S3 on Outposts."];ignorePublicAcls:Setting.toption[@ocaml.doc"Specifies whether Amazon S3 should ignore public ACLs for buckets in this account. Setting this element to TRUE causes Amazon S3 to ignore all public ACLs on buckets in this account and any objects that they contain. Enabling this setting doesn't affect the persistence of any existing ACLs and doesn't prevent new public ACLs from being set. This property is not supported for Amazon S3 on Outposts."];blockPublicPolicy:Setting.toption[@ocaml.doc"Specifies whether Amazon S3 should block public bucket policies for buckets in this account. Setting this element to TRUE causes Amazon S3 to reject calls to PUT Bucket policy if the specified bucket policy allows public access. Enabling this setting doesn't affect existing bucket policies. This property is not supported for Amazon S3 on Outposts."];restrictPublicBuckets:Setting.toption[@ocaml.doc"Specifies whether Amazon S3 should restrict public bucket policies for buckets in this account. Setting this element to TRUE restricts access to buckets with public policies to only Amazon Web Services service principals and authorized users within this account. Enabling this setting doesn't affect previously stored bucket policies, except that public and cross-account access within any public bucket policy, including non-public delegation to specific accounts, is blocked. This property is not supported for Amazon S3 on Outposts."]}letmake?blockPublicAcls=fun?ignorePublicAcls->fun?blockPublicPolicy->fun?restrictPublicBuckets->fun()->{blockPublicAcls;ignorePublicAcls;blockPublicPolicy;restrictPublicBuckets}letto_valuex=structure_to_value[("BlockPublicAcls",(Option.mapx.blockPublicAcls~f:Setting.to_value));("IgnorePublicAcls",(Option.mapx.ignorePublicAcls~f:Setting.to_value));("BlockPublicPolicy",(Option.mapx.blockPublicPolicy~f:Setting.to_value));("RestrictPublicBuckets",(Option.mapx.restrictPublicBuckets~f:Setting.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letrestrictPublicBuckets=(Option.map~f:Setting.of_xml)(Xml.childxml_arg0"RestrictPublicBuckets")inletblockPublicPolicy=(Option.map~f:Setting.of_xml)(Xml.childxml_arg0"BlockPublicPolicy")inletignorePublicAcls=(Option.map~f:Setting.of_xml)(Xml.childxml_arg0"IgnorePublicAcls")inletblockPublicAcls=(Option.map~f:Setting.of_xml)(Xml.childxml_arg0"BlockPublicAcls")inmake?restrictPublicBuckets?blockPublicPolicy?ignorePublicAcls?blockPublicAcls()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letrestrictPublicBuckets=field_mapjson__"RestrictPublicBuckets"Setting.of_jsoninletblockPublicPolicy=field_mapjson__"BlockPublicPolicy"Setting.of_jsoninletignorePublicAcls=field_mapjson__"IgnorePublicAcls"Setting.of_jsoninletblockPublicAcls=field_mapjson__"BlockPublicAcls"Setting.of_jsoninmake?restrictPublicBuckets?blockPublicPolicy?ignorePublicAcls?blockPublicAcls()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The PublicAccessBlock configuration that you want to apply to this Amazon S3 account. You can enable the configuration options in any combination. For more information about when Amazon S3 considers a bucket or object public, see The Meaning of \"Public\" in the Amazon S3 User Guide. This data type is not supported for Amazon S3 on Outposts."]moduleRegionCreationList=structtypenonrect=Region.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:Region.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:Region.of_xml)letof_jsonj=list_of_json~kind:"RegionCreationList"~of_json:Region.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmodulePolicy=structtypenonrect=stringletcontext_="Policy"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:"Policy"jletto_json=simple_to_jsonto_valueendmoduleMultiRegionAccessPointRegionalResponseList=structtypenonrect=MultiRegionAccessPointRegionalResponse.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:MultiRegionAccessPointRegionalResponse.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:MultiRegionAccessPointRegionalResponse.of_xml)letof_jsonj=list_of_json~kind:"MultiRegionAccessPointRegionalResponseList"~of_json:MultiRegionAccessPointRegionalResponse.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleJobFailureCode=structtypenonrect=stringletcontext_="JobFailureCode"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:"JobFailureCode"jletto_json=simple_to_jsonto_valueendmoduleJobFailureReason=structtypenonrect=stringletcontext_="JobFailureReason"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:"JobFailureReason"jletto_json=simple_to_jsonto_valueendmoduleS3KeyArnString=structtypenonrect=stringletcontext_="S3KeyArnString"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:2000)>>=(fun()->check_patterni~pattern:"arn:[^:]+:s3:.*")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"S3KeyArnString"jletto_json=simple_to_jsonto_valueendmoduleS3ObjectVersionId=structtypenonrect=stringletcontext_="S3ObjectVersionId"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:2000)>>=(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:"S3ObjectVersionId"jletto_json=simple_to_jsonto_valueendmoduleJobManifestFieldList=structtypenonrect=JobManifestFieldName.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:JobManifestFieldName.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:JobManifestFieldName.of_xml)letof_jsonj=list_of_json~kind:"JobManifestFieldList"~of_json:JobManifestFieldName.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleJobManifestFormat=structtypenonrect=|S3BatchOperations_CSV_20180820|S3InventoryReport_CSV_20161130|Non_static_idofstringletmakei=iletto_string=function|S3BatchOperations_CSV_20180820->"S3BatchOperations_CSV_20180820"|S3InventoryReport_CSV_20161130->"S3InventoryReport_CSV_20161130"|Non_static_ids->sletof_string=function|"S3BatchOperations_CSV_20180820"->S3BatchOperations_CSV_20180820|"S3InventoryReport_CSV_20161130"->S3InventoryReport_CSV_20161130|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 JobManifestFormat"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"JobManifestFormat"j)letto_json=simple_to_jsonto_valueendmoduleJobManifestGeneratorFilter=structtypenonrect={eligibleForReplication:Boolean.toption[@ocaml.doc"Include objects in the generated manifest only if they are eligible for replication according to the Replication configuration on the source bucket."];createdAfter:ObjectCreationTime.toption[@ocaml.doc"If provided, the generated manifest includes only source bucket objects that were created after this time."];createdBefore:ObjectCreationTime.toption[@ocaml.doc"If provided, the generated manifest includes only source bucket objects that were created before this time."];objectReplicationStatuses:ReplicationStatusFilterList.toption[@ocaml.doc"If provided, the generated manifest includes only source bucket objects that have one of the specified Replication statuses."];keyNameConstraint:KeyNameConstraint.toption[@ocaml.doc"If provided, the generated manifest includes only source bucket objects whose object keys match the string constraints specified for MatchAnyPrefix, MatchAnySuffix, and MatchAnySubstring."];objectSizeGreaterThanBytes:ObjectSizeGreaterThanBytes.toption[@ocaml.doc"If provided, the generated manifest includes only source bucket objects whose file size is greater than the specified number of bytes."];objectSizeLessThanBytes:ObjectSizeLessThanBytes.toption[@ocaml.doc"If provided, the generated manifest includes only source bucket objects whose file size is less than the specified number of bytes."];matchAnyStorageClass:StorageClassList.toption[@ocaml.doc"If provided, the generated manifest includes only source bucket objects that are stored with the specified storage class."];matchAnyObjectEncryption:ObjectEncryptionFilterList.toption[@ocaml.doc"If provided, the generated object list includes only source bucket objects with the indicated server-side encryption type (SSE-S3, SSE-KMS, DSSE-KMS, SSE-C, or NOT-SSE)."]}letmake?eligibleForReplication=fun?createdAfter->fun?createdBefore->fun?objectReplicationStatuses->fun?keyNameConstraint->fun?objectSizeGreaterThanBytes->fun?objectSizeLessThanBytes->fun?matchAnyStorageClass->fun?matchAnyObjectEncryption->fun()->{eligibleForReplication;createdAfter;createdBefore;objectReplicationStatuses;keyNameConstraint;objectSizeGreaterThanBytes;objectSizeLessThanBytes;matchAnyStorageClass;matchAnyObjectEncryption}letto_valuex=structure_to_value[("EligibleForReplication",(Option.mapx.eligibleForReplication~f:Boolean.to_value));("CreatedAfter",(Option.mapx.createdAfter~f:ObjectCreationTime.to_value));("CreatedBefore",(Option.mapx.createdBefore~f:ObjectCreationTime.to_value));("ObjectReplicationStatuses",(Option.mapx.objectReplicationStatuses~f:ReplicationStatusFilterList.to_value));("KeyNameConstraint",(Option.mapx.keyNameConstraint~f:KeyNameConstraint.to_value));("ObjectSizeGreaterThanBytes",(Option.mapx.objectSizeGreaterThanBytes~f:ObjectSizeGreaterThanBytes.to_value));("ObjectSizeLessThanBytes",(Option.mapx.objectSizeLessThanBytes~f:ObjectSizeLessThanBytes.to_value));("MatchAnyStorageClass",(Option.mapx.matchAnyStorageClass~f:StorageClassList.to_value));("MatchAnyObjectEncryption",(Option.mapx.matchAnyObjectEncryption~f:ObjectEncryptionFilterList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmatchAnyObjectEncryption=(Option.map~f:ObjectEncryptionFilterList.of_xml)(Xml.childxml_arg0"MatchAnyObjectEncryption")inletmatchAnyStorageClass=(Option.map~f:StorageClassList.of_xml)(Xml.childxml_arg0"MatchAnyStorageClass")inletobjectSizeLessThanBytes=(Option.map~f:ObjectSizeLessThanBytes.of_xml)(Xml.childxml_arg0"ObjectSizeLessThanBytes")inletobjectSizeGreaterThanBytes=(Option.map~f:ObjectSizeGreaterThanBytes.of_xml)(Xml.childxml_arg0"ObjectSizeGreaterThanBytes")inletkeyNameConstraint=(Option.map~f:KeyNameConstraint.of_xml)(Xml.childxml_arg0"KeyNameConstraint")inletobjectReplicationStatuses=(Option.map~f:ReplicationStatusFilterList.of_xml)(Xml.childxml_arg0"ObjectReplicationStatuses")inletcreatedBefore=(Option.map~f:ObjectCreationTime.of_xml)(Xml.childxml_arg0"CreatedBefore")inletcreatedAfter=(Option.map~f:ObjectCreationTime.of_xml)(Xml.childxml_arg0"CreatedAfter")inleteligibleForReplication=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"EligibleForReplication")inmake?matchAnyObjectEncryption?matchAnyStorageClass?objectSizeLessThanBytes?objectSizeGreaterThanBytes?keyNameConstraint?objectReplicationStatuses?createdBefore?createdAfter?eligibleForReplication()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmatchAnyObjectEncryption=field_mapjson__"MatchAnyObjectEncryption"ObjectEncryptionFilterList.of_jsoninletmatchAnyStorageClass=field_mapjson__"MatchAnyStorageClass"StorageClassList.of_jsoninletobjectSizeLessThanBytes=field_mapjson__"ObjectSizeLessThanBytes"ObjectSizeLessThanBytes.of_jsoninletobjectSizeGreaterThanBytes=field_mapjson__"ObjectSizeGreaterThanBytes"ObjectSizeGreaterThanBytes.of_jsoninletkeyNameConstraint=field_mapjson__"KeyNameConstraint"KeyNameConstraint.of_jsoninletobjectReplicationStatuses=field_mapjson__"ObjectReplicationStatuses"ReplicationStatusFilterList.of_jsoninletcreatedBefore=field_mapjson__"CreatedBefore"ObjectCreationTime.of_jsoninletcreatedAfter=field_mapjson__"CreatedAfter"ObjectCreationTime.of_jsoninleteligibleForReplication=field_mapjson__"EligibleForReplication"Boolean.of_jsoninmake?matchAnyObjectEncryption?matchAnyStorageClass?objectSizeLessThanBytes?objectSizeGreaterThanBytes?keyNameConstraint?objectReplicationStatuses?createdBefore?createdAfter?eligibleForReplication()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The filter used to describe a set of objects for the job's manifest."]moduleS3ManifestOutputLocation=structtypenonrect={expectedManifestBucketOwner:AccountId.toption[@ocaml.doc"The Account ID that owns the bucket the generated manifest is written to."];bucket:S3BucketArnString.t[@ocaml.doc"The bucket ARN the generated manifest should be written to. Directory buckets - Directory buckets aren't supported as the buckets to store the generated manifest."];manifestPrefix:ManifestPrefixString.toption[@ocaml.doc"Prefix identifying one or more objects to which the manifest applies."];manifestEncryption:GeneratedManifestEncryption.toption[@ocaml.doc"Specifies what encryption should be used when the generated manifest objects are written."];manifestFormat:GeneratedManifestFormat.t[@ocaml.doc"The format of the generated manifest."]}letcontext_="S3ManifestOutputLocation"letmake?expectedManifestBucketOwner=fun?manifestPrefix->fun?manifestEncryption->fun~bucket->fun~manifestFormat->fun()->{expectedManifestBucketOwner;manifestPrefix;manifestEncryption;bucket;manifestFormat}letto_valuex=structure_to_value[("ExpectedManifestBucketOwner",(Option.mapx.expectedManifestBucketOwner~f:AccountId.to_value));("Bucket",(Some(S3BucketArnString.to_valuex.bucket)));("ManifestPrefix",(Option.mapx.manifestPrefix~f:ManifestPrefixString.to_value));("ManifestEncryption",(Option.mapx.manifestEncryption~f:GeneratedManifestEncryption.to_value));("ManifestFormat",(Some(GeneratedManifestFormat.to_valuex.manifestFormat)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmanifestFormat=GeneratedManifestFormat.of_xml(Xml.child_exn~context:context_xml_arg0"ManifestFormat")inletmanifestEncryption=(Option.map~f:GeneratedManifestEncryption.of_xml)(Xml.childxml_arg0"ManifestEncryption")inletmanifestPrefix=(Option.map~f:ManifestPrefixString.of_xml)(Xml.childxml_arg0"ManifestPrefix")inletbucket=S3BucketArnString.of_xml(Xml.child_exn~context:context_xml_arg0"Bucket")inletexpectedManifestBucketOwner=(Option.map~f:AccountId.of_xml)(Xml.childxml_arg0"ExpectedManifestBucketOwner")inmake~manifestFormat?manifestEncryption?manifestPrefix~bucket?expectedManifestBucketOwner()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmanifestFormat=field_map_exnjson__"ManifestFormat"GeneratedManifestFormat.of_jsoninletmanifestEncryption=field_mapjson__"ManifestEncryption"GeneratedManifestEncryption.of_jsoninletmanifestPrefix=field_mapjson__"ManifestPrefix"ManifestPrefixString.of_jsoninletbucket=field_map_exnjson__"Bucket"S3BucketArnString.of_jsoninletexpectedManifestBucketOwner=field_mapjson__"ExpectedManifestBucketOwner"AccountId.of_jsoninmake~manifestFormat?manifestEncryption?manifestPrefix~bucket?expectedManifestBucketOwner()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Location details for where the generated manifest should be written."]moduleUserArguments=structtypenonrect=(NonEmptyMaxLength64String.t*MaxLength1024String.t)listletmakei=letopenResultinok_or_failwith((check_list_maxi~max:10)>>=(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->((NonEmptyMaxLength64String.of_stringchopped),(MaxLength1024String.of_stringv))))))letto_valuexs=(xs|>(List.map~f:(fun(x,y)->(NonEmptyMaxLength64String.to_valuex)|>(funx->(MaxLength1024String.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:NonEmptyMaxLength64String.of_string~of_json:MaxLength1024String.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleComputeObjectChecksumAlgorithm=structtypenonrect=|CRC32|CRC32C|CRC64NVME|MD5|SHA1|SHA256|SHA512|XXHASH64|XXHASH3|XXHASH128|Non_static_idofstringletmakei=iletto_string=function|CRC32->"CRC32"|CRC32C->"CRC32C"|CRC64NVME->"CRC64NVME"|MD5->"MD5"|SHA1->"SHA1"|SHA256->"SHA256"|SHA512->"SHA512"|XXHASH64->"XXHASH64"|XXHASH3->"XXHASH3"|XXHASH128->"XXHASH128"|Non_static_ids->sletof_string=function|"CRC32"->CRC32|"CRC32C"->CRC32C|"CRC64NVME"->CRC64NVME|"MD5"->MD5|"SHA1"->SHA1|"SHA256"->SHA256|"SHA512"->SHA512|"XXHASH64"->XXHASH64|"XXHASH3"->XXHASH3|"XXHASH128"->XXHASH128|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 ComputeObjectChecksumAlgorithm"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ComputeObjectChecksumAlgorithm"j)letto_json=simple_to_jsonto_valueendmoduleComputeObjectChecksumType=structtypenonrect=|FULL_OBJECT|COMPOSITE|Non_static_idofstringletmakei=iletto_string=function|FULL_OBJECT->"FULL_OBJECT"|COMPOSITE->"COMPOSITE"|Non_static_ids->sletof_string=function|"FULL_OBJECT"->FULL_OBJECT|"COMPOSITE"->COMPOSITE|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 ComputeObjectChecksumType"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ComputeObjectChecksumType"j)letto_json=simple_to_jsonto_valueendmoduleNonEmptyMaxLength2048String=structtypenonrect=stringletcontext_="NonEmptyMaxLength2048String"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:2048)>>=(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:"NonEmptyMaxLength2048String"jletto_json=simple_to_jsonto_valueendmoduleS3ChecksumAlgorithm=structtypenonrect=|CRC32|CRC32C|SHA1|SHA256|CRC64NVME|SHA512|MD5|XXHASH64|XXHASH3|XXHASH128|Non_static_idofstringletmakei=iletto_string=function|CRC32->"CRC32"|CRC32C->"CRC32C"|SHA1->"SHA1"|SHA256->"SHA256"|CRC64NVME->"CRC64NVME"|SHA512->"SHA512"|MD5->"MD5"|XXHASH64->"XXHASH64"|XXHASH3->"XXHASH3"|XXHASH128->"XXHASH128"|Non_static_ids->sletof_string=function|"CRC32"->CRC32|"CRC32C"->CRC32C|"SHA1"->SHA1|"SHA256"->SHA256|"CRC64NVME"->CRC64NVME|"SHA512"->SHA512|"MD5"->MD5|"XXHASH64"->XXHASH64|"XXHASH3"->XXHASH3|"XXHASH128"->XXHASH128|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 S3ChecksumAlgorithm"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"S3ChecksumAlgorithm"j)letto_json=simple_to_jsonto_valueendmoduleS3MetadataDirective=structtypenonrect=|COPY|REPLACE|Non_static_idofstringletmakei=iletto_string=function|COPY->"COPY"|REPLACE->"REPLACE"|Non_static_ids->sletof_string=function|"COPY"->COPY|"REPLACE"->REPLACE|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 S3MetadataDirective"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"S3MetadataDirective"j)letto_json=simple_to_jsonto_valueendmoduleS3ObjectLockMode=structtypenonrect=|COMPLIANCE|GOVERNANCE|Non_static_idofstringletmakei=iletto_string=function|COMPLIANCE->"COMPLIANCE"|GOVERNANCE->"GOVERNANCE"|Non_static_ids->sletof_string=function|"COMPLIANCE"->COMPLIANCE|"GOVERNANCE"->GOVERNANCE|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 S3ObjectLockMode"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"S3ObjectLockMode"j)letto_json=simple_to_jsonto_valueendmoduleS3ObjectMetadata=structtypenonrect={cacheControl:NonEmptyMaxLength1024String.toption;contentDisposition:NonEmptyMaxLength1024String.toption;contentEncoding:NonEmptyMaxLength1024String.toption;contentLanguage:NonEmptyMaxLength1024String.toption;userMetadata:S3UserMetadata.toption;contentLength:S3ContentLength.toption[@ocaml.doc"This member has been deprecated."];contentMD5:NonEmptyMaxLength1024String.toption[@ocaml.doc"This member has been deprecated."];contentType:NonEmptyMaxLength1024String.toption;httpExpiresDate:TimeStamp.toption;requesterCharged:Boolean.toption[@ocaml.doc"This member has been deprecated."];sSEAlgorithm:S3SSEAlgorithm.toption[@ocaml.doc"The server-side encryption algorithm used when storing objects in Amazon S3. Directory buckets - For directory buckets, there are only two supported options for server-side encryption: server-side encryption with Amazon S3 managed keys (SSE-S3) (AES256) and server-side encryption with KMS keys (SSE-KMS) (KMS). For more information, see Protecting data with server-side encryption in the Amazon S3 User Guide. For the Copy operation in Batch Operations, see S3CopyObjectOperation."]}letmake?cacheControl=fun?contentDisposition->fun?contentEncoding->fun?contentLanguage->fun?userMetadata->fun?contentLength->fun?contentMD5->fun?contentType->fun?httpExpiresDate->fun?requesterCharged->fun?sSEAlgorithm->fun()->{cacheControl;contentDisposition;contentEncoding;contentLanguage;userMetadata;contentLength;contentMD5;contentType;httpExpiresDate;requesterCharged;sSEAlgorithm}letto_valuex=structure_to_value[("CacheControl",(Option.mapx.cacheControl~f:NonEmptyMaxLength1024String.to_value));("ContentDisposition",(Option.mapx.contentDisposition~f:NonEmptyMaxLength1024String.to_value));("ContentEncoding",(Option.mapx.contentEncoding~f:NonEmptyMaxLength1024String.to_value));("ContentLanguage",(Option.mapx.contentLanguage~f:NonEmptyMaxLength1024String.to_value));("UserMetadata",(Option.mapx.userMetadata~f:S3UserMetadata.to_value));("ContentLength",(Option.mapx.contentLength~f:S3ContentLength.to_value));("ContentMD5",(Option.mapx.contentMD5~f:NonEmptyMaxLength1024String.to_value));("ContentType",(Option.mapx.contentType~f:NonEmptyMaxLength1024String.to_value));("HttpExpiresDate",(Option.mapx.httpExpiresDate~f:TimeStamp.to_value));("RequesterCharged",(Option.mapx.requesterCharged~f:Boolean.to_value));("SSEAlgorithm",(Option.mapx.sSEAlgorithm~f:S3SSEAlgorithm.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letsSEAlgorithm=(Option.map~f:S3SSEAlgorithm.of_xml)(Xml.childxml_arg0"SSEAlgorithm")inletrequesterCharged=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"RequesterCharged")inlethttpExpiresDate=(Option.map~f:TimeStamp.of_xml)(Xml.childxml_arg0"HttpExpiresDate")inletcontentType=(Option.map~f:NonEmptyMaxLength1024String.of_xml)(Xml.childxml_arg0"ContentType")inletcontentMD5=(Option.map~f:NonEmptyMaxLength1024String.of_xml)(Xml.childxml_arg0"ContentMD5")inletcontentLength=(Option.map~f:S3ContentLength.of_xml)(Xml.childxml_arg0"ContentLength")inletuserMetadata=(Option.map~f:S3UserMetadata.of_xml)(Xml.childxml_arg0"UserMetadata")inletcontentLanguage=(Option.map~f:NonEmptyMaxLength1024String.of_xml)(Xml.childxml_arg0"ContentLanguage")inletcontentEncoding=(Option.map~f:NonEmptyMaxLength1024String.of_xml)(Xml.childxml_arg0"ContentEncoding")inletcontentDisposition=(Option.map~f:NonEmptyMaxLength1024String.of_xml)(Xml.childxml_arg0"ContentDisposition")inletcacheControl=(Option.map~f:NonEmptyMaxLength1024String.of_xml)(Xml.childxml_arg0"CacheControl")inmake?sSEAlgorithm?requesterCharged?httpExpiresDate?contentType?contentMD5?contentLength?userMetadata?contentLanguage?contentEncoding?contentDisposition?cacheControl()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letsSEAlgorithm=field_mapjson__"SSEAlgorithm"S3SSEAlgorithm.of_jsoninletrequesterCharged=field_mapjson__"RequesterCharged"Boolean.of_jsoninlethttpExpiresDate=field_mapjson__"HttpExpiresDate"TimeStamp.of_jsoninletcontentType=field_mapjson__"ContentType"NonEmptyMaxLength1024String.of_jsoninletcontentMD5=field_mapjson__"ContentMD5"NonEmptyMaxLength1024String.of_jsoninletcontentLength=field_mapjson__"ContentLength"S3ContentLength.of_jsoninletuserMetadata=field_mapjson__"UserMetadata"S3UserMetadata.of_jsoninletcontentLanguage=field_mapjson__"ContentLanguage"NonEmptyMaxLength1024String.of_jsoninletcontentEncoding=field_mapjson__"ContentEncoding"NonEmptyMaxLength1024String.of_jsoninletcontentDisposition=field_mapjson__"ContentDisposition"NonEmptyMaxLength1024String.of_jsoninletcacheControl=field_mapjson__"CacheControl"NonEmptyMaxLength1024String.of_jsoninmake?sSEAlgorithm?requesterCharged?httpExpiresDate?contentType?contentMD5?contentLength?userMetadata?contentLanguage?contentEncoding?contentDisposition?cacheControl()letto_jsonv=composed_to_jsonto_valuevendmoduleS3RegionalOrS3ExpressBucketArnString=structtypenonrect=stringletcontext_="S3RegionalOrS3ExpressBucketArnString"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:128)>>=(fun()->check_patterni~pattern:"arn:[^:]+:(s3|s3express):.*")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"S3RegionalOrS3ExpressBucketArnString"jletto_json=simple_to_jsonto_valueendmoduleS3ExpirationInDays=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 S3ExpirationInDays"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleS3GlacierJobTier=structtypenonrect=|BULK|STANDARD|Non_static_idofstringletmakei=iletto_string=function|BULK->"BULK"|STANDARD->"STANDARD"|Non_static_ids->sletof_string=function|"BULK"->BULK|"STANDARD"->STANDARD|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 S3GlacierJobTier"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"S3GlacierJobTier"j)letto_json=simple_to_jsonto_valueendmoduleS3AccessControlPolicy=structtypenonrect={accessControlList:S3AccessControlList.toption;cannedAccessControlList:S3CannedAccessControlList.toption}letmake?accessControlList=fun?cannedAccessControlList->fun()->{accessControlList;cannedAccessControlList}letto_valuex=structure_to_value[("AccessControlList",(Option.mapx.accessControlList~f:S3AccessControlList.to_value));("CannedAccessControlList",(Option.mapx.cannedAccessControlList~f:S3CannedAccessControlList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcannedAccessControlList=(Option.map~f:S3CannedAccessControlList.of_xml)(Xml.childxml_arg0"CannedAccessControlList")inletaccessControlList=(Option.map~f:S3AccessControlList.of_xml)(Xml.childxml_arg0"AccessControlList")inmake?cannedAccessControlList?accessControlList()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcannedAccessControlList=field_mapjson__"CannedAccessControlList"S3CannedAccessControlList.of_jsoninletaccessControlList=field_mapjson__"AccessControlList"S3AccessControlList.of_jsoninmake?cannedAccessControlList?accessControlList()letto_jsonv=composed_to_jsonto_valuevendmoduleS3ObjectLockLegalHold=structtypenonrect={status:S3ObjectLockLegalHoldStatus.t[@ocaml.doc"The Object Lock legal hold status to be applied to all objects in the Batch Operations job."]}letcontext_="S3ObjectLockLegalHold"letmake~status=fun()->{status}letto_valuex=structure_to_value[("Status",(Some(S3ObjectLockLegalHoldStatus.to_valuex.status)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstatus=S3ObjectLockLegalHoldStatus.of_xml(Xml.child_exn~context:context_xml_arg0"Status")inmake~status()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstatus=field_map_exnjson__"Status"S3ObjectLockLegalHoldStatus.of_jsoninmake~status()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Whether S3 Object Lock legal hold will be applied to objects in an S3 Batch Operations job."]moduleS3Retention=structtypenonrect={retainUntilDate:TimeStamp.toption[@ocaml.doc"The date when the applied Object Lock retention will expire on all objects set by the Batch Operations job."];mode:S3ObjectLockRetentionMode.toption[@ocaml.doc"The Object Lock retention mode to be applied to all objects in the Batch Operations job."]}letmake?retainUntilDate=fun?mode->fun()->{retainUntilDate;mode}letto_valuex=structure_to_value[("RetainUntilDate",(Option.mapx.retainUntilDate~f:TimeStamp.to_value));("Mode",(Option.mapx.mode~f:S3ObjectLockRetentionMode.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmode=(Option.map~f:S3ObjectLockRetentionMode.of_xml)(Xml.childxml_arg0"Mode")inletretainUntilDate=(Option.map~f:TimeStamp.of_xml)(Xml.childxml_arg0"RetainUntilDate")inmake?mode?retainUntilDate()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmode=field_mapjson__"Mode"S3ObjectLockRetentionMode.of_jsoninletretainUntilDate=field_mapjson__"RetainUntilDate"TimeStamp.of_jsoninmake?mode?retainUntilDate()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains the S3 Object Lock retention mode to be applied to all objects in the S3 Batch Operations job. If you don't provide Mode and RetainUntilDate data types in your operation, you will remove the retention from your objects. For more information, see Using S3 Object Lock retention with S3 Batch Operations in the Amazon S3 User Guide."]moduleObjectEncryption=structtypenonrect={sSEKMS:S3UpdateObjectEncryptionSSEKMS.toption[@ocaml.doc"Specifies to update the object encryption type to server-side encryption with Key Management Service (KMS) keys (SSE-KMS)."]}letmake?sSEKMS=fun()->{sSEKMS}letto_valuex=structure_to_value[("SSE-KMS",(Option.mapx.sSEKMS~f:S3UpdateObjectEncryptionSSEKMS.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letsSEKMS=(Option.map~f:S3UpdateObjectEncryptionSSEKMS.of_xml)(Xml.childxml_arg0"SSE-KMS")inmake?sSEKMS()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letsSEKMS=field_mapjson__"SSEKMS"S3UpdateObjectEncryptionSSEKMS.of_jsoninmake?sSEKMS()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The updated server-side encryption type for this object. The UpdateObjectEncryption operation supports the SSE-KMS encryption type. Valid Values: SSEKMS"]moduleStorageLensGroupAndOperator=structtypenonrect={matchAnyPrefix:MatchAnyPrefix.toption[@ocaml.doc"Contains a list of prefixes. At least one prefix must be specified. Up to 10 prefixes are allowed."];matchAnySuffix:MatchAnySuffix.toption[@ocaml.doc"Contains a list of suffixes. At least one suffix must be specified. Up to 10 suffixes are allowed."];matchAnyTag:MatchAnyTag.toption[@ocaml.doc"Contains the list of object tags. At least one object tag must be specified. Up to 10 object tags are allowed."];matchObjectAge:MatchObjectAge.toption[@ocaml.doc"Contains DaysGreaterThan and DaysLessThan to define the object age range (minimum and maximum number of days)."];matchObjectSize:MatchObjectSize.toption[@ocaml.doc"Contains BytesGreaterThan and BytesLessThan to define the object size range (minimum and maximum number of Bytes)."]}letmake?matchAnyPrefix=fun?matchAnySuffix->fun?matchAnyTag->fun?matchObjectAge->fun?matchObjectSize->fun()->{matchAnyPrefix;matchAnySuffix;matchAnyTag;matchObjectAge;matchObjectSize}letto_valuex=structure_to_value[("MatchAnyPrefix",(Option.mapx.matchAnyPrefix~f:MatchAnyPrefix.to_value));("MatchAnySuffix",(Option.mapx.matchAnySuffix~f:MatchAnySuffix.to_value));("MatchAnyTag",(Option.mapx.matchAnyTag~f:MatchAnyTag.to_value));("MatchObjectAge",(Option.mapx.matchObjectAge~f:MatchObjectAge.to_value));("MatchObjectSize",(Option.mapx.matchObjectSize~f:MatchObjectSize.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmatchObjectSize=(Option.map~f:MatchObjectSize.of_xml)(Xml.childxml_arg0"MatchObjectSize")inletmatchObjectAge=(Option.map~f:MatchObjectAge.of_xml)(Xml.childxml_arg0"MatchObjectAge")inletmatchAnyTag=(Option.map~f:MatchAnyTag.of_xml)(Xml.childxml_arg0"MatchAnyTag")inletmatchAnySuffix=(Option.map~f:MatchAnySuffix.of_xml)(Xml.childxml_arg0"MatchAnySuffix")inletmatchAnyPrefix=(Option.map~f:MatchAnyPrefix.of_xml)(Xml.childxml_arg0"MatchAnyPrefix")inmake?matchObjectSize?matchObjectAge?matchAnyTag?matchAnySuffix?matchAnyPrefix()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmatchObjectSize=field_mapjson__"MatchObjectSize"MatchObjectSize.of_jsoninletmatchObjectAge=field_mapjson__"MatchObjectAge"MatchObjectAge.of_jsoninletmatchAnyTag=field_mapjson__"MatchAnyTag"MatchAnyTag.of_jsoninletmatchAnySuffix=field_mapjson__"MatchAnySuffix"MatchAnySuffix.of_jsoninletmatchAnyPrefix=field_mapjson__"MatchAnyPrefix"MatchAnyPrefix.of_jsoninmake?matchObjectSize?matchObjectAge?matchAnyTag?matchAnySuffix?matchAnyPrefix()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A logical operator that allows multiple filter conditions to be joined for more complex comparisons of Storage Lens group data."]moduleStorageLensGroupOrOperator=structtypenonrect={matchAnyPrefix:MatchAnyPrefix.toption[@ocaml.doc"Filters objects that match any of the specified prefixes."];matchAnySuffix:MatchAnySuffix.toption[@ocaml.doc"Filters objects that match any of the specified suffixes."];matchAnyTag:MatchAnyTag.toption[@ocaml.doc"Filters objects that match any of the specified S3 object tags."];matchObjectAge:MatchObjectAge.toption[@ocaml.doc"Filters objects that match the specified object age range."];matchObjectSize:MatchObjectSize.toption[@ocaml.doc"Filters objects that match the specified object size range."]}letmake?matchAnyPrefix=fun?matchAnySuffix->fun?matchAnyTag->fun?matchObjectAge->fun?matchObjectSize->fun()->{matchAnyPrefix;matchAnySuffix;matchAnyTag;matchObjectAge;matchObjectSize}letto_valuex=structure_to_value[("MatchAnyPrefix",(Option.mapx.matchAnyPrefix~f:MatchAnyPrefix.to_value));("MatchAnySuffix",(Option.mapx.matchAnySuffix~f:MatchAnySuffix.to_value));("MatchAnyTag",(Option.mapx.matchAnyTag~f:MatchAnyTag.to_value));("MatchObjectAge",(Option.mapx.matchObjectAge~f:MatchObjectAge.to_value));("MatchObjectSize",(Option.mapx.matchObjectSize~f:MatchObjectSize.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmatchObjectSize=(Option.map~f:MatchObjectSize.of_xml)(Xml.childxml_arg0"MatchObjectSize")inletmatchObjectAge=(Option.map~f:MatchObjectAge.of_xml)(Xml.childxml_arg0"MatchObjectAge")inletmatchAnyTag=(Option.map~f:MatchAnyTag.of_xml)(Xml.childxml_arg0"MatchAnyTag")inletmatchAnySuffix=(Option.map~f:MatchAnySuffix.of_xml)(Xml.childxml_arg0"MatchAnySuffix")inletmatchAnyPrefix=(Option.map~f:MatchAnyPrefix.of_xml)(Xml.childxml_arg0"MatchAnyPrefix")inmake?matchObjectSize?matchObjectAge?matchAnyTag?matchAnySuffix?matchAnyPrefix()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmatchObjectSize=field_mapjson__"MatchObjectSize"MatchObjectSize.of_jsoninletmatchObjectAge=field_mapjson__"MatchObjectAge"MatchObjectAge.of_jsoninletmatchAnyTag=field_mapjson__"MatchAnyTag"MatchAnyTag.of_jsoninletmatchAnySuffix=field_mapjson__"MatchAnySuffix"MatchAnySuffix.of_jsoninletmatchAnyPrefix=field_mapjson__"MatchAnyPrefix"MatchAnyPrefix.of_jsoninmake?matchObjectSize?matchObjectAge?matchAnyTag?matchAnySuffix?matchAnyPrefix()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A container element for specifying Or rule conditions. The rule conditions determine the subset of objects to which the Or rule applies. Objects can match any of the listed filter conditions, which are joined by the Or logical operator. Only one of each filter condition is allowed."]moduleTrafficDialPercentage=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:100)>>=(fun()->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 TrafficDialPercentage"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleBucketLevel=structtypenonrect={activityMetrics:ActivityMetrics.toption[@ocaml.doc"A container for the bucket-level activity metrics for S3 Storage Lens."];prefixLevel:PrefixLevel.toption[@ocaml.doc"A container for the prefix-level metrics for S3 Storage Lens."];advancedCostOptimizationMetrics:AdvancedCostOptimizationMetrics.toption[@ocaml.doc"A container for bucket-level advanced cost-optimization metrics for S3 Storage Lens."];advancedDataProtectionMetrics:AdvancedDataProtectionMetrics.toption[@ocaml.doc"A container for bucket-level advanced data-protection metrics for S3 Storage Lens."];detailedStatusCodesMetrics:DetailedStatusCodesMetrics.toption[@ocaml.doc"A container for bucket-level detailed status code metrics for S3 Storage Lens."];advancedPerformanceMetrics:AdvancedPerformanceMetrics.toption[@ocaml.doc"A container for bucket-level advanced performance metrics for S3 Storage Lens."]}letmake?activityMetrics=fun?prefixLevel->fun?advancedCostOptimizationMetrics->fun?advancedDataProtectionMetrics->fun?detailedStatusCodesMetrics->fun?advancedPerformanceMetrics->fun()->{activityMetrics;prefixLevel;advancedCostOptimizationMetrics;advancedDataProtectionMetrics;detailedStatusCodesMetrics;advancedPerformanceMetrics}letto_valuex=structure_to_value[("ActivityMetrics",(Option.mapx.activityMetrics~f:ActivityMetrics.to_value));("PrefixLevel",(Option.mapx.prefixLevel~f:PrefixLevel.to_value));("AdvancedCostOptimizationMetrics",(Option.mapx.advancedCostOptimizationMetrics~f:AdvancedCostOptimizationMetrics.to_value));("AdvancedDataProtectionMetrics",(Option.mapx.advancedDataProtectionMetrics~f:AdvancedDataProtectionMetrics.to_value));("DetailedStatusCodesMetrics",(Option.mapx.detailedStatusCodesMetrics~f:DetailedStatusCodesMetrics.to_value));("AdvancedPerformanceMetrics",(Option.mapx.advancedPerformanceMetrics~f:AdvancedPerformanceMetrics.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letadvancedPerformanceMetrics=(Option.map~f:AdvancedPerformanceMetrics.of_xml)(Xml.childxml_arg0"AdvancedPerformanceMetrics")inletdetailedStatusCodesMetrics=(Option.map~f:DetailedStatusCodesMetrics.of_xml)(Xml.childxml_arg0"DetailedStatusCodesMetrics")inletadvancedDataProtectionMetrics=(Option.map~f:AdvancedDataProtectionMetrics.of_xml)(Xml.childxml_arg0"AdvancedDataProtectionMetrics")inletadvancedCostOptimizationMetrics=(Option.map~f:AdvancedCostOptimizationMetrics.of_xml)(Xml.childxml_arg0"AdvancedCostOptimizationMetrics")inletprefixLevel=(Option.map~f:PrefixLevel.of_xml)(Xml.childxml_arg0"PrefixLevel")inletactivityMetrics=(Option.map~f:ActivityMetrics.of_xml)(Xml.childxml_arg0"ActivityMetrics")inmake?advancedPerformanceMetrics?detailedStatusCodesMetrics?advancedDataProtectionMetrics?advancedCostOptimizationMetrics?prefixLevel?activityMetrics()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letadvancedPerformanceMetrics=field_mapjson__"AdvancedPerformanceMetrics"AdvancedPerformanceMetrics.of_jsoninletdetailedStatusCodesMetrics=field_mapjson__"DetailedStatusCodesMetrics"DetailedStatusCodesMetrics.of_jsoninletadvancedDataProtectionMetrics=field_mapjson__"AdvancedDataProtectionMetrics"AdvancedDataProtectionMetrics.of_jsoninletadvancedCostOptimizationMetrics=field_mapjson__"AdvancedCostOptimizationMetrics"AdvancedCostOptimizationMetrics.of_jsoninletprefixLevel=field_mapjson__"PrefixLevel"PrefixLevel.of_jsoninletactivityMetrics=field_mapjson__"ActivityMetrics"ActivityMetrics.of_jsoninmake?advancedPerformanceMetrics?detailedStatusCodesMetrics?advancedDataProtectionMetrics?advancedCostOptimizationMetrics?prefixLevel?activityMetrics()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A container for the bucket-level configuration for Amazon S3 Storage Lens. For more information about S3 Storage Lens, see Assessing your storage activity and usage with S3 Storage Lens in the Amazon S3 User Guide."]moduleStorageLensGroupLevel=structtypenonrect={selectionCriteria:StorageLensGroupLevelSelectionCriteria.toption[@ocaml.doc"Indicates which Storage Lens group ARNs to include or exclude in the Storage Lens group aggregation. If this value is left null, then all Storage Lens groups are selected."]}letmake?selectionCriteria=fun()->{selectionCriteria}letto_valuex=structure_to_value[("SelectionCriteria",(Option.mapx.selectionCriteria~f:StorageLensGroupLevelSelectionCriteria.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letselectionCriteria=(Option.map~f:StorageLensGroupLevelSelectionCriteria.of_xml)(Xml.childxml_arg0"SelectionCriteria")inmake?selectionCriteria()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letselectionCriteria=field_mapjson__"SelectionCriteria"StorageLensGroupLevelSelectionCriteria.of_jsoninmake?selectionCriteria()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Specifies the Storage Lens groups to include in the Storage Lens group aggregation."]moduleBuckets=structtypenonrect=S3BucketArnString.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:S3BucketArnString.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:S3BucketArnString.of_xml)letof_jsonj=list_of_json~kind:"Buckets"~of_json:S3BucketArnString.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleRegions=structtypenonrect=S3AWSRegion.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:S3AWSRegion.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:S3AWSRegion.of_xml)letof_jsonj=list_of_json~kind:"Regions"~of_json:S3AWSRegion.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleAwsOrgArn=structtypenonrect=stringletcontext_="AwsOrgArn"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:1024)>>=(fun()->check_patterni~pattern:"arn:[a-z\\-]+:organizations::\\d{12}:organization\\/o-[a-z0-9]{10,32}")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"AwsOrgArn"jletto_json=simple_to_jsonto_valueendmoduleCloudWatchMetrics=structtypenonrect={isEnabled:IsEnabled.t[@ocaml.doc"A container that indicates whether CloudWatch publishing for S3 Storage Lens metrics is enabled. A value of true indicates that CloudWatch publishing for S3 Storage Lens metrics is enabled."]}letcontext_="CloudWatchMetrics"letmake~isEnabled=fun()->{isEnabled}letto_valuex=structure_to_value[("IsEnabled",(Some(IsEnabled.to_valuex.isEnabled)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letisEnabled=IsEnabled.of_xml(Xml.child_exn~context:context_xml_arg0"IsEnabled")inmake~isEnabled()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letisEnabled=field_map_exnjson__"IsEnabled"IsEnabled.of_jsoninmake~isEnabled()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A container for enabling Amazon CloudWatch publishing for S3 Storage Lens metrics. For more information about publishing S3 Storage Lens metrics to CloudWatch, see Monitor S3 Storage Lens metrics in CloudWatch in the Amazon S3 User Guide."]moduleS3BucketDestination=structtypenonrect={format:Format_.t;outputSchemaVersion:OutputSchemaVersion.t[@ocaml.doc"The schema version of the export file."];accountId:AccountId.t[@ocaml.doc"The account ID of the owner of the S3 Storage Lens metrics export bucket."];arn:S3BucketArnString.t[@ocaml.doc"The Amazon Resource Name (ARN) of the bucket. This property is read-only and follows the following format: arn:aws:s3:us-east-1:example-account-id:bucket/your-destination-bucket-name"];prefix:Prefix.toption[@ocaml.doc"The prefix of the destination bucket where the metrics export will be delivered."];encryption:StorageLensDataExportEncryption.toption[@ocaml.doc"The container for the type encryption of the metrics exports in this bucket."]}letcontext_="S3BucketDestination"letmake?prefix=fun?encryption->fun~format->fun~outputSchemaVersion->fun~accountId->fun~arn->fun()->{prefix;encryption;format;outputSchemaVersion;accountId;arn}letto_valuex=structure_to_value[("Format",(Some(Format_.to_valuex.format)));("OutputSchemaVersion",(Some(OutputSchemaVersion.to_valuex.outputSchemaVersion)));("AccountId",(Some(AccountId.to_valuex.accountId)));("Arn",(Some(S3BucketArnString.to_valuex.arn)));("Prefix",(Option.mapx.prefix~f:Prefix.to_value));("Encryption",(Option.mapx.encryption~f:StorageLensDataExportEncryption.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letencryption=(Option.map~f:StorageLensDataExportEncryption.of_xml)(Xml.childxml_arg0"Encryption")inletprefix=(Option.map~f:Prefix.of_xml)(Xml.childxml_arg0"Prefix")inletarn=S3BucketArnString.of_xml(Xml.child_exn~context:context_xml_arg0"Arn")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"AccountId")inletoutputSchemaVersion=OutputSchemaVersion.of_xml(Xml.child_exn~context:context_xml_arg0"OutputSchemaVersion")inletformat=Format_.of_xml(Xml.child_exn~context:context_xml_arg0"Format")inmake?encryption?prefix~arn~accountId~outputSchemaVersion~format()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letencryption=field_mapjson__"Encryption"StorageLensDataExportEncryption.of_jsoninletprefix=field_mapjson__"Prefix"Prefix.of_jsoninletarn=field_map_exnjson__"Arn"S3BucketArnString.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninletoutputSchemaVersion=field_map_exnjson__"OutputSchemaVersion"OutputSchemaVersion.of_jsoninletformat=field_map_exnjson__"Format"Format_.of_jsoninmake?encryption?prefix~arn~accountId~outputSchemaVersion~format()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A container for the bucket where the Amazon S3 Storage Lens metrics export files are located."]moduleStorageLensTableDestination=structtypenonrect={isEnabled:IsEnabled.t[@ocaml.doc"A container that indicates whether the export to read-only S3 table buckets is enabled for your S3 Storage Lens configuration. When set to true, Storage Lens reports are automatically exported to tables in addition to other configured destinations."];encryption:StorageLensDataExportEncryption.toption}letcontext_="StorageLensTableDestination"letmake?encryption=fun~isEnabled->fun()->{encryption;isEnabled}letto_valuex=structure_to_value[("IsEnabled",(Some(IsEnabled.to_valuex.isEnabled)));("Encryption",(Option.mapx.encryption~f:StorageLensDataExportEncryption.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letencryption=(Option.map~f:StorageLensDataExportEncryption.of_xml)(Xml.childxml_arg0"Encryption")inletisEnabled=IsEnabled.of_xml(Xml.child_exn~context:context_xml_arg0"IsEnabled")inmake?encryption~isEnabled()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letencryption=field_mapjson__"Encryption"StorageLensDataExportEncryption.of_jsoninletisEnabled=field_map_exnjson__"IsEnabled"IsEnabled.of_jsoninmake?encryption~isEnabled()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A container for configuring your S3 Storage Lens reports to export to read-only S3 table buckets. This parameter enables you to store your Storage Lens metrics in a structured, queryable table format in Apache Iceberg. For more information about S3 Storage Lens, see Assessing your storage activity and usage with S3 Storage Lens in the Amazon S3 User Guide."]moduleReplicationRule=structtypenonrect={iD:ID.toption[@ocaml.doc"A unique identifier for the rule. The maximum value is 255 characters."];priority:Priority.toption[@ocaml.doc"The priority indicates which rule has precedence whenever two or more replication rules conflict. S3 on Outposts attempts to replicate objects according to all replication rules. However, if there are two or more rules with the same destination Outposts bucket, then objects will be replicated according to the rule with the highest priority. The higher the number, the higher the priority. For more information, see Creating replication rules on Outposts in the Amazon S3 User Guide."];prefix:Prefix.toption[@ocaml.doc"An object key name prefix that identifies the object or objects to which the rule applies. The maximum prefix length is 1,024 characters. To include all objects in an Outposts bucket, specify an empty string. When you're using XML requests, you must replace special characters (such as carriage returns) in object keys with their equivalent XML entity codes. For more information, see XML-related object key constraints in the Amazon S3 User Guide."];filter:ReplicationRuleFilter.toption[@ocaml.doc"A filter that identifies the subset of objects to which the replication rule applies. A Filter element must specify exactly one Prefix, Tag, or And child element."];status:ReplicationRuleStatus.t[@ocaml.doc"Specifies whether the rule is enabled."];sourceSelectionCriteria:SourceSelectionCriteria.toption[@ocaml.doc"A container that describes additional filters for identifying the source Outposts objects that you want to replicate. You can choose to enable or disable the replication of these objects."];existingObjectReplication:ExistingObjectReplication.toption[@ocaml.doc"An optional configuration to replicate existing source bucket objects. This is not supported by Amazon S3 on Outposts buckets."];destination:Destination.t[@ocaml.doc"A container for information about the replication destination and its configurations."];deleteMarkerReplication:DeleteMarkerReplication.toption[@ocaml.doc"Specifies whether S3 on Outposts replicates delete markers. If you specify a Filter element in your replication configuration, you must also include a DeleteMarkerReplication element. If your Filter includes a Tag element, the DeleteMarkerReplication element's Status child element must be set to Disabled, because S3 on Outposts doesn't support replicating delete markers for tag-based rules. For more information about delete marker replication, see How delete operations affect replication in the Amazon S3 User Guide."];bucket:BucketIdentifierString.t[@ocaml.doc"The Amazon Resource Name (ARN) of the access point for the source Outposts bucket that you want S3 on Outposts to replicate the objects from."]}letcontext_="ReplicationRule"letmake?iD=fun?priority->fun?prefix->fun?filter->fun?sourceSelectionCriteria->fun?existingObjectReplication->fun?deleteMarkerReplication->fun~status->fun~destination->fun~bucket->fun()->{iD;priority;prefix;filter;sourceSelectionCriteria;existingObjectReplication;deleteMarkerReplication;status;destination;bucket}letto_valuex=structure_to_value[("ID",(Option.mapx.iD~f:ID.to_value));("Priority",(Option.mapx.priority~f:Priority.to_value));("Prefix",(Option.mapx.prefix~f:Prefix.to_value));("Filter",(Option.mapx.filter~f:ReplicationRuleFilter.to_value));("Status",(Some(ReplicationRuleStatus.to_valuex.status)));("SourceSelectionCriteria",(Option.mapx.sourceSelectionCriteria~f:SourceSelectionCriteria.to_value));("ExistingObjectReplication",(Option.mapx.existingObjectReplication~f:ExistingObjectReplication.to_value));("Destination",(Some(Destination.to_valuex.destination)));("DeleteMarkerReplication",(Option.mapx.deleteMarkerReplication~f:DeleteMarkerReplication.to_value));("Bucket",(Some(BucketIdentifierString.to_valuex.bucket)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letbucket=BucketIdentifierString.of_xml(Xml.child_exn~context:context_xml_arg0"Bucket")inletdeleteMarkerReplication=(Option.map~f:DeleteMarkerReplication.of_xml)(Xml.childxml_arg0"DeleteMarkerReplication")inletdestination=Destination.of_xml(Xml.child_exn~context:context_xml_arg0"Destination")inletexistingObjectReplication=(Option.map~f:ExistingObjectReplication.of_xml)(Xml.childxml_arg0"ExistingObjectReplication")inletsourceSelectionCriteria=(Option.map~f:SourceSelectionCriteria.of_xml)(Xml.childxml_arg0"SourceSelectionCriteria")inletstatus=ReplicationRuleStatus.of_xml(Xml.child_exn~context:context_xml_arg0"Status")inletfilter=(Option.map~f:ReplicationRuleFilter.of_xml)(Xml.childxml_arg0"Filter")inletprefix=(Option.map~f:Prefix.of_xml)(Xml.childxml_arg0"Prefix")inletpriority=(Option.map~f:Priority.of_xml)(Xml.childxml_arg0"Priority")inletiD=(Option.map~f:ID.of_xml)(Xml.childxml_arg0"ID")inmake~bucket?deleteMarkerReplication~destination?existingObjectReplication?sourceSelectionCriteria~status?filter?prefix?priority?iD()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letbucket=field_map_exnjson__"Bucket"BucketIdentifierString.of_jsoninletdeleteMarkerReplication=field_mapjson__"DeleteMarkerReplication"DeleteMarkerReplication.of_jsoninletdestination=field_map_exnjson__"Destination"Destination.of_jsoninletexistingObjectReplication=field_mapjson__"ExistingObjectReplication"ExistingObjectReplication.of_jsoninletsourceSelectionCriteria=field_mapjson__"SourceSelectionCriteria"SourceSelectionCriteria.of_jsoninletstatus=field_map_exnjson__"Status"ReplicationRuleStatus.of_jsoninletfilter=field_mapjson__"Filter"ReplicationRuleFilter.of_jsoninletprefix=field_mapjson__"Prefix"Prefix.of_jsoninletpriority=field_mapjson__"Priority"Priority.of_jsoninletiD=field_mapjson__"ID"ID.of_jsoninmake~bucket?deleteMarkerReplication~destination?existingObjectReplication?sourceSelectionCriteria~status?filter?prefix?priority?iD()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Specifies which S3 on Outposts objects to replicate and where to store the replicas."]moduleLifecycleRule=structtypenonrect={expiration:LifecycleExpiration.toption[@ocaml.doc"Specifies the expiration for the lifecycle of the object in the form of date, days and, whether the object has a delete marker."];iD:ID.toption[@ocaml.doc"Unique identifier for the rule. The value cannot be longer than 255 characters."];filter:LifecycleRuleFilter.toption[@ocaml.doc"The container for the filter of lifecycle rule."];status:ExpirationStatus.t[@ocaml.doc"If 'Enabled', the rule is currently being applied. If 'Disabled', the rule is not currently being applied."];transitions:TransitionList.toption[@ocaml.doc"Specifies when an Amazon S3 object transitions to a specified storage class. This is not supported by Amazon S3 on Outposts buckets."];noncurrentVersionTransitions:NoncurrentVersionTransitionList.toption[@ocaml.doc"Specifies the transition rule for the lifecycle rule that describes when noncurrent objects transition to a specific storage class. If your bucket is versioning-enabled (or versioning is suspended), you can set this action to request that Amazon S3 transition noncurrent object versions to a specific storage class at a set period in the object's lifetime. This is not supported by Amazon S3 on Outposts buckets."];noncurrentVersionExpiration:NoncurrentVersionExpiration.toption[@ocaml.doc"The noncurrent version expiration of the lifecycle rule."];abortIncompleteMultipartUpload:AbortIncompleteMultipartUpload.toption[@ocaml.doc"Specifies the days since the initiation of an incomplete multipart upload that Amazon S3 waits before permanently removing all parts of the upload. For more information, see Aborting Incomplete Multipart Uploads Using a Bucket Lifecycle Configuration in the Amazon S3 User Guide."]}letcontext_="LifecycleRule"letmake?expiration=fun?iD->fun?filter->fun?transitions->fun?noncurrentVersionTransitions->fun?noncurrentVersionExpiration->fun?abortIncompleteMultipartUpload->fun~status->fun()->{expiration;iD;filter;transitions;noncurrentVersionTransitions;noncurrentVersionExpiration;abortIncompleteMultipartUpload;status}letto_valuex=structure_to_value[("Expiration",(Option.mapx.expiration~f:LifecycleExpiration.to_value));("ID",(Option.mapx.iD~f:ID.to_value));("Filter",(Option.mapx.filter~f:LifecycleRuleFilter.to_value));("Status",(Some(ExpirationStatus.to_valuex.status)));("Transitions",(Option.mapx.transitions~f:TransitionList.to_value));("NoncurrentVersionTransitions",(Option.mapx.noncurrentVersionTransitions~f:NoncurrentVersionTransitionList.to_value));("NoncurrentVersionExpiration",(Option.mapx.noncurrentVersionExpiration~f:NoncurrentVersionExpiration.to_value));("AbortIncompleteMultipartUpload",(Option.mapx.abortIncompleteMultipartUpload~f:AbortIncompleteMultipartUpload.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letabortIncompleteMultipartUpload=(Option.map~f:AbortIncompleteMultipartUpload.of_xml)(Xml.childxml_arg0"AbortIncompleteMultipartUpload")inletnoncurrentVersionExpiration=(Option.map~f:NoncurrentVersionExpiration.of_xml)(Xml.childxml_arg0"NoncurrentVersionExpiration")inletnoncurrentVersionTransitions=(Option.map~f:NoncurrentVersionTransitionList.of_xml)(Xml.childxml_arg0"NoncurrentVersionTransitions")inlettransitions=(Option.map~f:TransitionList.of_xml)(Xml.childxml_arg0"Transitions")inletstatus=ExpirationStatus.of_xml(Xml.child_exn~context:context_xml_arg0"Status")inletfilter=(Option.map~f:LifecycleRuleFilter.of_xml)(Xml.childxml_arg0"Filter")inletiD=(Option.map~f:ID.of_xml)(Xml.childxml_arg0"ID")inletexpiration=(Option.map~f:LifecycleExpiration.of_xml)(Xml.childxml_arg0"Expiration")inmake?abortIncompleteMultipartUpload?noncurrentVersionExpiration?noncurrentVersionTransitions?transitions~status?filter?iD?expiration()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letabortIncompleteMultipartUpload=field_mapjson__"AbortIncompleteMultipartUpload"AbortIncompleteMultipartUpload.of_jsoninletnoncurrentVersionExpiration=field_mapjson__"NoncurrentVersionExpiration"NoncurrentVersionExpiration.of_jsoninletnoncurrentVersionTransitions=field_mapjson__"NoncurrentVersionTransitions"NoncurrentVersionTransitionList.of_jsoninlettransitions=field_mapjson__"Transitions"TransitionList.of_jsoninletstatus=field_map_exnjson__"Status"ExpirationStatus.of_jsoninletfilter=field_mapjson__"Filter"LifecycleRuleFilter.of_jsoninletiD=field_mapjson__"ID"ID.of_jsoninletexpiration=field_mapjson__"Expiration"LifecycleExpiration.of_jsoninmake?abortIncompleteMultipartUpload?noncurrentVersionExpiration?noncurrentVersionTransitions?transitions~status?filter?iD?expiration()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The container for the Outposts bucket lifecycle rule."]moduleScopePermission=structtypenonrect=|GetObject|GetObjectAttributes|ListMultipartUploadParts|ListBucket|ListBucketMultipartUploads|PutObject|DeleteObject|AbortMultipartUpload|Non_static_idofstringletmakei=iletto_string=function|GetObject->"GetObject"|GetObjectAttributes->"GetObjectAttributes"|ListMultipartUploadParts->"ListMultipartUploadParts"|ListBucket->"ListBucket"|ListBucketMultipartUploads->"ListBucketMultipartUploads"|PutObject->"PutObject"|DeleteObject->"DeleteObject"|AbortMultipartUpload->"AbortMultipartUpload"|Non_static_ids->sletof_string=function|"GetObject"->GetObject|"GetObjectAttributes"->GetObjectAttributes|"ListMultipartUploadParts"->ListMultipartUploadParts|"ListBucket"->ListBucket|"ListBucketMultipartUploads"->ListBucketMultipartUploads|"PutObject"->PutObject|"DeleteObject"->DeleteObject|"AbortMultipartUpload"->AbortMultipartUpload|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 ScopePermission"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ScopePermission"j)letto_json=simple_to_jsonto_valueendmoduleObjectLambdaAllowedFeature=structtypenonrect=|GetObject_Range|GetObject_PartNumber|HeadObject_Range|HeadObject_PartNumber|Non_static_idofstringletmakei=iletto_string=function|GetObject_Range->"GetObject-Range"|GetObject_PartNumber->"GetObject-PartNumber"|HeadObject_Range->"HeadObject-Range"|HeadObject_PartNumber->"HeadObject-PartNumber"|Non_static_ids->sletof_string=function|"GetObject-Range"->GetObject_Range|"GetObject-PartNumber"->GetObject_PartNumber|"HeadObject-Range"->HeadObject_Range|"HeadObject-PartNumber"->HeadObject_PartNumber|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 ObjectLambdaAllowedFeature"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ObjectLambdaAllowedFeature"j)letto_json=simple_to_jsonto_valueendmoduleObjectLambdaTransformationConfiguration=structtypenonrect={actions:ObjectLambdaTransformationConfigurationActionsList.t[@ocaml.doc"A container for the action of an Object Lambda Access Point configuration. Valid inputs are GetObject, ListObjects, HeadObject, and ListObjectsV2."];contentTransformation:ObjectLambdaContentTransformation.t[@ocaml.doc"A container for the content transformation of an Object Lambda Access Point configuration."]}letcontext_="ObjectLambdaTransformationConfiguration"letmake~actions=fun~contentTransformation->fun()->{actions;contentTransformation}letto_valuex=structure_to_value[("Actions",(Some(ObjectLambdaTransformationConfigurationActionsList.to_valuex.actions)));("ContentTransformation",(Some(ObjectLambdaContentTransformation.to_valuex.contentTransformation)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcontentTransformation=ObjectLambdaContentTransformation.of_xml(Xml.child_exn~context:context_xml_arg0"ContentTransformation")inletactions=ObjectLambdaTransformationConfigurationActionsList.of_xml(Xml.child_exn~context:context_xml_arg0"Actions")inmake~contentTransformation~actions()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcontentTransformation=field_map_exnjson__"ContentTransformation"ObjectLambdaContentTransformation.of_jsoninletactions=field_map_exnjson__"Actions"ObjectLambdaTransformationConfigurationActionsList.of_jsoninmake~contentTransformation~actions()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A configuration used when creating an Object Lambda Access Point transformation."]moduleStorageLensGroupName=structtypenonrect=stringletcontext_="StorageLensGroupName"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:64)>>=(fun()->check_patterni~pattern:"[a-zA-Z0-9\\-\\_]+")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"StorageLensGroupName"jletto_json=simple_to_jsonto_valueendmoduleConfigId=structtypenonrect=stringletcontext_="ConfigId"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:64)>>=(fun()->check_patterni~pattern:"[a-zA-Z0-9\\-\\_\\.]+")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"ConfigId"jletto_json=simple_to_jsonto_valueendmoduleStorageLensArn=structtypenonrect=stringletcontext_="StorageLensArn"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:1024)>>=(fun()->check_patterni~pattern:"arn:[a-z\\-]+:s3:[a-z0-9\\-]+:\\d{12}:storage\\-lens\\/.*")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"StorageLensArn"jletto_json=simple_to_jsonto_valueendmoduleCreationDate=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_valueendmodulePublicAccessBlockEnabled=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_valueendmoduleS3RegionalBucketArn=structtypenonrect=stringletcontext_="S3RegionalBucketArn"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:128)>>=(fun()->check_string_mini~min:4));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"S3RegionalBucketArn"jletto_json=simple_to_jsonto_valueendmoduleCreationTimestamp=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_valueendmoduleMultiRegionAccessPointAlias=structtypenonrect=stringletcontext_="MultiRegionAccessPointAlias"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:63)>>=(fun()->check_patterni~pattern:"^[a-z][a-z0-9]*[.]mrap$"));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"MultiRegionAccessPointAlias"jletto_json=simple_to_jsonto_valueendmoduleMultiRegionAccessPointStatus=structtypenonrect=|READY|INCONSISTENT_ACROSS_REGIONS|CREATING|PARTIALLY_CREATED|PARTIALLY_DELETED|DELETING|Non_static_idofstringletmakei=iletto_string=function|READY->"READY"|INCONSISTENT_ACROSS_REGIONS->"INCONSISTENT_ACROSS_REGIONS"|CREATING->"CREATING"|PARTIALLY_CREATED->"PARTIALLY_CREATED"|PARTIALLY_DELETED->"PARTIALLY_DELETED"|DELETING->"DELETING"|Non_static_ids->sletof_string=function|"READY"->READY|"INCONSISTENT_ACROSS_REGIONS"->INCONSISTENT_ACROSS_REGIONS|"CREATING"->CREATING|"PARTIALLY_CREATED"->PARTIALLY_CREATED|"PARTIALLY_DELETED"->PARTIALLY_DELETED|"DELETING"->DELETING|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 MultiRegionAccessPointStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"MultiRegionAccessPointStatus"j)letto_json=simple_to_jsonto_valueendmoduleRegionReportList=structtypenonrect=RegionReport.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:RegionReport.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:RegionReport.of_xml)letof_jsonj=list_of_json~kind:"RegionReportList"~of_json:RegionReport.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleJobCreationTime=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_valueendmoduleJobId=structtypenonrect=stringletcontext_="JobId"letmakei=letopenResultinok_or_failwith((check_string_mini~min:5)>>=(fun()->(check_string_maxi~max:36)>>=(fun()->check_patterni~pattern:"[a-zA-Z0-9\\-\\_]+")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"JobId"jletto_json=simple_to_jsonto_valueendmoduleJobPriority=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:2147483647)>>=(fun()->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 JobPriority"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleJobProgressSummary=structtypenonrect={totalNumberOfTasks:JobTotalNumberOfTasks.toption;numberOfTasksSucceeded:JobNumberOfTasksSucceeded.toption;numberOfTasksFailed:JobNumberOfTasksFailed.toption;timers:JobTimers.toption[@ocaml.doc"The JobTimers attribute of a job's progress summary."]}letmake?totalNumberOfTasks=fun?numberOfTasksSucceeded->fun?numberOfTasksFailed->fun?timers->fun()->{totalNumberOfTasks;numberOfTasksSucceeded;numberOfTasksFailed;timers}letto_valuex=structure_to_value[("TotalNumberOfTasks",(Option.mapx.totalNumberOfTasks~f:JobTotalNumberOfTasks.to_value));("NumberOfTasksSucceeded",(Option.mapx.numberOfTasksSucceeded~f:JobNumberOfTasksSucceeded.to_value));("NumberOfTasksFailed",(Option.mapx.numberOfTasksFailed~f:JobNumberOfTasksFailed.to_value));("Timers",(Option.mapx.timers~f:JobTimers.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettimers=(Option.map~f:JobTimers.of_xml)(Xml.childxml_arg0"Timers")inletnumberOfTasksFailed=(Option.map~f:JobNumberOfTasksFailed.of_xml)(Xml.childxml_arg0"NumberOfTasksFailed")inletnumberOfTasksSucceeded=(Option.map~f:JobNumberOfTasksSucceeded.of_xml)(Xml.childxml_arg0"NumberOfTasksSucceeded")inlettotalNumberOfTasks=(Option.map~f:JobTotalNumberOfTasks.of_xml)(Xml.childxml_arg0"TotalNumberOfTasks")inmake?timers?numberOfTasksFailed?numberOfTasksSucceeded?totalNumberOfTasks()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettimers=field_mapjson__"Timers"JobTimers.of_jsoninletnumberOfTasksFailed=field_mapjson__"NumberOfTasksFailed"JobNumberOfTasksFailed.of_jsoninletnumberOfTasksSucceeded=field_mapjson__"NumberOfTasksSucceeded"JobNumberOfTasksSucceeded.of_jsoninlettotalNumberOfTasks=field_mapjson__"TotalNumberOfTasks"JobTotalNumberOfTasks.of_jsoninmake?timers?numberOfTasksFailed?numberOfTasksSucceeded?totalNumberOfTasks()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Describes the total number of tasks that the specified job has started, the number of tasks that succeeded, and the number of tasks that failed."]moduleJobStatus=structtypenonrect=|Active|Cancelled|Cancelling|Complete|Completing|Failed|Failing|New|Paused|Pausing|Preparing|Ready|Suspended|Non_static_idofstringletmakei=iletto_string=function|Active->"Active"|Cancelled->"Cancelled"|Cancelling->"Cancelling"|Complete->"Complete"|Completing->"Completing"|Failed->"Failed"|Failing->"Failing"|New->"New"|Paused->"Paused"|Pausing->"Pausing"|Preparing->"Preparing"|Ready->"Ready"|Suspended->"Suspended"|Non_static_ids->sletof_string=function|"Active"->Active|"Cancelled"->Cancelled|"Cancelling"->Cancelling|"Complete"->Complete|"Completing"->Completing|"Failed"->Failed|"Failing"->Failing|"New"->New|"Paused"->Paused|"Pausing"->Pausing|"Preparing"->Preparing|"Ready"->Ready|"Suspended"->Suspended|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 JobStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"JobStatus"j)letto_json=simple_to_jsonto_valueendmoduleJobTerminationDate=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_valueendmoduleNonEmptyMaxLength256String=structtypenonrect=stringletcontext_="NonEmptyMaxLength256String"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:"NonEmptyMaxLength256String"jletto_json=simple_to_jsonto_valueendmoduleOperationName=structtypenonrect=|LambdaInvoke|S3PutObjectCopy|S3PutObjectAcl|S3PutObjectTagging|S3DeleteObjectTagging|S3InitiateRestoreObject|S3PutObjectLegalHold|S3PutObjectRetention|S3ReplicateObject|S3ComputeObjectChecksum|S3UpdateObjectEncryption|Non_static_idofstringletmakei=iletto_string=function|LambdaInvoke->"LambdaInvoke"|S3PutObjectCopy->"S3PutObjectCopy"|S3PutObjectAcl->"S3PutObjectAcl"|S3PutObjectTagging->"S3PutObjectTagging"|S3DeleteObjectTagging->"S3DeleteObjectTagging"|S3InitiateRestoreObject->"S3InitiateRestoreObject"|S3PutObjectLegalHold->"S3PutObjectLegalHold"|S3PutObjectRetention->"S3PutObjectRetention"|S3ReplicateObject->"S3ReplicateObject"|S3ComputeObjectChecksum->"S3ComputeObjectChecksum"|S3UpdateObjectEncryption->"S3UpdateObjectEncryption"|Non_static_ids->sletof_string=function|"LambdaInvoke"->LambdaInvoke|"S3PutObjectCopy"->S3PutObjectCopy|"S3PutObjectAcl"->S3PutObjectAcl|"S3PutObjectTagging"->S3PutObjectTagging|"S3DeleteObjectTagging"->S3DeleteObjectTagging|"S3InitiateRestoreObject"->S3InitiateRestoreObject|"S3PutObjectLegalHold"->S3PutObjectLegalHold|"S3PutObjectRetention"->S3PutObjectRetention|"S3ReplicateObject"->S3ReplicateObject|"S3ComputeObjectChecksum"->S3ComputeObjectChecksum|"S3UpdateObjectEncryption"->S3UpdateObjectEncryption|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 OperationName"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"OperationName"j)letto_json=simple_to_jsonto_valueendmoduleIdentityCenterApplicationArn=structtypenonrect=stringletcontext_="IdentityCenterApplicationArn"letmakei=letopenResultinok_or_failwith((check_string_mini~min:10)>>=(fun()->(check_string_maxi~max:1224)>>=(fun()->check_patterni~pattern:"arn:[^:]+:sso::\\d{12}:application/.*$")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"IdentityCenterApplicationArn"jletto_json=simple_to_jsonto_valueendmodulePermission=structtypenonrect=|READ|WRITE|READWRITE|Non_static_idofstringletmakei=iletto_string=function|READ->"READ"|WRITE->"WRITE"|READWRITE->"READWRITE"|Non_static_ids->sletof_string=function|"READ"->READ|"WRITE"->WRITE|"READWRITE"->READWRITE|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 Permission"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"Permission"j)letto_json=simple_to_jsonto_valueendmoduleAccessPointBucketName=structtypenonrect=stringletcontext_="AccessPointBucketName"letmakei=letopenResultinok_or_failwith(check_string_maxi~max:255);iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"AccessPointBucketName"jletto_json=simple_to_jsonto_valueendmoduleAccessPointName=structtypenonrect=stringletcontext_="AccessPointName"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:255)>>=(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:"AccessPointName"jletto_json=simple_to_jsonto_valueendmoduleAlias=structtypenonrect=stringletcontext_="Alias"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:63)>>=(fun()->check_patterni~pattern:"^[0-9a-z\\\\-]{63}"));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"Alias"jletto_json=simple_to_jsonto_valueendmoduleDataSourceId=structtypenonrect=stringletcontext_="DataSourceId"letmakei=letopenResultinok_or_failwith(check_string_maxi~max:191);iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"DataSourceId"jletto_json=simple_to_jsonto_valueendmoduleDataSourceType=structtypenonrect=stringletcontext_="DataSourceType"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:"DataSourceType"jletto_json=simple_to_jsonto_valueendmoduleNetworkOrigin=structtypenonrect=|Internet|VPC|Non_static_idofstringletmakei=iletto_string=function|Internet->"Internet"|VPC->"VPC"|Non_static_ids->sletof_string=function|"Internet"->Internet|"VPC"->VPC|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 NetworkOrigin"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"NetworkOrigin"j)letto_json=simple_to_jsonto_valueendmoduleS3AccessPointArn=structtypenonrect=stringletcontext_="S3AccessPointArn"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:128)>>=(fun()->check_string_mini~min:4));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"S3AccessPointArn"jletto_json=simple_to_jsonto_valueendmoduleVpcConfiguration=structtypenonrect={vpcId:VpcId.t[@ocaml.doc"If this field is specified, this access point will only allow connections from the specified VPC ID."]}letcontext_="VpcConfiguration"letmake~vpcId=fun()->{vpcId}letto_valuex=structure_to_value[("VpcId",(Some(VpcId.to_valuex.vpcId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letvpcId=VpcId.of_xml(Xml.child_exn~context:context_xml_arg0"VpcId")inmake~vpcId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letvpcId=field_map_exnjson__"VpcId"VpcId.of_jsoninmake~vpcId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The virtual private cloud (VPC) configuration for an access point."]moduleObjectLambdaAccessPointAlias=structtypenonrect={value:ObjectLambdaAccessPointAliasValue.toption[@ocaml.doc"The alias value of the Object Lambda Access Point."];status:ObjectLambdaAccessPointAliasStatus.toption[@ocaml.doc"The status of the Object Lambda Access Point alias. If the status is PROVISIONING, the Object Lambda Access Point is provisioning the alias and the alias is not ready for use yet. If the status is READY, the Object Lambda Access Point alias is successfully provisioned and ready for use."]}letmake?value=fun?status->fun()->{value;status}letto_valuex=structure_to_value[("Value",(Option.mapx.value~f:ObjectLambdaAccessPointAliasValue.to_value));("Status",(Option.mapx.status~f:ObjectLambdaAccessPointAliasStatus.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstatus=(Option.map~f:ObjectLambdaAccessPointAliasStatus.of_xml)(Xml.childxml_arg0"Status")inletvalue=(Option.map~f:ObjectLambdaAccessPointAliasValue.of_xml)(Xml.childxml_arg0"Value")inmake?status?value()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstatus=field_mapjson__"Status"ObjectLambdaAccessPointAliasStatus.of_jsoninletvalue=field_mapjson__"Value"ObjectLambdaAccessPointAliasValue.of_jsoninmake?status?value()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The alias of an Object Lambda Access Point. For more information, see How to use a bucket-style alias for your S3 bucket Object Lambda Access Point."]moduleObjectLambdaAccessPointArn=structtypenonrect=stringletcontext_="ObjectLambdaAccessPointArn"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:2048)>>=(fun()->check_patterni~pattern:"arn:[^:]+:s3-object-lambda:[^:]*:\\d{12}:accesspoint/.*")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"ObjectLambdaAccessPointArn"jletto_json=simple_to_jsonto_valueendmoduleObjectLambdaAccessPointName=structtypenonrect=stringletcontext_="ObjectLambdaAccessPointName"letmakei=letopenResultinok_or_failwith((check_string_mini~min:3)>>=(fun()->(check_string_maxi~max:45)>>=(fun()->check_patterni~pattern:"^[a-z0-9]([a-z0-9\\-]*[a-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:"ObjectLambdaAccessPointName"jletto_json=simple_to_jsonto_valueendmoduleAccessGrantArn=structtypenonrect=stringletcontext_="AccessGrantArn"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:2048)>>=(fun()->check_patterni~pattern:"arn:[a-z\\-]+:s3:[a-z0-9\\-]+:\\d{12}:access\\-grants\\/grant/[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:"AccessGrantArn"jletto_json=simple_to_jsonto_valueendmoduleAccessGrantId=structtypenonrect=stringletcontext_="AccessGrantId"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:64)>>=(fun()->check_patterni~pattern:"[a-zA-Z0-9\\-]+")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"AccessGrantId"jletto_json=simple_to_jsonto_valueendmoduleAccessGrantsLocationConfiguration=structtypenonrect={s3SubPrefix:S3Prefix.toption[@ocaml.doc"The S3SubPrefix is appended to the location scope creating the grant scope. Use this field to narrow the scope of the grant to a subset of the location scope. This field is required if the location scope is the default location s3:// because you cannot create a grant for all of your S3 data in the Region and must narrow the scope. For example, if the location scope is the default location s3://, the S3SubPrefx can be a <bucket-name>/*, so the full grant scope path would be s3://<bucket-name>/*. Or the S3SubPrefx can be <bucket-name>/<prefix-name>*, so the full grant scope path would be or s3://<bucket-name>/<prefix-name>*. If the S3SubPrefix includes a prefix, append the wildcard character * after the prefix to indicate that you want to include all object key names in the bucket that start with that prefix."]}letmake?s3SubPrefix=fun()->{s3SubPrefix}letto_valuex=structure_to_value[("S3SubPrefix",(Option.mapx.s3SubPrefix~f:S3Prefix.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lets3SubPrefix=(Option.map~f:S3Prefix.of_xml)(Xml.childxml_arg0"S3SubPrefix")inmake?s3SubPrefix()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lets3SubPrefix=field_mapjson__"S3SubPrefix"S3Prefix.of_jsoninmake?s3SubPrefix()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The configuration options of the S3 Access Grants location. It contains the S3SubPrefix field. The grant scope, the data to which you are granting access, is the result of appending the Subprefix field to the scope of the registered location."]moduleAccessGrantsLocationId=structtypenonrect=stringletcontext_="AccessGrantsLocationId"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:64)>>=(fun()->check_patterni~pattern:"[a-zA-Z0-9\\-]+")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"AccessGrantsLocationId"jletto_json=simple_to_jsonto_valueendmoduleGrantee=structtypenonrect={granteeType:GranteeType.toption[@ocaml.doc"The type of the grantee to which access has been granted. It can be one of the following values: IAM - An IAM user or role. DIRECTORY_USER - Your corporate directory user. You can use this option if you have added your corporate identity directory to IAM Identity Center and associated the IAM Identity Center instance with your S3 Access Grants instance. DIRECTORY_GROUP - Your corporate directory group. You can use this option if you have added your corporate identity directory to IAM Identity Center and associated the IAM Identity Center instance with your S3 Access Grants instance."];granteeIdentifier:GranteeIdentifier.toption[@ocaml.doc"The unique identifier of the Grantee. If the grantee type is IAM, the identifier is the IAM Amazon Resource Name (ARN) of the user or role. If the grantee type is a directory user or group, the identifier is 128-bit universally unique identifier (UUID) in the format a1b2c3d4-5678-90ab-cdef-EXAMPLE11111. You can obtain this UUID from your Amazon Web Services IAM Identity Center instance."]}letmake?granteeType=fun?granteeIdentifier->fun()->{granteeType;granteeIdentifier}letto_valuex=structure_to_value[("GranteeType",(Option.mapx.granteeType~f:GranteeType.to_value));("GranteeIdentifier",(Option.mapx.granteeIdentifier~f:GranteeIdentifier.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letgranteeIdentifier=(Option.map~f:GranteeIdentifier.of_xml)(Xml.childxml_arg0"GranteeIdentifier")inletgranteeType=(Option.map~f:GranteeType.of_xml)(Xml.childxml_arg0"GranteeType")inmake?granteeIdentifier?granteeType()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letgranteeIdentifier=field_mapjson__"GranteeIdentifier"GranteeIdentifier.of_jsoninletgranteeType=field_mapjson__"GranteeType"GranteeType.of_jsoninmake?granteeIdentifier?granteeType()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The user, group, or role to which you are granting access. You can grant access to an IAM user or role. If you have added your corporate directory to Amazon Web Services IAM Identity Center and associated your Identity Center instance with your S3 Access Grants instance, the grantee can also be a corporate directory user or group."]moduleAccessGrantsLocationArn=structtypenonrect=stringletcontext_="AccessGrantsLocationArn"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:2048)>>=(fun()->check_patterni~pattern:"arn:[a-z\\-]+:s3:[a-z0-9\\-]+:\\d{12}:access\\-grants\\/location/[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:"AccessGrantsLocationArn"jletto_json=simple_to_jsonto_valueendmoduleIAMRoleArn=structtypenonrect=stringletcontext_="IAMRoleArn"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:2048)>>=(fun()->check_patterni~pattern:"arn:[^:]+:iam::\\d{12}:role/.*")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"IAMRoleArn"jletto_json=simple_to_jsonto_valueendmoduleAccessGrantsInstanceArn=structtypenonrect=stringletcontext_="AccessGrantsInstanceArn"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:2048)>>=(fun()->check_patterni~pattern:"arn:[a-z\\-]+:s3:[a-z0-9\\-]+:\\d{12}:access\\-grants\\/[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:"AccessGrantsInstanceArn"jletto_json=simple_to_jsonto_valueendmoduleAccessGrantsInstanceId=structtypenonrect=stringletcontext_="AccessGrantsInstanceId"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:64)>>=(fun()->check_patterni~pattern:"[a-zA-Z0-9\\-]+")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"AccessGrantsInstanceId"jletto_json=simple_to_jsonto_valueendmoduleIdentityCenterArn=structtypenonrect=stringletcontext_="IdentityCenterArn"letmakei=letopenResultinok_or_failwith((check_string_mini~min:10)>>=(fun()->(check_string_maxi~max:1224)>>=(fun()->check_patterni~pattern:"arn:[^:]+:sso::(\\d{12}){0,1}:instance/.*$")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"IdentityCenterArn"jletto_json=simple_to_jsonto_valueendmoduleCreateMultiRegionAccessPointInput=structtypenonrect={name:MultiRegionAccessPointName.t[@ocaml.doc"The name of the Multi-Region Access Point associated with this request."];publicAccessBlock:PublicAccessBlockConfiguration.toption;regions:RegionCreationList.t[@ocaml.doc"The buckets in different Regions that are associated with the Multi-Region Access Point."]}letcontext_="CreateMultiRegionAccessPointInput"letmake?publicAccessBlock=fun~name->fun~regions->fun()->{publicAccessBlock;name;regions}letto_valuex=structure_to_value[("Name",(Some(MultiRegionAccessPointName.to_valuex.name)));("PublicAccessBlock",(Option.mapx.publicAccessBlock~f:PublicAccessBlockConfiguration.to_value));("Regions",(Some(RegionCreationList.to_valuex.regions)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letregions=RegionCreationList.of_xml(Xml.child_exn~context:context_xml_arg0"Regions")inletpublicAccessBlock=(Option.map~f:PublicAccessBlockConfiguration.of_xml)(Xml.childxml_arg0"PublicAccessBlock")inletname=MultiRegionAccessPointName.of_xml(Xml.child_exn~context:context_xml_arg0"Name")inmake~regions?publicAccessBlock~name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letregions=field_map_exnjson__"Regions"RegionCreationList.of_jsoninletpublicAccessBlock=field_mapjson__"PublicAccessBlock"PublicAccessBlockConfiguration.of_jsoninletname=field_map_exnjson__"Name"MultiRegionAccessPointName.of_jsoninmake~regions?publicAccessBlock~name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A container for the information associated with a CreateMultiRegionAccessPoint request."]moduleDeleteMultiRegionAccessPointInput=structtypenonrect={name:MultiRegionAccessPointName.t[@ocaml.doc"The name of the Multi-Region Access Point associated with this request."]}letcontext_="DeleteMultiRegionAccessPointInput"letmake~name=fun()->{name}letto_valuex=structure_to_value[("Name",(Some(MultiRegionAccessPointName.to_valuex.name)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letname=MultiRegionAccessPointName.of_xml(Xml.child_exn~context:context_xml_arg0"Name")inmake~name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letname=field_map_exnjson__"Name"MultiRegionAccessPointName.of_jsoninmake~name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A container for the information associated with a DeleteMultiRegionAccessPoint request."]modulePutMultiRegionAccessPointPolicyInput=structtypenonrect={name:MultiRegionAccessPointName.t[@ocaml.doc"The name of the Multi-Region Access Point associated with the request."];policy:Policy.t[@ocaml.doc"The policy details for the PutMultiRegionAccessPoint request."]}letcontext_="PutMultiRegionAccessPointPolicyInput"letmake~name=fun~policy->fun()->{name;policy}letto_valuex=structure_to_value[("Name",(Some(MultiRegionAccessPointName.to_valuex.name)));("Policy",(Some(Policy.to_valuex.policy)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letpolicy=Policy.of_xml(Xml.child_exn~context:context_xml_arg0"Policy")inletname=MultiRegionAccessPointName.of_xml(Xml.child_exn~context:context_xml_arg0"Name")inmake~policy~name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letpolicy=field_map_exnjson__"Policy"Policy.of_jsoninletname=field_map_exnjson__"Name"MultiRegionAccessPointName.of_jsoninmake~policy~name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A container for the information associated with a PutMultiRegionAccessPoint request."]moduleAsyncErrorDetails=structtypenonrect={code:MaxLength1024String.toption[@ocaml.doc"A string that uniquely identifies the error condition."];message:MaxLength1024String.toption[@ocaml.doc"A generic description of the error condition in English."];resource:MaxLength1024String.toption[@ocaml.doc"The identifier of the resource associated with the error."];requestId:MaxLength1024String.toption[@ocaml.doc"The ID of the request associated with the error."]}letmake?code=fun?message->fun?resource->fun?requestId->fun()->{code;message;resource;requestId}letto_valuex=structure_to_value[("Code",(Option.mapx.code~f:MaxLength1024String.to_value));("Message",(Option.mapx.message~f:MaxLength1024String.to_value));("Resource",(Option.mapx.resource~f:MaxLength1024String.to_value));("RequestId",(Option.mapx.requestId~f:MaxLength1024String.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letrequestId=(Option.map~f:MaxLength1024String.of_xml)(Xml.childxml_arg0"RequestId")inletresource=(Option.map~f:MaxLength1024String.of_xml)(Xml.childxml_arg0"Resource")inletmessage=(Option.map~f:MaxLength1024String.of_xml)(Xml.childxml_arg0"Message")inletcode=(Option.map~f:MaxLength1024String.of_xml)(Xml.childxml_arg0"Code")inmake?requestId?resource?message?code()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letrequestId=field_mapjson__"RequestId"MaxLength1024String.of_jsoninletresource=field_mapjson__"Resource"MaxLength1024String.of_jsoninletmessage=field_mapjson__"Message"MaxLength1024String.of_jsoninletcode=field_mapjson__"Code"MaxLength1024String.of_jsoninmake?requestId?resource?message?code()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Error details for the failed asynchronous operation."]moduleMultiRegionAccessPointsAsyncResponse=structtypenonrect={regions:MultiRegionAccessPointRegionalResponseList.toption[@ocaml.doc"A collection of status information for the different Regions that a Multi-Region Access Point supports."]}letmake?regions=fun()->{regions}letto_valuex=structure_to_value[("Regions",(Option.mapx.regions~f:MultiRegionAccessPointRegionalResponseList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letregions=(Option.map~f:MultiRegionAccessPointRegionalResponseList.of_xml)(Xml.childxml_arg0"Regions")inmake?regions()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letregions=field_mapjson__"Regions"MultiRegionAccessPointRegionalResponseList.of_jsoninmake?regions()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The Multi-Region Access Point details that are returned when querying about an asynchronous request."]moduleJobFailure=structtypenonrect={failureCode:JobFailureCode.toption[@ocaml.doc"The failure code, if any, for the specified job."];failureReason:JobFailureReason.toption[@ocaml.doc"The failure reason, if any, for the specified job."]}letmake?failureCode=fun?failureReason->fun()->{failureCode;failureReason}letto_valuex=structure_to_value[("FailureCode",(Option.mapx.failureCode~f:JobFailureCode.to_value));("FailureReason",(Option.mapx.failureReason~f:JobFailureReason.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letfailureReason=(Option.map~f:JobFailureReason.of_xml)(Xml.childxml_arg0"FailureReason")inletfailureCode=(Option.map~f:JobFailureCode.of_xml)(Xml.childxml_arg0"FailureCode")inmake?failureReason?failureCode()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letfailureReason=field_mapjson__"FailureReason"JobFailureReason.of_jsoninletfailureCode=field_mapjson__"FailureCode"JobFailureCode.of_jsoninmake?failureReason?failureCode()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"If this job failed, this element indicates why the job failed."]moduleJobManifestLocation=structtypenonrect={objectArn:S3KeyArnString.t[@ocaml.doc"The Amazon Resource Name (ARN) for a manifest object. When you're using XML requests, you must replace special characters (such as carriage returns) in object keys with their equivalent XML entity codes. For more information, see XML-related object key constraints in the Amazon S3 User Guide."];objectVersionId:S3ObjectVersionId.toption[@ocaml.doc"The optional version ID to identify a specific version of the manifest object."];eTag:NonEmptyMaxLength1024String.t[@ocaml.doc"The ETag for the specified manifest object."]}letcontext_="JobManifestLocation"letmake?objectVersionId=fun~objectArn->fun~eTag->fun()->{objectVersionId;objectArn;eTag}letto_valuex=structure_to_value[("ObjectArn",(Some(S3KeyArnString.to_valuex.objectArn)));("ObjectVersionId",(Option.mapx.objectVersionId~f:S3ObjectVersionId.to_value));("ETag",(Some(NonEmptyMaxLength1024String.to_valuex.eTag)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=leteTag=NonEmptyMaxLength1024String.of_xml(Xml.child_exn~context:context_xml_arg0"ETag")inletobjectVersionId=(Option.map~f:S3ObjectVersionId.of_xml)(Xml.childxml_arg0"ObjectVersionId")inletobjectArn=S3KeyArnString.of_xml(Xml.child_exn~context:context_xml_arg0"ObjectArn")inmake~eTag?objectVersionId~objectArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=leteTag=field_map_exnjson__"ETag"NonEmptyMaxLength1024String.of_jsoninletobjectVersionId=field_mapjson__"ObjectVersionId"S3ObjectVersionId.of_jsoninletobjectArn=field_map_exnjson__"ObjectArn"S3KeyArnString.of_jsoninmake~eTag?objectVersionId~objectArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains the information required to locate a manifest object. Manifests can't be imported from directory buckets. For more information, see Directory buckets."]moduleJobManifestSpec=structtypenonrect={format:JobManifestFormat.t[@ocaml.doc"Indicates which of the available formats the specified manifest uses."];fields:JobManifestFieldList.toption[@ocaml.doc"If the specified manifest object is in the S3BatchOperations_CSV_20180820 format, this element describes which columns contain the required data."]}letcontext_="JobManifestSpec"letmake?fields=fun~format->fun()->{fields;format}letto_valuex=structure_to_value[("Format",(Some(JobManifestFormat.to_valuex.format)));("Fields",(Option.mapx.fields~f:JobManifestFieldList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letfields=(Option.map~f:JobManifestFieldList.of_xml)(Xml.childxml_arg0"Fields")inletformat=JobManifestFormat.of_xml(Xml.child_exn~context:context_xml_arg0"Format")inmake?fields~format()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letfields=field_mapjson__"Fields"JobManifestFieldList.of_jsoninletformat=field_map_exnjson__"Format"JobManifestFormat.of_jsoninmake?fields~format()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Describes the format of a manifest. If the manifest is in CSV format, also describes the columns contained within the manifest."]moduleS3JobManifestGenerator=structtypenonrect={expectedBucketOwner:AccountId.toption[@ocaml.doc"The Amazon Web Services account ID that owns the bucket the generated manifest is written to. If provided the generated manifest bucket's owner Amazon Web Services account ID must match this value, else the job fails."];sourceBucket:S3BucketArnString.t[@ocaml.doc"The ARN of the source bucket used by the ManifestGenerator. Directory buckets - Directory buckets aren't supported as the source buckets used by S3JobManifestGenerator to generate the job manifest."];manifestOutputLocation:S3ManifestOutputLocation.toption[@ocaml.doc"Specifies the location the generated manifest will be written to. Manifests can't be written to directory buckets. For more information, see Directory buckets."];filter:JobManifestGeneratorFilter.toption[@ocaml.doc"Specifies rules the S3JobManifestGenerator should use to decide whether an object in the source bucket should or should not be included in the generated job manifest."];enableManifestOutput:Boolean.t[@ocaml.doc"Determines whether or not to write the job's generated manifest to a bucket."]}letcontext_="S3JobManifestGenerator"letmake?expectedBucketOwner=fun?manifestOutputLocation->fun?filter->fun~sourceBucket->fun~enableManifestOutput->fun()->{expectedBucketOwner;manifestOutputLocation;filter;sourceBucket;enableManifestOutput}letto_valuex=structure_to_value[("ExpectedBucketOwner",(Option.mapx.expectedBucketOwner~f:AccountId.to_value));("SourceBucket",(Some(S3BucketArnString.to_valuex.sourceBucket)));("ManifestOutputLocation",(Option.mapx.manifestOutputLocation~f:S3ManifestOutputLocation.to_value));("Filter",(Option.mapx.filter~f:JobManifestGeneratorFilter.to_value));("EnableManifestOutput",(Some(Boolean.to_valuex.enableManifestOutput)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letenableManifestOutput=Boolean.of_xml(Xml.child_exn~context:context_xml_arg0"EnableManifestOutput")inletfilter=(Option.map~f:JobManifestGeneratorFilter.of_xml)(Xml.childxml_arg0"Filter")inletmanifestOutputLocation=(Option.map~f:S3ManifestOutputLocation.of_xml)(Xml.childxml_arg0"ManifestOutputLocation")inletsourceBucket=S3BucketArnString.of_xml(Xml.child_exn~context:context_xml_arg0"SourceBucket")inletexpectedBucketOwner=(Option.map~f:AccountId.of_xml)(Xml.childxml_arg0"ExpectedBucketOwner")inmake~enableManifestOutput?filter?manifestOutputLocation~sourceBucket?expectedBucketOwner()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letenableManifestOutput=field_map_exnjson__"EnableManifestOutput"Boolean.of_jsoninletfilter=field_mapjson__"Filter"JobManifestGeneratorFilter.of_jsoninletmanifestOutputLocation=field_mapjson__"ManifestOutputLocation"S3ManifestOutputLocation.of_jsoninletsourceBucket=field_map_exnjson__"SourceBucket"S3BucketArnString.of_jsoninletexpectedBucketOwner=field_mapjson__"ExpectedBucketOwner"AccountId.of_jsoninmake~enableManifestOutput?filter?manifestOutputLocation~sourceBucket?expectedBucketOwner()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The container for the service that will create the S3 manifest."]moduleLambdaInvokeOperation=structtypenonrect={functionArn:FunctionArnString.toption[@ocaml.doc"The Amazon Resource Name (ARN) for the Lambda function that the specified job will invoke on every object in the manifest."];invocationSchemaVersion:NonEmptyMaxLength64String.toption[@ocaml.doc"Specifies the schema version for the payload that Batch Operations sends when invoking an Lambda function. Version 1.0 is the default. Version 2.0 is required when you use Batch Operations to invoke Lambda functions that act on directory buckets, or if you need to specify UserArguments. For more information, see Automate object processing in Amazon S3 directory buckets with S3 Batch Operations and Lambda in the Amazon Web Services Storage Blog. Ensure that your Lambda function code expects InvocationSchemaVersion 2.0 and uses bucket name rather than bucket ARN. If the InvocationSchemaVersion does not match what your Lambda function expects, your function might not work as expected. Directory buckets - To initiate Amazon Web Services Lambda function to perform custom actions on objects in directory buckets, you must specify 2.0."];userArguments:UserArguments.toption[@ocaml.doc"Key-value pairs that are passed in the payload that Batch Operations sends when invoking an Lambda function. You must specify InvocationSchemaVersion 2.0 for LambdaInvoke operations that include UserArguments. For more information, see Automate object processing in Amazon S3 directory buckets with S3 Batch Operations and Lambda in the Amazon Web Services Storage Blog."]}letmake?functionArn=fun?invocationSchemaVersion->fun?userArguments->fun()->{functionArn;invocationSchemaVersion;userArguments}letto_valuex=structure_to_value[("FunctionArn",(Option.mapx.functionArn~f:FunctionArnString.to_value));("InvocationSchemaVersion",(Option.mapx.invocationSchemaVersion~f:NonEmptyMaxLength64String.to_value));("UserArguments",(Option.mapx.userArguments~f:UserArguments.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letuserArguments=(Option.map~f:UserArguments.of_xml)(Xml.childxml_arg0"UserArguments")inletinvocationSchemaVersion=(Option.map~f:NonEmptyMaxLength64String.of_xml)(Xml.childxml_arg0"InvocationSchemaVersion")inletfunctionArn=(Option.map~f:FunctionArnString.of_xml)(Xml.childxml_arg0"FunctionArn")inmake?userArguments?invocationSchemaVersion?functionArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letuserArguments=field_mapjson__"UserArguments"UserArguments.of_jsoninletinvocationSchemaVersion=field_mapjson__"InvocationSchemaVersion"NonEmptyMaxLength64String.of_jsoninletfunctionArn=field_mapjson__"FunctionArn"FunctionArnString.of_jsoninmake?userArguments?invocationSchemaVersion?functionArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains the configuration parameters for a Lambda Invoke operation."]moduleS3ComputeObjectChecksumOperation=structtypenonrect={checksumAlgorithm:ComputeObjectChecksumAlgorithm.toption[@ocaml.doc"Indicates the algorithm that you want Amazon S3 to use to create the checksum. For more information, see Checking object integrity in the Amazon S3 User Guide."];checksumType:ComputeObjectChecksumType.toption[@ocaml.doc"Indicates the checksum type that you want Amazon S3 to use to calculate the object's checksum value. For more information, see Checking object integrity in the Amazon S3 User Guide."]}letmake?checksumAlgorithm=fun?checksumType->fun()->{checksumAlgorithm;checksumType}letto_valuex=structure_to_value[("ChecksumAlgorithm",(Option.mapx.checksumAlgorithm~f:ComputeObjectChecksumAlgorithm.to_value));("ChecksumType",(Option.mapx.checksumType~f:ComputeObjectChecksumType.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letchecksumType=(Option.map~f:ComputeObjectChecksumType.of_xml)(Xml.childxml_arg0"ChecksumType")inletchecksumAlgorithm=(Option.map~f:ComputeObjectChecksumAlgorithm.of_xml)(Xml.childxml_arg0"ChecksumAlgorithm")inmake?checksumType?checksumAlgorithm()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letchecksumType=field_mapjson__"ChecksumType"ComputeObjectChecksumType.of_jsoninletchecksumAlgorithm=field_mapjson__"ChecksumAlgorithm"ComputeObjectChecksumAlgorithm.of_jsoninmake?checksumType?checksumAlgorithm()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Directs the specified job to invoke the ComputeObjectChecksum operation on every object listed in the job's manifest."]moduleS3CopyObjectOperation=structtypenonrect={targetResource:S3RegionalOrS3ExpressBucketArnString.toption[@ocaml.doc"Specifies the destination bucket Amazon Resource Name (ARN) for the batch copy operation. General purpose buckets - For example, to copy objects to a general purpose bucket named destinationBucket, set the TargetResource property to arn:aws:s3:::destinationBucket. Directory buckets - For example, to copy objects to a directory bucket named destinationBucket in the Availability Zone identified by the AZ ID usw2-az1, set the TargetResource property to arn:aws:s3express:region:account_id:/bucket/destination_bucket_base_name--usw2-az1--x-s3. A directory bucket as a destination bucket can be in Availability Zone or Local Zone. Copying objects across different Amazon Web Services Regions isn't supported when the source or destination bucket is in Amazon Web Services Local Zones. The source and destination buckets must have the same parent Amazon Web Services Region. Otherwise, you get an HTTP 400 Bad Request error with the error code InvalidRequest."];cannedAccessControlList:S3CannedAccessControlList.toption[@ocaml.doc"This functionality is not supported by directory buckets."];accessControlGrants:S3GrantList.toption[@ocaml.doc"This functionality is not supported by directory buckets."];metadataDirective:S3MetadataDirective.toption;modifiedSinceConstraint:TimeStamp.toption;newObjectMetadata:S3ObjectMetadata.toption[@ocaml.doc"If you don't provide this parameter, Amazon S3 copies all the metadata from the original objects. If you specify an empty set, the new objects will have no tags. Otherwise, Amazon S3 assigns the supplied tags to the new objects."];newObjectTagging:S3TagSet.toption[@ocaml.doc"Specifies a list of tags to add to the destination objects after they are copied. If NewObjectTagging is not specified, the tags of the source objects are copied to destination objects by default. Directory buckets - Tags aren't supported by directory buckets. If your source objects have tags and your destination bucket is a directory bucket, specify an empty tag set in the NewObjectTagging field to prevent copying the source object tags to the directory bucket."];redirectLocation:NonEmptyMaxLength2048String.toption[@ocaml.doc"If the destination bucket is configured as a website, specifies an optional metadata property for website redirects, x-amz-website-redirect-location. Allows webpage redirects if the object copy is accessed through a website endpoint. This functionality is not supported by directory buckets."];requesterPays:Boolean.toption[@ocaml.doc"This functionality is not supported by directory buckets."];storageClass:S3StorageClass.toption[@ocaml.doc"Specify the storage class for the destination objects in a Copy operation. Directory buckets - This functionality is not supported by directory buckets."];unModifiedSinceConstraint:TimeStamp.toption;sSEAwsKmsKeyId:KmsKeyArnString.toption[@ocaml.doc"Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for object encryption. If the KMS key doesn't exist in the same account that's issuing the command, you must use the full Key ARN not the Key ID. Directory buckets - If you specify SSEAlgorithm with KMS, you must specify the SSEAwsKmsKeyId parameter with the ID (Key ID or Key ARN) of the KMS symmetric encryption customer managed key to use. Otherwise, you get an HTTP 400 Bad Request error. The key alias format of the KMS key isn't supported. To encrypt new object copies in a directory bucket with SSE-KMS, you must specify SSE-KMS as the directory bucket's default encryption configuration with a KMS key (specifically, a customer managed key). The Amazon Web Services managed key (aws/s3) isn't supported. Your SSE-KMS configuration can only support 1 customer managed key per directory bucket for the lifetime of the bucket. After you specify a customer managed key for SSE-KMS as the bucket default encryption, you can't override the customer managed key for the bucket's SSE-KMS configuration. Then, when you specify server-side encryption settings for new object copies with SSE-KMS, you must make sure the encryption key is the same customer managed key that you specified for the directory bucket's default encryption configuration."];targetKeyPrefix:NonEmptyMaxLength1024String.toption[@ocaml.doc"Specifies the folder prefix that you want the objects to be copied into. For example, to copy objects into a folder named Folder1 in the destination bucket, set the TargetKeyPrefix property to Folder1."];objectLockLegalHoldStatus:S3ObjectLockLegalHoldStatus.toption[@ocaml.doc"The legal hold status to be applied to all objects in the Batch Operations job. This functionality is not supported by directory buckets."];objectLockMode:S3ObjectLockMode.toption[@ocaml.doc"The retention mode to be applied to all objects in the Batch Operations job. This functionality is not supported by directory buckets."];objectLockRetainUntilDate:TimeStamp.toption[@ocaml.doc"The date when the applied object retention configuration expires on all objects in the Batch Operations job. This functionality is not supported by directory buckets."];bucketKeyEnabled:Boolean.toption[@ocaml.doc"Specifies whether Amazon S3 should use an S3 Bucket Key for object encryption with server-side encryption using Amazon Web Services KMS (SSE-KMS). Setting this header to true causes Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS. Specifying this header with an Copy action doesn\226\128\153t affect bucket-level settings for S3 Bucket Key. Directory buckets - S3 Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects from general purpose buckets to directory buckets, from directory buckets to general purpose buckets, or between directory buckets, through the Copy operation in Batch Operations. In this case, Amazon S3 makes a call to KMS every time a copy request is made for a KMS-encrypted object."];checksumAlgorithm:S3ChecksumAlgorithm.toption[@ocaml.doc"Indicates the algorithm that you want Amazon S3 to use to create the checksum. For more information, see Checking object integrity in the Amazon S3 User Guide."]}letmake?targetResource=fun?cannedAccessControlList->fun?accessControlGrants->fun?metadataDirective->fun?modifiedSinceConstraint->fun?newObjectMetadata->fun?newObjectTagging->fun?redirectLocation->fun?requesterPays->fun?storageClass->fun?unModifiedSinceConstraint->fun?sSEAwsKmsKeyId->fun?targetKeyPrefix->fun?objectLockLegalHoldStatus->fun?objectLockMode->fun?objectLockRetainUntilDate->fun?bucketKeyEnabled->fun?checksumAlgorithm->fun()->{targetResource;cannedAccessControlList;accessControlGrants;metadataDirective;modifiedSinceConstraint;newObjectMetadata;newObjectTagging;redirectLocation;requesterPays;storageClass;unModifiedSinceConstraint;sSEAwsKmsKeyId;targetKeyPrefix;objectLockLegalHoldStatus;objectLockMode;objectLockRetainUntilDate;bucketKeyEnabled;checksumAlgorithm}letto_valuex=structure_to_value[("TargetResource",(Option.mapx.targetResource~f:S3RegionalOrS3ExpressBucketArnString.to_value));("CannedAccessControlList",(Option.mapx.cannedAccessControlList~f:S3CannedAccessControlList.to_value));("AccessControlGrants",(Option.mapx.accessControlGrants~f:S3GrantList.to_value));("MetadataDirective",(Option.mapx.metadataDirective~f:S3MetadataDirective.to_value));("ModifiedSinceConstraint",(Option.mapx.modifiedSinceConstraint~f:TimeStamp.to_value));("NewObjectMetadata",(Option.mapx.newObjectMetadata~f:S3ObjectMetadata.to_value));("NewObjectTagging",(Option.mapx.newObjectTagging~f:S3TagSet.to_value));("RedirectLocation",(Option.mapx.redirectLocation~f:NonEmptyMaxLength2048String.to_value));("RequesterPays",(Option.mapx.requesterPays~f:Boolean.to_value));("StorageClass",(Option.mapx.storageClass~f:S3StorageClass.to_value));("UnModifiedSinceConstraint",(Option.mapx.unModifiedSinceConstraint~f:TimeStamp.to_value));("SSEAwsKmsKeyId",(Option.mapx.sSEAwsKmsKeyId~f:KmsKeyArnString.to_value));("TargetKeyPrefix",(Option.mapx.targetKeyPrefix~f:NonEmptyMaxLength1024String.to_value));("ObjectLockLegalHoldStatus",(Option.mapx.objectLockLegalHoldStatus~f:S3ObjectLockLegalHoldStatus.to_value));("ObjectLockMode",(Option.mapx.objectLockMode~f:S3ObjectLockMode.to_value));("ObjectLockRetainUntilDate",(Option.mapx.objectLockRetainUntilDate~f:TimeStamp.to_value));("BucketKeyEnabled",(Option.mapx.bucketKeyEnabled~f:Boolean.to_value));("ChecksumAlgorithm",(Option.mapx.checksumAlgorithm~f:S3ChecksumAlgorithm.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letchecksumAlgorithm=(Option.map~f:S3ChecksumAlgorithm.of_xml)(Xml.childxml_arg0"ChecksumAlgorithm")inletbucketKeyEnabled=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"BucketKeyEnabled")inletobjectLockRetainUntilDate=(Option.map~f:TimeStamp.of_xml)(Xml.childxml_arg0"ObjectLockRetainUntilDate")inletobjectLockMode=(Option.map~f:S3ObjectLockMode.of_xml)(Xml.childxml_arg0"ObjectLockMode")inletobjectLockLegalHoldStatus=(Option.map~f:S3ObjectLockLegalHoldStatus.of_xml)(Xml.childxml_arg0"ObjectLockLegalHoldStatus")inlettargetKeyPrefix=(Option.map~f:NonEmptyMaxLength1024String.of_xml)(Xml.childxml_arg0"TargetKeyPrefix")inletsSEAwsKmsKeyId=(Option.map~f:KmsKeyArnString.of_xml)(Xml.childxml_arg0"SSEAwsKmsKeyId")inletunModifiedSinceConstraint=(Option.map~f:TimeStamp.of_xml)(Xml.childxml_arg0"UnModifiedSinceConstraint")inletstorageClass=(Option.map~f:S3StorageClass.of_xml)(Xml.childxml_arg0"StorageClass")inletrequesterPays=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"RequesterPays")inletredirectLocation=(Option.map~f:NonEmptyMaxLength2048String.of_xml)(Xml.childxml_arg0"RedirectLocation")inletnewObjectTagging=(Option.map~f:S3TagSet.of_xml)(Xml.childxml_arg0"NewObjectTagging")inletnewObjectMetadata=(Option.map~f:S3ObjectMetadata.of_xml)(Xml.childxml_arg0"NewObjectMetadata")inletmodifiedSinceConstraint=(Option.map~f:TimeStamp.of_xml)(Xml.childxml_arg0"ModifiedSinceConstraint")inletmetadataDirective=(Option.map~f:S3MetadataDirective.of_xml)(Xml.childxml_arg0"MetadataDirective")inletaccessControlGrants=(Option.map~f:S3GrantList.of_xml)(Xml.childxml_arg0"AccessControlGrants")inletcannedAccessControlList=(Option.map~f:S3CannedAccessControlList.of_xml)(Xml.childxml_arg0"CannedAccessControlList")inlettargetResource=(Option.map~f:S3RegionalOrS3ExpressBucketArnString.of_xml)(Xml.childxml_arg0"TargetResource")inmake?checksumAlgorithm?bucketKeyEnabled?objectLockRetainUntilDate?objectLockMode?objectLockLegalHoldStatus?targetKeyPrefix?sSEAwsKmsKeyId?unModifiedSinceConstraint?storageClass?requesterPays?redirectLocation?newObjectTagging?newObjectMetadata?modifiedSinceConstraint?metadataDirective?accessControlGrants?cannedAccessControlList?targetResource()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letchecksumAlgorithm=field_mapjson__"ChecksumAlgorithm"S3ChecksumAlgorithm.of_jsoninletbucketKeyEnabled=field_mapjson__"BucketKeyEnabled"Boolean.of_jsoninletobjectLockRetainUntilDate=field_mapjson__"ObjectLockRetainUntilDate"TimeStamp.of_jsoninletobjectLockMode=field_mapjson__"ObjectLockMode"S3ObjectLockMode.of_jsoninletobjectLockLegalHoldStatus=field_mapjson__"ObjectLockLegalHoldStatus"S3ObjectLockLegalHoldStatus.of_jsoninlettargetKeyPrefix=field_mapjson__"TargetKeyPrefix"NonEmptyMaxLength1024String.of_jsoninletsSEAwsKmsKeyId=field_mapjson__"SSEAwsKmsKeyId"KmsKeyArnString.of_jsoninletunModifiedSinceConstraint=field_mapjson__"UnModifiedSinceConstraint"TimeStamp.of_jsoninletstorageClass=field_mapjson__"StorageClass"S3StorageClass.of_jsoninletrequesterPays=field_mapjson__"RequesterPays"Boolean.of_jsoninletredirectLocation=field_mapjson__"RedirectLocation"NonEmptyMaxLength2048String.of_jsoninletnewObjectTagging=field_mapjson__"NewObjectTagging"S3TagSet.of_jsoninletnewObjectMetadata=field_mapjson__"NewObjectMetadata"S3ObjectMetadata.of_jsoninletmodifiedSinceConstraint=field_mapjson__"ModifiedSinceConstraint"TimeStamp.of_jsoninletmetadataDirective=field_mapjson__"MetadataDirective"S3MetadataDirective.of_jsoninletaccessControlGrants=field_mapjson__"AccessControlGrants"S3GrantList.of_jsoninletcannedAccessControlList=field_mapjson__"CannedAccessControlList"S3CannedAccessControlList.of_jsoninlettargetResource=field_mapjson__"TargetResource"S3RegionalOrS3ExpressBucketArnString.of_jsoninmake?checksumAlgorithm?bucketKeyEnabled?objectLockRetainUntilDate?objectLockMode?objectLockLegalHoldStatus?targetKeyPrefix?sSEAwsKmsKeyId?unModifiedSinceConstraint?storageClass?requesterPays?redirectLocation?newObjectTagging?newObjectMetadata?modifiedSinceConstraint?metadataDirective?accessControlGrants?cannedAccessControlList?targetResource()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains the configuration parameters for a PUT Copy object operation. S3 Batch Operations passes every object to the underlying CopyObject API operation. For more information about the parameters for this operation, see CopyObject."]moduleS3DeleteObjectTaggingOperation=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"Contains no configuration parameters because the DELETE Object tagging (DeleteObjectTagging) API operation accepts only the bucket name and key name as parameters, which are defined in the job's manifest."]moduleS3InitiateRestoreObjectOperation=structtypenonrect={expirationInDays:S3ExpirationInDays.toption[@ocaml.doc"This argument specifies how long the S3 Glacier or S3 Glacier Deep Archive object remains available in Amazon S3. S3 Initiate Restore Object jobs that target S3 Glacier and S3 Glacier Deep Archive objects require ExpirationInDays set to 1 or greater. Conversely, do not set ExpirationInDays when creating S3 Initiate Restore Object jobs that target S3 Intelligent-Tiering Archive Access and Deep Archive Access tier objects. Objects in S3 Intelligent-Tiering archive access tiers are not subject to restore expiry, so specifying ExpirationInDays results in restore request failure. S3 Batch Operations jobs can operate either on S3 Glacier and S3 Glacier Deep Archive storage class objects or on S3 Intelligent-Tiering Archive Access and Deep Archive Access storage tier objects, but not both types in the same job. If you need to restore objects of both types you must create separate Batch Operations jobs."];glacierJobTier:S3GlacierJobTier.toption[@ocaml.doc"S3 Batch Operations supports STANDARD and BULK retrieval tiers, but not the EXPEDITED retrieval tier."]}letmake?expirationInDays=fun?glacierJobTier->fun()->{expirationInDays;glacierJobTier}letto_valuex=structure_to_value[("ExpirationInDays",(Option.mapx.expirationInDays~f:S3ExpirationInDays.to_value));("GlacierJobTier",(Option.mapx.glacierJobTier~f:S3GlacierJobTier.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letglacierJobTier=(Option.map~f:S3GlacierJobTier.of_xml)(Xml.childxml_arg0"GlacierJobTier")inletexpirationInDays=(Option.map~f:S3ExpirationInDays.of_xml)(Xml.childxml_arg0"ExpirationInDays")inmake?glacierJobTier?expirationInDays()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letglacierJobTier=field_mapjson__"GlacierJobTier"S3GlacierJobTier.of_jsoninletexpirationInDays=field_mapjson__"ExpirationInDays"S3ExpirationInDays.of_jsoninmake?glacierJobTier?expirationInDays()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains the configuration parameters for a POST Object restore job. S3 Batch Operations passes every object to the underlying RestoreObject API operation. For more information about the parameters for this operation, see RestoreObject."]moduleS3ReplicateObjectOperation=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"Directs the specified job to invoke ReplicateObject on every object in the job's manifest."]moduleS3SetObjectAclOperation=structtypenonrect={accessControlPolicy:S3AccessControlPolicy.toption}letmake?accessControlPolicy=fun()->{accessControlPolicy}letto_valuex=structure_to_value[("AccessControlPolicy",(Option.mapx.accessControlPolicy~f:S3AccessControlPolicy.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccessControlPolicy=(Option.map~f:S3AccessControlPolicy.of_xml)(Xml.childxml_arg0"AccessControlPolicy")inmake?accessControlPolicy()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccessControlPolicy=field_mapjson__"AccessControlPolicy"S3AccessControlPolicy.of_jsoninmake?accessControlPolicy()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains the configuration parameters for a PUT Object ACL operation. S3 Batch Operations passes every object to the underlying PutObjectAcl API operation. For more information about the parameters for this operation, see PutObjectAcl."]moduleS3SetObjectLegalHoldOperation=structtypenonrect={legalHold:S3ObjectLockLegalHold.t[@ocaml.doc"Contains the Object Lock legal hold status to be applied to all objects in the Batch Operations job."]}letcontext_="S3SetObjectLegalHoldOperation"letmake~legalHold=fun()->{legalHold}letto_valuex=structure_to_value[("LegalHold",(Some(S3ObjectLockLegalHold.to_valuex.legalHold)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letlegalHold=S3ObjectLockLegalHold.of_xml(Xml.child_exn~context:context_xml_arg0"LegalHold")inmake~legalHold()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letlegalHold=field_map_exnjson__"LegalHold"S3ObjectLockLegalHold.of_jsoninmake~legalHold()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains the configuration for an S3 Object Lock legal hold operation that an S3 Batch Operations job passes to every object to the underlying PutObjectLegalHold API operation. For more information, see Using S3 Object Lock legal hold with S3 Batch Operations in the Amazon S3 User Guide. This functionality is not supported by directory buckets."]moduleS3SetObjectRetentionOperation=structtypenonrect={bypassGovernanceRetention:Boolean.toption[@ocaml.doc"Indicates if the action should be applied to objects in the Batch Operations job even if they have Object Lock GOVERNANCE type in place."];retention:S3Retention.t[@ocaml.doc"Contains the Object Lock retention mode to be applied to all objects in the Batch Operations job. For more information, see Using S3 Object Lock retention with S3 Batch Operations in the Amazon S3 User Guide."]}letcontext_="S3SetObjectRetentionOperation"letmake?bypassGovernanceRetention=fun~retention->fun()->{bypassGovernanceRetention;retention}letto_valuex=structure_to_value[("BypassGovernanceRetention",(Option.mapx.bypassGovernanceRetention~f:Boolean.to_value));("Retention",(Some(S3Retention.to_valuex.retention)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letretention=S3Retention.of_xml(Xml.child_exn~context:context_xml_arg0"Retention")inletbypassGovernanceRetention=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"BypassGovernanceRetention")inmake~retention?bypassGovernanceRetention()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letretention=field_map_exnjson__"Retention"S3Retention.of_jsoninletbypassGovernanceRetention=field_mapjson__"BypassGovernanceRetention"Boolean.of_jsoninmake~retention?bypassGovernanceRetention()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains the configuration parameters for the Object Lock retention action for an S3 Batch Operations job. Batch Operations passes every object to the underlying PutObjectRetention API operation. For more information, see Using S3 Object Lock retention with S3 Batch Operations in the Amazon S3 User Guide. This functionality is not supported by directory buckets."]moduleS3SetObjectTaggingOperation=structtypenonrect={tagSet:S3TagSet.toption}letmake?tagSet=fun()->{tagSet}letto_valuex=structure_to_value[("TagSet",(Option.mapx.tagSet~f:S3TagSet.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettagSet=(Option.map~f:S3TagSet.of_xml)(Xml.childxml_arg0"TagSet")inmake?tagSet()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettagSet=field_mapjson__"TagSet"S3TagSet.of_jsoninmake?tagSet()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains the configuration parameters for a PUT Object Tagging operation. S3 Batch Operations passes every object to the underlying PutObjectTagging API operation. For more information about the parameters for this operation, see PutObjectTagging."]moduleS3UpdateObjectEncryptionOperation=structtypenonrect={objectEncryption:ObjectEncryption.toption[@ocaml.doc"The updated server-side encryption type for this S3 object. The UpdateObjectEncryption operation supports the SSE-KMS encryption type."]}letmake?objectEncryption=fun()->{objectEncryption}letto_valuex=structure_to_value[("ObjectEncryption",(Option.mapx.objectEncryption~f:ObjectEncryption.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letobjectEncryption=(Option.map~f:ObjectEncryption.of_xml)(Xml.childxml_arg0"ObjectEncryption")inmake?objectEncryption()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letobjectEncryption=field_mapjson__"ObjectEncryption"ObjectEncryption.of_jsoninmake?objectEncryption()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"With the UpdateObjectEncryption operation, you can atomically update the server-side encryption type of an existing object in a general purpose bucket without any data movement."]moduleJobReportFormat=structtypenonrect=|Report_CSV_20180820|Non_static_idofstringletmakei=iletto_string=function|Report_CSV_20180820->"Report_CSV_20180820"|Non_static_ids->sletof_string=function|"Report_CSV_20180820"->Report_CSV_20180820|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 JobReportFormat"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"JobReportFormat"j)letto_json=simple_to_jsonto_valueendmoduleJobReportScope=structtypenonrect=|AllTasks|FailedTasksOnly|Non_static_idofstringletmakei=iletto_string=function|AllTasks->"AllTasks"|FailedTasksOnly->"FailedTasksOnly"|Non_static_ids->sletof_string=function|"AllTasks"->AllTasks|"FailedTasksOnly"->FailedTasksOnly|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 JobReportScope"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"JobReportScope"j)letto_json=simple_to_jsonto_valueendmoduleReportPrefixString=structtypenonrect=stringletcontext_="ReportPrefixString"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:"ReportPrefixString"jletto_json=simple_to_jsonto_valueendmoduleStorageLensGroupFilter=structtypenonrect={matchAnyPrefix:MatchAnyPrefix.toption[@ocaml.doc"Contains a list of prefixes. At least one prefix must be specified. Up to 10 prefixes are allowed."];matchAnySuffix:MatchAnySuffix.toption[@ocaml.doc"Contains a list of suffixes. At least one suffix must be specified. Up to 10 suffixes are allowed."];matchAnyTag:MatchAnyTag.toption[@ocaml.doc"Contains the list of S3 object tags. At least one object tag must be specified. Up to 10 object tags are allowed."];matchObjectAge:MatchObjectAge.toption[@ocaml.doc"Contains DaysGreaterThan and DaysLessThan to define the object age range (minimum and maximum number of days)."];matchObjectSize:MatchObjectSize.toption[@ocaml.doc"Contains BytesGreaterThan and BytesLessThan to define the object size range (minimum and maximum number of Bytes)."];and_:StorageLensGroupAndOperator.toption[@ocaml.doc"A logical operator that allows multiple filter conditions to be joined for more complex comparisons of Storage Lens group data. Objects must match all of the listed filter conditions that are joined by the And logical operator. Only one of each filter condition is allowed."];or_:StorageLensGroupOrOperator.toption[@ocaml.doc"A single logical operator that allows multiple filter conditions to be joined. Objects can match any of the listed filter conditions, which are joined by the Or logical operator. Only one of each filter condition is allowed."]}letmake?matchAnyPrefix=fun?matchAnySuffix->fun?matchAnyTag->fun?matchObjectAge->fun?matchObjectSize->fun?and_->fun?or_->fun()->{matchAnyPrefix;matchAnySuffix;matchAnyTag;matchObjectAge;matchObjectSize;and_;or_}letto_valuex=structure_to_value[("MatchAnyPrefix",(Option.mapx.matchAnyPrefix~f:MatchAnyPrefix.to_value));("MatchAnySuffix",(Option.mapx.matchAnySuffix~f:MatchAnySuffix.to_value));("MatchAnyTag",(Option.mapx.matchAnyTag~f:MatchAnyTag.to_value));("MatchObjectAge",(Option.mapx.matchObjectAge~f:MatchObjectAge.to_value));("MatchObjectSize",(Option.mapx.matchObjectSize~f:MatchObjectSize.to_value));("And",(Option.mapx.and_~f:StorageLensGroupAndOperator.to_value));("Or",(Option.mapx.or_~f:StorageLensGroupOrOperator.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letor_=(Option.map~f:StorageLensGroupOrOperator.of_xml)(Xml.childxml_arg0"Or")inletand_=(Option.map~f:StorageLensGroupAndOperator.of_xml)(Xml.childxml_arg0"And")inletmatchObjectSize=(Option.map~f:MatchObjectSize.of_xml)(Xml.childxml_arg0"MatchObjectSize")inletmatchObjectAge=(Option.map~f:MatchObjectAge.of_xml)(Xml.childxml_arg0"MatchObjectAge")inletmatchAnyTag=(Option.map~f:MatchAnyTag.of_xml)(Xml.childxml_arg0"MatchAnyTag")inletmatchAnySuffix=(Option.map~f:MatchAnySuffix.of_xml)(Xml.childxml_arg0"MatchAnySuffix")inletmatchAnyPrefix=(Option.map~f:MatchAnyPrefix.of_xml)(Xml.childxml_arg0"MatchAnyPrefix")inmake?or_?and_?matchObjectSize?matchObjectAge?matchAnyTag?matchAnySuffix?matchAnyPrefix()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letor_=field_mapjson__"Or"StorageLensGroupOrOperator.of_jsoninletand_=field_mapjson__"And"StorageLensGroupAndOperator.of_jsoninletmatchObjectSize=field_mapjson__"MatchObjectSize"MatchObjectSize.of_jsoninletmatchObjectAge=field_mapjson__"MatchObjectAge"MatchObjectAge.of_jsoninletmatchAnyTag=field_mapjson__"MatchAnyTag"MatchAnyTag.of_jsoninletmatchAnySuffix=field_mapjson__"MatchAnySuffix"MatchAnySuffix.of_jsoninletmatchAnyPrefix=field_mapjson__"MatchAnyPrefix"MatchAnyPrefix.of_jsoninmake?or_?and_?matchObjectSize?matchObjectAge?matchAnyTag?matchAnySuffix?matchAnyPrefix()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The filter element sets the criteria for the Storage Lens group data that is displayed. For multiple filter conditions, the AND or OR logical operator is used."]moduleExceptionMessage=structtypenonrect=stringletcontext_="ExceptionMessage"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:"ExceptionMessage"jletto_json=simple_to_jsonto_valueendmoduleTag=structtypenonrect={key:TagKeyString.t[@ocaml.doc"The key of the key-value pair of a tag added to your Amazon Web Services resource. A tag key can be up to 128 Unicode characters in length and is case-sensitive. System created tags that begin with aws: aren\226\128\153t supported."];value:TagValueString.t[@ocaml.doc"The value of the key-value pair of a tag added to your Amazon Web Services resource. A tag value can be up to 256 Unicode characters in length and is case-sensitive."]}letcontext_="Tag"letmake~key=fun~value->fun()->{key;value}letto_valuex=structure_to_value[("Key",(Some(TagKeyString.to_valuex.key)));("Value",(Some(TagValueString.to_valuex.value)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letvalue=TagValueString.of_xml(Xml.child_exn~context:context_xml_arg0"Value")inletkey=TagKeyString.of_xml(Xml.child_exn~context:context_xml_arg0"Key")inmake~value~key()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letvalue=field_map_exnjson__"Value"TagValueString.of_jsoninletkey=field_map_exnjson__"Key"TagKeyString.of_jsoninmake~value~key()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A key-value pair that you use to label your resources. You can add tags to new resources when you create them, or you can add tags to existing resources. Tags can help you organize, track costs for, and control access to resources."]moduleMultiRegionAccessPointRoute=structtypenonrect={bucket:BucketName.toption[@ocaml.doc"The name of the Amazon S3 bucket for which you'll submit a routing configuration change. Either the Bucket or the Region value must be provided. If both are provided, the bucket must be in the specified Region."];region:RegionName.toption[@ocaml.doc"The Amazon Web Services Region to which you'll be submitting a routing configuration change. Either the Bucket or the Region value must be provided. If both are provided, the bucket must be in the specified Region."];trafficDialPercentage:TrafficDialPercentage.t[@ocaml.doc"The traffic state for the specified bucket or Amazon Web Services Region. A value of 0 indicates a passive state, which means that no new traffic will be routed to the Region. A value of 100 indicates an active state, which means that traffic will be routed to the specified Region. When the routing configuration for a Region is changed from active to passive, any in-progress operations (uploads, copies, deletes, and so on) to the formerly active Region will continue to run to until a final success or failure status is reached. If all Regions in the routing configuration are designated as passive, you'll receive an InvalidRequest error."]}letcontext_="MultiRegionAccessPointRoute"letmake?bucket=fun?region->fun~trafficDialPercentage->fun()->{bucket;region;trafficDialPercentage}letto_valuex=structure_to_value[("Bucket",(Option.mapx.bucket~f:BucketName.to_value));("Region",(Option.mapx.region~f:RegionName.to_value));("TrafficDialPercentage",(Some(TrafficDialPercentage.to_valuex.trafficDialPercentage)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettrafficDialPercentage=TrafficDialPercentage.of_xml(Xml.child_exn~context:context_xml_arg0"TrafficDialPercentage")inletregion=(Option.map~f:RegionName.of_xml)(Xml.childxml_arg0"Region")inletbucket=(Option.map~f:BucketName.of_xml)(Xml.childxml_arg0"Bucket")inmake~trafficDialPercentage?region?bucket()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettrafficDialPercentage=field_map_exnjson__"TrafficDialPercentage"TrafficDialPercentage.of_jsoninletregion=field_mapjson__"Region"RegionName.of_jsoninletbucket=field_mapjson__"Bucket"BucketName.of_jsoninmake~trafficDialPercentage?region?bucket()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A structure for a Multi-Region Access Point that indicates where Amazon S3 traffic can be routed. Routes can be either active or passive. Active routes can process Amazon S3 requests through the Multi-Region Access Point, but passive routes are not eligible to process Amazon S3 requests. Each route contains the Amazon S3 bucket name and the Amazon Web Services Region that the bucket is located in. The route also includes the TrafficDialPercentage value, which shows whether the bucket and Region are active (indicated by a value of 100) or passive (indicated by a value of 0)."]moduleStorageLensTag=structtypenonrect={key:TagKeyString.t;value:TagValueString.t}letcontext_="StorageLensTag"letmake~key=fun~value->fun()->{key;value}letto_valuex=structure_to_value[("Key",(Some(TagKeyString.to_valuex.key)));("Value",(Some(TagValueString.to_valuex.value)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letvalue=TagValueString.of_xml(Xml.child_exn~context:context_xml_arg0"Value")inletkey=TagKeyString.of_xml(Xml.child_exn~context:context_xml_arg0"Key")inmake~value~key()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letvalue=field_map_exnjson__"Value"TagValueString.of_jsoninletkey=field_map_exnjson__"Key"TagKeyString.of_jsoninmake~value~key()letto_jsonv=composed_to_jsonto_valuevendmoduleAccountLevel=structtypenonrect={activityMetrics:ActivityMetrics.toption[@ocaml.doc"A container element for S3 Storage Lens activity metrics."];bucketLevel:BucketLevel.t[@ocaml.doc"A container element for the S3 Storage Lens bucket-level configuration."];advancedCostOptimizationMetrics:AdvancedCostOptimizationMetrics.toption[@ocaml.doc"A container element for S3 Storage Lens advanced cost-optimization metrics."];advancedDataProtectionMetrics:AdvancedDataProtectionMetrics.toption[@ocaml.doc"A container element for S3 Storage Lens advanced data-protection metrics."];detailedStatusCodesMetrics:DetailedStatusCodesMetrics.toption[@ocaml.doc"A container element for detailed status code metrics."];advancedPerformanceMetrics:AdvancedPerformanceMetrics.toption[@ocaml.doc"A container element for S3 Storage Lens advanced performance metrics."];storageLensGroupLevel:StorageLensGroupLevel.toption[@ocaml.doc"A container element for S3 Storage Lens groups metrics."]}letcontext_="AccountLevel"letmake?activityMetrics=fun?advancedCostOptimizationMetrics->fun?advancedDataProtectionMetrics->fun?detailedStatusCodesMetrics->fun?advancedPerformanceMetrics->fun?storageLensGroupLevel->fun~bucketLevel->fun()->{activityMetrics;advancedCostOptimizationMetrics;advancedDataProtectionMetrics;detailedStatusCodesMetrics;advancedPerformanceMetrics;storageLensGroupLevel;bucketLevel}letto_valuex=structure_to_value[("ActivityMetrics",(Option.mapx.activityMetrics~f:ActivityMetrics.to_value));("BucketLevel",(Some(BucketLevel.to_valuex.bucketLevel)));("AdvancedCostOptimizationMetrics",(Option.mapx.advancedCostOptimizationMetrics~f:AdvancedCostOptimizationMetrics.to_value));("AdvancedDataProtectionMetrics",(Option.mapx.advancedDataProtectionMetrics~f:AdvancedDataProtectionMetrics.to_value));("DetailedStatusCodesMetrics",(Option.mapx.detailedStatusCodesMetrics~f:DetailedStatusCodesMetrics.to_value));("AdvancedPerformanceMetrics",(Option.mapx.advancedPerformanceMetrics~f:AdvancedPerformanceMetrics.to_value));("StorageLensGroupLevel",(Option.mapx.storageLensGroupLevel~f:StorageLensGroupLevel.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstorageLensGroupLevel=(Option.map~f:StorageLensGroupLevel.of_xml)(Xml.childxml_arg0"StorageLensGroupLevel")inletadvancedPerformanceMetrics=(Option.map~f:AdvancedPerformanceMetrics.of_xml)(Xml.childxml_arg0"AdvancedPerformanceMetrics")inletdetailedStatusCodesMetrics=(Option.map~f:DetailedStatusCodesMetrics.of_xml)(Xml.childxml_arg0"DetailedStatusCodesMetrics")inletadvancedDataProtectionMetrics=(Option.map~f:AdvancedDataProtectionMetrics.of_xml)(Xml.childxml_arg0"AdvancedDataProtectionMetrics")inletadvancedCostOptimizationMetrics=(Option.map~f:AdvancedCostOptimizationMetrics.of_xml)(Xml.childxml_arg0"AdvancedCostOptimizationMetrics")inletbucketLevel=BucketLevel.of_xml(Xml.child_exn~context:context_xml_arg0"BucketLevel")inletactivityMetrics=(Option.map~f:ActivityMetrics.of_xml)(Xml.childxml_arg0"ActivityMetrics")inmake?storageLensGroupLevel?advancedPerformanceMetrics?detailedStatusCodesMetrics?advancedDataProtectionMetrics?advancedCostOptimizationMetrics~bucketLevel?activityMetrics()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstorageLensGroupLevel=field_mapjson__"StorageLensGroupLevel"StorageLensGroupLevel.of_jsoninletadvancedPerformanceMetrics=field_mapjson__"AdvancedPerformanceMetrics"AdvancedPerformanceMetrics.of_jsoninletdetailedStatusCodesMetrics=field_mapjson__"DetailedStatusCodesMetrics"DetailedStatusCodesMetrics.of_jsoninletadvancedDataProtectionMetrics=field_mapjson__"AdvancedDataProtectionMetrics"AdvancedDataProtectionMetrics.of_jsoninletadvancedCostOptimizationMetrics=field_mapjson__"AdvancedCostOptimizationMetrics"AdvancedCostOptimizationMetrics.of_jsoninletbucketLevel=field_map_exnjson__"BucketLevel"BucketLevel.of_jsoninletactivityMetrics=field_mapjson__"ActivityMetrics"ActivityMetrics.of_jsoninmake?storageLensGroupLevel?advancedPerformanceMetrics?detailedStatusCodesMetrics?advancedDataProtectionMetrics?advancedCostOptimizationMetrics~bucketLevel?activityMetrics()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A container element for the account-level Amazon S3 Storage Lens configuration. You must enable Storage Lens metrics consistently at both the account level and bucket level, or your request will fail. For more information about S3 Storage Lens, see Assessing your storage activity and usage with S3 Storage Lens in the Amazon S3 User Guide. For a complete list of S3 Storage Lens metrics, see S3 Storage Lens metrics glossary in the Amazon S3 User Guide."]moduleExclude=structtypenonrect={buckets:Buckets.toption[@ocaml.doc"A container for the S3 Storage Lens bucket excludes."];regions:Regions.toption[@ocaml.doc"A container for the S3 Storage Lens Region excludes."]}letmake?buckets=fun?regions->fun()->{buckets;regions}letto_valuex=structure_to_value[("Buckets",(Option.mapx.buckets~f:Buckets.to_value));("Regions",(Option.mapx.regions~f:Regions.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letregions=(Option.map~f:Regions.of_xml)(Xml.childxml_arg0"Regions")inletbuckets=(Option.map~f:Buckets.of_xml)(Xml.childxml_arg0"Buckets")inmake?regions?buckets()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letregions=field_mapjson__"Regions"Regions.of_jsoninletbuckets=field_mapjson__"Buckets"Buckets.of_jsoninmake?regions?buckets()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A container for what Amazon S3 Storage Lens will exclude."]moduleInclude=structtypenonrect={buckets:Buckets.toption[@ocaml.doc"A container for the S3 Storage Lens bucket includes."];regions:Regions.toption[@ocaml.doc"A container for the S3 Storage Lens Region includes."]}letmake?buckets=fun?regions->fun()->{buckets;regions}letto_valuex=structure_to_value[("Buckets",(Option.mapx.buckets~f:Buckets.to_value));("Regions",(Option.mapx.regions~f:Regions.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letregions=(Option.map~f:Regions.of_xml)(Xml.childxml_arg0"Regions")inletbuckets=(Option.map~f:Buckets.of_xml)(Xml.childxml_arg0"Buckets")inmake?regions?buckets()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letregions=field_mapjson__"Regions"Regions.of_jsoninletbuckets=field_mapjson__"Buckets"Buckets.of_jsoninmake?regions?buckets()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A container for what Amazon S3 Storage Lens configuration includes."]moduleStorageLensAwsOrg=structtypenonrect={arn:AwsOrgArn.t[@ocaml.doc"A container for the Amazon Resource Name (ARN) of the Amazon Web Services organization. This property is read-only and follows the following format: arn:aws:organizations:us-east-1:example-account-id:organization/o-ex2l495dck"]}letcontext_="StorageLensAwsOrg"letmake~arn=fun()->{arn}letto_valuex=structure_to_value[("Arn",(Some(AwsOrgArn.to_valuex.arn)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letarn=AwsOrgArn.of_xml(Xml.child_exn~context:context_xml_arg0"Arn")inmake~arn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letarn=field_map_exnjson__"Arn"AwsOrgArn.of_jsoninmake~arn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The Amazon Web Services organization for your S3 Storage Lens."]moduleStorageLensDataExport=structtypenonrect={s3BucketDestination:S3BucketDestination.toption[@ocaml.doc"A container for the bucket where the S3 Storage Lens metrics export will be located. This bucket must be located in the same Region as the storage lens configuration."];cloudWatchMetrics:CloudWatchMetrics.toption[@ocaml.doc"A container for enabling Amazon CloudWatch publishing for S3 Storage Lens metrics."];storageLensTableDestination:StorageLensTableDestination.toption[@ocaml.doc"A container for configuring S3 Storage Lens data exports to read-only S3 table buckets."]}letmake?s3BucketDestination=fun?cloudWatchMetrics->fun?storageLensTableDestination->fun()->{s3BucketDestination;cloudWatchMetrics;storageLensTableDestination}letto_valuex=structure_to_value[("S3BucketDestination",(Option.mapx.s3BucketDestination~f:S3BucketDestination.to_value));("CloudWatchMetrics",(Option.mapx.cloudWatchMetrics~f:CloudWatchMetrics.to_value));("StorageLensTableDestination",(Option.mapx.storageLensTableDestination~f:StorageLensTableDestination.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstorageLensTableDestination=(Option.map~f:StorageLensTableDestination.of_xml)(Xml.childxml_arg0"StorageLensTableDestination")inletcloudWatchMetrics=(Option.map~f:CloudWatchMetrics.of_xml)(Xml.childxml_arg0"CloudWatchMetrics")inlets3BucketDestination=(Option.map~f:S3BucketDestination.of_xml)(Xml.childxml_arg0"S3BucketDestination")inmake?storageLensTableDestination?cloudWatchMetrics?s3BucketDestination()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstorageLensTableDestination=field_mapjson__"StorageLensTableDestination"StorageLensTableDestination.of_jsoninletcloudWatchMetrics=field_mapjson__"CloudWatchMetrics"CloudWatchMetrics.of_jsoninlets3BucketDestination=field_mapjson__"S3BucketDestination"S3BucketDestination.of_jsoninmake?storageLensTableDestination?cloudWatchMetrics?s3BucketDestination()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A container to specify the properties of your S3 Storage Lens metrics export, including the destination, schema, and format."]moduleStorageLensExpandedPrefixesDataExport=structtypenonrect={s3BucketDestination:S3BucketDestination.toption;storageLensTableDestination:StorageLensTableDestination.toption[@ocaml.doc"A container for the bucket where the S3 Storage Lens metric export files are located. At least one export destination must be specified."]}letmake?s3BucketDestination=fun?storageLensTableDestination->fun()->{s3BucketDestination;storageLensTableDestination}letto_valuex=structure_to_value[("S3BucketDestination",(Option.mapx.s3BucketDestination~f:S3BucketDestination.to_value));("StorageLensTableDestination",(Option.mapx.storageLensTableDestination~f:StorageLensTableDestination.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstorageLensTableDestination=(Option.map~f:StorageLensTableDestination.of_xml)(Xml.childxml_arg0"StorageLensTableDestination")inlets3BucketDestination=(Option.map~f:S3BucketDestination.of_xml)(Xml.childxml_arg0"S3BucketDestination")inmake?storageLensTableDestination?s3BucketDestination()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstorageLensTableDestination=field_mapjson__"StorageLensTableDestination"StorageLensTableDestination.of_jsoninlets3BucketDestination=field_mapjson__"S3BucketDestination"S3BucketDestination.of_jsoninmake?storageLensTableDestination?s3BucketDestination()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A container for your S3 Storage Lens expanded prefix metrics report configuration. Unlike the default Storage Lens metrics report, the enhanced prefix metrics report includes all S3 Storage Lens storage and activity data related to the full list of prefixes in your Storage Lens configuration."]moduleBucketVersioningStatus=structtypenonrect=|Enabled|Suspended|Non_static_idofstringletmakei=iletto_string=function|Enabled->"Enabled"|Suspended->"Suspended"|Non_static_ids->sletof_string=function|"Enabled"->Enabled|"Suspended"->Suspended|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 BucketVersioningStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"BucketVersioningStatus"j)letto_json=simple_to_jsonto_valueendmoduleMFADelete=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 MFADelete"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"MFADelete"j)letto_json=simple_to_jsonto_valueendmoduleReplicationRules=structtypenonrect=ReplicationRule.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ReplicationRule.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:ReplicationRule.of_xml)letof_jsonj=list_of_json~kind:"ReplicationRules"~of_json:ReplicationRule.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleRole=structtypenonrect=stringletcontext_="Role"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:"Role"jletto_json=simple_to_jsonto_valueendmoduleLifecycleRules=structtypenonrect=LifecycleRule.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:LifecycleRule.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:LifecycleRule.of_xml)letof_jsonj=list_of_json~kind:"LifecycleRules"~of_json:LifecycleRule.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmodulePrefixesList=structtypenonrect=Prefix.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:Prefix.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:Prefix.of_xml)letof_jsonj=list_of_json~kind:"PrefixesList"~of_json:Prefix.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleScopePermissionList=structtypenonrect=ScopePermission.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ScopePermission.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:ScopePermission.of_xml)letof_jsonj=list_of_json~kind:"ScopePermissionList"~of_json:ScopePermission.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleObjectLambdaAllowedFeaturesList=structtypenonrect=ObjectLambdaAllowedFeature.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ObjectLambdaAllowedFeature.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:ObjectLambdaAllowedFeature.of_xml)letof_jsonj=list_of_json~kind:"ObjectLambdaAllowedFeaturesList"~of_json:ObjectLambdaAllowedFeature.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleObjectLambdaSupportingAccessPointArn=structtypenonrect=stringletcontext_="ObjectLambdaSupportingAccessPointArn"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:2048)>>=(fun()->check_patterni~pattern:"arn:[^:]+:s3:[^:]*:\\d{12}:accesspoint/.*")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"ObjectLambdaSupportingAccessPointArn"jletto_json=simple_to_jsonto_valueendmoduleObjectLambdaTransformationConfigurationsList=structtypenonrect=ObjectLambdaTransformationConfiguration.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ObjectLambdaTransformationConfiguration.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:ObjectLambdaTransformationConfiguration.of_xml)letof_jsonj=list_of_json~kind:"ObjectLambdaTransformationConfigurationsList"~of_json:ObjectLambdaTransformationConfiguration.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleListStorageLensGroupEntry=structtypenonrect={name:StorageLensGroupName.toption[@ocaml.doc"Contains the name of the Storage Lens group that exists in the specified home Region."];storageLensGroupArn:StorageLensGroupArn.toption[@ocaml.doc"Contains the Amazon Resource Name (ARN) of the Storage Lens group. This property is read-only."];homeRegion:S3AWSRegion.toption[@ocaml.doc"Contains the Amazon Web Services Region where the Storage Lens group was created."]}letmake?name=fun?storageLensGroupArn->fun?homeRegion->fun()->{name;storageLensGroupArn;homeRegion}letto_valuex=structure_to_value[("Name",(Option.mapx.name~f:StorageLensGroupName.to_value));("StorageLensGroupArn",(Option.mapx.storageLensGroupArn~f:StorageLensGroupArn.to_value));("HomeRegion",(Option.mapx.homeRegion~f:S3AWSRegion.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lethomeRegion=(Option.map~f:S3AWSRegion.of_xml)(Xml.childxml_arg0"HomeRegion")inletstorageLensGroupArn=(Option.map~f:StorageLensGroupArn.of_xml)(Xml.childxml_arg0"StorageLensGroupArn")inletname=(Option.map~f:StorageLensGroupName.of_xml)(Xml.childxml_arg0"Name")inmake?homeRegion?storageLensGroupArn?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lethomeRegion=field_mapjson__"HomeRegion"S3AWSRegion.of_jsoninletstorageLensGroupArn=field_mapjson__"StorageLensGroupArn"StorageLensGroupArn.of_jsoninletname=field_mapjson__"Name"StorageLensGroupName.of_jsoninmake?homeRegion?storageLensGroupArn?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Each entry contains a Storage Lens group that exists in the specified home Region."]moduleListStorageLensConfigurationEntry=structtypenonrect={id:ConfigId.toption[@ocaml.doc"A container for the S3 Storage Lens configuration ID."];storageLensArn:StorageLensArn.toption[@ocaml.doc"The ARN of the S3 Storage Lens configuration. This property is read-only."];homeRegion:S3AWSRegion.toption[@ocaml.doc"A container for the S3 Storage Lens home Region. Your metrics data is stored and retained in your designated S3 Storage Lens home Region."];isEnabled:IsEnabled.toption[@ocaml.doc"A container for whether the S3 Storage Lens configuration is enabled. This property is required."]}letmake?id=fun?storageLensArn->fun?homeRegion->fun?isEnabled->fun()->{id;storageLensArn;homeRegion;isEnabled}letto_valuex=structure_to_value[("Id",(Option.mapx.id~f:ConfigId.to_value));("StorageLensArn",(Option.mapx.storageLensArn~f:StorageLensArn.to_value));("HomeRegion",(Option.mapx.homeRegion~f:S3AWSRegion.to_value));("IsEnabled",(Option.mapx.isEnabled~f:IsEnabled.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letisEnabled=(Option.map~f:IsEnabled.of_xml)(Xml.childxml_arg0"IsEnabled")inlethomeRegion=(Option.map~f:S3AWSRegion.of_xml)(Xml.childxml_arg0"HomeRegion")inletstorageLensArn=(Option.map~f:StorageLensArn.of_xml)(Xml.childxml_arg0"StorageLensArn")inletid=(Option.map~f:ConfigId.of_xml)(Xml.childxml_arg0"Id")inmake?isEnabled?homeRegion?storageLensArn?id()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letisEnabled=field_mapjson__"IsEnabled"IsEnabled.of_jsoninlethomeRegion=field_mapjson__"HomeRegion"S3AWSRegion.of_jsoninletstorageLensArn=field_mapjson__"StorageLensArn"StorageLensArn.of_jsoninletid=field_mapjson__"Id"ConfigId.of_jsoninmake?isEnabled?homeRegion?storageLensArn?id()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Part of ListStorageLensConfigurationResult. Each entry includes the description of the S3 Storage Lens configuration, its home Region, whether it is enabled, its Amazon Resource Name (ARN), and config ID."]moduleRegionalBucket=structtypenonrect={bucket:BucketName.toption;bucketArn:S3RegionalBucketArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) for the regional bucket."];publicAccessBlockEnabled:PublicAccessBlockEnabled.toption;creationDate:CreationDate.toption[@ocaml.doc"The creation date of the regional bucket"];outpostId:NonEmptyMaxLength64String.toption[@ocaml.doc"The Outposts ID of the regional bucket."]}letmake?bucket=fun?bucketArn->fun?publicAccessBlockEnabled->fun?creationDate->fun?outpostId->fun()->{bucket;bucketArn;publicAccessBlockEnabled;creationDate;outpostId}letto_valuex=structure_to_value[("Bucket",(Option.mapx.bucket~f:BucketName.to_value));("BucketArn",(Option.mapx.bucketArn~f:S3RegionalBucketArn.to_value));("PublicAccessBlockEnabled",(Option.mapx.publicAccessBlockEnabled~f:PublicAccessBlockEnabled.to_value));("CreationDate",(Option.mapx.creationDate~f:CreationDate.to_value));("OutpostId",(Option.mapx.outpostId~f:NonEmptyMaxLength64String.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letoutpostId=(Option.map~f:NonEmptyMaxLength64String.of_xml)(Xml.childxml_arg0"OutpostId")inletcreationDate=(Option.map~f:CreationDate.of_xml)(Xml.childxml_arg0"CreationDate")inletpublicAccessBlockEnabled=(Option.map~f:PublicAccessBlockEnabled.of_xml)(Xml.childxml_arg0"PublicAccessBlockEnabled")inletbucketArn=(Option.map~f:S3RegionalBucketArn.of_xml)(Xml.childxml_arg0"BucketArn")inletbucket=(Option.map~f:BucketName.of_xml)(Xml.childxml_arg0"Bucket")inmake?outpostId?creationDate?publicAccessBlockEnabled?bucketArn?bucket()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letoutpostId=field_mapjson__"OutpostId"NonEmptyMaxLength64String.of_jsoninletcreationDate=field_mapjson__"CreationDate"CreationDate.of_jsoninletpublicAccessBlockEnabled=field_mapjson__"PublicAccessBlockEnabled"PublicAccessBlockEnabled.of_jsoninletbucketArn=field_mapjson__"BucketArn"S3RegionalBucketArn.of_jsoninletbucket=field_mapjson__"Bucket"BucketName.of_jsoninmake?outpostId?creationDate?publicAccessBlockEnabled?bucketArn?bucket()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The container for the regional bucket."]moduleMultiRegionAccessPointReport=structtypenonrect={name:MultiRegionAccessPointName.toption[@ocaml.doc"The name of the Multi-Region Access Point."];alias:MultiRegionAccessPointAlias.toption[@ocaml.doc"The alias for the Multi-Region Access Point. For more information about the distinction between the name and the alias of an Multi-Region Access Point, see Rules for naming Amazon S3 Multi-Region Access Points."];createdAt:CreationTimestamp.toption[@ocaml.doc"When the Multi-Region Access Point create request was received."];publicAccessBlock:PublicAccessBlockConfiguration.toption;status:MultiRegionAccessPointStatus.toption[@ocaml.doc"The current status of the Multi-Region Access Point. CREATING and DELETING are temporary states that exist while the request is propagating and being completed. If a Multi-Region Access Point has a status of PARTIALLY_CREATED, you can retry creation or send a request to delete the Multi-Region Access Point. If a Multi-Region Access Point has a status of PARTIALLY_DELETED, you can retry a delete request to finish the deletion of the Multi-Region Access Point."];regions:RegionReportList.toption[@ocaml.doc"A collection of the Regions and buckets associated with the Multi-Region Access Point."]}letmake?name=fun?alias->fun?createdAt->fun?publicAccessBlock->fun?status->fun?regions->fun()->{name;alias;createdAt;publicAccessBlock;status;regions}letto_valuex=structure_to_value[("Name",(Option.mapx.name~f:MultiRegionAccessPointName.to_value));("Alias",(Option.mapx.alias~f:MultiRegionAccessPointAlias.to_value));("CreatedAt",(Option.mapx.createdAt~f:CreationTimestamp.to_value));("PublicAccessBlock",(Option.mapx.publicAccessBlock~f:PublicAccessBlockConfiguration.to_value));("Status",(Option.mapx.status~f:MultiRegionAccessPointStatus.to_value));("Regions",(Option.mapx.regions~f:RegionReportList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letregions=(Option.map~f:RegionReportList.of_xml)(Xml.childxml_arg0"Regions")inletstatus=(Option.map~f:MultiRegionAccessPointStatus.of_xml)(Xml.childxml_arg0"Status")inletpublicAccessBlock=(Option.map~f:PublicAccessBlockConfiguration.of_xml)(Xml.childxml_arg0"PublicAccessBlock")inletcreatedAt=(Option.map~f:CreationTimestamp.of_xml)(Xml.childxml_arg0"CreatedAt")inletalias=(Option.map~f:MultiRegionAccessPointAlias.of_xml)(Xml.childxml_arg0"Alias")inletname=(Option.map~f:MultiRegionAccessPointName.of_xml)(Xml.childxml_arg0"Name")inmake?regions?status?publicAccessBlock?createdAt?alias?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letregions=field_mapjson__"Regions"RegionReportList.of_jsoninletstatus=field_mapjson__"Status"MultiRegionAccessPointStatus.of_jsoninletpublicAccessBlock=field_mapjson__"PublicAccessBlock"PublicAccessBlockConfiguration.of_jsoninletcreatedAt=field_mapjson__"CreatedAt"CreationTimestamp.of_jsoninletalias=field_mapjson__"Alias"MultiRegionAccessPointAlias.of_jsoninletname=field_mapjson__"Name"MultiRegionAccessPointName.of_jsoninmake?regions?status?publicAccessBlock?createdAt?alias?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A collection of statuses for a Multi-Region Access Point in the various Regions it supports."]moduleJobListDescriptor=structtypenonrect={jobId:JobId.toption[@ocaml.doc"The ID for the specified job."];description:NonEmptyMaxLength256String.toption[@ocaml.doc"The user-specified description that was included in the specified job's Create Job request."];operation:OperationName.toption[@ocaml.doc"The operation that the specified job is configured to run on every object listed in the manifest."];priority:JobPriority.toption[@ocaml.doc"The current priority for the specified job."];status:JobStatus.toption[@ocaml.doc"The specified job's current status."];creationTime:JobCreationTime.toption[@ocaml.doc"A timestamp indicating when the specified job was created."];terminationDate:JobTerminationDate.toption[@ocaml.doc"A timestamp indicating when the specified job terminated. A job's termination date is the date and time when it succeeded, failed, or was canceled."];progressSummary:JobProgressSummary.toption[@ocaml.doc"Describes the total number of tasks that the specified job has run, the number of tasks that succeeded, and the number of tasks that failed."]}letmake?jobId=fun?description->fun?operation->fun?priority->fun?status->fun?creationTime->fun?terminationDate->fun?progressSummary->fun()->{jobId;description;operation;priority;status;creationTime;terminationDate;progressSummary}letto_valuex=structure_to_value[("JobId",(Option.mapx.jobId~f:JobId.to_value));("Description",(Option.mapx.description~f:NonEmptyMaxLength256String.to_value));("Operation",(Option.mapx.operation~f:OperationName.to_value));("Priority",(Option.mapx.priority~f:JobPriority.to_value));("Status",(Option.mapx.status~f:JobStatus.to_value));("CreationTime",(Option.mapx.creationTime~f:JobCreationTime.to_value));("TerminationDate",(Option.mapx.terminationDate~f:JobTerminationDate.to_value));("ProgressSummary",(Option.mapx.progressSummary~f:JobProgressSummary.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letprogressSummary=(Option.map~f:JobProgressSummary.of_xml)(Xml.childxml_arg0"ProgressSummary")inletterminationDate=(Option.map~f:JobTerminationDate.of_xml)(Xml.childxml_arg0"TerminationDate")inletcreationTime=(Option.map~f:JobCreationTime.of_xml)(Xml.childxml_arg0"CreationTime")inletstatus=(Option.map~f:JobStatus.of_xml)(Xml.childxml_arg0"Status")inletpriority=(Option.map~f:JobPriority.of_xml)(Xml.childxml_arg0"Priority")inletoperation=(Option.map~f:OperationName.of_xml)(Xml.childxml_arg0"Operation")inletdescription=(Option.map~f:NonEmptyMaxLength256String.of_xml)(Xml.childxml_arg0"Description")inletjobId=(Option.map~f:JobId.of_xml)(Xml.childxml_arg0"JobId")inmake?progressSummary?terminationDate?creationTime?status?priority?operation?description?jobId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letprogressSummary=field_mapjson__"ProgressSummary"JobProgressSummary.of_jsoninletterminationDate=field_mapjson__"TerminationDate"JobTerminationDate.of_jsoninletcreationTime=field_mapjson__"CreationTime"JobCreationTime.of_jsoninletstatus=field_mapjson__"Status"JobStatus.of_jsoninletpriority=field_mapjson__"Priority"JobPriority.of_jsoninletoperation=field_mapjson__"Operation"OperationName.of_jsoninletdescription=field_mapjson__"Description"NonEmptyMaxLength256String.of_jsoninletjobId=field_mapjson__"JobId"JobId.of_jsoninmake?progressSummary?terminationDate?creationTime?status?priority?operation?description?jobId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains the configuration and status information for a single job retrieved as part of a job list."]moduleListCallerAccessGrantsEntry=structtypenonrect={permission:Permission.toption[@ocaml.doc"The type of permission granted, which can be one of the following values: READ - Grants read-only access to the S3 data. WRITE - Grants write-only access to the S3 data. READWRITE - Grants both read and write access to the S3 data."];grantScope:S3Prefix.toption[@ocaml.doc"The S3 path of the data to which you have been granted access."];applicationArn:IdentityCenterApplicationArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of an Amazon Web Services IAM Identity Center application associated with your Identity Center instance. If the grant includes an application ARN, the grantee can only access the S3 data through this application."]}letmake?permission=fun?grantScope->fun?applicationArn->fun()->{permission;grantScope;applicationArn}letto_valuex=structure_to_value[("Permission",(Option.mapx.permission~f:Permission.to_value));("GrantScope",(Option.mapx.grantScope~f:S3Prefix.to_value));("ApplicationArn",(Option.mapx.applicationArn~f:IdentityCenterApplicationArn.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letapplicationArn=(Option.map~f:IdentityCenterApplicationArn.of_xml)(Xml.childxml_arg0"ApplicationArn")inletgrantScope=(Option.map~f:S3Prefix.of_xml)(Xml.childxml_arg0"GrantScope")inletpermission=(Option.map~f:Permission.of_xml)(Xml.childxml_arg0"Permission")inmake?applicationArn?grantScope?permission()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letapplicationArn=field_mapjson__"ApplicationArn"IdentityCenterApplicationArn.of_jsoninletgrantScope=field_mapjson__"GrantScope"S3Prefix.of_jsoninletpermission=field_mapjson__"Permission"Permission.of_jsoninmake?applicationArn?grantScope?permission()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Part of ListCallerAccessGrantsResult. Each entry includes the permission level (READ, WRITE, or READWRITE) and the grant scope of the access grant. If the grant also includes an application ARN, the grantee can only access the S3 data through this application."]moduleAccessPoint=structtypenonrect={name:AccessPointName.toption[@ocaml.doc"The name of this access point."];networkOrigin:NetworkOrigin.toption[@ocaml.doc"Indicates whether this access point allows access from the public internet. If VpcConfiguration is specified for this access point, then NetworkOrigin is VPC, and the access point doesn't allow access from the public internet. Otherwise, NetworkOrigin is Internet, and the access point allows access from the public internet, subject to the access point and bucket access policies."];vpcConfiguration:VpcConfiguration.toption[@ocaml.doc"The virtual private cloud (VPC) configuration for this access point, if one exists. This element is empty if this access point is an Amazon S3 on Outposts access point that is used by other Amazon Web Services services."];bucket:AccessPointBucketName.toption[@ocaml.doc"The name of the bucket associated with this access point."];accessPointArn:S3AccessPointArn.toption[@ocaml.doc"The ARN for the access point."];alias:Alias.toption[@ocaml.doc"The name or alias of the access point."];bucketAccountId:AccountId.toption[@ocaml.doc"The Amazon Web Services account ID associated with the S3 bucket associated with this access point."];dataSourceId:DataSourceId.toption[@ocaml.doc"A unique identifier for the data source of the access point."];dataSourceType:DataSourceType.toption[@ocaml.doc"The type of the data source that the access point is attached to."]}letmake?name=fun?networkOrigin->fun?vpcConfiguration->fun?bucket->fun?accessPointArn->fun?alias->fun?bucketAccountId->fun?dataSourceId->fun?dataSourceType->fun()->{name;networkOrigin;vpcConfiguration;bucket;accessPointArn;alias;bucketAccountId;dataSourceId;dataSourceType}letto_valuex=structure_to_value[("Name",(Option.mapx.name~f:AccessPointName.to_value));("NetworkOrigin",(Option.mapx.networkOrigin~f:NetworkOrigin.to_value));("VpcConfiguration",(Option.mapx.vpcConfiguration~f:VpcConfiguration.to_value));("Bucket",(Option.mapx.bucket~f:AccessPointBucketName.to_value));("AccessPointArn",(Option.mapx.accessPointArn~f:S3AccessPointArn.to_value));("Alias",(Option.mapx.alias~f:Alias.to_value));("BucketAccountId",(Option.mapx.bucketAccountId~f:AccountId.to_value));("DataSourceId",(Option.mapx.dataSourceId~f:DataSourceId.to_value));("DataSourceType",(Option.mapx.dataSourceType~f:DataSourceType.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdataSourceType=(Option.map~f:DataSourceType.of_xml)(Xml.childxml_arg0"DataSourceType")inletdataSourceId=(Option.map~f:DataSourceId.of_xml)(Xml.childxml_arg0"DataSourceId")inletbucketAccountId=(Option.map~f:AccountId.of_xml)(Xml.childxml_arg0"BucketAccountId")inletalias=(Option.map~f:Alias.of_xml)(Xml.childxml_arg0"Alias")inletaccessPointArn=(Option.map~f:S3AccessPointArn.of_xml)(Xml.childxml_arg0"AccessPointArn")inletbucket=(Option.map~f:AccessPointBucketName.of_xml)(Xml.childxml_arg0"Bucket")inletvpcConfiguration=(Option.map~f:VpcConfiguration.of_xml)(Xml.childxml_arg0"VpcConfiguration")inletnetworkOrigin=(Option.map~f:NetworkOrigin.of_xml)(Xml.childxml_arg0"NetworkOrigin")inletname=(Option.map~f:AccessPointName.of_xml)(Xml.childxml_arg0"Name")inmake?dataSourceType?dataSourceId?bucketAccountId?alias?accessPointArn?bucket?vpcConfiguration?networkOrigin?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdataSourceType=field_mapjson__"DataSourceType"DataSourceType.of_jsoninletdataSourceId=field_mapjson__"DataSourceId"DataSourceId.of_jsoninletbucketAccountId=field_mapjson__"BucketAccountId"AccountId.of_jsoninletalias=field_mapjson__"Alias"Alias.of_jsoninletaccessPointArn=field_mapjson__"AccessPointArn"S3AccessPointArn.of_jsoninletbucket=field_mapjson__"Bucket"AccessPointBucketName.of_jsoninletvpcConfiguration=field_mapjson__"VpcConfiguration"VpcConfiguration.of_jsoninletnetworkOrigin=field_mapjson__"NetworkOrigin"NetworkOrigin.of_jsoninletname=field_mapjson__"Name"AccessPointName.of_jsoninmake?dataSourceType?dataSourceId?bucketAccountId?alias?accessPointArn?bucket?vpcConfiguration?networkOrigin?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"An access point used to access a bucket."]moduleObjectLambdaAccessPoint=structtypenonrect={name:ObjectLambdaAccessPointName.toption[@ocaml.doc"The name of the Object Lambda Access Point."];objectLambdaAccessPointArn:ObjectLambdaAccessPointArn.toption[@ocaml.doc"Specifies the ARN for the Object Lambda Access Point."];alias:ObjectLambdaAccessPointAlias.toption[@ocaml.doc"The alias of the Object Lambda Access Point."]}letmake?name=fun?objectLambdaAccessPointArn->fun?alias->fun()->{name;objectLambdaAccessPointArn;alias}letto_valuex=structure_to_value[("Name",(Option.mapx.name~f:ObjectLambdaAccessPointName.to_value));("ObjectLambdaAccessPointArn",(Option.mapx.objectLambdaAccessPointArn~f:ObjectLambdaAccessPointArn.to_value));("Alias",(Option.mapx.alias~f:ObjectLambdaAccessPointAlias.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letalias=(Option.map~f:ObjectLambdaAccessPointAlias.of_xml)(Xml.childxml_arg0"Alias")inletobjectLambdaAccessPointArn=(Option.map~f:ObjectLambdaAccessPointArn.of_xml)(Xml.childxml_arg0"ObjectLambdaAccessPointArn")inletname=(Option.map~f:ObjectLambdaAccessPointName.of_xml)(Xml.childxml_arg0"Name")inmake?alias?objectLambdaAccessPointArn?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letalias=field_mapjson__"Alias"ObjectLambdaAccessPointAlias.of_jsoninletobjectLambdaAccessPointArn=field_mapjson__"ObjectLambdaAccessPointArn"ObjectLambdaAccessPointArn.of_jsoninletname=field_mapjson__"Name"ObjectLambdaAccessPointName.of_jsoninmake?alias?objectLambdaAccessPointArn?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"An access point with an attached Lambda function used to access transformed data from an Amazon S3 bucket."]moduleListAccessGrantEntry=structtypenonrect={createdAt:CreationTimestamp.toption[@ocaml.doc"The date and time when you created the S3 Access Grants instance."];accessGrantId:AccessGrantId.toption[@ocaml.doc"The ID of the access grant. S3 Access Grants auto-generates this ID when you create the access grant."];accessGrantArn:AccessGrantArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the access grant."];grantee:Grantee.toption[@ocaml.doc"The user, group, or role to which you are granting access. You can grant access to an IAM user or role. If you have added your corporate directory to Amazon Web Services IAM Identity Center and associated your Identity Center instance with your S3 Access Grants instance, the grantee can also be a corporate directory user or group."];permission:Permission.toption[@ocaml.doc"The type of access granted to your S3 data, which can be set to one of the following values: READ \226\128\147 Grant read-only access to the S3 data. WRITE \226\128\147 Grant write-only access to the S3 data. READWRITE \226\128\147 Grant both read and write access to the S3 data."];accessGrantsLocationId:AccessGrantsLocationId.toption[@ocaml.doc"The ID of the registered location to which you are granting access. S3 Access Grants assigns this ID when you register the location. S3 Access Grants assigns the ID default to the default location s3:// and assigns an auto-generated ID to other locations that you register."];accessGrantsLocationConfiguration:AccessGrantsLocationConfiguration.toption[@ocaml.doc"The configuration options of the grant location. The grant location is the S3 path to the data to which you are granting access."];grantScope:S3Prefix.toption[@ocaml.doc"The S3 path of the data to which you are granting access. It is the result of appending the Subprefix to the location scope."];applicationArn:IdentityCenterApplicationArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of an Amazon Web Services IAM Identity Center application associated with your Identity Center instance. If the grant includes an application ARN, the grantee can only access the S3 data through this application."]}letmake?createdAt=fun?accessGrantId->fun?accessGrantArn->fun?grantee->fun?permission->fun?accessGrantsLocationId->fun?accessGrantsLocationConfiguration->fun?grantScope->fun?applicationArn->fun()->{createdAt;accessGrantId;accessGrantArn;grantee;permission;accessGrantsLocationId;accessGrantsLocationConfiguration;grantScope;applicationArn}letto_valuex=structure_to_value[("CreatedAt",(Option.mapx.createdAt~f:CreationTimestamp.to_value));("AccessGrantId",(Option.mapx.accessGrantId~f:AccessGrantId.to_value));("AccessGrantArn",(Option.mapx.accessGrantArn~f:AccessGrantArn.to_value));("Grantee",(Option.mapx.grantee~f:Grantee.to_value));("Permission",(Option.mapx.permission~f:Permission.to_value));("AccessGrantsLocationId",(Option.mapx.accessGrantsLocationId~f:AccessGrantsLocationId.to_value));("AccessGrantsLocationConfiguration",(Option.mapx.accessGrantsLocationConfiguration~f:AccessGrantsLocationConfiguration.to_value));("GrantScope",(Option.mapx.grantScope~f:S3Prefix.to_value));("ApplicationArn",(Option.mapx.applicationArn~f:IdentityCenterApplicationArn.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letapplicationArn=(Option.map~f:IdentityCenterApplicationArn.of_xml)(Xml.childxml_arg0"ApplicationArn")inletgrantScope=(Option.map~f:S3Prefix.of_xml)(Xml.childxml_arg0"GrantScope")inletaccessGrantsLocationConfiguration=(Option.map~f:AccessGrantsLocationConfiguration.of_xml)(Xml.childxml_arg0"AccessGrantsLocationConfiguration")inletaccessGrantsLocationId=(Option.map~f:AccessGrantsLocationId.of_xml)(Xml.childxml_arg0"AccessGrantsLocationId")inletpermission=(Option.map~f:Permission.of_xml)(Xml.childxml_arg0"Permission")inletgrantee=(Option.map~f:Grantee.of_xml)(Xml.childxml_arg0"Grantee")inletaccessGrantArn=(Option.map~f:AccessGrantArn.of_xml)(Xml.childxml_arg0"AccessGrantArn")inletaccessGrantId=(Option.map~f:AccessGrantId.of_xml)(Xml.childxml_arg0"AccessGrantId")inletcreatedAt=(Option.map~f:CreationTimestamp.of_xml)(Xml.childxml_arg0"CreatedAt")inmake?applicationArn?grantScope?accessGrantsLocationConfiguration?accessGrantsLocationId?permission?grantee?accessGrantArn?accessGrantId?createdAt()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letapplicationArn=field_mapjson__"ApplicationArn"IdentityCenterApplicationArn.of_jsoninletgrantScope=field_mapjson__"GrantScope"S3Prefix.of_jsoninletaccessGrantsLocationConfiguration=field_mapjson__"AccessGrantsLocationConfiguration"AccessGrantsLocationConfiguration.of_jsoninletaccessGrantsLocationId=field_mapjson__"AccessGrantsLocationId"AccessGrantsLocationId.of_jsoninletpermission=field_mapjson__"Permission"Permission.of_jsoninletgrantee=field_mapjson__"Grantee"Grantee.of_jsoninletaccessGrantArn=field_mapjson__"AccessGrantArn"AccessGrantArn.of_jsoninletaccessGrantId=field_mapjson__"AccessGrantId"AccessGrantId.of_jsoninletcreatedAt=field_mapjson__"CreatedAt"CreationTimestamp.of_jsoninmake?applicationArn?grantScope?accessGrantsLocationConfiguration?accessGrantsLocationId?permission?grantee?accessGrantArn?accessGrantId?createdAt()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the access grant."]moduleListAccessGrantsLocationsEntry=structtypenonrect={createdAt:CreationTimestamp.toption[@ocaml.doc"The date and time when you registered the location."];accessGrantsLocationId:AccessGrantsLocationId.toption[@ocaml.doc"The ID of the registered location to which you are granting access. S3 Access Grants assigns this ID when you register the location. S3 Access Grants assigns the ID default to the default location s3:// and assigns an auto-generated ID to other locations that you register."];accessGrantsLocationArn:AccessGrantsLocationArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the registered location."];locationScope:S3Prefix.toption[@ocaml.doc"The S3 path to the location that you are registering. The location scope can be the default S3 location s3://, the S3 path to a bucket s3://<bucket>, or the S3 path to a bucket and prefix s3://<bucket>/<prefix>. A prefix in S3 is a string of characters at the beginning of an object key name used to organize the objects that you store in your S3 buckets. For example, object key names that start with the engineering/ prefix or object key names that start with the marketing/campaigns/ prefix."];iAMRoleArn:IAMRoleArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the IAM role for the registered location. S3 Access Grants assumes this role to manage access to the registered location."]}letmake?createdAt=fun?accessGrantsLocationId->fun?accessGrantsLocationArn->fun?locationScope->fun?iAMRoleArn->fun()->{createdAt;accessGrantsLocationId;accessGrantsLocationArn;locationScope;iAMRoleArn}letto_valuex=structure_to_value[("CreatedAt",(Option.mapx.createdAt~f:CreationTimestamp.to_value));("AccessGrantsLocationId",(Option.mapx.accessGrantsLocationId~f:AccessGrantsLocationId.to_value));("AccessGrantsLocationArn",(Option.mapx.accessGrantsLocationArn~f:AccessGrantsLocationArn.to_value));("LocationScope",(Option.mapx.locationScope~f:S3Prefix.to_value));("IAMRoleArn",(Option.mapx.iAMRoleArn~f:IAMRoleArn.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letiAMRoleArn=(Option.map~f:IAMRoleArn.of_xml)(Xml.childxml_arg0"IAMRoleArn")inletlocationScope=(Option.map~f:S3Prefix.of_xml)(Xml.childxml_arg0"LocationScope")inletaccessGrantsLocationArn=(Option.map~f:AccessGrantsLocationArn.of_xml)(Xml.childxml_arg0"AccessGrantsLocationArn")inletaccessGrantsLocationId=(Option.map~f:AccessGrantsLocationId.of_xml)(Xml.childxml_arg0"AccessGrantsLocationId")inletcreatedAt=(Option.map~f:CreationTimestamp.of_xml)(Xml.childxml_arg0"CreatedAt")inmake?iAMRoleArn?locationScope?accessGrantsLocationArn?accessGrantsLocationId?createdAt()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letiAMRoleArn=field_mapjson__"IAMRoleArn"IAMRoleArn.of_jsoninletlocationScope=field_mapjson__"LocationScope"S3Prefix.of_jsoninletaccessGrantsLocationArn=field_mapjson__"AccessGrantsLocationArn"AccessGrantsLocationArn.of_jsoninletaccessGrantsLocationId=field_mapjson__"AccessGrantsLocationId"AccessGrantsLocationId.of_jsoninletcreatedAt=field_mapjson__"CreatedAt"CreationTimestamp.of_jsoninmake?iAMRoleArn?locationScope?accessGrantsLocationArn?accessGrantsLocationId?createdAt()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A container for information about the registered location."]moduleListAccessGrantsInstanceEntry=structtypenonrect={accessGrantsInstanceId:AccessGrantsInstanceId.toption[@ocaml.doc"The ID of the S3 Access Grants instance. The ID is default. You can have one S3 Access Grants instance per Region per account."];accessGrantsInstanceArn:AccessGrantsInstanceArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the S3 Access Grants instance."];createdAt:CreationTimestamp.toption[@ocaml.doc"The date and time when you created the S3 Access Grants instance."];identityCenterArn:IdentityCenterArn.toption[@ocaml.doc"If you associated your S3 Access Grants instance with an Amazon Web Services IAM Identity Center instance, this field returns the Amazon Resource Name (ARN) of the IAM Identity Center instance application; a subresource of the original Identity Center instance. S3 Access Grants creates this Identity Center application for the specific S3 Access Grants instance."];identityCenterInstanceArn:IdentityCenterArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the Amazon Web Services IAM Identity Center instance that you are associating with your S3 Access Grants instance. An IAM Identity Center instance is your corporate identity directory that you added to the IAM Identity Center. You can use the ListInstances API operation to retrieve a list of your Identity Center instances and their ARNs."];identityCenterApplicationArn:IdentityCenterApplicationArn.toption[@ocaml.doc"If you associated your S3 Access Grants instance with an Amazon Web Services IAM Identity Center instance, this field returns the Amazon Resource Name (ARN) of the IAM Identity Center instance application; a subresource of the original Identity Center instance. S3 Access Grants creates this Identity Center application for the specific S3 Access Grants instance."]}letmake?accessGrantsInstanceId=fun?accessGrantsInstanceArn->fun?createdAt->fun?identityCenterArn->fun?identityCenterInstanceArn->fun?identityCenterApplicationArn->fun()->{accessGrantsInstanceId;accessGrantsInstanceArn;createdAt;identityCenterArn;identityCenterInstanceArn;identityCenterApplicationArn}letto_valuex=structure_to_value[("AccessGrantsInstanceId",(Option.mapx.accessGrantsInstanceId~f:AccessGrantsInstanceId.to_value));("AccessGrantsInstanceArn",(Option.mapx.accessGrantsInstanceArn~f:AccessGrantsInstanceArn.to_value));("CreatedAt",(Option.mapx.createdAt~f:CreationTimestamp.to_value));("IdentityCenterArn",(Option.mapx.identityCenterArn~f:IdentityCenterArn.to_value));("IdentityCenterInstanceArn",(Option.mapx.identityCenterInstanceArn~f:IdentityCenterArn.to_value));("IdentityCenterApplicationArn",(Option.mapx.identityCenterApplicationArn~f:IdentityCenterApplicationArn.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letidentityCenterApplicationArn=(Option.map~f:IdentityCenterApplicationArn.of_xml)(Xml.childxml_arg0"IdentityCenterApplicationArn")inletidentityCenterInstanceArn=(Option.map~f:IdentityCenterArn.of_xml)(Xml.childxml_arg0"IdentityCenterInstanceArn")inletidentityCenterArn=(Option.map~f:IdentityCenterArn.of_xml)(Xml.childxml_arg0"IdentityCenterArn")inletcreatedAt=(Option.map~f:CreationTimestamp.of_xml)(Xml.childxml_arg0"CreatedAt")inletaccessGrantsInstanceArn=(Option.map~f:AccessGrantsInstanceArn.of_xml)(Xml.childxml_arg0"AccessGrantsInstanceArn")inletaccessGrantsInstanceId=(Option.map~f:AccessGrantsInstanceId.of_xml)(Xml.childxml_arg0"AccessGrantsInstanceId")inmake?identityCenterApplicationArn?identityCenterInstanceArn?identityCenterArn?createdAt?accessGrantsInstanceArn?accessGrantsInstanceId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letidentityCenterApplicationArn=field_mapjson__"IdentityCenterApplicationArn"IdentityCenterApplicationArn.of_jsoninletidentityCenterInstanceArn=field_mapjson__"IdentityCenterInstanceArn"IdentityCenterArn.of_jsoninletidentityCenterArn=field_mapjson__"IdentityCenterArn"IdentityCenterArn.of_jsoninletcreatedAt=field_mapjson__"CreatedAt"CreationTimestamp.of_jsoninletaccessGrantsInstanceArn=field_mapjson__"AccessGrantsInstanceArn"AccessGrantsInstanceArn.of_jsoninletaccessGrantsInstanceId=field_mapjson__"AccessGrantsInstanceId"AccessGrantsInstanceId.of_jsoninmake?identityCenterApplicationArn?identityCenterInstanceArn?identityCenterArn?createdAt?accessGrantsInstanceArn?accessGrantsInstanceId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about the S3 Access Grants instance."]moduleNoSuchPublicAccessBlockConfigurationMessage=structtypenonrect=stringletcontext_="NoSuchPublicAccessBlockConfigurationMessage"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:"NoSuchPublicAccessBlockConfigurationMessage"jletto_json=simple_to_jsonto_valueendmoduleIsPublic=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_valueendmoduleEstablishedMultiRegionAccessPointPolicy=structtypenonrect={policy:Policy.toption[@ocaml.doc"The details of the last established policy."]}letmake?policy=fun()->{policy}letto_valuex=structure_to_value[("Policy",(Option.mapx.policy~f:Policy.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letpolicy=(Option.map~f:Policy.of_xml)(Xml.childxml_arg0"Policy")inmake?policy()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letpolicy=field_mapjson__"Policy"Policy.of_jsoninmake?policy()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The last established access control policy for a Multi-Region Access Point. When you update the policy, the update is first listed as the proposed policy. After the update is finished and all Regions have been updated, the proposed policy is listed as the established policy. If both policies have the same version number, the proposed policy is the established policy."]moduleProposedMultiRegionAccessPointPolicy=structtypenonrect={policy:Policy.toption[@ocaml.doc"The details of the proposed policy."]}letmake?policy=fun()->{policy}letto_valuex=structure_to_value[("Policy",(Option.mapx.policy~f:Policy.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letpolicy=(Option.map~f:Policy.of_xml)(Xml.childxml_arg0"Policy")inmake?policy()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letpolicy=field_mapjson__"Policy"Policy.of_jsoninmake?policy()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The proposed access control policy for the Multi-Region Access Point. When you update the policy, the update is first listed as the proposed policy. After the update is finished and all Regions have been updated, the proposed policy is listed as the established policy. If both policies have the same version number, the proposed policy is the established policy."]moduleAccessKeyId=structtypenonrect=stringletcontext_="AccessKeyId"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:"AccessKeyId"jletto_json=simple_to_jsonto_valueendmoduleExpiration=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_valueendmoduleSecretAccessKey=structtypenonrect=stringletcontext_="SecretAccessKey"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:"SecretAccessKey"jletto_json=simple_to_jsonto_valueendmoduleSessionToken=structtypenonrect=stringletcontext_="SessionToken"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:"SessionToken"jletto_json=simple_to_jsonto_valueendmoduleAsyncCreationTimestamp=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_valueendmoduleAsyncOperationName=structtypenonrect=|CreateMultiRegionAccessPoint|DeleteMultiRegionAccessPoint|PutMultiRegionAccessPointPolicy|Non_static_idofstringletmakei=iletto_string=function|CreateMultiRegionAccessPoint->"CreateMultiRegionAccessPoint"|DeleteMultiRegionAccessPoint->"DeleteMultiRegionAccessPoint"|PutMultiRegionAccessPointPolicy->"PutMultiRegionAccessPointPolicy"|Non_static_ids->sletof_string=function|"CreateMultiRegionAccessPoint"->CreateMultiRegionAccessPoint|"DeleteMultiRegionAccessPoint"->DeleteMultiRegionAccessPoint|"PutMultiRegionAccessPointPolicy"->PutMultiRegionAccessPointPolicy|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 AsyncOperationName"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"AsyncOperationName"j)letto_json=simple_to_jsonto_valueendmoduleAsyncRequestParameters=structtypenonrect={createMultiRegionAccessPointRequest:CreateMultiRegionAccessPointInput.toption[@ocaml.doc"A container of the parameters for a CreateMultiRegionAccessPoint request."];deleteMultiRegionAccessPointRequest:DeleteMultiRegionAccessPointInput.toption[@ocaml.doc"A container of the parameters for a DeleteMultiRegionAccessPoint request."];putMultiRegionAccessPointPolicyRequest:PutMultiRegionAccessPointPolicyInput.toption[@ocaml.doc"A container of the parameters for a PutMultiRegionAccessPoint request."]}letmake?createMultiRegionAccessPointRequest=fun?deleteMultiRegionAccessPointRequest->fun?putMultiRegionAccessPointPolicyRequest->fun()->{createMultiRegionAccessPointRequest;deleteMultiRegionAccessPointRequest;putMultiRegionAccessPointPolicyRequest}letto_valuex=structure_to_value[("CreateMultiRegionAccessPointRequest",(Option.mapx.createMultiRegionAccessPointRequest~f:CreateMultiRegionAccessPointInput.to_value));("DeleteMultiRegionAccessPointRequest",(Option.mapx.deleteMultiRegionAccessPointRequest~f:DeleteMultiRegionAccessPointInput.to_value));("PutMultiRegionAccessPointPolicyRequest",(Option.mapx.putMultiRegionAccessPointPolicyRequest~f:PutMultiRegionAccessPointPolicyInput.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letputMultiRegionAccessPointPolicyRequest=(Option.map~f:PutMultiRegionAccessPointPolicyInput.of_xml)(Xml.childxml_arg0"PutMultiRegionAccessPointPolicyRequest")inletdeleteMultiRegionAccessPointRequest=(Option.map~f:DeleteMultiRegionAccessPointInput.of_xml)(Xml.childxml_arg0"DeleteMultiRegionAccessPointRequest")inletcreateMultiRegionAccessPointRequest=(Option.map~f:CreateMultiRegionAccessPointInput.of_xml)(Xml.childxml_arg0"CreateMultiRegionAccessPointRequest")inmake?putMultiRegionAccessPointPolicyRequest?deleteMultiRegionAccessPointRequest?createMultiRegionAccessPointRequest()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letputMultiRegionAccessPointPolicyRequest=field_mapjson__"PutMultiRegionAccessPointPolicyRequest"PutMultiRegionAccessPointPolicyInput.of_jsoninletdeleteMultiRegionAccessPointRequest=field_mapjson__"DeleteMultiRegionAccessPointRequest"DeleteMultiRegionAccessPointInput.of_jsoninletcreateMultiRegionAccessPointRequest=field_mapjson__"CreateMultiRegionAccessPointRequest"CreateMultiRegionAccessPointInput.of_jsoninmake?putMultiRegionAccessPointPolicyRequest?deleteMultiRegionAccessPointRequest?createMultiRegionAccessPointRequest()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A container for the request parameters associated with an asynchronous request."]moduleAsyncRequestTokenARN=structtypenonrect=stringletcontext_="AsyncRequestTokenARN"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:1024)>>=(fun()->check_patterni~pattern:"arn:.+")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"AsyncRequestTokenARN"jletto_json=simple_to_jsonto_valueendmoduleAsyncResponseDetails=structtypenonrect={multiRegionAccessPointDetails:MultiRegionAccessPointsAsyncResponse.toption[@ocaml.doc"The details for the Multi-Region Access Point."];errorDetails:AsyncErrorDetails.toption[@ocaml.doc"Error details for an asynchronous request."]}letmake?multiRegionAccessPointDetails=fun?errorDetails->fun()->{multiRegionAccessPointDetails;errorDetails}letto_valuex=structure_to_value[("MultiRegionAccessPointDetails",(Option.mapx.multiRegionAccessPointDetails~f:MultiRegionAccessPointsAsyncResponse.to_value));("ErrorDetails",(Option.mapx.errorDetails~f:AsyncErrorDetails.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=leterrorDetails=(Option.map~f:AsyncErrorDetails.of_xml)(Xml.childxml_arg0"ErrorDetails")inletmultiRegionAccessPointDetails=(Option.map~f:MultiRegionAccessPointsAsyncResponse.of_xml)(Xml.childxml_arg0"MultiRegionAccessPointDetails")inmake?errorDetails?multiRegionAccessPointDetails()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=leterrorDetails=field_mapjson__"ErrorDetails"AsyncErrorDetails.of_jsoninletmultiRegionAccessPointDetails=field_mapjson__"MultiRegionAccessPointDetails"MultiRegionAccessPointsAsyncResponse.of_jsoninmake?errorDetails?multiRegionAccessPointDetails()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A container for the response details that are returned when querying about an asynchronous request."]moduleConfirmationRequired=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_valueendmoduleJobArn=structtypenonrect=stringletcontext_="JobArn"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:1024)>>=(fun()->check_patterni~pattern:"arn:[^:]+:s3:[a-zA-Z0-9\\-]+:\\d{12}:job\\/.*")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"JobArn"jletto_json=simple_to_jsonto_valueendmoduleJobFailureList=structtypenonrect=JobFailure.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:JobFailure.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:JobFailure.of_xml)letof_jsonj=list_of_json~kind:"JobFailureList"~of_json:JobFailure.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleJobManifest=structtypenonrect={spec:JobManifestSpec.t[@ocaml.doc"Describes the format of the specified job's manifest. If the manifest is in CSV format, also describes the columns contained within the manifest."];location:JobManifestLocation.t[@ocaml.doc"Contains the information required to locate the specified job's manifest. Manifests can't be imported from directory buckets. For more information, see Directory buckets."]}letcontext_="JobManifest"letmake~spec=fun~location->fun()->{spec;location}letto_valuex=structure_to_value[("Spec",(Some(JobManifestSpec.to_valuex.spec)));("Location",(Some(JobManifestLocation.to_valuex.location)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letlocation=JobManifestLocation.of_xml(Xml.child_exn~context:context_xml_arg0"Location")inletspec=JobManifestSpec.of_xml(Xml.child_exn~context:context_xml_arg0"Spec")inmake~location~spec()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letlocation=field_map_exnjson__"Location"JobManifestLocation.of_jsoninletspec=field_map_exnjson__"Spec"JobManifestSpec.of_jsoninmake~location~spec()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains the configuration information for a job's manifest."]moduleJobManifestGenerator=structtypenonrect={s3JobManifestGenerator:S3JobManifestGenerator.toption[@ocaml.doc"The S3 job ManifestGenerator's configuration details."]}letmake?s3JobManifestGenerator=fun()->{s3JobManifestGenerator}letto_valuex=structure_to_value[("S3JobManifestGenerator",(Option.mapx.s3JobManifestGenerator~f:S3JobManifestGenerator.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lets3JobManifestGenerator=(Option.map~f:S3JobManifestGenerator.of_xml)(Xml.childxml_arg0"S3JobManifestGenerator")inmake?s3JobManifestGenerator()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lets3JobManifestGenerator=field_mapjson__"S3JobManifestGenerator"S3JobManifestGenerator.of_jsoninmake?s3JobManifestGenerator()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Configures the type of the job's ManifestGenerator."]moduleJobOperation=structtypenonrect={lambdaInvoke:LambdaInvokeOperation.toption[@ocaml.doc"Directs the specified job to invoke an Lambda function on every object in the manifest."];s3PutObjectCopy:S3CopyObjectOperation.toption[@ocaml.doc"Directs the specified job to run a PUT Copy object call on every object in the manifest."];s3PutObjectAcl:S3SetObjectAclOperation.toption[@ocaml.doc"Directs the specified job to run a PutObjectAcl call on every object in the manifest. This functionality is not supported by directory buckets."];s3PutObjectTagging:S3SetObjectTaggingOperation.toption[@ocaml.doc"Directs the specified job to run a PUT Object tagging call on every object in the manifest. This functionality is not supported by directory buckets."];s3DeleteObjectTagging:S3DeleteObjectTaggingOperation.toption[@ocaml.doc"Directs the specified job to execute a DELETE Object tagging call on every object in the manifest. This functionality is not supported by directory buckets."];s3InitiateRestoreObject:S3InitiateRestoreObjectOperation.toption[@ocaml.doc"Directs the specified job to initiate restore requests for every archived object in the manifest. This functionality is not supported by directory buckets."];s3PutObjectLegalHold:S3SetObjectLegalHoldOperation.toption;s3PutObjectRetention:S3SetObjectRetentionOperation.toption;s3ReplicateObject:S3ReplicateObjectOperation.toption[@ocaml.doc"Directs the specified job to invoke ReplicateObject on every object in the job's manifest. This functionality is not supported by directory buckets."];s3ComputeObjectChecksum:S3ComputeObjectChecksumOperation.toption[@ocaml.doc"Directs the specified job to compute checksum values for every object in the manifest."];s3UpdateObjectEncryption:S3UpdateObjectEncryptionOperation.toption[@ocaml.doc"Updates the server-side encryption type of an existing encrypted object in a general purpose bucket. You can use the UpdateObjectEncryption operation to change encrypted objects from server-side encryption with Amazon S3 managed keys (SSE-S3) to server-side encryption with Key Management Service (KMS) keys (SSE-KMS), or to apply S3 Bucket Keys. You can also use the UpdateObjectEncryption operation to change the customer-managed KMS key used to encrypt your data so that you can comply with custom key-rotation standards."]}letmake?lambdaInvoke=fun?s3PutObjectCopy->fun?s3PutObjectAcl->fun?s3PutObjectTagging->fun?s3DeleteObjectTagging->fun?s3InitiateRestoreObject->fun?s3PutObjectLegalHold->fun?s3PutObjectRetention->fun?s3ReplicateObject->fun?s3ComputeObjectChecksum->fun?s3UpdateObjectEncryption->fun()->{lambdaInvoke;s3PutObjectCopy;s3PutObjectAcl;s3PutObjectTagging;s3DeleteObjectTagging;s3InitiateRestoreObject;s3PutObjectLegalHold;s3PutObjectRetention;s3ReplicateObject;s3ComputeObjectChecksum;s3UpdateObjectEncryption}letto_valuex=structure_to_value[("LambdaInvoke",(Option.mapx.lambdaInvoke~f:LambdaInvokeOperation.to_value));("S3PutObjectCopy",(Option.mapx.s3PutObjectCopy~f:S3CopyObjectOperation.to_value));("S3PutObjectAcl",(Option.mapx.s3PutObjectAcl~f:S3SetObjectAclOperation.to_value));("S3PutObjectTagging",(Option.mapx.s3PutObjectTagging~f:S3SetObjectTaggingOperation.to_value));("S3DeleteObjectTagging",(Option.mapx.s3DeleteObjectTagging~f:S3DeleteObjectTaggingOperation.to_value));("S3InitiateRestoreObject",(Option.mapx.s3InitiateRestoreObject~f:S3InitiateRestoreObjectOperation.to_value));("S3PutObjectLegalHold",(Option.mapx.s3PutObjectLegalHold~f:S3SetObjectLegalHoldOperation.to_value));("S3PutObjectRetention",(Option.mapx.s3PutObjectRetention~f:S3SetObjectRetentionOperation.to_value));("S3ReplicateObject",(Option.mapx.s3ReplicateObject~f:S3ReplicateObjectOperation.to_value));("S3ComputeObjectChecksum",(Option.mapx.s3ComputeObjectChecksum~f:S3ComputeObjectChecksumOperation.to_value));("S3UpdateObjectEncryption",(Option.mapx.s3UpdateObjectEncryption~f:S3UpdateObjectEncryptionOperation.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lets3UpdateObjectEncryption=(Option.map~f:S3UpdateObjectEncryptionOperation.of_xml)(Xml.childxml_arg0"S3UpdateObjectEncryption")inlets3ComputeObjectChecksum=(Option.map~f:S3ComputeObjectChecksumOperation.of_xml)(Xml.childxml_arg0"S3ComputeObjectChecksum")inlets3ReplicateObject=(Option.map~f:S3ReplicateObjectOperation.of_xml)(Xml.childxml_arg0"S3ReplicateObject")inlets3PutObjectRetention=(Option.map~f:S3SetObjectRetentionOperation.of_xml)(Xml.childxml_arg0"S3PutObjectRetention")inlets3PutObjectLegalHold=(Option.map~f:S3SetObjectLegalHoldOperation.of_xml)(Xml.childxml_arg0"S3PutObjectLegalHold")inlets3InitiateRestoreObject=(Option.map~f:S3InitiateRestoreObjectOperation.of_xml)(Xml.childxml_arg0"S3InitiateRestoreObject")inlets3DeleteObjectTagging=(Option.map~f:S3DeleteObjectTaggingOperation.of_xml)(Xml.childxml_arg0"S3DeleteObjectTagging")inlets3PutObjectTagging=(Option.map~f:S3SetObjectTaggingOperation.of_xml)(Xml.childxml_arg0"S3PutObjectTagging")inlets3PutObjectAcl=(Option.map~f:S3SetObjectAclOperation.of_xml)(Xml.childxml_arg0"S3PutObjectAcl")inlets3PutObjectCopy=(Option.map~f:S3CopyObjectOperation.of_xml)(Xml.childxml_arg0"S3PutObjectCopy")inletlambdaInvoke=(Option.map~f:LambdaInvokeOperation.of_xml)(Xml.childxml_arg0"LambdaInvoke")inmake?s3UpdateObjectEncryption?s3ComputeObjectChecksum?s3ReplicateObject?s3PutObjectRetention?s3PutObjectLegalHold?s3InitiateRestoreObject?s3DeleteObjectTagging?s3PutObjectTagging?s3PutObjectAcl?s3PutObjectCopy?lambdaInvoke()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lets3UpdateObjectEncryption=field_mapjson__"S3UpdateObjectEncryption"S3UpdateObjectEncryptionOperation.of_jsoninlets3ComputeObjectChecksum=field_mapjson__"S3ComputeObjectChecksum"S3ComputeObjectChecksumOperation.of_jsoninlets3ReplicateObject=field_mapjson__"S3ReplicateObject"S3ReplicateObjectOperation.of_jsoninlets3PutObjectRetention=field_mapjson__"S3PutObjectRetention"S3SetObjectRetentionOperation.of_jsoninlets3PutObjectLegalHold=field_mapjson__"S3PutObjectLegalHold"S3SetObjectLegalHoldOperation.of_jsoninlets3InitiateRestoreObject=field_mapjson__"S3InitiateRestoreObject"S3InitiateRestoreObjectOperation.of_jsoninlets3DeleteObjectTagging=field_mapjson__"S3DeleteObjectTagging"S3DeleteObjectTaggingOperation.of_jsoninlets3PutObjectTagging=field_mapjson__"S3PutObjectTagging"S3SetObjectTaggingOperation.of_jsoninlets3PutObjectAcl=field_mapjson__"S3PutObjectAcl"S3SetObjectAclOperation.of_jsoninlets3PutObjectCopy=field_mapjson__"S3PutObjectCopy"S3CopyObjectOperation.of_jsoninletlambdaInvoke=field_mapjson__"LambdaInvoke"LambdaInvokeOperation.of_jsoninmake?s3UpdateObjectEncryption?s3ComputeObjectChecksum?s3ReplicateObject?s3PutObjectRetention?s3PutObjectLegalHold?s3InitiateRestoreObject?s3DeleteObjectTagging?s3PutObjectTagging?s3PutObjectAcl?s3PutObjectCopy?lambdaInvoke()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The operation that you want this job to perform on every object listed in the manifest. For more information about the available operations, see Operations in the Amazon S3 User Guide."]moduleJobReport=structtypenonrect={bucket:S3BucketArnString.toption[@ocaml.doc"The Amazon Resource Name (ARN) for the bucket where specified job-completion report will be stored. Directory buckets - Directory buckets aren't supported as a location for Batch Operations to store job completion reports."];format:JobReportFormat.toption[@ocaml.doc"The format of the specified job-completion report."];enabled:Boolean.t[@ocaml.doc"Indicates whether the specified job will generate a job-completion report."];prefix:ReportPrefixString.toption[@ocaml.doc"An optional prefix to describe where in the specified bucket the job-completion report will be stored. Amazon S3 stores the job-completion report at <prefix>/job-<job-id>/report.json."];reportScope:JobReportScope.toption[@ocaml.doc"Indicates whether the job-completion report will include details of all tasks or only failed tasks."];expectedBucketOwner:AccountId.toption[@ocaml.doc"Lists the Amazon Web Services account ID that owns the target bucket, where the completion report is received."]}letcontext_="JobReport"letmake?bucket=fun?format->fun?prefix->fun?reportScope->fun?expectedBucketOwner->fun~enabled->fun()->{bucket;format;prefix;reportScope;expectedBucketOwner;enabled}letto_valuex=structure_to_value[("Bucket",(Option.mapx.bucket~f:S3BucketArnString.to_value));("Format",(Option.mapx.format~f:JobReportFormat.to_value));("Enabled",(Some(Boolean.to_valuex.enabled)));("Prefix",(Option.mapx.prefix~f:ReportPrefixString.to_value));("ReportScope",(Option.mapx.reportScope~f:JobReportScope.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")inletreportScope=(Option.map~f:JobReportScope.of_xml)(Xml.childxml_arg0"ReportScope")inletprefix=(Option.map~f:ReportPrefixString.of_xml)(Xml.childxml_arg0"Prefix")inletenabled=Boolean.of_xml(Xml.child_exn~context:context_xml_arg0"Enabled")inletformat=(Option.map~f:JobReportFormat.of_xml)(Xml.childxml_arg0"Format")inletbucket=(Option.map~f:S3BucketArnString.of_xml)(Xml.childxml_arg0"Bucket")inmake?expectedBucketOwner?reportScope?prefix~enabled?format?bucket()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letexpectedBucketOwner=field_mapjson__"ExpectedBucketOwner"AccountId.of_jsoninletreportScope=field_mapjson__"ReportScope"JobReportScope.of_jsoninletprefix=field_mapjson__"Prefix"ReportPrefixString.of_jsoninletenabled=field_map_exnjson__"Enabled"Boolean.of_jsoninletformat=field_mapjson__"Format"JobReportFormat.of_jsoninletbucket=field_mapjson__"Bucket"S3BucketArnString.of_jsoninmake?expectedBucketOwner?reportScope?prefix~enabled?format?bucket()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains the configuration parameters for a job-completion report."]moduleJobStatusUpdateReason=structtypenonrect=stringletcontext_="JobStatusUpdateReason"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:"JobStatusUpdateReason"jletto_json=simple_to_jsonto_valueendmoduleS3GeneratedManifestDescriptor=structtypenonrect={format:GeneratedManifestFormat.toption[@ocaml.doc"The format of the generated manifest."];location:JobManifestLocation.toption}letmake?format=fun?location->fun()->{format;location}letto_valuex=structure_to_value[("Format",(Option.mapx.format~f:GeneratedManifestFormat.to_value));("Location",(Option.mapx.location~f:JobManifestLocation.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letlocation=(Option.map~f:JobManifestLocation.of_xml)(Xml.childxml_arg0"Location")inletformat=(Option.map~f:GeneratedManifestFormat.of_xml)(Xml.childxml_arg0"Format")inmake?location?format()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letlocation=field_mapjson__"Location"JobManifestLocation.of_jsoninletformat=field_mapjson__"Format"GeneratedManifestFormat.of_jsoninmake?location?format()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Describes the specified job's generated manifest. Batch Operations jobs created with a ManifestGenerator populate details of this descriptor after execution of the ManifestGenerator."]moduleSuspendedCause=structtypenonrect=stringletcontext_="SuspendedCause"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:"SuspendedCause"jletto_json=simple_to_jsonto_valueendmoduleSuspendedDate=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_valueendmoduleBucketLocationConstraint=structtypenonrect=|EU|Eu_west_1|Us_west_1|Us_west_2|Ap_south_1|Ap_southeast_1|Ap_southeast_2|Ap_northeast_1|Sa_east_1|Cn_north_1|Eu_central_1|Non_static_idofstringletmakei=iletto_string=function|EU->"EU"|Eu_west_1->"eu-west-1"|Us_west_1->"us-west-1"|Us_west_2->"us-west-2"|Ap_south_1->"ap-south-1"|Ap_southeast_1->"ap-southeast-1"|Ap_southeast_2->"ap-southeast-2"|Ap_northeast_1->"ap-northeast-1"|Sa_east_1->"sa-east-1"|Cn_north_1->"cn-north-1"|Eu_central_1->"eu-central-1"|Non_static_ids->sletof_string=function|"EU"->EU|"eu-west-1"->Eu_west_1|"us-west-1"->Us_west_1|"us-west-2"->Us_west_2|"ap-south-1"->Ap_south_1|"ap-southeast-1"->Ap_southeast_1|"ap-southeast-2"->Ap_southeast_2|"ap-northeast-1"->Ap_northeast_1|"sa-east-1"->Sa_east_1|"cn-north-1"->Cn_north_1|"eu-central-1"->Eu_central_1|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 BucketLocationConstraint"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"BucketLocationConstraint"j)letto_json=simple_to_jsonto_valueendmoduleStorageLensGroup=structtypenonrect={name:StorageLensGroupName.t[@ocaml.doc"Contains the name of the Storage Lens group."];filter:StorageLensGroupFilter.t[@ocaml.doc"Sets the criteria for the Storage Lens group data that is displayed. For multiple filter conditions, the AND or OR logical operator is used."];storageLensGroupArn:StorageLensGroupArn.toption[@ocaml.doc"Contains the Amazon Resource Name (ARN) of the Storage Lens group. This property is read-only."]}letcontext_="StorageLensGroup"letmake?storageLensGroupArn=fun~name->fun~filter->fun()->{storageLensGroupArn;name;filter}letto_valuex=structure_to_value[("Name",(Some(StorageLensGroupName.to_valuex.name)));("Filter",(Some(StorageLensGroupFilter.to_valuex.filter)));("StorageLensGroupArn",(Option.mapx.storageLensGroupArn~f:StorageLensGroupArn.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstorageLensGroupArn=(Option.map~f:StorageLensGroupArn.of_xml)(Xml.childxml_arg0"StorageLensGroupArn")inletfilter=StorageLensGroupFilter.of_xml(Xml.child_exn~context:context_xml_arg0"Filter")inletname=StorageLensGroupName.of_xml(Xml.child_exn~context:context_xml_arg0"Name")inmake?storageLensGroupArn~filter~name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstorageLensGroupArn=field_mapjson__"StorageLensGroupArn"StorageLensGroupArn.of_jsoninletfilter=field_map_exnjson__"Filter"StorageLensGroupFilter.of_jsoninletname=field_map_exnjson__"Name"StorageLensGroupName.of_jsoninmake?storageLensGroupArn~filter~name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A custom grouping of objects that include filters for prefixes, suffixes, object tags, object size, or object age. You can create an S3 Storage Lens group that includes a single filter or multiple filter conditions. To specify multiple filter conditions, you use AND or OR logical operators."]moduleBadRequestException=structtypenonrect={message:ExceptionMessage.toption}letmake?message=fun()->{message}letto_valuex=structure_to_value[("Message",(Option.mapx.message~f:ExceptionMessage.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmessage=(Option.map~f:ExceptionMessage.of_xml)(Xml.childxml_arg0"Message")inmake?message()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmessage=field_mapjson__"Message"ExceptionMessage.of_jsoninmake?message()letto_jsonv=composed_to_jsonto_valuevendmoduleInternalServiceException=structtypenonrect={message:ExceptionMessage.toption}letmake?message=fun()->{message}letto_valuex=structure_to_value[("Message",(Option.mapx.message~f:ExceptionMessage.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmessage=(Option.map~f:ExceptionMessage.of_xml)(Xml.childxml_arg0"Message")inmake?message()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmessage=field_mapjson__"Message"ExceptionMessage.of_jsoninmake?message()letto_jsonv=composed_to_jsonto_valuevendmoduleJobStatusException=structtypenonrect={message:ExceptionMessage.toption}letmake?message=fun()->{message}letto_valuex=structure_to_value[("Message",(Option.mapx.message~f:ExceptionMessage.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmessage=(Option.map~f:ExceptionMessage.of_xml)(Xml.childxml_arg0"Message")inmake?message()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmessage=field_mapjson__"Message"ExceptionMessage.of_jsoninmake?message()letto_jsonv=composed_to_jsonto_valuevendmoduleNotFoundException=structtypenonrect={message:ExceptionMessage.toption}letmake?message=fun()->{message}letto_valuex=structure_to_value[("Message",(Option.mapx.message~f:ExceptionMessage.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmessage=(Option.map~f:ExceptionMessage.of_xml)(Xml.childxml_arg0"Message")inmake?message()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmessage=field_mapjson__"Message"ExceptionMessage.of_jsoninmake?message()letto_jsonv=composed_to_jsonto_valuevendmoduleTooManyRequestsException=structtypenonrect={message:ExceptionMessage.toption}letmake?message=fun()->{message}letto_valuex=structure_to_value[("Message",(Option.mapx.message~f:ExceptionMessage.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmessage=(Option.map~f:ExceptionMessage.of_xml)(Xml.childxml_arg0"Message")inmake?message()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmessage=field_mapjson__"Message"ExceptionMessage.of_jsoninmake?message()letto_jsonv=composed_to_jsonto_valuevendmoduleRequestedJobStatus=structtypenonrect=|Cancelled|Ready|Non_static_idofstringletmakei=iletto_string=function|Cancelled->"Cancelled"|Ready->"Ready"|Non_static_ids->sletof_string=function|"Cancelled"->Cancelled|"Ready"->Ready|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 RequestedJobStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"RequestedJobStatus"j)letto_json=simple_to_jsonto_valueendmoduleS3ResourceArn=structtypenonrect=stringletcontext_="S3ResourceArn"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:1011)>>=(fun()->check_patterni~pattern:"arn:[^:]+:s3(express)?:[^:].*"));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"S3ResourceArn"jletto_json=simple_to_jsonto_valueendmoduleTagKeyList=structtypenonrect=TagKeyString.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:TagKeyString.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:TagKeyString.of_xml)letof_jsonj=list_of_json~kind:"TagKeyList"~of_json:TagKeyString.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleTagList=structtypenonrect=Tag.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:Tag.to_value))|>(funx->`Listx)letto_queryv=to_queryto_valuevletto_header_=failwithf"to_header is not implemented for List_shape objects"()letof_xmlx=make(List.map((Xml.all_childrenx)|>(List.filter~f:(function|`Datas->(matchStdlib.String.trimswith|""->false|_->true)|_->true)))~f:Tag.of_xml)letof_jsonj=list_of_json~kind:"TagList"~of_json:Tag.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleMultiRegionAccessPointId=structtypenonrect=stringletcontext_="MultiRegionAccessPointId"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:200)>>=(fun()->check_patterni~pattern:"^[a-zA-Z0-9\\:.-]{3,200}$"));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"MultiRegionAccessPointId"jletto_json=simple_to_jsonto_valueendmoduleRouteList=structtypenonrect=MultiRegionAccessPointRoute.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:MultiRegionAccessPointRoute.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:MultiRegionAccessPointRoute.of_xml)letof_jsonj=list_of_json~kind:"RouteList"~of_json:MultiRegionAccessPointRoute.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleStorageLensTags=structtypenonrect=StorageLensTag.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:StorageLensTag.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:StorageLensTag.of_xml)letof_jsonj=list_of_json~kind:"StorageLensTags"~of_json:StorageLensTag.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleStorageLensConfiguration=structtypenonrect={id:ConfigId.t[@ocaml.doc"A container for the Amazon S3 Storage Lens configuration ID."];accountLevel:AccountLevel.t[@ocaml.doc"A container for all the account-level configurations of your S3 Storage Lens configuration."];include_:Include.toption[@ocaml.doc"A container for what is included in this configuration. This container can only be valid if there is no Exclude container submitted, and it's not empty."];exclude:Exclude.toption[@ocaml.doc"A container for what is excluded in this configuration. This container can only be valid if there is no Include container submitted, and it's not empty."];dataExport:StorageLensDataExport.toption[@ocaml.doc"A container to specify the properties of your S3 Storage Lens metrics export including, the destination, schema and format."];expandedPrefixesDataExport:StorageLensExpandedPrefixesDataExport.toption[@ocaml.doc"A container that configures your S3 Storage Lens expanded prefixes metrics report."];isEnabled:IsEnabled.t[@ocaml.doc"A container for whether the S3 Storage Lens configuration is enabled."];awsOrg:StorageLensAwsOrg.toption[@ocaml.doc"A container for the Amazon Web Services organization for this S3 Storage Lens configuration."];storageLensArn:StorageLensArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the S3 Storage Lens configuration. This property is read-only and follows the following format: arn:aws:s3:us-east-1:example-account-id:storage-lens/your-dashboard-name"];prefixDelimiter:StorageLensPrefixLevelDelimiter.toption[@ocaml.doc"A container for all prefix delimiters that are used for object keys in this S3 Storage Lens configuration. The prefix delimiters determine how S3 Storage Lens counts prefix depth, by separating the hierarchical levels in object keys. If either a prefix delimiter or existing delimiter is undefined, Amazon S3 uses the delimiter that\226\128\153s defined. If both the prefix delimiter and existing delimiter are undefined, S3 uses / as the default delimiter. When custom delimiters are used, both the prefix delimiter and existing delimiter must specify the same special character. Otherwise, your request results in an error."]}letcontext_="StorageLensConfiguration"letmake?include_=fun?exclude->fun?dataExport->fun?expandedPrefixesDataExport->fun?awsOrg->fun?storageLensArn->fun?prefixDelimiter->fun~id->fun~accountLevel->fun~isEnabled->fun()->{include_;exclude;dataExport;expandedPrefixesDataExport;awsOrg;storageLensArn;prefixDelimiter;id;accountLevel;isEnabled}letto_valuex=structure_to_value[("Id",(Some(ConfigId.to_valuex.id)));("AccountLevel",(Some(AccountLevel.to_valuex.accountLevel)));("Include",(Option.mapx.include_~f:Include.to_value));("Exclude",(Option.mapx.exclude~f:Exclude.to_value));("DataExport",(Option.mapx.dataExport~f:StorageLensDataExport.to_value));("ExpandedPrefixesDataExport",(Option.mapx.expandedPrefixesDataExport~f:StorageLensExpandedPrefixesDataExport.to_value));("IsEnabled",(Some(IsEnabled.to_valuex.isEnabled)));("AwsOrg",(Option.mapx.awsOrg~f:StorageLensAwsOrg.to_value));("StorageLensArn",(Option.mapx.storageLensArn~f:StorageLensArn.to_value));("PrefixDelimiter",(Option.mapx.prefixDelimiter~f:StorageLensPrefixLevelDelimiter.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letprefixDelimiter=(Option.map~f:StorageLensPrefixLevelDelimiter.of_xml)(Xml.childxml_arg0"PrefixDelimiter")inletstorageLensArn=(Option.map~f:StorageLensArn.of_xml)(Xml.childxml_arg0"StorageLensArn")inletawsOrg=(Option.map~f:StorageLensAwsOrg.of_xml)(Xml.childxml_arg0"AwsOrg")inletisEnabled=IsEnabled.of_xml(Xml.child_exn~context:context_xml_arg0"IsEnabled")inletexpandedPrefixesDataExport=(Option.map~f:StorageLensExpandedPrefixesDataExport.of_xml)(Xml.childxml_arg0"ExpandedPrefixesDataExport")inletdataExport=(Option.map~f:StorageLensDataExport.of_xml)(Xml.childxml_arg0"DataExport")inletexclude=(Option.map~f:Exclude.of_xml)(Xml.childxml_arg0"Exclude")inletinclude_=(Option.map~f:Include.of_xml)(Xml.childxml_arg0"Include")inletaccountLevel=AccountLevel.of_xml(Xml.child_exn~context:context_xml_arg0"AccountLevel")inletid=ConfigId.of_xml(Xml.child_exn~context:context_xml_arg0"Id")inmake?prefixDelimiter?storageLensArn?awsOrg~isEnabled?expandedPrefixesDataExport?dataExport?exclude?include_~accountLevel~id()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letprefixDelimiter=field_mapjson__"PrefixDelimiter"StorageLensPrefixLevelDelimiter.of_jsoninletstorageLensArn=field_mapjson__"StorageLensArn"StorageLensArn.of_jsoninletawsOrg=field_mapjson__"AwsOrg"StorageLensAwsOrg.of_jsoninletisEnabled=field_map_exnjson__"IsEnabled"IsEnabled.of_jsoninletexpandedPrefixesDataExport=field_mapjson__"ExpandedPrefixesDataExport"StorageLensExpandedPrefixesDataExport.of_jsoninletdataExport=field_mapjson__"DataExport"StorageLensDataExport.of_jsoninletexclude=field_mapjson__"Exclude"Exclude.of_jsoninletinclude_=field_mapjson__"Include"Include.of_jsoninletaccountLevel=field_map_exnjson__"AccountLevel"AccountLevel.of_jsoninletid=field_map_exnjson__"Id"ConfigId.of_jsoninmake?prefixDelimiter?storageLensArn?awsOrg~isEnabled?expandedPrefixesDataExport?dataExport?exclude?include_~accountLevel~id()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A container for the Amazon S3 Storage Lens configuration."]moduleMultiRegionAccessPointClientToken=structtypenonrect=stringletcontext_="MultiRegionAccessPointClientToken"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:64)>>=(fun()->check_patterni~pattern:"\\S+"));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"MultiRegionAccessPointClientToken"jletto_json=simple_to_jsonto_valueendmoduleTooManyTagsException=structtypenonrect={message:ExceptionMessage.toption}letmake?message=fun()->{message}letto_valuex=structure_to_value[("Message",(Option.mapx.message~f:ExceptionMessage.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmessage=(Option.map~f:ExceptionMessage.of_xml)(Xml.childxml_arg0"Message")inmake?message()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmessage=field_mapjson__"Message"ExceptionMessage.of_jsoninmake?message()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Amazon S3 throws this exception if you have too many tags in your tag set."]moduleMFA=structtypenonrect=stringletcontext_="MFA"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:"MFA"jletto_json=simple_to_jsonto_valueendmoduleVersioningConfiguration=structtypenonrect={mFADelete:MFADelete.toption[@ocaml.doc"Specifies whether MFA delete is enabled or disabled in the bucket versioning configuration for the S3 on Outposts bucket."];status:BucketVersioningStatus.toption[@ocaml.doc"Sets the versioning state of the S3 on Outposts bucket."]}letmake?mFADelete=fun?status->fun()->{mFADelete;status}letto_valuex=structure_to_value[("MfaDelete",(Option.mapx.mFADelete~f:MFADelete.to_value));("Status",(Option.mapx.status~f:BucketVersioningStatus.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstatus=(Option.map~f:BucketVersioningStatus.of_xml)(Xml.childxml_arg0"Status")inletmFADelete=(Option.map~f:MFADelete.of_xml)(Xml.childxml_arg0"MfaDelete")inmake?status?mFADelete()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstatus=field_mapjson__"Status"BucketVersioningStatus.of_jsoninletmFADelete=field_mapjson__"MFADelete"MFADelete.of_jsoninmake?status?mFADelete()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Describes the versioning state of an Amazon S3 on Outposts bucket. For more information, see PutBucketVersioning."]moduleTagging=structtypenonrect={tagSet:S3TagSet.t[@ocaml.doc"A collection for a set of tags."]}letcontext_="Tagging"letmake~tagSet=fun()->{tagSet}letto_valuex=structure_to_value[("TagSet",(Some(S3TagSet.to_valuex.tagSet)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettagSet=S3TagSet.of_xml(Xml.child_exn~context:context_xml_arg0"TagSet")inmake~tagSet()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettagSet=field_map_exnjson__"TagSet"S3TagSet.of_jsoninmake~tagSet()letto_jsonv=composed_to_jsonto_valuevendmoduleReplicationConfiguration=structtypenonrect={role:Role.t[@ocaml.doc"The Amazon Resource Name (ARN) of the Identity and Access Management (IAM) role that S3 on Outposts assumes when replicating objects. For information about S3 replication on Outposts configuration, see Setting up replication in the Amazon S3 User Guide."];rules:ReplicationRules.t[@ocaml.doc"A container for one or more replication rules. A replication configuration must have at least one rule and can contain an array of 100 rules at the most."]}letcontext_="ReplicationConfiguration"letmake~role=fun~rules->fun()->{role;rules}letto_valuex=structure_to_value[("Role",(Some(Role.to_valuex.role)));("Rules",(Some(ReplicationRules.to_valuex.rules)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letrules=ReplicationRules.of_xml(Xml.child_exn~context:context_xml_arg0"Rules")inletrole=Role.of_xml(Xml.child_exn~context:context_xml_arg0"Role")inmake~rules~role()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letrules=field_map_exnjson__"Rules"ReplicationRules.of_jsoninletrole=field_map_exnjson__"Role"Role.of_jsoninmake~rules~role()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A container for one or more replication rules. A replication configuration must have at least one rule and you can add up to 100 rules. The maximum size of a replication configuration is 128 KB."]moduleConfirmRemoveSelfBucketAccess=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_valueendmoduleLifecycleConfiguration=structtypenonrect={rules:LifecycleRules.toption[@ocaml.doc"A lifecycle rule for individual objects in an Outposts bucket."]}letmake?rules=fun()->{rules}letto_valuex=structure_to_value[("Rules",(Option.mapx.rules~f:LifecycleRules.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letrules=(Option.map~f:LifecycleRules.of_xml)(Xml.childxml_arg0"Rules")inmake?rules()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letrules=field_mapjson__"Rules"LifecycleRules.of_jsoninmake?rules()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The container for the Outposts bucket lifecycle configuration."]moduleScope=structtypenonrect={prefixes:PrefixesList.toption[@ocaml.doc"You can specify any amount of prefixes, but the total length of characters of all prefixes must be less than 256 bytes in size."];permissions:ScopePermissionList.toption[@ocaml.doc"You can include one or more API operations as permissions."]}letmake?prefixes=fun?permissions->fun()->{prefixes;permissions}letto_valuex=structure_to_value[("Prefixes",(Option.mapx.prefixes~f:PrefixesList.to_value));("Permissions",(Option.mapx.permissions~f:ScopePermissionList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letpermissions=(Option.map~f:ScopePermissionList.of_xml)(Xml.childxml_arg0"Permissions")inletprefixes=(Option.map~f:PrefixesList.of_xml)(Xml.childxml_arg0"Prefixes")inmake?permissions?prefixes()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letpermissions=field_mapjson__"Permissions"ScopePermissionList.of_jsoninletprefixes=field_mapjson__"Prefixes"PrefixesList.of_jsoninmake?permissions?prefixes()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"You can use the access point scope to restrict access to specific prefixes, API operations, or a combination of both. For more information, see Manage the scope of your access points for directory buckets."]moduleObjectLambdaPolicy=structtypenonrect=stringletcontext_="ObjectLambdaPolicy"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:"ObjectLambdaPolicy"jletto_json=simple_to_jsonto_valueendmoduleObjectLambdaConfiguration=structtypenonrect={supportingAccessPoint:ObjectLambdaSupportingAccessPointArn.t[@ocaml.doc"Standard access point associated with the Object Lambda Access Point."];cloudWatchMetricsEnabled:Boolean.toption[@ocaml.doc"A container for whether the CloudWatch metrics configuration is enabled."];allowedFeatures:ObjectLambdaAllowedFeaturesList.toption[@ocaml.doc"A container for allowed features. Valid inputs are GetObject-Range, GetObject-PartNumber, HeadObject-Range, and HeadObject-PartNumber."];transformationConfigurations:ObjectLambdaTransformationConfigurationsList.t[@ocaml.doc"A container for transformation configurations for an Object Lambda Access Point."]}letcontext_="ObjectLambdaConfiguration"letmake?cloudWatchMetricsEnabled=fun?allowedFeatures->fun~supportingAccessPoint->fun~transformationConfigurations->fun()->{cloudWatchMetricsEnabled;allowedFeatures;supportingAccessPoint;transformationConfigurations}letto_valuex=structure_to_value[("SupportingAccessPoint",(Some(ObjectLambdaSupportingAccessPointArn.to_valuex.supportingAccessPoint)));("CloudWatchMetricsEnabled",(Option.mapx.cloudWatchMetricsEnabled~f:Boolean.to_value));("AllowedFeatures",(Option.mapx.allowedFeatures~f:ObjectLambdaAllowedFeaturesList.to_value));("TransformationConfigurations",(Some(ObjectLambdaTransformationConfigurationsList.to_valuex.transformationConfigurations)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettransformationConfigurations=ObjectLambdaTransformationConfigurationsList.of_xml(Xml.child_exn~context:context_xml_arg0"TransformationConfigurations")inletallowedFeatures=(Option.map~f:ObjectLambdaAllowedFeaturesList.of_xml)(Xml.childxml_arg0"AllowedFeatures")inletcloudWatchMetricsEnabled=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"CloudWatchMetricsEnabled")inletsupportingAccessPoint=ObjectLambdaSupportingAccessPointArn.of_xml(Xml.child_exn~context:context_xml_arg0"SupportingAccessPoint")inmake~transformationConfigurations?allowedFeatures?cloudWatchMetricsEnabled~supportingAccessPoint()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettransformationConfigurations=field_map_exnjson__"TransformationConfigurations"ObjectLambdaTransformationConfigurationsList.of_jsoninletallowedFeatures=field_mapjson__"AllowedFeatures"ObjectLambdaAllowedFeaturesList.of_jsoninletcloudWatchMetricsEnabled=field_mapjson__"CloudWatchMetricsEnabled"Boolean.of_jsoninletsupportingAccessPoint=field_map_exnjson__"SupportingAccessPoint"ObjectLambdaSupportingAccessPointArn.of_jsoninmake~transformationConfigurations?allowedFeatures?cloudWatchMetricsEnabled~supportingAccessPoint()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A configuration used when creating an Object Lambda Access Point."]moduleOrganization=structtypenonrect=stringletcontext_="Organization"letmakei=letopenResultinok_or_failwith((check_string_mini~min:12)>>=(fun()->(check_string_maxi~max:34)>>=(fun()->check_patterni~pattern:"^o-[a-z0-9]{10,32}$")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"Organization"jletto_json=simple_to_jsonto_valueendmodulePolicyDocument=structtypenonrect=stringletcontext_="PolicyDocument"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:350000)>>=(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:"PolicyDocument"jletto_json=simple_to_jsonto_valueendmoduleContinuationToken=structtypenonrect=stringletcontext_="ContinuationToken"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:"ContinuationToken"jletto_json=simple_to_jsonto_valueendmoduleStorageLensGroupList=structtypenonrect=ListStorageLensGroupEntry.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ListStorageLensGroupEntry.to_value))|>(funx->`Listx)letto_queryv=to_queryto_valuevletto_header_=failwithf"to_header is not implemented for List_shape objects"()letof_xmlx=make(List.mapx~f:ListStorageLensGroupEntry.of_xml)letof_jsonj=list_of_json~kind:"StorageLensGroupList"~of_json:ListStorageLensGroupEntry.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleStorageLensConfigurationList=structtypenonrect=ListStorageLensConfigurationEntry.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ListStorageLensConfigurationEntry.to_value))|>(funx->`Listx)letto_queryv=to_queryto_valuevletto_header_=failwithf"to_header is not implemented for List_shape objects"()letof_xmlx=make(List.mapx~f:ListStorageLensConfigurationEntry.of_xml)letof_jsonj=list_of_json~kind:"StorageLensConfigurationList"~of_json:ListStorageLensConfigurationEntry.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleRegionalBucketList=structtypenonrect=RegionalBucket.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:RegionalBucket.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:RegionalBucket.of_xml)letof_jsonj=list_of_json~kind:"RegionalBucketList"~of_json:RegionalBucket.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleMaxResults=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:1000)>>=(fun()->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 MaxResults"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleMultiRegionAccessPointReportList=structtypenonrect=MultiRegionAccessPointReport.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:MultiRegionAccessPointReport.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:MultiRegionAccessPointReport.of_xml)letof_jsonj=list_of_json~kind:"MultiRegionAccessPointReportList"~of_json:MultiRegionAccessPointReport.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleInvalidNextTokenException=structtypenonrect={message:ExceptionMessage.toption}letmake?message=fun()->{message}letto_valuex=structure_to_value[("Message",(Option.mapx.message~f:ExceptionMessage.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmessage=(Option.map~f:ExceptionMessage.of_xml)(Xml.childxml_arg0"Message")inmake?message()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmessage=field_mapjson__"Message"ExceptionMessage.of_jsoninmake?message()letto_jsonv=composed_to_jsonto_valuevendmoduleInvalidRequestException=structtypenonrect={message:ExceptionMessage.toption}letmake?message=fun()->{message}letto_valuex=structure_to_value[("Message",(Option.mapx.message~f:ExceptionMessage.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmessage=(Option.map~f:ExceptionMessage.of_xml)(Xml.childxml_arg0"Message")inmake?message()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmessage=field_mapjson__"Message"ExceptionMessage.of_jsoninmake?message()letto_jsonv=composed_to_jsonto_valuevendmoduleJobListDescriptorList=structtypenonrect=JobListDescriptor.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:JobListDescriptor.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:JobListDescriptor.of_xml)letof_jsonj=list_of_json~kind:"JobListDescriptorList"~of_json:JobListDescriptor.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleStringForNextToken=structtypenonrect=stringletcontext_="StringForNextToken"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:1024)>>=(fun()->check_patterni~pattern:"^[A-Za-z0-9\\+\\:\\/\\=\\?\\#-_]+$")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"StringForNextToken"jletto_json=simple_to_jsonto_valueendmoduleJobStatusList=structtypenonrect=JobStatus.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:JobStatus.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:JobStatus.of_xml)letof_jsonj=list_of_json~kind:"JobStatusList"~of_json:JobStatus.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleCallerAccessGrantsList=structtypenonrect=ListCallerAccessGrantsEntry.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ListCallerAccessGrantsEntry.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:ListCallerAccessGrantsEntry.of_xml)letof_jsonj=list_of_json~kind:"CallerAccessGrantsList"~of_json:ListCallerAccessGrantsEntry.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleAccessPointList=structtypenonrect=AccessPoint.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:AccessPoint.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:AccessPoint.of_xml)letof_jsonj=list_of_json~kind:"AccessPointList"~of_json:AccessPoint.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleObjectLambdaAccessPointList=structtypenonrect=ObjectLambdaAccessPoint.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ObjectLambdaAccessPoint.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:ObjectLambdaAccessPoint.of_xml)letof_jsonj=list_of_json~kind:"ObjectLambdaAccessPointList"~of_json:ObjectLambdaAccessPoint.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleAccessGrantsList=structtypenonrect=ListAccessGrantEntry.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ListAccessGrantEntry.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:ListAccessGrantEntry.of_xml)letof_jsonj=list_of_json~kind:"AccessGrantsList"~of_json:ListAccessGrantEntry.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleAccessGrantsLocationsList=structtypenonrect=ListAccessGrantsLocationsEntry.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ListAccessGrantsLocationsEntry.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:ListAccessGrantsLocationsEntry.of_xml)letof_jsonj=list_of_json~kind:"AccessGrantsLocationsList"~of_json:ListAccessGrantsLocationsEntry.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleAccessGrantsInstancesList=structtypenonrect=ListAccessGrantsInstanceEntry.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ListAccessGrantsInstanceEntry.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:ListAccessGrantsInstanceEntry.of_xml)letof_jsonj=list_of_json~kind:"AccessGrantsInstancesList"~of_json:ListAccessGrantsInstanceEntry.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleNoSuchPublicAccessBlockConfiguration=structtypenonrect={message:NoSuchPublicAccessBlockConfigurationMessage.toption}letmake?message=fun()->{message}letto_valuex=structure_to_value[("Message",(Option.mapx.message~f:NoSuchPublicAccessBlockConfigurationMessage.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmessage=(Option.map~f:NoSuchPublicAccessBlockConfigurationMessage.of_xml)(Xml.childxml_arg0"Message")inmake?message()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmessage=field_mapjson__"Message"NoSuchPublicAccessBlockConfigurationMessage.of_jsoninmake?message()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Amazon S3 throws this exception if you make a GetPublicAccessBlock request against an account that doesn't have a PublicAccessBlockConfiguration set."]modulePolicyStatus=structtypenonrect={isPublic:IsPublic.toption}letmake?isPublic=fun()->{isPublic}letto_valuex=structure_to_value[("IsPublic",(Option.mapx.isPublic~f:IsPublic.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letisPublic=(Option.map~f:IsPublic.of_xml)(Xml.childxml_arg0"IsPublic")inmake?isPublic()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letisPublic=field_mapjson__"IsPublic"IsPublic.of_jsoninmake?isPublic()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Indicates whether this access point policy is public. For more information about how Amazon S3 evaluates policies to determine whether they are public, see The Meaning of \"Public\" in the Amazon S3 User Guide."]moduleMultiRegionAccessPointPolicyDocument=structtypenonrect={established:EstablishedMultiRegionAccessPointPolicy.toption[@ocaml.doc"The last established policy for the Multi-Region Access Point."];proposed:ProposedMultiRegionAccessPointPolicy.toption[@ocaml.doc"The proposed policy for the Multi-Region Access Point."]}letmake?established=fun?proposed->fun()->{established;proposed}letto_valuex=structure_to_value[("Established",(Option.mapx.established~f:EstablishedMultiRegionAccessPointPolicy.to_value));("Proposed",(Option.mapx.proposed~f:ProposedMultiRegionAccessPointPolicy.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letproposed=(Option.map~f:ProposedMultiRegionAccessPointPolicy.of_xml)(Xml.childxml_arg0"Proposed")inletestablished=(Option.map~f:EstablishedMultiRegionAccessPointPolicy.of_xml)(Xml.childxml_arg0"Established")inmake?proposed?established()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letproposed=field_mapjson__"Proposed"ProposedMultiRegionAccessPointPolicy.of_jsoninletestablished=field_mapjson__"Established"EstablishedMultiRegionAccessPointPolicy.of_jsoninmake?proposed?established()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The Multi-Region Access Point access control policy. When you update the policy, the update is first listed as the proposed policy. After the update is finished and all Regions have been updated, the proposed policy is listed as the established policy. If both policies have the same version number, the proposed policy is the established policy."]moduleCredentials=structtypenonrect={accessKeyId:AccessKeyId.toption[@ocaml.doc"The unique access key ID of the Amazon Web Services STS temporary credential that S3 Access Grants vends to grantees and client applications."];secretAccessKey:SecretAccessKey.toption[@ocaml.doc"The secret access key of the Amazon Web Services STS temporary credential that S3 Access Grants vends to grantees and client applications."];sessionToken:SessionToken.toption[@ocaml.doc"The Amazon Web Services STS temporary credential that S3 Access Grants vends to grantees and client applications."];expiration:Expiration.toption[@ocaml.doc"The expiration date and time of the temporary credential that S3 Access Grants vends to grantees and client applications."]}letmake?accessKeyId=fun?secretAccessKey->fun?sessionToken->fun?expiration->fun()->{accessKeyId;secretAccessKey;sessionToken;expiration}letto_valuex=structure_to_value[("AccessKeyId",(Option.mapx.accessKeyId~f:AccessKeyId.to_value));("SecretAccessKey",(Option.mapx.secretAccessKey~f:SecretAccessKey.to_value));("SessionToken",(Option.mapx.sessionToken~f:SessionToken.to_value));("Expiration",(Option.mapx.expiration~f:Expiration.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letexpiration=(Option.map~f:Expiration.of_xml)(Xml.childxml_arg0"Expiration")inletsessionToken=(Option.map~f:SessionToken.of_xml)(Xml.childxml_arg0"SessionToken")inletsecretAccessKey=(Option.map~f:SecretAccessKey.of_xml)(Xml.childxml_arg0"SecretAccessKey")inletaccessKeyId=(Option.map~f:AccessKeyId.of_xml)(Xml.childxml_arg0"AccessKeyId")inmake?expiration?sessionToken?secretAccessKey?accessKeyId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letexpiration=field_mapjson__"Expiration"Expiration.of_jsoninletsessionToken=field_mapjson__"SessionToken"SessionToken.of_jsoninletsecretAccessKey=field_mapjson__"SecretAccessKey"SecretAccessKey.of_jsoninletaccessKeyId=field_mapjson__"AccessKeyId"AccessKeyId.of_jsoninmake?expiration?sessionToken?secretAccessKey?accessKeyId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The Amazon Web Services Security Token Service temporary credential that S3 Access Grants vends to grantees and client applications."]moduleAuditContext=structtypenonrect=stringletcontext_="AuditContext"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:2048)>>=(fun()->check_patterni~pattern:"[\\u0020-\\uD7FF\\uE000-\\uFFFD\\uD800\\uDC00-\\uDBFF\\uDFFF\\t]*")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"AuditContext"jletto_json=simple_to_jsonto_valueendmoduleDurationSeconds=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:43200)>>=(fun()->check_int_mini~min:900));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 DurationSeconds"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmodulePrivilege=structtypenonrect=|Minimal|Default|Non_static_idofstringletmakei=iletto_string=function|Minimal->"Minimal"|Default->"Default"|Non_static_ids->sletof_string=function|"Minimal"->Minimal|"Default"->Default|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 Privilege"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"Privilege"j)letto_json=simple_to_jsonto_valueendmoduleS3PrefixType=structtypenonrect=|Object|Non_static_idofstringletmakei=iletto_string=function|Object->"Object"|Non_static_ids->sletof_string=function|"Object"->Object|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 S3PrefixType"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"S3PrefixType"j)letto_json=simple_to_jsonto_valueendmoduleMFADeleteStatus=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 MFADeleteStatus"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"MFADeleteStatus"j)letto_json=simple_to_jsonto_valueendmoduleEndpoints=structtypenonrect=(NonEmptyMaxLength64String.t*NonEmptyMaxLength1024String.t)listletmakei=iletof_headerxs=make(List.filter_mapxs~f:(fun(k,v)->(Base.String.chop_prefixk~prefix:"x-amz-meta-")|>(Option.map~f:(funchopped->((NonEmptyMaxLength64String.of_stringchopped),(NonEmptyMaxLength1024String.of_stringv))))))letto_valuexs=(xs|>(List.map~f:(fun(x,y)->(NonEmptyMaxLength64String.to_valuex)|>(funx->(NonEmptyMaxLength1024String.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:NonEmptyMaxLength64String.of_string~of_json:NonEmptyMaxLength1024String.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleAsyncOperation=structtypenonrect={creationTime:AsyncCreationTimestamp.toption[@ocaml.doc"The time that the request was sent to the service."];operation:AsyncOperationName.toption[@ocaml.doc"The specific operation for the asynchronous request."];requestTokenARN:AsyncRequestTokenARN.toption[@ocaml.doc"The request token associated with the request."];requestParameters:AsyncRequestParameters.toption[@ocaml.doc"The parameters associated with the request."];requestStatus:AsyncRequestStatus.toption[@ocaml.doc"The current status of the request."];responseDetails:AsyncResponseDetails.toption[@ocaml.doc"The details of the response."]}letmake?creationTime=fun?operation->fun?requestTokenARN->fun?requestParameters->fun?requestStatus->fun?responseDetails->fun()->{creationTime;operation;requestTokenARN;requestParameters;requestStatus;responseDetails}letto_valuex=structure_to_value[("CreationTime",(Option.mapx.creationTime~f:AsyncCreationTimestamp.to_value));("Operation",(Option.mapx.operation~f:AsyncOperationName.to_value));("RequestTokenARN",(Option.mapx.requestTokenARN~f:AsyncRequestTokenARN.to_value));("RequestParameters",(Option.mapx.requestParameters~f:AsyncRequestParameters.to_value));("RequestStatus",(Option.mapx.requestStatus~f:AsyncRequestStatus.to_value));("ResponseDetails",(Option.mapx.responseDetails~f:AsyncResponseDetails.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letresponseDetails=(Option.map~f:AsyncResponseDetails.of_xml)(Xml.childxml_arg0"ResponseDetails")inletrequestStatus=(Option.map~f:AsyncRequestStatus.of_xml)(Xml.childxml_arg0"RequestStatus")inletrequestParameters=(Option.map~f:AsyncRequestParameters.of_xml)(Xml.childxml_arg0"RequestParameters")inletrequestTokenARN=(Option.map~f:AsyncRequestTokenARN.of_xml)(Xml.childxml_arg0"RequestTokenARN")inletoperation=(Option.map~f:AsyncOperationName.of_xml)(Xml.childxml_arg0"Operation")inletcreationTime=(Option.map~f:AsyncCreationTimestamp.of_xml)(Xml.childxml_arg0"CreationTime")inmake?responseDetails?requestStatus?requestParameters?requestTokenARN?operation?creationTime()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letresponseDetails=field_mapjson__"ResponseDetails"AsyncResponseDetails.of_jsoninletrequestStatus=field_mapjson__"RequestStatus"AsyncRequestStatus.of_jsoninletrequestParameters=field_mapjson__"RequestParameters"AsyncRequestParameters.of_jsoninletrequestTokenARN=field_mapjson__"RequestTokenARN"AsyncRequestTokenARN.of_jsoninletoperation=field_mapjson__"Operation"AsyncOperationName.of_jsoninletcreationTime=field_mapjson__"CreationTime"AsyncCreationTimestamp.of_jsoninmake?responseDetails?requestStatus?requestParameters?requestTokenARN?operation?creationTime()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A container for the information about an asynchronous operation."]moduleJobDescriptor=structtypenonrect={jobId:JobId.toption[@ocaml.doc"The ID for the specified job."];confirmationRequired:ConfirmationRequired.toption[@ocaml.doc"Indicates whether confirmation is required before Amazon S3 begins running the specified job. Confirmation is required only for jobs created through the Amazon S3 console."];description:NonEmptyMaxLength256String.toption[@ocaml.doc"The description for this job, if one was provided in this job's Create Job request."];jobArn:JobArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) for this job."];status:JobStatus.toption[@ocaml.doc"The current status of the specified job."];manifest:JobManifest.toption[@ocaml.doc"The configuration information for the specified job's manifest object."];operation:JobOperation.toption[@ocaml.doc"The operation that the specified job is configured to run on the objects listed in the manifest."];priority:JobPriority.toption[@ocaml.doc"The priority of the specified job."];progressSummary:JobProgressSummary.toption[@ocaml.doc"Describes the total number of tasks that the specified job has run, the number of tasks that succeeded, and the number of tasks that failed."];statusUpdateReason:JobStatusUpdateReason.toption[@ocaml.doc"The reason for updating the job."];failureReasons:JobFailureList.toption[@ocaml.doc"If the specified job failed, this field contains information describing the failure."];report:JobReport.toption[@ocaml.doc"Contains the configuration information for the job-completion report if you requested one in the Create Job request."];creationTime:JobCreationTime.toption[@ocaml.doc"A timestamp indicating when this job was created."];terminationDate:JobTerminationDate.toption[@ocaml.doc"A timestamp indicating when this job terminated. A job's termination date is the date and time when it succeeded, failed, or was canceled."];roleArn:IAMRoleArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) for the Identity and Access Management (IAM) role assigned to run the tasks for this job."];suspendedDate:SuspendedDate.toption[@ocaml.doc"The timestamp when this job was suspended, if it has been suspended."];suspendedCause:SuspendedCause.toption[@ocaml.doc"The reason why the specified job was suspended. A job is only suspended if you create it through the Amazon S3 console. When you create the job, it enters the Suspended state to await confirmation before running. After you confirm the job, it automatically exits the Suspended state."];manifestGenerator:JobManifestGenerator.toption[@ocaml.doc"The manifest generator that was used to generate a job manifest for this job."];generatedManifestDescriptor:S3GeneratedManifestDescriptor.toption[@ocaml.doc"The attribute of the JobDescriptor containing details about the job's generated manifest."]}letmake?jobId=fun?confirmationRequired->fun?description->fun?jobArn->fun?status->fun?manifest->fun?operation->fun?priority->fun?progressSummary->fun?statusUpdateReason->fun?failureReasons->fun?report->fun?creationTime->fun?terminationDate->fun?roleArn->fun?suspendedDate->fun?suspendedCause->fun?manifestGenerator->fun?generatedManifestDescriptor->fun()->{jobId;confirmationRequired;description;jobArn;status;manifest;operation;priority;progressSummary;statusUpdateReason;failureReasons;report;creationTime;terminationDate;roleArn;suspendedDate;suspendedCause;manifestGenerator;generatedManifestDescriptor}letto_valuex=structure_to_value[("JobId",(Option.mapx.jobId~f:JobId.to_value));("ConfirmationRequired",(Option.mapx.confirmationRequired~f:ConfirmationRequired.to_value));("Description",(Option.mapx.description~f:NonEmptyMaxLength256String.to_value));("JobArn",(Option.mapx.jobArn~f:JobArn.to_value));("Status",(Option.mapx.status~f:JobStatus.to_value));("Manifest",(Option.mapx.manifest~f:JobManifest.to_value));("Operation",(Option.mapx.operation~f:JobOperation.to_value));("Priority",(Option.mapx.priority~f:JobPriority.to_value));("ProgressSummary",(Option.mapx.progressSummary~f:JobProgressSummary.to_value));("StatusUpdateReason",(Option.mapx.statusUpdateReason~f:JobStatusUpdateReason.to_value));("FailureReasons",(Option.mapx.failureReasons~f:JobFailureList.to_value));("Report",(Option.mapx.report~f:JobReport.to_value));("CreationTime",(Option.mapx.creationTime~f:JobCreationTime.to_value));("TerminationDate",(Option.mapx.terminationDate~f:JobTerminationDate.to_value));("RoleArn",(Option.mapx.roleArn~f:IAMRoleArn.to_value));("SuspendedDate",(Option.mapx.suspendedDate~f:SuspendedDate.to_value));("SuspendedCause",(Option.mapx.suspendedCause~f:SuspendedCause.to_value));("ManifestGenerator",(Option.mapx.manifestGenerator~f:JobManifestGenerator.to_value));("GeneratedManifestDescriptor",(Option.mapx.generatedManifestDescriptor~f:S3GeneratedManifestDescriptor.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letgeneratedManifestDescriptor=(Option.map~f:S3GeneratedManifestDescriptor.of_xml)(Xml.childxml_arg0"GeneratedManifestDescriptor")inletmanifestGenerator=(Option.map~f:JobManifestGenerator.of_xml)(Xml.childxml_arg0"ManifestGenerator")inletsuspendedCause=(Option.map~f:SuspendedCause.of_xml)(Xml.childxml_arg0"SuspendedCause")inletsuspendedDate=(Option.map~f:SuspendedDate.of_xml)(Xml.childxml_arg0"SuspendedDate")inletroleArn=(Option.map~f:IAMRoleArn.of_xml)(Xml.childxml_arg0"RoleArn")inletterminationDate=(Option.map~f:JobTerminationDate.of_xml)(Xml.childxml_arg0"TerminationDate")inletcreationTime=(Option.map~f:JobCreationTime.of_xml)(Xml.childxml_arg0"CreationTime")inletreport=(Option.map~f:JobReport.of_xml)(Xml.childxml_arg0"Report")inletfailureReasons=(Option.map~f:JobFailureList.of_xml)(Xml.childxml_arg0"FailureReasons")inletstatusUpdateReason=(Option.map~f:JobStatusUpdateReason.of_xml)(Xml.childxml_arg0"StatusUpdateReason")inletprogressSummary=(Option.map~f:JobProgressSummary.of_xml)(Xml.childxml_arg0"ProgressSummary")inletpriority=(Option.map~f:JobPriority.of_xml)(Xml.childxml_arg0"Priority")inletoperation=(Option.map~f:JobOperation.of_xml)(Xml.childxml_arg0"Operation")inletmanifest=(Option.map~f:JobManifest.of_xml)(Xml.childxml_arg0"Manifest")inletstatus=(Option.map~f:JobStatus.of_xml)(Xml.childxml_arg0"Status")inletjobArn=(Option.map~f:JobArn.of_xml)(Xml.childxml_arg0"JobArn")inletdescription=(Option.map~f:NonEmptyMaxLength256String.of_xml)(Xml.childxml_arg0"Description")inletconfirmationRequired=(Option.map~f:ConfirmationRequired.of_xml)(Xml.childxml_arg0"ConfirmationRequired")inletjobId=(Option.map~f:JobId.of_xml)(Xml.childxml_arg0"JobId")inmake?generatedManifestDescriptor?manifestGenerator?suspendedCause?suspendedDate?roleArn?terminationDate?creationTime?report?failureReasons?statusUpdateReason?progressSummary?priority?operation?manifest?status?jobArn?description?confirmationRequired?jobId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letgeneratedManifestDescriptor=field_mapjson__"GeneratedManifestDescriptor"S3GeneratedManifestDescriptor.of_jsoninletmanifestGenerator=field_mapjson__"ManifestGenerator"JobManifestGenerator.of_jsoninletsuspendedCause=field_mapjson__"SuspendedCause"SuspendedCause.of_jsoninletsuspendedDate=field_mapjson__"SuspendedDate"SuspendedDate.of_jsoninletroleArn=field_mapjson__"RoleArn"IAMRoleArn.of_jsoninletterminationDate=field_mapjson__"TerminationDate"JobTerminationDate.of_jsoninletcreationTime=field_mapjson__"CreationTime"JobCreationTime.of_jsoninletreport=field_mapjson__"Report"JobReport.of_jsoninletfailureReasons=field_mapjson__"FailureReasons"JobFailureList.of_jsoninletstatusUpdateReason=field_mapjson__"StatusUpdateReason"JobStatusUpdateReason.of_jsoninletprogressSummary=field_mapjson__"ProgressSummary"JobProgressSummary.of_jsoninletpriority=field_mapjson__"Priority"JobPriority.of_jsoninletoperation=field_mapjson__"Operation"JobOperation.of_jsoninletmanifest=field_mapjson__"Manifest"JobManifest.of_jsoninletstatus=field_mapjson__"Status"JobStatus.of_jsoninletjobArn=field_mapjson__"JobArn"JobArn.of_jsoninletdescription=field_mapjson__"Description"NonEmptyMaxLength256String.of_jsoninletconfirmationRequired=field_mapjson__"ConfirmationRequired"ConfirmationRequired.of_jsoninletjobId=field_mapjson__"JobId"JobId.of_jsoninmake?generatedManifestDescriptor?manifestGenerator?suspendedCause?suspendedDate?roleArn?terminationDate?creationTime?report?failureReasons?statusUpdateReason?progressSummary?priority?operation?manifest?status?jobArn?description?confirmationRequired?jobId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A container element for the job configuration and status information returned by a Describe Job request."]moduleIdempotencyException=structtypenonrect={message:ExceptionMessage.toption}letmake?message=fun()->{message}letto_valuex=structure_to_value[("Message",(Option.mapx.message~f:ExceptionMessage.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmessage=(Option.map~f:ExceptionMessage.of_xml)(Xml.childxml_arg0"Message")inmake?message()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmessage=field_mapjson__"Message"ExceptionMessage.of_jsoninmake?message()letto_jsonv=composed_to_jsonto_valuevendmoduleBucketAlreadyExists=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"The requested Outposts bucket name is not available. The bucket namespace is shared by all users of the Outposts in this Region. Select a different name and try again."]moduleBucketAlreadyOwnedByYou=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"The Outposts bucket you tried to create already exists, and you own it."]moduleLocation=structtypenonrect=stringletcontext_="Location"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:"Location"jletto_json=simple_to_jsonto_valueendmoduleBucketCannedACL=structtypenonrect=|Private|Public_read|Public_read_write|Authenticated_read|Non_static_idofstringletmakei=iletto_string=function|Private->"private"|Public_read->"public-read"|Public_read_write->"public-read-write"|Authenticated_read->"authenticated-read"|Non_static_ids->sletof_string=function|"private"->Private|"public-read"->Public_read|"public-read-write"->Public_read_write|"authenticated-read"->Authenticated_read|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 BucketCannedACL"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"BucketCannedACL"j)letto_json=simple_to_jsonto_valueendmoduleCreateBucketConfiguration=structtypenonrect={locationConstraint:BucketLocationConstraint.toption[@ocaml.doc"Specifies the Region where the bucket will be created. If you are creating a bucket on the US East (N. Virginia) Region (us-east-1), you do not need to specify the location. This is not supported by Amazon S3 on Outposts buckets."]}letmake?locationConstraint=fun()->{locationConstraint}letto_valuex=structure_to_value[("LocationConstraint",(Option.mapx.locationConstraint~f:BucketLocationConstraint.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letlocationConstraint=(Option.map~f:BucketLocationConstraint.of_xml)(Xml.childxml_arg0"LocationConstraint")inmake?locationConstraint()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letlocationConstraint=field_mapjson__"LocationConstraint"BucketLocationConstraint.of_jsoninmake?locationConstraint()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The container for the bucket configuration. This is not supported by Amazon S3 on Outposts buckets."]moduleGrantFullControl=structtypenonrect=stringletcontext_="GrantFullControl"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:"GrantFullControl"jletto_json=simple_to_jsonto_valueendmoduleGrantRead=structtypenonrect=stringletcontext_="GrantRead"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:"GrantRead"jletto_json=simple_to_jsonto_valueendmoduleGrantReadACP=structtypenonrect=stringletcontext_="GrantReadACP"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:"GrantReadACP"jletto_json=simple_to_jsonto_valueendmoduleGrantWrite=structtypenonrect=stringletcontext_="GrantWrite"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:"GrantWrite"jletto_json=simple_to_jsonto_valueendmoduleGrantWriteACP=structtypenonrect=stringletcontext_="GrantWriteACP"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:"GrantWriteACP"jletto_json=simple_to_jsonto_valueendmoduleObjectLockEnabledForBucket=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_valueendmoduleUpdateStorageLensGroupRequest=structtypenonrect={name:StorageLensGroupName.t[@ocaml.doc"The name of the Storage Lens group that you want to update."];accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the Storage Lens group owner."];storageLensGroup:StorageLensGroup.t[@ocaml.doc"The JSON file that contains the Storage Lens group configuration."]}letcontext_="UpdateStorageLensGroupRequest"letmake~name=fun~accountId->fun~storageLensGroup->fun()->{name;accountId;storageLensGroup}letto_valuex=structure_to_value[("name",(Some(StorageLensGroupName.to_valuex.name)));("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("StorageLensGroup",(Some(StorageLensGroup.to_valuex.storageLensGroup)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstorageLensGroup=StorageLensGroup.of_xml(Xml.child_exn~context:context_xml_arg0"StorageLensGroup")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inletname=StorageLensGroupName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inmake~storageLensGroup~accountId~name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstorageLensGroup=field_map_exnjson__"StorageLensGroup"StorageLensGroup.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninletname=field_map_exnjson__"Name"StorageLensGroupName.of_jsoninmake~storageLensGroup~accountId~name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Updates the existing Storage Lens group. To use this operation, you must have the permission to perform the s3:UpdateStorageLensGroup action. For more information about the required Storage Lens Groups permissions, see Setting account permissions to use S3 Storage Lens groups. For information about Storage Lens groups errors, see List of Amazon S3 Storage Lens error codes."]moduleUpdateJobStatusResult=structtypenonrect={jobId:JobId.toption[@ocaml.doc"The ID for the job whose status was updated."];status:JobStatus.toption[@ocaml.doc"The current status for the specified job."];statusUpdateReason:JobStatusUpdateReason.toption[@ocaml.doc"The reason that the specified job's status was updated."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServiceExceptionofInternalServiceException.t|`JobStatusExceptionofJobStatusException.t|`NotFoundExceptionofNotFoundException.t|`TooManyRequestsExceptionofTooManyRequestsException.t|`Unknown_operation_errorof(string*stringoption)]letmake?jobId=fun?status->fun?statusUpdateReason->fun()->{jobId;status;statusUpdateReason}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServiceException"->`InternalServiceException(InternalServiceException.of_jsonjson)|"JobStatusException"->`JobStatusException(JobStatusException.of_jsonjson)|"NotFoundException"->`NotFoundException(NotFoundException.of_jsonjson)|"TooManyRequestsException"->`TooManyRequestsException(TooManyRequestsException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServiceException"->`InternalServiceException(InternalServiceException.of_xmlxml)|"JobStatusException"->`JobStatusException(JobStatusException.of_xmlxml)|"NotFoundException"->`NotFoundException(NotFoundException.of_xmlxml)|"TooManyRequestsException"->`TooManyRequestsException(TooManyRequestsException.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))]|`InternalServiceExceptione->`Assoc[("error",(`String"InternalServiceException"));("details",(InternalServiceException.to_jsone))]|`JobStatusExceptione->`Assoc[("error",(`String"JobStatusException"));("details",(JobStatusException.to_jsone))]|`NotFoundExceptione->`Assoc[("error",(`String"NotFoundException"));("details",(NotFoundException.to_jsone))]|`TooManyRequestsExceptione->`Assoc[("error",(`String"TooManyRequestsException"));("details",(TooManyRequestsException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("JobId",(Option.mapx.jobId~f:JobId.to_value));("Status",(Option.mapx.status~f:JobStatus.to_value));("StatusUpdateReason",(Option.mapx.statusUpdateReason~f:JobStatusUpdateReason.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstatusUpdateReason=(Option.map~f:JobStatusUpdateReason.of_xml)(Xml.childxml_arg0"StatusUpdateReason")inletstatus=(Option.map~f:JobStatus.of_xml)(Xml.childxml_arg0"Status")inletjobId=(Option.map~f:JobId.of_xml)(Xml.childxml_arg0"JobId")inmake?statusUpdateReason?status?jobId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstatusUpdateReason=field_mapjson__"StatusUpdateReason"JobStatusUpdateReason.of_jsoninletstatus=field_mapjson__"Status"JobStatus.of_jsoninletjobId=field_mapjson__"JobId"JobId.of_jsoninmake?statusUpdateReason?status?jobId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Updates the status for the specified job. Use this operation to confirm that you want to run a job or to cancel an existing job. For more information, see S3 Batch Operations in the Amazon S3 User Guide. Permissions To use the UpdateJobStatus operation, you must have permission to perform the s3:UpdateJobStatus action. Related actions include: CreateJob ListJobs DescribeJob UpdateJobStatus"]moduleUpdateJobStatusRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID associated with the S3 Batch Operations job."];jobId:JobId.t[@ocaml.doc"The ID of the job whose status you want to update."];requestedJobStatus:RequestedJobStatus.t[@ocaml.doc"The status that you want to move the specified job to."];statusUpdateReason:JobStatusUpdateReason.toption[@ocaml.doc"A description of the reason why you want to change the specified job's status. This field can be any string up to the maximum length."]}letcontext_="UpdateJobStatusRequest"letmake?statusUpdateReason=fun~accountId->fun~jobId->fun~requestedJobStatus->fun()->{statusUpdateReason;accountId;jobId;requestedJobStatus}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("id",(Some(JobId.to_valuex.jobId)));("requestedJobStatus",(Some(RequestedJobStatus.to_valuex.requestedJobStatus)));("statusUpdateReason",(Option.mapx.statusUpdateReason~f:JobStatusUpdateReason.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstatusUpdateReason=(Option.map~f:JobStatusUpdateReason.of_xml)(Xml.childxml_arg0"statusUpdateReason")inletrequestedJobStatus=RequestedJobStatus.of_xml(Xml.child_exn~context:context_xml_arg0"requestedJobStatus")inletjobId=JobId.of_xml(Xml.child_exn~context:context_xml_arg0"id")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake?statusUpdateReason~requestedJobStatus~jobId~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstatusUpdateReason=field_mapjson__"StatusUpdateReason"JobStatusUpdateReason.of_jsoninletrequestedJobStatus=field_map_exnjson__"RequestedJobStatus"RequestedJobStatus.of_jsoninletjobId=field_map_exnjson__"JobId"JobId.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake?statusUpdateReason~requestedJobStatus~jobId~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Updates the status for the specified job. Use this operation to confirm that you want to run a job or to cancel an existing job. For more information, see S3 Batch Operations in the Amazon S3 User Guide. Permissions To use the UpdateJobStatus operation, you must have permission to perform the s3:UpdateJobStatus action. Related actions include: CreateJob ListJobs DescribeJob UpdateJobStatus"]moduleUpdateJobPriorityResult=structtypenonrect={jobId:JobId.toption[@ocaml.doc"The ID for the job whose priority Amazon S3 updated."];priority:JobPriority.toption[@ocaml.doc"The new priority assigned to the specified job."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServiceExceptionofInternalServiceException.t|`NotFoundExceptionofNotFoundException.t|`TooManyRequestsExceptionofTooManyRequestsException.t|`Unknown_operation_errorof(string*stringoption)]letmake?jobId=fun?priority->fun()->{jobId;priority}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServiceException"->`InternalServiceException(InternalServiceException.of_jsonjson)|"NotFoundException"->`NotFoundException(NotFoundException.of_jsonjson)|"TooManyRequestsException"->`TooManyRequestsException(TooManyRequestsException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServiceException"->`InternalServiceException(InternalServiceException.of_xmlxml)|"NotFoundException"->`NotFoundException(NotFoundException.of_xmlxml)|"TooManyRequestsException"->`TooManyRequestsException(TooManyRequestsException.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))]|`InternalServiceExceptione->`Assoc[("error",(`String"InternalServiceException"));("details",(InternalServiceException.to_jsone))]|`NotFoundExceptione->`Assoc[("error",(`String"NotFoundException"));("details",(NotFoundException.to_jsone))]|`TooManyRequestsExceptione->`Assoc[("error",(`String"TooManyRequestsException"));("details",(TooManyRequestsException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("JobId",(Option.mapx.jobId~f:JobId.to_value));("Priority",(Option.mapx.priority~f:JobPriority.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letpriority=(Option.map~f:JobPriority.of_xml)(Xml.childxml_arg0"Priority")inletjobId=(Option.map~f:JobId.of_xml)(Xml.childxml_arg0"JobId")inmake?priority?jobId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letpriority=field_mapjson__"Priority"JobPriority.of_jsoninletjobId=field_mapjson__"JobId"JobId.of_jsoninmake?priority?jobId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Updates an existing S3 Batch Operations job's priority. For more information, see S3 Batch Operations in the Amazon S3 User Guide. Permissions To use the UpdateJobPriority operation, you must have permission to perform the s3:UpdateJobPriority action. Related actions include: CreateJob ListJobs DescribeJob UpdateJobStatus"]moduleUpdateJobPriorityRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID associated with the S3 Batch Operations job."];jobId:JobId.t[@ocaml.doc"The ID for the job whose priority you want to update."];priority:JobPriority.t[@ocaml.doc"The priority you want to assign to this job."]}letcontext_="UpdateJobPriorityRequest"letmake~accountId=fun~jobId->fun~priority->fun()->{accountId;jobId;priority}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("id",(Some(JobId.to_valuex.jobId)));("priority",(Some(JobPriority.to_valuex.priority)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letpriority=JobPriority.of_xml(Xml.child_exn~context:context_xml_arg0"priority")inletjobId=JobId.of_xml(Xml.child_exn~context:context_xml_arg0"id")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~priority~jobId~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letpriority=field_map_exnjson__"Priority"JobPriority.of_jsoninletjobId=field_map_exnjson__"JobId"JobId.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~priority~jobId~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Updates an existing S3 Batch Operations job's priority. For more information, see S3 Batch Operations in the Amazon S3 User Guide. Permissions To use the UpdateJobPriority operation, you must have permission to perform the s3:UpdateJobPriority action. Related actions include: CreateJob ListJobs DescribeJob UpdateJobStatus"]moduleUpdateAccessGrantsLocationResult=structtypenonrect={createdAt:CreationTimestamp.toption[@ocaml.doc"The date and time when you registered the location."];accessGrantsLocationId:AccessGrantsLocationId.toption[@ocaml.doc"The ID of the registered location to which you are granting access. S3 Access Grants assigned this ID when you registered the location. S3 Access Grants assigns the ID default to the default location s3:// and assigns an auto-generated ID to other locations that you register."];accessGrantsLocationArn:AccessGrantsLocationArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the registered location that you are updating."];locationScope:S3Prefix.toption[@ocaml.doc"The S3 URI path of the location that you are updating. You cannot update the scope of the registered location. The location scope can be the default S3 location s3://, the S3 path to a bucket s3://<bucket>, or the S3 path to a bucket and prefix s3://<bucket>/<prefix>."];iAMRoleArn:IAMRoleArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the IAM role of the registered location. S3 Access Grants assumes this role to manage access to the registered location."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?createdAt=fun?accessGrantsLocationId->fun?accessGrantsLocationArn->fun?locationScope->fun?iAMRoleArn->fun()->{createdAt;accessGrantsLocationId;accessGrantsLocationArn;locationScope;iAMRoleArn}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("CreatedAt",(Option.mapx.createdAt~f:CreationTimestamp.to_value));("AccessGrantsLocationId",(Option.mapx.accessGrantsLocationId~f:AccessGrantsLocationId.to_value));("AccessGrantsLocationArn",(Option.mapx.accessGrantsLocationArn~f:AccessGrantsLocationArn.to_value));("LocationScope",(Option.mapx.locationScope~f:S3Prefix.to_value));("IAMRoleArn",(Option.mapx.iAMRoleArn~f:IAMRoleArn.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letiAMRoleArn=(Option.map~f:IAMRoleArn.of_xml)(Xml.childxml_arg0"IAMRoleArn")inletlocationScope=(Option.map~f:S3Prefix.of_xml)(Xml.childxml_arg0"LocationScope")inletaccessGrantsLocationArn=(Option.map~f:AccessGrantsLocationArn.of_xml)(Xml.childxml_arg0"AccessGrantsLocationArn")inletaccessGrantsLocationId=(Option.map~f:AccessGrantsLocationId.of_xml)(Xml.childxml_arg0"AccessGrantsLocationId")inletcreatedAt=(Option.map~f:CreationTimestamp.of_xml)(Xml.childxml_arg0"CreatedAt")inmake?iAMRoleArn?locationScope?accessGrantsLocationArn?accessGrantsLocationId?createdAt()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letiAMRoleArn=field_mapjson__"IAMRoleArn"IAMRoleArn.of_jsoninletlocationScope=field_mapjson__"LocationScope"S3Prefix.of_jsoninletaccessGrantsLocationArn=field_mapjson__"AccessGrantsLocationArn"AccessGrantsLocationArn.of_jsoninletaccessGrantsLocationId=field_mapjson__"AccessGrantsLocationId"AccessGrantsLocationId.of_jsoninletcreatedAt=field_mapjson__"CreatedAt"CreationTimestamp.of_jsoninmake?iAMRoleArn?locationScope?accessGrantsLocationArn?accessGrantsLocationId?createdAt()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Updates the IAM role of a registered location in your S3 Access Grants instance. Permissions You must have the s3:UpdateAccessGrantsLocation permission to use this operation. Additional Permissions You must also have the following permission: iam:PassRole"]moduleUpdateAccessGrantsLocationRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the S3 Access Grants instance."];accessGrantsLocationId:AccessGrantsLocationId.t[@ocaml.doc"The ID of the registered location that you are updating. S3 Access Grants assigns this ID when you register the location. S3 Access Grants assigns the ID default to the default location s3:// and assigns an auto-generated ID to other locations that you register. The ID of the registered location to which you are granting access. S3 Access Grants assigned this ID when you registered the location. S3 Access Grants assigns the ID default to the default location s3:// and assigns an auto-generated ID to other locations that you register. If you are passing the default location, you cannot create an access grant for the entire default location. You must also specify a bucket or a bucket and prefix in the Subprefix field."];iAMRoleArn:IAMRoleArn.t[@ocaml.doc"The Amazon Resource Name (ARN) of the IAM role for the registered location. S3 Access Grants assumes this role to manage access to the registered location."]}letcontext_="UpdateAccessGrantsLocationRequest"letmake~accountId=fun~accessGrantsLocationId->fun~iAMRoleArn->fun()->{accountId;accessGrantsLocationId;iAMRoleArn}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("id",(Some(AccessGrantsLocationId.to_valuex.accessGrantsLocationId)));("IAMRoleArn",(Some(IAMRoleArn.to_valuex.iAMRoleArn)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letiAMRoleArn=IAMRoleArn.of_xml(Xml.child_exn~context:context_xml_arg0"IAMRoleArn")inletaccessGrantsLocationId=AccessGrantsLocationId.of_xml(Xml.child_exn~context:context_xml_arg0"id")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~iAMRoleArn~accessGrantsLocationId~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letiAMRoleArn=field_map_exnjson__"IAMRoleArn"IAMRoleArn.of_jsoninletaccessGrantsLocationId=field_map_exnjson__"AccessGrantsLocationId"AccessGrantsLocationId.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~iAMRoleArn~accessGrantsLocationId~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Updates the IAM role of a registered location in your S3 Access Grants instance. Permissions You must have the s3:UpdateAccessGrantsLocation permission to use this operation. Additional Permissions You must also have the following permission: iam:PassRole"]moduleUntagResourceResult=structtypenonrect=unittypenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`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"This operation removes the specified user-defined tags from an S3 resource. You can pass one or more tag keys. This operation is only supported for the following Amazon S3 resources: General purpose buckets Access Points for directory buckets Access Points for general purpose buckets Directory buckets S3 Storage Lens groups S3 Access Grants instances, registered locations, and grants. Permissions For general purpose buckets, access points for general purpose buckets, Storage Lens groups, and S3 Access Grants, you must have the s3:UntagResource permission to use this operation. Directory bucket permissions For directory buckets, you must have the s3express:UntagResource permission to use this operation. For more information about directory buckets policies and permissions, see Identity and Access Management (IAM) for S3 Express One Zone in the Amazon S3 User Guide. HTTP Host header syntax Directory buckets - The HTTP Host header syntax is s3express-control.region.amazonaws.com. For information about S3 Tagging errors, see List of Amazon S3 Tagging error codes."]moduleUntagResourceRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID that owns the resource that you're trying to remove the tags from."];resourceArn:S3ResourceArn.t[@ocaml.doc"The Amazon Resource Name (ARN) of the S3 resource that you're removing tags from. The tagged resource can be a directory bucket, S3 Storage Lens group or S3 Access Grants instance, registered location, or grant."];tagKeys:TagKeyList.t[@ocaml.doc"The array of tag key-value pairs that you're trying to remove from of the S3 resource."]}letcontext_="UntagResourceRequest"letmake~accountId=fun~resourceArn->fun~tagKeys->fun()->{accountId;resourceArn;tagKeys}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("resourceArn",(Some(S3ResourceArn.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=S3ResourceArn.of_xml(Xml.child_exn~context:context_xml_arg0"resourceArn")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~tagKeys~resourceArn~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettagKeys=field_map_exnjson__"TagKeys"TagKeyList.of_jsoninletresourceArn=field_map_exnjson__"ResourceArn"S3ResourceArn.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~tagKeys~resourceArn~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation removes the specified user-defined tags from an S3 resource. You can pass one or more tag keys. This operation is only supported for the following Amazon S3 resources: General purpose buckets Access Points for directory buckets Access Points for general purpose buckets Directory buckets S3 Storage Lens groups S3 Access Grants instances, registered locations, and grants. Permissions For general purpose buckets, access points for general purpose buckets, Storage Lens groups, and S3 Access Grants, you must have the s3:UntagResource permission to use this operation. Directory bucket permissions For directory buckets, you must have the s3express:UntagResource permission to use this operation. For more information about directory buckets policies and permissions, see Identity and Access Management (IAM) for S3 Express One Zone in the Amazon S3 User Guide. HTTP Host header syntax Directory buckets - The HTTP Host header syntax is s3express-control.region.amazonaws.com. For information about S3 Tagging errors, see List of Amazon S3 Tagging error codes."]moduleTagResourceResult=structtypenonrect=unittypenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`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"Creates a new user-defined tag or updates an existing tag. Each tag is a label consisting of a key and value that is applied to your resource. Tags can help you organize, track costs for, and control access to your resources. You can add up to 50 Amazon Web Services resource tags for each S3 resource. This operation is only supported for the following Amazon S3 resource: General purpose buckets Access Points for directory buckets Access Points for general purpose buckets Directory buckets S3 Storage Lens groups S3 Access Grants instances, registered locations, or grants. Permissions For general purpose buckets, access points for general purpose buckets, Storage Lens groups, and S3 Access Grants, you must have the s3:TagResource permission to use this operation. Directory bucket permissions For directory buckets, you must have the s3express:TagResource permission to use this operation. For more information about directory buckets policies and permissions, see Identity and Access Management (IAM) for S3 Express One Zone in the Amazon S3 User Guide. HTTP Host header syntax Directory buckets - The HTTP Host header syntax is s3express-control.region.amazonaws.com. For information about S3 Tagging errors, see List of Amazon S3 Tagging error codes."]moduleTagResourceRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID that created the S3 resource that you're trying to add tags to or the requester's account ID."];resourceArn:S3ResourceArn.t[@ocaml.doc"The Amazon Resource Name (ARN) of the S3 resource that you're applying tags to. The tagged resource can be a directory bucket, S3 Storage Lens group or S3 Access Grants instance, registered location, or grant."];tags:TagList.t[@ocaml.doc"The Amazon Web Services resource tags that you want to add to the specified S3 resource."]}letcontext_="TagResourceRequest"letmake~accountId=fun~resourceArn->fun~tags->fun()->{accountId;resourceArn;tags}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("resourceArn",(Some(S3ResourceArn.to_valuex.resourceArn)));("Tags",(Some(TagList.to_valuex.tags)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=TagList.of_xml(Xml.child_exn~context:context_xml_arg0"Tags")inletresourceArn=S3ResourceArn.of_xml(Xml.child_exn~context:context_xml_arg0"resourceArn")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~tags~resourceArn~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_map_exnjson__"Tags"TagList.of_jsoninletresourceArn=field_map_exnjson__"ResourceArn"S3ResourceArn.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~tags~resourceArn~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates a new user-defined tag or updates an existing tag. Each tag is a label consisting of a key and value that is applied to your resource. Tags can help you organize, track costs for, and control access to your resources. You can add up to 50 Amazon Web Services resource tags for each S3 resource. This operation is only supported for the following Amazon S3 resource: General purpose buckets Access Points for directory buckets Access Points for general purpose buckets Directory buckets S3 Storage Lens groups S3 Access Grants instances, registered locations, or grants. Permissions For general purpose buckets, access points for general purpose buckets, Storage Lens groups, and S3 Access Grants, you must have the s3:TagResource permission to use this operation. Directory bucket permissions For directory buckets, you must have the s3express:TagResource permission to use this operation. For more information about directory buckets policies and permissions, see Identity and Access Management (IAM) for S3 Express One Zone in the Amazon S3 User Guide. HTTP Host header syntax Directory buckets - The HTTP Host header syntax is s3express-control.region.amazonaws.com. For information about S3 Tagging errors, see List of Amazon S3 Tagging error codes."]moduleSubmitMultiRegionAccessPointRoutesResult=structtypenonrect=unittypenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`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"This operation is not supported by directory buckets. Submits an updated route configuration for a Multi-Region Access Point. This API operation updates the routing status for the specified Regions from active to passive, or from passive to active. A value of 0 indicates a passive status, which means that traffic won't be routed to the specified Region. A value of 100 indicates an active status, which means that traffic will be routed to the specified Region. At least one Region must be active at all times. When the routing configuration is changed, any in-progress operations (uploads, copies, deletes, and so on) to formerly active Regions will continue to run to their final completion state (success or failure). The routing configurations of any Regions that aren\226\128\153t specified remain unchanged. Updated routing configurations might not be immediately applied. It can take up to 2 minutes for your changes to take effect. To submit routing control changes and failover requests, use the Amazon S3 failover control infrastructure endpoints in these five Amazon Web Services Regions: us-east-1 us-west-2 ap-southeast-2 ap-northeast-1 eu-west-1"]moduleSubmitMultiRegionAccessPointRoutesRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID for the owner of the Multi-Region Access Point."];mrap:MultiRegionAccessPointId.t[@ocaml.doc"The Multi-Region Access Point ARN."];routeUpdates:RouteList.t[@ocaml.doc"The different routes that make up the new route configuration. Active routes return a value of 100, and passive routes return a value of 0."]}letcontext_="SubmitMultiRegionAccessPointRoutesRequest"letmake~accountId=fun~mrap->fun~routeUpdates->fun()->{accountId;mrap;routeUpdates}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("mrap",(Some(MultiRegionAccessPointId.to_valuex.mrap)));("RouteUpdates",(Some(RouteList.to_valuex.routeUpdates)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letrouteUpdates=RouteList.of_xml(Xml.child_exn~context:context_xml_arg0"RouteUpdates")inletmrap=MultiRegionAccessPointId.of_xml(Xml.child_exn~context:context_xml_arg0"mrap")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~routeUpdates~mrap~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letrouteUpdates=field_map_exnjson__"RouteUpdates"RouteList.of_jsoninletmrap=field_map_exnjson__"Mrap"MultiRegionAccessPointId.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~routeUpdates~mrap~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Submits an updated route configuration for a Multi-Region Access Point. This API operation updates the routing status for the specified Regions from active to passive, or from passive to active. A value of 0 indicates a passive status, which means that traffic won't be routed to the specified Region. A value of 100 indicates an active status, which means that traffic will be routed to the specified Region. At least one Region must be active at all times. When the routing configuration is changed, any in-progress operations (uploads, copies, deletes, and so on) to formerly active Regions will continue to run to their final completion state (success or failure). The routing configurations of any Regions that aren\226\128\153t specified remain unchanged. Updated routing configurations might not be immediately applied. It can take up to 2 minutes for your changes to take effect. To submit routing control changes and failover requests, use the Amazon S3 failover control infrastructure endpoints in these five Amazon Web Services Regions: us-east-1 us-west-2 ap-southeast-2 ap-northeast-1 eu-west-1"]modulePutStorageLensConfigurationTaggingResult=structtypenonrect=unittypenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`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"This operation is not supported by directory buckets. Put or replace tags on an existing Amazon S3 Storage Lens configuration. For more information about S3 Storage Lens, see Assessing your storage activity and usage with Amazon S3 Storage Lens in the Amazon S3 User Guide. To use this action, you must have permission to perform the s3:PutStorageLensConfigurationTagging action. For more information, see Setting permissions to use Amazon S3 Storage Lens in the Amazon S3 User Guide."]modulePutStorageLensConfigurationTaggingRequest=structtypenonrect={configId:ConfigId.t[@ocaml.doc"The ID of the S3 Storage Lens configuration."];accountId:AccountId.t[@ocaml.doc"The account ID of the requester."];tags:StorageLensTags.t[@ocaml.doc"The tag set of the S3 Storage Lens configuration. You can set up to a maximum of 50 tags."]}letcontext_="PutStorageLensConfigurationTaggingRequest"letmake~configId=fun~accountId->fun~tags->fun()->{configId;accountId;tags}letto_valuex=structure_to_value[("storagelensid",(Some(ConfigId.to_valuex.configId)));("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("Tags",(Some(StorageLensTags.to_valuex.tags)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=StorageLensTags.of_xml(Xml.child_exn~context:context_xml_arg0"Tags")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inletconfigId=ConfigId.of_xml(Xml.child_exn~context:context_xml_arg0"storagelensid")inmake~tags~accountId~configId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_map_exnjson__"Tags"StorageLensTags.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninletconfigId=field_map_exnjson__"ConfigId"ConfigId.of_jsoninmake~tags~accountId~configId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Put or replace tags on an existing Amazon S3 Storage Lens configuration. For more information about S3 Storage Lens, see Assessing your storage activity and usage with Amazon S3 Storage Lens in the Amazon S3 User Guide. To use this action, you must have permission to perform the s3:PutStorageLensConfigurationTagging action. For more information, see Setting permissions to use Amazon S3 Storage Lens in the Amazon S3 User Guide."]modulePutStorageLensConfigurationRequest=structtypenonrect={configId:ConfigId.t[@ocaml.doc"The ID of the S3 Storage Lens configuration."];accountId:AccountId.t[@ocaml.doc"The account ID of the requester."];storageLensConfiguration:StorageLensConfiguration.t[@ocaml.doc"The S3 Storage Lens configuration."];tags:StorageLensTags.toption[@ocaml.doc"The tag set of the S3 Storage Lens configuration. You can set up to a maximum of 50 tags."]}letcontext_="PutStorageLensConfigurationRequest"letmake?tags=fun~configId->fun~accountId->fun~storageLensConfiguration->fun()->{tags;configId;accountId;storageLensConfiguration}letto_valuex=structure_to_value[("storagelensid",(Some(ConfigId.to_valuex.configId)));("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("StorageLensConfiguration",(Some(StorageLensConfiguration.to_valuex.storageLensConfiguration)));("Tags",(Option.mapx.tags~f:StorageLensTags.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:StorageLensTags.of_xml)(Xml.childxml_arg0"Tags")inletstorageLensConfiguration=StorageLensConfiguration.of_xml(Xml.child_exn~context:context_xml_arg0"StorageLensConfiguration")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inletconfigId=ConfigId.of_xml(Xml.child_exn~context:context_xml_arg0"storagelensid")inmake?tags~storageLensConfiguration~accountId~configId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"Tags"StorageLensTags.of_jsoninletstorageLensConfiguration=field_map_exnjson__"StorageLensConfiguration"StorageLensConfiguration.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninletconfigId=field_map_exnjson__"ConfigId"ConfigId.of_jsoninmake?tags~storageLensConfiguration~accountId~configId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Puts an Amazon S3 Storage Lens configuration. For more information about S3 Storage Lens, see Working with Amazon S3 Storage Lens in the Amazon S3 User Guide. For a complete list of S3 Storage Lens metrics, see S3 Storage Lens metrics glossary in the Amazon S3 User Guide. To use this action, you must have permission to perform the s3:PutStorageLensConfiguration action. For more information, see Setting permissions to use Amazon S3 Storage Lens in the Amazon S3 User Guide."]modulePutPublicAccessBlockRequest=structtypenonrect={publicAccessBlockConfiguration:PublicAccessBlockConfiguration.t[@ocaml.doc"The PublicAccessBlock configuration that you want to apply to the specified Amazon Web Services account."];accountId:AccountId.t[@ocaml.doc"The account ID for the Amazon Web Services account whose PublicAccessBlock configuration you want to set."]}letcontext_="PutPublicAccessBlockRequest"letmake~publicAccessBlockConfiguration=fun~accountId->fun()->{publicAccessBlockConfiguration;accountId}letof_header_and_body=((fun(xs,pipe)->make~publicAccessBlockConfiguration:pipe~accountId:(AccountId.of_string((List.Assoc.find_exn~equal:String.Caseless.equal)xs"x-amz-account-id"))())[@warning"-27"])letto_valuex=structure_to_value[("PublicAccessBlockConfiguration",(Some(PublicAccessBlockConfiguration.to_valuex.publicAccessBlockConfiguration)));("x-amz-account-id",(Some(AccountId.to_valuex.accountId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inletpublicAccessBlockConfiguration=PublicAccessBlockConfiguration.of_xml(Xml.child_exn~context:context_xml_arg0"PublicAccessBlockConfiguration")inmake~accountId~publicAccessBlockConfiguration()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninletpublicAccessBlockConfiguration=field_map_exnjson__"PublicAccessBlockConfiguration"PublicAccessBlockConfiguration.of_jsoninmake~accountId~publicAccessBlockConfiguration()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Creates or modifies the PublicAccessBlock configuration for an Amazon Web Services account. This operation may be restricted when the account is managed by organization-level Block Public Access policies. You might get an Access Denied (403) error when the account is managed by organization-level Block Public Access policies. Organization-level policies override account-level settings, preventing direct account-level modifications. For this operation, users must have the s3:PutAccountPublicAccessBlock permission. For more information, see Using Amazon S3 block public access. Related actions include: GetPublicAccessBlock DeletePublicAccessBlock"]modulePutMultiRegionAccessPointPolicyResult=structtypenonrect={requestTokenARN:AsyncRequestTokenARN.toption[@ocaml.doc"The request token associated with the request. You can use this token with DescribeMultiRegionAccessPointOperation to determine the status of asynchronous requests."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?requestTokenARN=fun()->{requestTokenARN}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("RequestTokenARN",(Option.mapx.requestTokenARN~f:AsyncRequestTokenARN.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letrequestTokenARN=(Option.map~f:AsyncRequestTokenARN.of_xml)(Xml.childxml_arg0"RequestTokenARN")inmake?requestTokenARN()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letrequestTokenARN=field_mapjson__"RequestTokenARN"AsyncRequestTokenARN.of_jsoninmake?requestTokenARN()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Associates an access control policy with the specified Multi-Region Access Point. Each Multi-Region Access Point can have only one policy, so a request made to this action replaces any existing policy that is associated with the specified Multi-Region Access Point. This action will always be routed to the US West (Oregon) Region. For more information about the restrictions around working with Multi-Region Access Points, see Multi-Region Access Point restrictions and limitations in the Amazon S3 User Guide. The following actions are related to PutMultiRegionAccessPointPolicy: GetMultiRegionAccessPointPolicy GetMultiRegionAccessPointPolicyStatus"]modulePutMultiRegionAccessPointPolicyRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID for the owner of the Multi-Region Access Point."];clientToken:MultiRegionAccessPointClientToken.t[@ocaml.doc"An idempotency token used to identify the request and guarantee that requests are unique."];details:PutMultiRegionAccessPointPolicyInput.t[@ocaml.doc"A container element containing the details of the policy for the Multi-Region Access Point."]}letcontext_="PutMultiRegionAccessPointPolicyRequest"letmake~accountId=fun~clientToken->fun~details->fun()->{accountId;clientToken;details}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("ClientToken",(Some(MultiRegionAccessPointClientToken.to_valuex.clientToken)));("Details",(Some(PutMultiRegionAccessPointPolicyInput.to_valuex.details)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdetails=PutMultiRegionAccessPointPolicyInput.of_xml(Xml.child_exn~context:context_xml_arg0"Details")inletclientToken=MultiRegionAccessPointClientToken.of_xml(Xml.child_exn~context:context_xml_arg0"ClientToken")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~details~clientToken~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdetails=field_map_exnjson__"Details"PutMultiRegionAccessPointPolicyInput.of_jsoninletclientToken=field_map_exnjson__"ClientToken"MultiRegionAccessPointClientToken.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~details~clientToken~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Associates an access control policy with the specified Multi-Region Access Point. Each Multi-Region Access Point can have only one policy, so a request made to this action replaces any existing policy that is associated with the specified Multi-Region Access Point. This action will always be routed to the US West (Oregon) Region. For more information about the restrictions around working with Multi-Region Access Points, see Multi-Region Access Point restrictions and limitations in the Amazon S3 User Guide. The following actions are related to PutMultiRegionAccessPointPolicy: GetMultiRegionAccessPointPolicy GetMultiRegionAccessPointPolicyStatus"]modulePutJobTaggingResult=structtypenonrect=unittypenonrecerror=[`InternalServiceExceptionofInternalServiceException.t|`NotFoundExceptionofNotFoundException.t|`TooManyRequestsExceptionofTooManyRequestsException.t|`TooManyTagsExceptionofTooManyTagsException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"InternalServiceException"->`InternalServiceException(InternalServiceException.of_jsonjson)|"NotFoundException"->`NotFoundException(NotFoundException.of_jsonjson)|"TooManyRequestsException"->`TooManyRequestsException(TooManyRequestsException.of_jsonjson)|"TooManyTagsException"->`TooManyTagsException(TooManyTagsException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"InternalServiceException"->`InternalServiceException(InternalServiceException.of_xmlxml)|"NotFoundException"->`NotFoundException(NotFoundException.of_xmlxml)|"TooManyRequestsException"->`TooManyRequestsException(TooManyRequestsException.of_xmlxml)|"TooManyTagsException"->`TooManyTagsException(TooManyTagsException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`InternalServiceExceptione->`Assoc[("error",(`String"InternalServiceException"));("details",(InternalServiceException.to_jsone))]|`NotFoundExceptione->`Assoc[("error",(`String"NotFoundException"));("details",(NotFoundException.to_jsone))]|`TooManyRequestsExceptione->`Assoc[("error",(`String"TooManyRequestsException"));("details",(TooManyRequestsException.to_jsone))]|`TooManyTagsExceptione->`Assoc[("error",(`String"TooManyTagsException"));("details",(TooManyTagsException.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"Sets the supplied tag-set on an S3 Batch Operations job. A tag is a key-value pair. You can associate S3 Batch Operations tags with any job by sending a PUT request against the tagging subresource that is associated with the job. To modify the existing tag set, you can either replace the existing tag set entirely, or make changes within the existing tag set by retrieving the existing tag set using GetJobTagging, modify that tag set, and use this operation to replace the tag set with the one you modified. For more information, see Controlling access and labeling jobs using tags in the Amazon S3 User Guide. If you send this request with an empty tag set, Amazon S3 deletes the existing tag set on the Batch Operations job. If you use this method, you are charged for a Tier 1 Request (PUT). For more information, see Amazon S3 pricing. For deleting existing tags for your Batch Operations job, a DeleteJobTagging request is preferred because it achieves the same result without incurring charges. A few things to consider about using tags: Amazon S3 limits the maximum number of tags to 50 tags per job. You can associate up to 50 tags with a job as long as they have unique tag keys. A tag key can be up to 128 Unicode characters in length, and tag values can be up to 256 Unicode characters in length. The key and values are case sensitive. For tagging-related restrictions related to characters and encodings, see User-Defined Tag Restrictions in the Billing and Cost Management User Guide. Permissions To use the PutJobTagging operation, you must have permission to perform the s3:PutJobTagging action. Related actions include: CreateJob GetJobTagging DeleteJobTagging"]modulePutJobTaggingRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID associated with the S3 Batch Operations job."];jobId:JobId.t[@ocaml.doc"The ID for the S3 Batch Operations job whose tags you want to replace."];tags:S3TagSet.t[@ocaml.doc"The set of tags to associate with the S3 Batch Operations job."]}letcontext_="PutJobTaggingRequest"letmake~accountId=fun~jobId->fun~tags->fun()->{accountId;jobId;tags}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("id",(Some(JobId.to_valuex.jobId)));("Tags",(Some(S3TagSet.to_valuex.tags)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=S3TagSet.of_xml(Xml.child_exn~context:context_xml_arg0"Tags")inletjobId=JobId.of_xml(Xml.child_exn~context:context_xml_arg0"id")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~tags~jobId~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_map_exnjson__"Tags"S3TagSet.of_jsoninletjobId=field_map_exnjson__"JobId"JobId.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~tags~jobId~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Sets the supplied tag-set on an S3 Batch Operations job. A tag is a key-value pair. You can associate S3 Batch Operations tags with any job by sending a PUT request against the tagging subresource that is associated with the job. To modify the existing tag set, you can either replace the existing tag set entirely, or make changes within the existing tag set by retrieving the existing tag set using GetJobTagging, modify that tag set, and use this operation to replace the tag set with the one you modified. For more information, see Controlling access and labeling jobs using tags in the Amazon S3 User Guide. If you send this request with an empty tag set, Amazon S3 deletes the existing tag set on the Batch Operations job. If you use this method, you are charged for a Tier 1 Request (PUT). For more information, see Amazon S3 pricing. For deleting existing tags for your Batch Operations job, a DeleteJobTagging request is preferred because it achieves the same result without incurring charges. A few things to consider about using tags: Amazon S3 limits the maximum number of tags to 50 tags per job. You can associate up to 50 tags with a job as long as they have unique tag keys. A tag key can be up to 128 Unicode characters in length, and tag values can be up to 256 Unicode characters in length. The key and values are case sensitive. For tagging-related restrictions related to characters and encodings, see User-Defined Tag Restrictions in the Billing and Cost Management User Guide. Permissions To use the PutJobTagging operation, you must have permission to perform the s3:PutJobTagging action. Related actions include: CreateJob GetJobTagging DeleteJobTagging"]modulePutBucketVersioningRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the S3 on Outposts bucket."];bucket:BucketName.t[@ocaml.doc"The S3 on Outposts bucket to set the versioning state for."];mFA:MFA.toption[@ocaml.doc"The concatenation of the authentication device's serial number, a space, and the value that is displayed on your authentication device."];versioningConfiguration:VersioningConfiguration.t[@ocaml.doc"The root-level tag for the VersioningConfiguration parameters."]}letcontext_="PutBucketVersioningRequest"letmake?mFA=fun~accountId->fun~bucket->fun~versioningConfiguration->fun()->{mFA;accountId;bucket;versioningConfiguration}letof_header_and_body=((fun(xs,pipe)->make~accountId:(AccountId.of_string((List.Assoc.find_exn~equal:String.Caseless.equal)xs"x-amz-account-id"))~bucket:(BucketName.of_string((List.Assoc.find_exn~equal:String.Caseless.equal)xs"name"))?mFA:(Option.map((List.Assoc.find~equal:String.Caseless.equal)xs"x-amz-mfa")~f:MFA.of_string)~versioningConfiguration:pipe())[@warning"-27"])letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(BucketName.to_valuex.bucket)));("x-amz-mfa",(Option.mapx.mFA~f:MFA.to_value));("VersioningConfiguration",(Some(VersioningConfiguration.to_valuex.versioningConfiguration)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letversioningConfiguration=VersioningConfiguration.of_xml(Xml.child_exn~context:context_xml_arg0"VersioningConfiguration")inletmFA=(Option.map~f:MFA.of_xml)(Xml.childxml_arg0"x-amz-mfa")inletbucket=BucketName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~versioningConfiguration?mFA~bucket~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letversioningConfiguration=field_map_exnjson__"VersioningConfiguration"VersioningConfiguration.of_jsoninletmFA=field_mapjson__"MFA"MFA.of_jsoninletbucket=field_map_exnjson__"Bucket"BucketName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~versioningConfiguration?mFA~bucket~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation sets the versioning state for S3 on Outposts buckets only. To set the versioning state for an S3 bucket, see PutBucketVersioning in the Amazon S3 API Reference. Sets the versioning state for an S3 on Outposts bucket. With S3 Versioning, you can save multiple distinct copies of your objects and recover from unintended user actions and application failures. You can set the versioning state to one of the following: Enabled - Enables versioning for the objects in the bucket. All objects added to the bucket receive a unique version ID. Suspended - Suspends versioning for the objects in the bucket. All objects added to the bucket receive the version ID null. If you've never set versioning on your bucket, it has no versioning state. In that case, a GetBucketVersioning request does not return a versioning state value. When you enable S3 Versioning, for each object in your bucket, you have a current version and zero or more noncurrent versions. You can configure your bucket S3 Lifecycle rules to expire noncurrent versions after a specified time period. For more information, see Creating and managing a lifecycle configuration for your S3 on Outposts bucket in the Amazon S3 User Guide. If you have an object expiration lifecycle configuration in your non-versioned bucket and you want to maintain the same permanent delete behavior when you enable versioning, you must add a noncurrent expiration policy. The noncurrent expiration lifecycle configuration will manage the deletes of the noncurrent object versions in the version-enabled bucket. For more information, see Versioning in the Amazon S3 User Guide. All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section. The following operations are related to PutBucketVersioning for S3 on Outposts. GetBucketVersioning PutBucketLifecycleConfiguration GetBucketLifecycleConfiguration"]modulePutBucketTaggingRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the Outposts bucket."];bucket:BucketName.t[@ocaml.doc"The Amazon Resource Name (ARN) of the bucket. For using this parameter with Amazon S3 on Outposts with the REST API, you must specify the name and the x-amz-outpost-id as well. For using this parameter with S3 on Outposts with the Amazon Web Services SDK and CLI, you must specify the ARN of the bucket accessed in the format arn:aws:s3-outposts:<Region>:<account-id>:outpost/<outpost-id>/bucket/<my-bucket-name>. For example, to access the bucket reports through Outpost my-outpost owned by account 123456789012 in Region us-west-2, use the URL encoding of arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/bucket/reports. The value must be URL encoded."];tagging:Tagging.t}letcontext_="PutBucketTaggingRequest"letmake~accountId=fun~bucket->fun~tagging->fun()->{accountId;bucket;tagging}letof_header_and_body=((fun(xs,pipe)->make~accountId:(AccountId.of_string((List.Assoc.find_exn~equal:String.Caseless.equal)xs"x-amz-account-id"))~bucket:(BucketName.of_string((List.Assoc.find_exn~equal:String.Caseless.equal)xs"name"))~tagging:pipe())[@warning"-27"])letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(BucketName.to_valuex.bucket)));("Tagging",(Some(Tagging.to_valuex.tagging)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettagging=Tagging.of_xml(Xml.child_exn~context:context_xml_arg0"Tagging")inletbucket=BucketName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~tagging~bucket~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettagging=field_map_exnjson__"Tagging"Tagging.of_jsoninletbucket=field_map_exnjson__"Bucket"BucketName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~tagging~bucket~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This action puts tags on an Amazon S3 on Outposts bucket. To put tags on an S3 bucket, see PutBucketTagging in the Amazon S3 API Reference. Sets the tags for an S3 on Outposts bucket. For more information, see Using Amazon S3 on Outposts in the Amazon S3 User Guide. Use tags to organize your Amazon Web Services bill to reflect your own cost structure. To do this, sign up to get your Amazon Web Services account bill with tag key values included. Then, to see the cost of combined resources, organize your billing information according to resources with the same tag key values. For example, you can tag several resources with a specific application name, and then organize your billing information to see the total cost of that application across several services. For more information, see Cost allocation and tagging. Within a bucket, if you add a tag that has the same key as an existing tag, the new value overwrites the old value. For more information, see Using cost allocation in Amazon S3 bucket tags. To use this action, you must have permissions to perform the s3-outposts:PutBucketTagging action. The Outposts bucket owner has this permission by default and can grant this permission to others. For more information about permissions, see Permissions Related to Bucket Subresource Operations and Managing access permissions to your Amazon S3 resources. PutBucketTagging has the following special errors: Error code: InvalidTagError Description: The tag provided was not a valid tag. This error can occur if the tag did not pass input validation. For information about tag restrictions, see User-Defined Tag Restrictions and Amazon Web Services-Generated Cost Allocation Tag Restrictions. Error code: MalformedXMLError Description: The XML provided does not match the schema. Error code: OperationAbortedError Description: A conflicting conditional action is currently in progress against this resource. Try again. Error code: InternalError Description: The service was unable to apply the provided tag to the bucket. All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section. The following actions are related to PutBucketTagging: GetBucketTagging DeleteBucketTagging"]modulePutBucketReplicationRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the Outposts bucket."];bucket:BucketName.t[@ocaml.doc"Specifies the S3 on Outposts bucket to set the configuration for. For using this parameter with Amazon S3 on Outposts with the REST API, you must specify the name and the x-amz-outpost-id as well. For using this parameter with S3 on Outposts with the Amazon Web Services SDK and CLI, you must specify the ARN of the bucket accessed in the format arn:aws:s3-outposts:<Region>:<account-id>:outpost/<outpost-id>/bucket/<my-bucket-name>. For example, to access the bucket reports through Outpost my-outpost owned by account 123456789012 in Region us-west-2, use the URL encoding of arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/bucket/reports. The value must be URL encoded."];replicationConfiguration:ReplicationConfiguration.t}letcontext_="PutBucketReplicationRequest"letmake~accountId=fun~bucket->fun~replicationConfiguration->fun()->{accountId;bucket;replicationConfiguration}letof_header_and_body=((fun(xs,pipe)->make~accountId:(AccountId.of_string((List.Assoc.find_exn~equal:String.Caseless.equal)xs"x-amz-account-id"))~bucket:(BucketName.of_string((List.Assoc.find_exn~equal:String.Caseless.equal)xs"name"))~replicationConfiguration:pipe())[@warning"-27"])letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(BucketName.to_valuex.bucket)));("ReplicationConfiguration",(Some(ReplicationConfiguration.to_valuex.replicationConfiguration)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letreplicationConfiguration=ReplicationConfiguration.of_xml(Xml.child_exn~context:context_xml_arg0"ReplicationConfiguration")inletbucket=BucketName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~replicationConfiguration~bucket~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letreplicationConfiguration=field_map_exnjson__"ReplicationConfiguration"ReplicationConfiguration.of_jsoninletbucket=field_map_exnjson__"Bucket"BucketName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~replicationConfiguration~bucket~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This action creates an Amazon S3 on Outposts bucket's replication configuration. To create an S3 bucket's replication configuration, see PutBucketReplication in the Amazon S3 API Reference. Creates a replication configuration or replaces an existing one. For information about S3 replication on Outposts configuration, see Replicating objects for S3 on Outposts in the Amazon S3 User Guide. It can take a while to propagate PUT or DELETE requests for a replication configuration to all S3 on Outposts systems. Therefore, the replication configuration that's returned by a GET request soon after a PUT or DELETE request might return a more recent result than what's on the Outpost. If an Outpost is offline, the delay in updating the replication configuration on that Outpost can be significant. Specify the replication configuration in the request body. In the replication configuration, you provide the following information: The name of the destination bucket or buckets where you want S3 on Outposts to replicate objects The Identity and Access Management (IAM) role that S3 on Outposts can assume to replicate objects on your behalf Other relevant information, such as replication rules A replication configuration must include at least one rule and can contain a maximum of 100. Each rule identifies a subset of objects to replicate by filtering the objects in the source Outposts bucket. To choose additional subsets of objects to replicate, add a rule for each subset. To specify a subset of the objects in the source Outposts bucket to apply a replication rule to, add the Filter element as a child of the Rule element. You can filter objects based on an object key prefix, one or more object tags, or both. When you add the Filter element in the configuration, you must also add the following elements: DeleteMarkerReplication, Status, and Priority. Using PutBucketReplication on Outposts requires that both the source and destination buckets must have versioning enabled. For information about enabling versioning on a bucket, see Managing S3 Versioning for your S3 on Outposts bucket. For information about S3 on Outposts replication failure reasons, see Replication failure reasons in the Amazon S3 User Guide. Handling Replication of Encrypted Objects Outposts buckets are encrypted at all times. All the objects in the source Outposts bucket are encrypted and can be replicated. Also, all the replicas in the destination Outposts bucket are encrypted with the same encryption key as the objects in the source Outposts bucket. Permissions To create a PutBucketReplication request, you must have s3-outposts:PutReplicationConfiguration permissions for the bucket. The Outposts bucket owner has this permission by default and can grant it to others. For more information about permissions, see Setting up IAM with S3 on Outposts and Managing access to S3 on Outposts buckets. To perform this operation, the user or role must also have the iam:CreateRole and iam:PassRole permissions. For more information, see Granting a user permissions to pass a role to an Amazon Web Services service. All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section. The following operations are related to PutBucketReplication: GetBucketReplication DeleteBucketReplication"]modulePutBucketPolicyRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the Outposts bucket."];bucket:BucketName.t[@ocaml.doc"Specifies the bucket. For using this parameter with Amazon S3 on Outposts with the REST API, you must specify the name and the x-amz-outpost-id as well. For using this parameter with S3 on Outposts with the Amazon Web Services SDK and CLI, you must specify the ARN of the bucket accessed in the format arn:aws:s3-outposts:<Region>:<account-id>:outpost/<outpost-id>/bucket/<my-bucket-name>. For example, to access the bucket reports through Outpost my-outpost owned by account 123456789012 in Region us-west-2, use the URL encoding of arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/bucket/reports. The value must be URL encoded."];confirmRemoveSelfBucketAccess:ConfirmRemoveSelfBucketAccess.toption[@ocaml.doc"Set this parameter to true to confirm that you want to remove your permissions to change this bucket policy in the future. This is not supported by Amazon S3 on Outposts buckets."];policy:Policy.t[@ocaml.doc"The bucket policy as a JSON document."]}letcontext_="PutBucketPolicyRequest"letmake?confirmRemoveSelfBucketAccess=fun~accountId->fun~bucket->fun~policy->fun()->{confirmRemoveSelfBucketAccess;accountId;bucket;policy}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(BucketName.to_valuex.bucket)));("x-amz-confirm-remove-self-bucket-access",(Option.mapx.confirmRemoveSelfBucketAccess~f:ConfirmRemoveSelfBucketAccess.to_value));("Policy",(Some(Policy.to_valuex.policy)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letpolicy=Policy.of_xml(Xml.child_exn~context:context_xml_arg0"Policy")inletconfirmRemoveSelfBucketAccess=(Option.map~f:ConfirmRemoveSelfBucketAccess.of_xml)(Xml.childxml_arg0"x-amz-confirm-remove-self-bucket-access")inletbucket=BucketName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~policy?confirmRemoveSelfBucketAccess~bucket~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letpolicy=field_map_exnjson__"Policy"Policy.of_jsoninletconfirmRemoveSelfBucketAccess=field_mapjson__"ConfirmRemoveSelfBucketAccess"ConfirmRemoveSelfBucketAccess.of_jsoninletbucket=field_map_exnjson__"Bucket"BucketName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~policy?confirmRemoveSelfBucketAccess~bucket~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This action puts a bucket policy to an Amazon S3 on Outposts bucket. To put a policy on an S3 bucket, see PutBucketPolicy in the Amazon S3 API Reference. Applies an Amazon S3 bucket policy to an Outposts bucket. For more information, see Using Amazon S3 on Outposts in the Amazon S3 User Guide. If you are using an identity other than the root user of the Amazon Web Services account that owns the Outposts bucket, the calling identity must have the PutBucketPolicy permissions on the specified Outposts bucket and belong to the bucket owner's account in order to use this action. If you don't have PutBucketPolicy permissions, Amazon S3 returns a 403 Access Denied error. If you have the correct permissions, but you're not using an identity that belongs to the bucket owner's account, Amazon S3 returns a 405 Method Not Allowed error. As a security precaution, the root user of the Amazon Web Services account that owns a bucket can always use this action, even if the policy explicitly denies the root user the ability to perform this action. For more information about bucket policies, see Using Bucket Policies and User Policies. All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section. The following actions are related to PutBucketPolicy: GetBucketPolicy DeleteBucketPolicy"]modulePutBucketLifecycleConfigurationRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the Outposts bucket."];bucket:BucketName.t[@ocaml.doc"The name of the bucket for which to set the configuration."];lifecycleConfiguration:LifecycleConfiguration.toption[@ocaml.doc"Container for lifecycle rules. You can add as many as 1,000 rules."]}letcontext_="PutBucketLifecycleConfigurationRequest"letmake?lifecycleConfiguration=fun~accountId->fun~bucket->fun()->{lifecycleConfiguration;accountId;bucket}letof_header_and_body=((fun(xs,pipe)->make~accountId:(AccountId.of_string((List.Assoc.find_exn~equal:String.Caseless.equal)xs"x-amz-account-id"))~bucket:(BucketName.of_string((List.Assoc.find_exn~equal:String.Caseless.equal)xs"name"))?lifecycleConfiguration:(Somepipe)())[@warning"-27"])letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(BucketName.to_valuex.bucket)));("LifecycleConfiguration",(Option.mapx.lifecycleConfiguration~f:LifecycleConfiguration.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letlifecycleConfiguration=(Option.map~f:LifecycleConfiguration.of_xml)(Xml.childxml_arg0"LifecycleConfiguration")inletbucket=BucketName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake?lifecycleConfiguration~bucket~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letlifecycleConfiguration=field_mapjson__"LifecycleConfiguration"LifecycleConfiguration.of_jsoninletbucket=field_map_exnjson__"Bucket"BucketName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake?lifecycleConfiguration~bucket~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This action puts a lifecycle configuration to an Amazon S3 on Outposts bucket. To put a lifecycle configuration to an S3 bucket, see PutBucketLifecycleConfiguration in the Amazon S3 API Reference. Creates a new lifecycle configuration for the S3 on Outposts bucket or replaces an existing lifecycle configuration. Outposts buckets only support lifecycle configurations that delete/expire objects after a certain period of time and abort incomplete multipart uploads. All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section. The following actions are related to PutBucketLifecycleConfiguration: GetBucketLifecycleConfiguration DeleteBucketLifecycleConfiguration"]modulePutAccessPointScopeRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID that owns the access point with scope that you want to create or replace."];name:AccessPointName.t[@ocaml.doc"The name of the access point with the scope that you want to create or replace."];scope:Scope.t[@ocaml.doc"Object prefixes, API operations, or a combination of both."]}letcontext_="PutAccessPointScopeRequest"letmake~accountId=fun~name->fun~scope->fun()->{accountId;name;scope}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(AccessPointName.to_valuex.name)));("Scope",(Some(Scope.to_valuex.scope)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letscope=Scope.of_xml(Xml.child_exn~context:context_xml_arg0"Scope")inletname=AccessPointName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~scope~name~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letscope=field_map_exnjson__"Scope"Scope.of_jsoninletname=field_map_exnjson__"Name"AccessPointName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~scope~name~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates or replaces the access point scope for a directory bucket. You can use the access point scope to restrict access to specific prefixes, API operations, or a combination of both. You can specify any amount of prefixes, but the total length of characters of all prefixes must be less than 256 bytes in size. To use this operation, you must have the permission to perform the s3express:PutAccessPointScope action. For information about REST API errors, see REST error responses."]modulePutAccessPointPolicyRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID for owner of the bucket associated with the specified access point."];name:AccessPointName.t[@ocaml.doc"The name of the access point that you want to associate with the specified policy. For using this parameter with Amazon S3 on Outposts with the REST API, you must specify the name and the x-amz-outpost-id as well. For using this parameter with S3 on Outposts with the Amazon Web Services SDK and CLI, you must specify the ARN of the access point accessed in the format arn:aws:s3-outposts:<Region>:<account-id>:outpost/<outpost-id>/accesspoint/<my-accesspoint-name>. For example, to access the access point reports-ap through Outpost my-outpost owned by account 123456789012 in Region us-west-2, use the URL encoding of arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/accesspoint/reports-ap. The value must be URL encoded."];policy:Policy.t[@ocaml.doc"The policy that you want to apply to the specified access point. For more information about access point policies, see Managing data access with Amazon S3 access points or Managing access to shared datasets in directory buckets with access points in the Amazon S3 User Guide."]}letcontext_="PutAccessPointPolicyRequest"letmake~accountId=fun~name->fun~policy->fun()->{accountId;name;policy}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(AccessPointName.to_valuex.name)));("Policy",(Some(Policy.to_valuex.policy)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letpolicy=Policy.of_xml(Xml.child_exn~context:context_xml_arg0"Policy")inletname=AccessPointName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~policy~name~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letpolicy=field_map_exnjson__"Policy"Policy.of_jsoninletname=field_map_exnjson__"Name"AccessPointName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~policy~name~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Associates an access policy with the specified access point. Each access point can have only one policy, so a request made to this API replaces any existing policy associated with the specified access point. All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section. The following actions are related to PutAccessPointPolicy: GetAccessPointPolicy DeleteAccessPointPolicy"]modulePutAccessPointPolicyForObjectLambdaRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The account ID for the account that owns the specified Object Lambda Access Point."];name:ObjectLambdaAccessPointName.t[@ocaml.doc"The name of the Object Lambda Access Point."];policy:ObjectLambdaPolicy.t[@ocaml.doc"Object Lambda Access Point resource policy document."]}letcontext_="PutAccessPointPolicyForObjectLambdaRequest"letmake~accountId=fun~name->fun~policy->fun()->{accountId;name;policy}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(ObjectLambdaAccessPointName.to_valuex.name)));("Policy",(Some(ObjectLambdaPolicy.to_valuex.policy)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letpolicy=ObjectLambdaPolicy.of_xml(Xml.child_exn~context:context_xml_arg0"Policy")inletname=ObjectLambdaAccessPointName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~policy~name~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letpolicy=field_map_exnjson__"Policy"ObjectLambdaPolicy.of_jsoninletname=field_map_exnjson__"Name"ObjectLambdaAccessPointName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~policy~name~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Creates or replaces resource policy for an Object Lambda Access Point. For an example policy, see Creating Object Lambda Access Points in the Amazon S3 User Guide. The following actions are related to PutAccessPointPolicyForObjectLambda: DeleteAccessPointPolicyForObjectLambda GetAccessPointPolicyForObjectLambda"]modulePutAccessPointConfigurationForObjectLambdaRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The account ID for the account that owns the specified Object Lambda Access Point."];name:ObjectLambdaAccessPointName.t[@ocaml.doc"The name of the Object Lambda Access Point."];configuration:ObjectLambdaConfiguration.t[@ocaml.doc"Object Lambda Access Point configuration document."]}letcontext_="PutAccessPointConfigurationForObjectLambdaRequest"letmake~accountId=fun~name->fun~configuration->fun()->{accountId;name;configuration}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(ObjectLambdaAccessPointName.to_valuex.name)));("Configuration",(Some(ObjectLambdaConfiguration.to_valuex.configuration)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letconfiguration=ObjectLambdaConfiguration.of_xml(Xml.child_exn~context:context_xml_arg0"Configuration")inletname=ObjectLambdaAccessPointName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~configuration~name~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letconfiguration=field_map_exnjson__"Configuration"ObjectLambdaConfiguration.of_jsoninletname=field_map_exnjson__"Name"ObjectLambdaAccessPointName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~configuration~name~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Replaces configuration for an Object Lambda Access Point. The following actions are related to PutAccessPointConfigurationForObjectLambda: GetAccessPointConfigurationForObjectLambda"]modulePutAccessGrantsInstanceResourcePolicyResult=structtypenonrect={policy:PolicyDocument.toption[@ocaml.doc"The updated resource policy of the S3 Access Grants instance."];organization:Organization.toption[@ocaml.doc"The Organization of the resource policy of the S3 Access Grants instance."];createdAt:CreationTimestamp.toption[@ocaml.doc"The date and time when you created the S3 Access Grants instance resource policy."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?policy=fun?organization->fun?createdAt->fun()->{policy;organization;createdAt}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Policy",(Option.mapx.policy~f:PolicyDocument.to_value));("Organization",(Option.mapx.organization~f:Organization.to_value));("CreatedAt",(Option.mapx.createdAt~f:CreationTimestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcreatedAt=(Option.map~f:CreationTimestamp.of_xml)(Xml.childxml_arg0"CreatedAt")inletorganization=(Option.map~f:Organization.of_xml)(Xml.childxml_arg0"Organization")inletpolicy=(Option.map~f:PolicyDocument.of_xml)(Xml.childxml_arg0"Policy")inmake?createdAt?organization?policy()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcreatedAt=field_mapjson__"CreatedAt"CreationTimestamp.of_jsoninletorganization=field_mapjson__"Organization"Organization.of_jsoninletpolicy=field_mapjson__"Policy"PolicyDocument.of_jsoninmake?createdAt?organization?policy()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Updates the resource policy of the S3 Access Grants instance. Permissions You must have the s3:PutAccessGrantsInstanceResourcePolicy permission to use this operation."]modulePutAccessGrantsInstanceResourcePolicyRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the S3 Access Grants instance."];policy:PolicyDocument.t[@ocaml.doc"The resource policy of the S3 Access Grants instance that you are updating."];organization:Organization.toption[@ocaml.doc"The Organization of the resource policy of the S3 Access Grants instance."]}letcontext_="PutAccessGrantsInstanceResourcePolicyRequest"letmake?organization=fun~accountId->fun~policy->fun()->{organization;accountId;policy}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("Policy",(Some(PolicyDocument.to_valuex.policy)));("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")inletpolicy=PolicyDocument.of_xml(Xml.child_exn~context:context_xml_arg0"Policy")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake?organization~policy~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letorganization=field_mapjson__"Organization"Organization.of_jsoninletpolicy=field_map_exnjson__"Policy"PolicyDocument.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake?organization~policy~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Updates the resource policy of the S3 Access Grants instance. Permissions You must have the s3:PutAccessGrantsInstanceResourcePolicy permission to use this operation."]moduleListTagsForResourceResult=structtypenonrect={tags:TagList.toption[@ocaml.doc"The Amazon Web Services resource tags that are associated with the resource."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?tags=fun()->{tags}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Tags",(Option.mapx.tags~f:TagList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:TagList.of_xml)(Xml.childxml_arg0"Tags")inmake?tags()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"Tags"TagList.of_jsoninmake?tags()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation allows you to list all of the tags for a specified resource. Each tag is a label consisting of a key and value. Tags can help you organize, track costs for, and control access to resources. This operation is only supported for the following Amazon S3 resources: General purpose buckets Access Points for directory buckets Access Points for general purpose buckets Directory buckets S3 Storage Lens groups S3 Access Grants instances, registered locations, and grants. Permissions For general purpose buckets, access points for general purpose buckets, Storage Lens groups, and S3 Access Grants, you must have the s3:ListTagsForResource permission to use this operation. Directory bucket permissions For directory buckets, you must have the s3express:ListTagsForResource permission to use this operation. For more information about directory buckets policies and permissions, see Identity and Access Management (IAM) for S3 Express One Zone in the Amazon S3 User Guide. HTTP Host header syntax Directory buckets - The HTTP Host header syntax is s3express-control.region.amazonaws.com. For information about S3 Tagging errors, see List of Amazon S3 Tagging error codes."]moduleListTagsForResourceRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the resource owner."];resourceArn:S3ResourceArn.t[@ocaml.doc"The Amazon Resource Name (ARN) of the S3 resource that you want to list tags for. The tagged resource can be a directory bucket, S3 Storage Lens group or S3 Access Grants instance, registered location, or grant."]}letcontext_="ListTagsForResourceRequest"letmake~accountId=fun~resourceArn->fun()->{accountId;resourceArn}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("resourceArn",(Some(S3ResourceArn.to_valuex.resourceArn)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letresourceArn=S3ResourceArn.of_xml(Xml.child_exn~context:context_xml_arg0"resourceArn")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~resourceArn~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letresourceArn=field_map_exnjson__"ResourceArn"S3ResourceArn.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~resourceArn~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation allows you to list all of the tags for a specified resource. Each tag is a label consisting of a key and value. Tags can help you organize, track costs for, and control access to resources. This operation is only supported for the following Amazon S3 resources: General purpose buckets Access Points for directory buckets Access Points for general purpose buckets Directory buckets S3 Storage Lens groups S3 Access Grants instances, registered locations, and grants. Permissions For general purpose buckets, access points for general purpose buckets, Storage Lens groups, and S3 Access Grants, you must have the s3:ListTagsForResource permission to use this operation. Directory bucket permissions For directory buckets, you must have the s3express:ListTagsForResource permission to use this operation. For more information about directory buckets policies and permissions, see Identity and Access Management (IAM) for S3 Express One Zone in the Amazon S3 User Guide. HTTP Host header syntax Directory buckets - The HTTP Host header syntax is s3express-control.region.amazonaws.com. For information about S3 Tagging errors, see List of Amazon S3 Tagging error codes."]moduleListStorageLensGroupsResult=structtypenonrect={nextToken:ContinuationToken.toption[@ocaml.doc"If NextToken is returned, there are more Storage Lens groups results available. The value of NextToken is a unique pagination token for each page. Make the call again using the returned token to retrieve the next page. Keep all other arguments unchanged. Each pagination token expires after 24 hours."];storageLensGroupList:StorageLensGroupList.toption[@ocaml.doc"The list of Storage Lens groups that exist in the specified home Region."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?nextToken=fun?storageLensGroupList->fun()->{nextToken;storageLensGroupList}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("NextToken",(Option.mapx.nextToken~f:ContinuationToken.to_value));("StorageLensGroup",(Option.mapx.storageLensGroupList~f:StorageLensGroupList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstorageLensGroupList=(Option.map~f:StorageLensGroupList.of_xml)(Some(Xml.childrenxml_arg0"StorageLensGroup"))inletnextToken=(Option.map~f:ContinuationToken.of_xml)(Xml.childxml_arg0"NextToken")inmake?storageLensGroupList?nextToken()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstorageLensGroupList=field_mapjson__"StorageLensGroupList"StorageLensGroupList.of_jsoninletnextToken=field_mapjson__"NextToken"ContinuationToken.of_jsoninmake?storageLensGroupList?nextToken()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists all the Storage Lens groups in the specified home Region. To use this operation, you must have the permission to perform the s3:ListStorageLensGroups action. For more information about the required Storage Lens Groups permissions, see Setting account permissions to use S3 Storage Lens groups. For information about Storage Lens groups errors, see List of Amazon S3 Storage Lens error codes."]moduleListStorageLensGroupsRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID that owns the Storage Lens groups."];nextToken:ContinuationToken.toption[@ocaml.doc"The token for the next set of results, or null if there are no more results."]}letcontext_="ListStorageLensGroupsRequest"letmake?nextToken=fun~accountId->fun()->{nextToken;accountId}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("nextToken",(Option.mapx.nextToken~f:ContinuationToken.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:ContinuationToken.of_xml)(Xml.childxml_arg0"nextToken")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake?nextToken~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"ContinuationToken.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake?nextToken~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists all the Storage Lens groups in the specified home Region. To use this operation, you must have the permission to perform the s3:ListStorageLensGroups action. For more information about the required Storage Lens Groups permissions, see Setting account permissions to use S3 Storage Lens groups. For information about Storage Lens groups errors, see List of Amazon S3 Storage Lens error codes."]moduleListStorageLensConfigurationsResult=structtypenonrect={nextToken:ContinuationToken.toption[@ocaml.doc"If the request produced more than the maximum number of S3 Storage Lens configuration results, you can pass this value into a subsequent request to retrieve the next page of results."];storageLensConfigurationList:StorageLensConfigurationList.toption[@ocaml.doc"A list of S3 Storage Lens configurations."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?nextToken=fun?storageLensConfigurationList->fun()->{nextToken;storageLensConfigurationList}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("NextToken",(Option.mapx.nextToken~f:ContinuationToken.to_value));("StorageLensConfiguration",(Option.mapx.storageLensConfigurationList~f:StorageLensConfigurationList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstorageLensConfigurationList=(Option.map~f:StorageLensConfigurationList.of_xml)(Some(Xml.childrenxml_arg0"StorageLensConfiguration"))inletnextToken=(Option.map~f:ContinuationToken.of_xml)(Xml.childxml_arg0"NextToken")inmake?storageLensConfigurationList?nextToken()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstorageLensConfigurationList=field_mapjson__"StorageLensConfigurationList"StorageLensConfigurationList.of_jsoninletnextToken=field_mapjson__"NextToken"ContinuationToken.of_jsoninmake?storageLensConfigurationList?nextToken()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Gets a list of Amazon S3 Storage Lens configurations. For more information about S3 Storage Lens, see Assessing your storage activity and usage with Amazon S3 Storage Lens in the Amazon S3 User Guide. To use this action, you must have permission to perform the s3:ListStorageLensConfigurations action. For more information, see Setting permissions to use Amazon S3 Storage Lens in the Amazon S3 User Guide."]moduleListStorageLensConfigurationsRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The account ID of the requester."];nextToken:ContinuationToken.toption[@ocaml.doc"A pagination token to request the next page of results."]}letcontext_="ListStorageLensConfigurationsRequest"letmake?nextToken=fun~accountId->fun()->{nextToken;accountId}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("nextToken",(Option.mapx.nextToken~f:ContinuationToken.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:ContinuationToken.of_xml)(Xml.childxml_arg0"nextToken")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake?nextToken~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"ContinuationToken.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake?nextToken~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Gets a list of Amazon S3 Storage Lens configurations. For more information about S3 Storage Lens, see Assessing your storage activity and usage with Amazon S3 Storage Lens in the Amazon S3 User Guide. To use this action, you must have permission to perform the s3:ListStorageLensConfigurations action. For more information, see Setting permissions to use Amazon S3 Storage Lens in the Amazon S3 User Guide."]moduleListRegionalBucketsResult=structtypenonrect={regionalBucketList:RegionalBucketList.toption;nextToken:NonEmptyMaxLength1024String.toption[@ocaml.doc"NextToken is sent when isTruncated is true, which means there are more buckets that can be listed. The next list requests to Amazon S3 can be continued with this NextToken. NextToken is obfuscated and is not a real key."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?regionalBucketList=fun?nextToken->fun()->{regionalBucketList;nextToken}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("RegionalBucketList",(Option.mapx.regionalBucketList~f:RegionalBucketList.to_value));("NextToken",(Option.mapx.nextToken~f:NonEmptyMaxLength1024String.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:NonEmptyMaxLength1024String.of_xml)(Xml.childxml_arg0"NextToken")inletregionalBucketList=(Option.map~f:RegionalBucketList.of_xml)(Xml.childxml_arg0"RegionalBucketList")inmake?nextToken?regionalBucketList()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"NonEmptyMaxLength1024String.of_jsoninletregionalBucketList=field_mapjson__"RegionalBucketList"RegionalBucketList.of_jsoninmake?nextToken?regionalBucketList()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Returns a list of all Outposts buckets in an Outpost that are owned by the authenticated sender of the request. For more information, see Using Amazon S3 on Outposts in the Amazon S3 User Guide. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and x-amz-outpost-id in your request, see the Examples section."]moduleListRegionalBucketsRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the Outposts bucket."];nextToken:NonEmptyMaxLength1024String.toption;maxResults:MaxResults.toption;outpostId:NonEmptyMaxLength64String.toption[@ocaml.doc"The ID of the Outposts resource. This ID is required by Amazon S3 on Outposts buckets."]}letcontext_="ListRegionalBucketsRequest"letmake?nextToken=fun?maxResults->fun?outpostId->fun~accountId->fun()->{nextToken;maxResults;outpostId;accountId}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("nextToken",(Option.mapx.nextToken~f:NonEmptyMaxLength1024String.to_value));("maxResults",(Option.mapx.maxResults~f:MaxResults.to_value));("x-amz-outpost-id",(Option.mapx.outpostId~f:NonEmptyMaxLength64String.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letoutpostId=(Option.map~f:NonEmptyMaxLength64String.of_xml)(Xml.childxml_arg0"x-amz-outpost-id")inletmaxResults=(Option.map~f:MaxResults.of_xml)(Xml.childxml_arg0"maxResults")inletnextToken=(Option.map~f:NonEmptyMaxLength1024String.of_xml)(Xml.childxml_arg0"nextToken")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake?outpostId?maxResults?nextToken~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letoutpostId=field_mapjson__"OutpostId"NonEmptyMaxLength64String.of_jsoninletmaxResults=field_mapjson__"MaxResults"MaxResults.of_jsoninletnextToken=field_mapjson__"NextToken"NonEmptyMaxLength1024String.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake?outpostId?maxResults?nextToken~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Returns a list of all Outposts buckets in an Outpost that are owned by the authenticated sender of the request. For more information, see Using Amazon S3 on Outposts in the Amazon S3 User Guide. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and x-amz-outpost-id in your request, see the Examples section."]moduleListMultiRegionAccessPointsResult=structtypenonrect={accessPoints:MultiRegionAccessPointReportList.toption[@ocaml.doc"The list of Multi-Region Access Points associated with the user."];nextToken:NonEmptyMaxLength1024String.toption[@ocaml.doc"If the specified bucket has more Multi-Region Access Points than can be returned in one call to this action, this field contains a continuation token. You can use this token tin subsequent calls to this action to retrieve additional Multi-Region Access Points."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?accessPoints=fun?nextToken->fun()->{accessPoints;nextToken}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("AccessPoints",(Option.mapx.accessPoints~f:MultiRegionAccessPointReportList.to_value));("NextToken",(Option.mapx.nextToken~f:NonEmptyMaxLength1024String.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:NonEmptyMaxLength1024String.of_xml)(Xml.childxml_arg0"NextToken")inletaccessPoints=(Option.map~f:MultiRegionAccessPointReportList.of_xml)(Xml.childxml_arg0"AccessPoints")inmake?nextToken?accessPoints()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"NonEmptyMaxLength1024String.of_jsoninletaccessPoints=field_mapjson__"AccessPoints"MultiRegionAccessPointReportList.of_jsoninmake?nextToken?accessPoints()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Returns a list of the Multi-Region Access Points currently associated with the specified Amazon Web Services account. Each call can return up to 100 Multi-Region Access Points, the maximum number of Multi-Region Access Points that can be associated with a single account. This action will always be routed to the US West (Oregon) Region. For more information about the restrictions around working with Multi-Region Access Points, see Multi-Region Access Point restrictions and limitations in the Amazon S3 User Guide. The following actions are related to ListMultiRegionAccessPoint: CreateMultiRegionAccessPoint DeleteMultiRegionAccessPoint DescribeMultiRegionAccessPointOperation GetMultiRegionAccessPoint"]moduleListMultiRegionAccessPointsRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID for the owner of the Multi-Region Access Point."];nextToken:NonEmptyMaxLength1024String.toption[@ocaml.doc"Not currently used. Do not use this parameter."];maxResults:MaxResults.toption[@ocaml.doc"Not currently used. Do not use this parameter."]}letcontext_="ListMultiRegionAccessPointsRequest"letmake?nextToken=fun?maxResults->fun~accountId->fun()->{nextToken;maxResults;accountId}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("nextToken",(Option.mapx.nextToken~f:NonEmptyMaxLength1024String.to_value));("maxResults",(Option.mapx.maxResults~f:MaxResults.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmaxResults=(Option.map~f:MaxResults.of_xml)(Xml.childxml_arg0"maxResults")inletnextToken=(Option.map~f:NonEmptyMaxLength1024String.of_xml)(Xml.childxml_arg0"nextToken")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake?maxResults?nextToken~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmaxResults=field_mapjson__"MaxResults"MaxResults.of_jsoninletnextToken=field_mapjson__"NextToken"NonEmptyMaxLength1024String.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake?maxResults?nextToken~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Returns a list of the Multi-Region Access Points currently associated with the specified Amazon Web Services account. Each call can return up to 100 Multi-Region Access Points, the maximum number of Multi-Region Access Points that can be associated with a single account. This action will always be routed to the US West (Oregon) Region. For more information about the restrictions around working with Multi-Region Access Points, see Multi-Region Access Point restrictions and limitations in the Amazon S3 User Guide. The following actions are related to ListMultiRegionAccessPoint: CreateMultiRegionAccessPoint DeleteMultiRegionAccessPoint DescribeMultiRegionAccessPointOperation GetMultiRegionAccessPoint"]moduleListJobsResult=structtypenonrect={nextToken:StringForNextToken.toption[@ocaml.doc"If the List Jobs request produced more than the maximum number of results, you can pass this value into a subsequent List Jobs request in order to retrieve the next page of results."];jobs:JobListDescriptorList.toption[@ocaml.doc"The list of current jobs and jobs that have ended within the last 30 days."]}typenonrecerror=[`InternalServiceExceptionofInternalServiceException.t|`InvalidNextTokenExceptionofInvalidNextTokenException.t|`InvalidRequestExceptionofInvalidRequestException.t|`Unknown_operation_errorof(string*stringoption)]letmake?nextToken=fun?jobs->fun()->{nextToken;jobs}leterror_of_jsonnamejson=matchnamewith|"InternalServiceException"->`InternalServiceException(InternalServiceException.of_jsonjson)|"InvalidNextTokenException"->`InvalidNextTokenException(InvalidNextTokenException.of_jsonjson)|"InvalidRequestException"->`InvalidRequestException(InvalidRequestException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"InternalServiceException"->`InternalServiceException(InternalServiceException.of_xmlxml)|"InvalidNextTokenException"->`InvalidNextTokenException(InvalidNextTokenException.of_xmlxml)|"InvalidRequestException"->`InvalidRequestException(InvalidRequestException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`InternalServiceExceptione->`Assoc[("error",(`String"InternalServiceException"));("details",(InternalServiceException.to_jsone))]|`InvalidNextTokenExceptione->`Assoc[("error",(`String"InvalidNextTokenException"));("details",(InvalidNextTokenException.to_jsone))]|`InvalidRequestExceptione->`Assoc[("error",(`String"InvalidRequestException"));("details",(InvalidRequestException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("NextToken",(Option.mapx.nextToken~f:StringForNextToken.to_value));("Jobs",(Option.mapx.jobs~f:JobListDescriptorList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letjobs=(Option.map~f:JobListDescriptorList.of_xml)(Xml.childxml_arg0"Jobs")inletnextToken=(Option.map~f:StringForNextToken.of_xml)(Xml.childxml_arg0"NextToken")inmake?jobs?nextToken()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letjobs=field_mapjson__"Jobs"JobListDescriptorList.of_jsoninletnextToken=field_mapjson__"NextToken"StringForNextToken.of_jsoninmake?jobs?nextToken()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists current S3 Batch Operations jobs as well as the jobs that have ended within the last 90 days for the Amazon Web Services account making the request. For more information, see S3 Batch Operations in the Amazon S3 User Guide. Permissions To use the ListJobs operation, you must have permission to perform the s3:ListJobs action. Related actions include: CreateJob DescribeJob UpdateJobPriority UpdateJobStatus"]moduleListJobsRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID associated with the S3 Batch Operations job."];jobStatuses:JobStatusList.toption[@ocaml.doc"The List Jobs request returns jobs that match the statuses listed in this element."];nextToken:StringForNextToken.toption[@ocaml.doc"A pagination token to request the next page of results. Use the token that Amazon S3 returned in the NextToken element of the ListJobsResult from the previous List Jobs request."];maxResults:MaxResults.toption[@ocaml.doc"The maximum number of jobs that Amazon S3 will include in the List Jobs response. If there are more jobs than this number, the response will include a pagination token in the NextToken field to enable you to retrieve the next page of results."]}letcontext_="ListJobsRequest"letmake?jobStatuses=fun?nextToken->fun?maxResults->fun~accountId->fun()->{jobStatuses;nextToken;maxResults;accountId}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("jobStatuses",(Option.mapx.jobStatuses~f:JobStatusList.to_value));("nextToken",(Option.mapx.nextToken~f:StringForNextToken.to_value));("maxResults",(Option.mapx.maxResults~f:MaxResults.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmaxResults=(Option.map~f:MaxResults.of_xml)(Xml.childxml_arg0"maxResults")inletnextToken=(Option.map~f:StringForNextToken.of_xml)(Xml.childxml_arg0"nextToken")inletjobStatuses=(Option.map~f:JobStatusList.of_xml)(Xml.childxml_arg0"jobStatuses")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake?maxResults?nextToken?jobStatuses~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmaxResults=field_mapjson__"MaxResults"MaxResults.of_jsoninletnextToken=field_mapjson__"NextToken"StringForNextToken.of_jsoninletjobStatuses=field_mapjson__"JobStatuses"JobStatusList.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake?maxResults?nextToken?jobStatuses~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists current S3 Batch Operations jobs as well as the jobs that have ended within the last 90 days for the Amazon Web Services account making the request. For more information, see S3 Batch Operations in the Amazon S3 User Guide. Permissions To use the ListJobs operation, you must have permission to perform the s3:ListJobs action. Related actions include: CreateJob DescribeJob UpdateJobPriority UpdateJobStatus"]moduleListCallerAccessGrantsResult=structtypenonrect={nextToken:ContinuationToken.toption[@ocaml.doc"A pagination token that you can use to request the next page of results. Pass this value into a subsequent List Caller Access Grants request in order to retrieve the next page of results."];callerAccessGrantsList:CallerAccessGrantsList.toption[@ocaml.doc"A list of the caller's access grants that were created using S3 Access Grants and that grant the caller access to the S3 data of the Amazon Web Services account ID that was specified in the request."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?nextToken=fun?callerAccessGrantsList->fun()->{nextToken;callerAccessGrantsList}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("NextToken",(Option.mapx.nextToken~f:ContinuationToken.to_value));("CallerAccessGrantsList",(Option.mapx.callerAccessGrantsList~f:CallerAccessGrantsList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcallerAccessGrantsList=(Option.map~f:CallerAccessGrantsList.of_xml)(Xml.childxml_arg0"CallerAccessGrantsList")inletnextToken=(Option.map~f:ContinuationToken.of_xml)(Xml.childxml_arg0"NextToken")inmake?callerAccessGrantsList?nextToken()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcallerAccessGrantsList=field_mapjson__"CallerAccessGrantsList"CallerAccessGrantsList.of_jsoninletnextToken=field_mapjson__"NextToken"ContinuationToken.of_jsoninmake?callerAccessGrantsList?nextToken()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Use this API to list the access grants that grant the caller access to Amazon S3 data through S3 Access Grants. The caller (grantee) can be an Identity and Access Management (IAM) identity or Amazon Web Services Identity Center corporate directory identity. You must pass the Amazon Web Services account of the S3 data owner (grantor) in the request. You can, optionally, narrow the results by GrantScope, using a fragment of the data's S3 path, and S3 Access Grants will return only the grants with a path that contains the path fragment. You can also pass the AllowedByApplication filter in the request, which returns only the grants authorized for applications, whether the application is the caller's Identity Center application or any other application (ALL). For more information, see List the caller's access grants in the Amazon S3 User Guide. Permissions You must have the s3:ListCallerAccessGrants permission to use this operation."]moduleListCallerAccessGrantsRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the S3 Access Grants instance."];grantScope:S3Prefix.toption[@ocaml.doc"The S3 path of the data that you would like to access. Must start with s3://. You can optionally pass only the beginning characters of a path, and S3 Access Grants will search for all applicable grants for the path fragment."];nextToken:ContinuationToken.toption[@ocaml.doc"A pagination token to request the next page of results. Pass this value into a subsequent List Caller Access Grants request in order to retrieve the next page of results."];maxResults:MaxResults.toption[@ocaml.doc"The maximum number of access grants that you would like returned in the List Caller Access Grants response. If the results include the pagination token NextToken, make another call using the NextToken to determine if there are more results."];allowedByApplication:Boolean.toption[@ocaml.doc"If this optional parameter is passed in the request, a filter is applied to the results. The results will include only the access grants for the caller's Identity Center application or for any other applications (ALL)."]}letcontext_="ListCallerAccessGrantsRequest"letmake?grantScope=fun?nextToken->fun?maxResults->fun?allowedByApplication->fun~accountId->fun()->{grantScope;nextToken;maxResults;allowedByApplication;accountId}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("grantscope",(Option.mapx.grantScope~f:S3Prefix.to_value));("nextToken",(Option.mapx.nextToken~f:ContinuationToken.to_value));("maxResults",(Option.mapx.maxResults~f:MaxResults.to_value));("allowedByApplication",(Option.mapx.allowedByApplication~f:Boolean.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letallowedByApplication=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"allowedByApplication")inletmaxResults=(Option.map~f:MaxResults.of_xml)(Xml.childxml_arg0"maxResults")inletnextToken=(Option.map~f:ContinuationToken.of_xml)(Xml.childxml_arg0"nextToken")inletgrantScope=(Option.map~f:S3Prefix.of_xml)(Xml.childxml_arg0"grantscope")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake?allowedByApplication?maxResults?nextToken?grantScope~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letallowedByApplication=field_mapjson__"AllowedByApplication"Boolean.of_jsoninletmaxResults=field_mapjson__"MaxResults"MaxResults.of_jsoninletnextToken=field_mapjson__"NextToken"ContinuationToken.of_jsoninletgrantScope=field_mapjson__"GrantScope"S3Prefix.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake?allowedByApplication?maxResults?nextToken?grantScope~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Use this API to list the access grants that grant the caller access to Amazon S3 data through S3 Access Grants. The caller (grantee) can be an Identity and Access Management (IAM) identity or Amazon Web Services Identity Center corporate directory identity. You must pass the Amazon Web Services account of the S3 data owner (grantor) in the request. You can, optionally, narrow the results by GrantScope, using a fragment of the data's S3 path, and S3 Access Grants will return only the grants with a path that contains the path fragment. You can also pass the AllowedByApplication filter in the request, which returns only the grants authorized for applications, whether the application is the caller's Identity Center application or any other application (ALL). For more information, see List the caller's access grants in the Amazon S3 User Guide. Permissions You must have the s3:ListCallerAccessGrants permission to use this operation."]moduleListAccessPointsResult=structtypenonrect={accessPointList:AccessPointList.toption[@ocaml.doc"Contains identification and configuration information for one or more access points associated with the specified bucket."];nextToken:NonEmptyMaxLength1024String.toption[@ocaml.doc"If the specified bucket has more access points than can be returned in one call to this API, this field contains a continuation token that you can provide in subsequent calls to this API to retrieve additional access points."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?accessPointList=fun?nextToken->fun()->{accessPointList;nextToken}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("AccessPointList",(Option.mapx.accessPointList~f:AccessPointList.to_value));("NextToken",(Option.mapx.nextToken~f:NonEmptyMaxLength1024String.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:NonEmptyMaxLength1024String.of_xml)(Xml.childxml_arg0"NextToken")inletaccessPointList=(Option.map~f:AccessPointList.of_xml)(Xml.childxml_arg0"AccessPointList")inmake?nextToken?accessPointList()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"NonEmptyMaxLength1024String.of_jsoninletaccessPointList=field_mapjson__"AccessPointList"AccessPointList.of_jsoninmake?nextToken?accessPointList()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Returns a list of the access points. You can retrieve up to 1,000 access points per call. If the call returns more than 1,000 access points (or the number specified in maxResults, whichever is less), the response will include a continuation token that you can use to list the additional access points. Returns only access points attached to S3 buckets by default. To return all access points specify DataSourceType as ALL. All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section. The following actions are related to ListAccessPoints: CreateAccessPoint DeleteAccessPoint GetAccessPoint"]moduleListAccessPointsRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID for the account that owns the specified access points."];bucket:BucketName.toption[@ocaml.doc"The name of the bucket whose associated access points you want to list. For using this parameter with Amazon S3 on Outposts with the REST API, you must specify the name and the x-amz-outpost-id as well. For using this parameter with S3 on Outposts with the Amazon Web Services SDK and CLI, you must specify the ARN of the bucket accessed in the format arn:aws:s3-outposts:<Region>:<account-id>:outpost/<outpost-id>/bucket/<my-bucket-name>. For example, to access the bucket reports through Outpost my-outpost owned by account 123456789012 in Region us-west-2, use the URL encoding of arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/bucket/reports. The value must be URL encoded."];nextToken:NonEmptyMaxLength1024String.toption[@ocaml.doc"A continuation token. If a previous call to ListAccessPoints returned a continuation token in the NextToken field, then providing that value here causes Amazon S3 to retrieve the next page of results."];maxResults:MaxResults.toption[@ocaml.doc"The maximum number of access points that you want to include in the list. If the specified bucket has more than this number of access points, then the response will include a continuation token in the NextToken field that you can use to retrieve the next page of access points."];dataSourceId:DataSourceId.toption[@ocaml.doc"The unique identifier for the data source of the access point."];dataSourceType:DataSourceType.toption[@ocaml.doc"The type of the data source that the access point is attached to. Returns only access points attached to S3 buckets by default. To return all access points specify DataSourceType as ALL."]}letcontext_="ListAccessPointsRequest"letmake?bucket=fun?nextToken->fun?maxResults->fun?dataSourceId->fun?dataSourceType->fun~accountId->fun()->{bucket;nextToken;maxResults;dataSourceId;dataSourceType;accountId}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("bucket",(Option.mapx.bucket~f:BucketName.to_value));("nextToken",(Option.mapx.nextToken~f:NonEmptyMaxLength1024String.to_value));("maxResults",(Option.mapx.maxResults~f:MaxResults.to_value));("dataSourceId",(Option.mapx.dataSourceId~f:DataSourceId.to_value));("dataSourceType",(Option.mapx.dataSourceType~f:DataSourceType.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdataSourceType=(Option.map~f:DataSourceType.of_xml)(Xml.childxml_arg0"dataSourceType")inletdataSourceId=(Option.map~f:DataSourceId.of_xml)(Xml.childxml_arg0"dataSourceId")inletmaxResults=(Option.map~f:MaxResults.of_xml)(Xml.childxml_arg0"maxResults")inletnextToken=(Option.map~f:NonEmptyMaxLength1024String.of_xml)(Xml.childxml_arg0"nextToken")inletbucket=(Option.map~f:BucketName.of_xml)(Xml.childxml_arg0"bucket")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake?dataSourceType?dataSourceId?maxResults?nextToken?bucket~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdataSourceType=field_mapjson__"DataSourceType"DataSourceType.of_jsoninletdataSourceId=field_mapjson__"DataSourceId"DataSourceId.of_jsoninletmaxResults=field_mapjson__"MaxResults"MaxResults.of_jsoninletnextToken=field_mapjson__"NextToken"NonEmptyMaxLength1024String.of_jsoninletbucket=field_mapjson__"Bucket"BucketName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake?dataSourceType?dataSourceId?maxResults?nextToken?bucket~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Returns a list of the access points. You can retrieve up to 1,000 access points per call. If the call returns more than 1,000 access points (or the number specified in maxResults, whichever is less), the response will include a continuation token that you can use to list the additional access points. Returns only access points attached to S3 buckets by default. To return all access points specify DataSourceType as ALL. All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section. The following actions are related to ListAccessPoints: CreateAccessPoint DeleteAccessPoint GetAccessPoint"]moduleListAccessPointsForObjectLambdaResult=structtypenonrect={objectLambdaAccessPointList:ObjectLambdaAccessPointList.toption[@ocaml.doc"Returns list of Object Lambda Access Points."];nextToken:NonEmptyMaxLength1024String.toption[@ocaml.doc"If the list has more access points than can be returned in one call to this API, this field contains a continuation token that you can provide in subsequent calls to this API to retrieve additional access points."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?objectLambdaAccessPointList=fun?nextToken->fun()->{objectLambdaAccessPointList;nextToken}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("ObjectLambdaAccessPointList",(Option.mapx.objectLambdaAccessPointList~f:ObjectLambdaAccessPointList.to_value));("NextToken",(Option.mapx.nextToken~f:NonEmptyMaxLength1024String.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:NonEmptyMaxLength1024String.of_xml)(Xml.childxml_arg0"NextToken")inletobjectLambdaAccessPointList=(Option.map~f:ObjectLambdaAccessPointList.of_xml)(Xml.childxml_arg0"ObjectLambdaAccessPointList")inmake?nextToken?objectLambdaAccessPointList()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"NonEmptyMaxLength1024String.of_jsoninletobjectLambdaAccessPointList=field_mapjson__"ObjectLambdaAccessPointList"ObjectLambdaAccessPointList.of_jsoninmake?nextToken?objectLambdaAccessPointList()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Returns some or all (up to 1,000) access points associated with the Object Lambda Access Point per call. If there are more access points than what can be returned in one call, the response will include a continuation token that you can use to list the additional access points. The following actions are related to ListAccessPointsForObjectLambda: CreateAccessPointForObjectLambda DeleteAccessPointForObjectLambda GetAccessPointForObjectLambda"]moduleListAccessPointsForObjectLambdaRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The account ID for the account that owns the specified Object Lambda Access Point."];nextToken:NonEmptyMaxLength1024String.toption[@ocaml.doc"If the list has more access points than can be returned in one call to this API, this field contains a continuation token that you can provide in subsequent calls to this API to retrieve additional access points."];maxResults:MaxResults.toption[@ocaml.doc"The maximum number of access points that you want to include in the list. The response may contain fewer access points but will never contain more. If there are more than this number of access points, then the response will include a continuation token in the NextToken field that you can use to retrieve the next page of access points."]}letcontext_="ListAccessPointsForObjectLambdaRequest"letmake?nextToken=fun?maxResults->fun~accountId->fun()->{nextToken;maxResults;accountId}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("nextToken",(Option.mapx.nextToken~f:NonEmptyMaxLength1024String.to_value));("maxResults",(Option.mapx.maxResults~f:MaxResults.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmaxResults=(Option.map~f:MaxResults.of_xml)(Xml.childxml_arg0"maxResults")inletnextToken=(Option.map~f:NonEmptyMaxLength1024String.of_xml)(Xml.childxml_arg0"nextToken")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake?maxResults?nextToken~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmaxResults=field_mapjson__"MaxResults"MaxResults.of_jsoninletnextToken=field_mapjson__"NextToken"NonEmptyMaxLength1024String.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake?maxResults?nextToken~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Returns some or all (up to 1,000) access points associated with the Object Lambda Access Point per call. If there are more access points than what can be returned in one call, the response will include a continuation token that you can use to list the additional access points. The following actions are related to ListAccessPointsForObjectLambda: CreateAccessPointForObjectLambda DeleteAccessPointForObjectLambda GetAccessPointForObjectLambda"]moduleListAccessPointsForDirectoryBucketsResult=structtypenonrect={accessPointList:AccessPointList.toption[@ocaml.doc"Contains identification and configuration information for one or more access points associated with the directory bucket."];nextToken:NonEmptyMaxLength1024String.toption[@ocaml.doc"If NextToken is returned, there are more access points available than requested in the maxResults value. The value of NextToken is a unique pagination token for each page. Make the call again using the returned token to retrieve the next page. Keep all other arguments unchanged. Each pagination token expires after 24 hours."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?accessPointList=fun?nextToken->fun()->{accessPointList;nextToken}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("AccessPointList",(Option.mapx.accessPointList~f:AccessPointList.to_value));("NextToken",(Option.mapx.nextToken~f:NonEmptyMaxLength1024String.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:NonEmptyMaxLength1024String.of_xml)(Xml.childxml_arg0"NextToken")inletaccessPointList=(Option.map~f:AccessPointList.of_xml)(Xml.childxml_arg0"AccessPointList")inmake?nextToken?accessPointList()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"NonEmptyMaxLength1024String.of_jsoninletaccessPointList=field_mapjson__"AccessPointList"AccessPointList.of_jsoninmake?nextToken?accessPointList()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns a list of the access points that are owned by the Amazon Web Services account and that are associated with the specified directory bucket. To list access points for general purpose buckets, see ListAccesspoints. To use this operation, you must have the permission to perform the s3express:ListAccessPointsForDirectoryBuckets action. For information about REST API errors, see REST error responses."]moduleListAccessPointsForDirectoryBucketsRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID that owns the access points."];directoryBucket:BucketName.toption[@ocaml.doc"The name of the directory bucket associated with the access points you want to list."];nextToken:NonEmptyMaxLength1024String.toption[@ocaml.doc"If NextToken is returned, there are more access points available than requested in the maxResults value. The value of NextToken is a unique pagination token for each page. Make the call again using the returned token to retrieve the next page. Keep all other arguments unchanged. Each pagination token expires after 24 hours."];maxResults:MaxResults.toption[@ocaml.doc"The maximum number of access points that you would like returned in the ListAccessPointsForDirectoryBuckets response. If the directory bucket is associated with more than this number of access points, the results include the pagination token NextToken. Make another call using the NextToken to retrieve more results."]}letcontext_="ListAccessPointsForDirectoryBucketsRequest"letmake?directoryBucket=fun?nextToken->fun?maxResults->fun~accountId->fun()->{directoryBucket;nextToken;maxResults;accountId}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("directoryBucket",(Option.mapx.directoryBucket~f:BucketName.to_value));("nextToken",(Option.mapx.nextToken~f:NonEmptyMaxLength1024String.to_value));("maxResults",(Option.mapx.maxResults~f:MaxResults.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmaxResults=(Option.map~f:MaxResults.of_xml)(Xml.childxml_arg0"maxResults")inletnextToken=(Option.map~f:NonEmptyMaxLength1024String.of_xml)(Xml.childxml_arg0"nextToken")inletdirectoryBucket=(Option.map~f:BucketName.of_xml)(Xml.childxml_arg0"directoryBucket")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake?maxResults?nextToken?directoryBucket~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmaxResults=field_mapjson__"MaxResults"MaxResults.of_jsoninletnextToken=field_mapjson__"NextToken"NonEmptyMaxLength1024String.of_jsoninletdirectoryBucket=field_mapjson__"DirectoryBucket"BucketName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake?maxResults?nextToken?directoryBucket~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns a list of the access points that are owned by the Amazon Web Services account and that are associated with the specified directory bucket. To list access points for general purpose buckets, see ListAccesspoints. To use this operation, you must have the permission to perform the s3express:ListAccessPointsForDirectoryBuckets action. For information about REST API errors, see REST error responses."]moduleListAccessGrantsResult=structtypenonrect={nextToken:ContinuationToken.toption[@ocaml.doc"A pagination token to request the next page of results. Pass this value into a subsequent List Access Grants request in order to retrieve the next page of results."];accessGrantsList:AccessGrantsList.toption[@ocaml.doc"A container for a list of grants in an S3 Access Grants instance."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?nextToken=fun?accessGrantsList->fun()->{nextToken;accessGrantsList}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("NextToken",(Option.mapx.nextToken~f:ContinuationToken.to_value));("AccessGrantsList",(Option.mapx.accessGrantsList~f:AccessGrantsList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccessGrantsList=(Option.map~f:AccessGrantsList.of_xml)(Xml.childxml_arg0"AccessGrantsList")inletnextToken=(Option.map~f:ContinuationToken.of_xml)(Xml.childxml_arg0"NextToken")inmake?accessGrantsList?nextToken()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccessGrantsList=field_mapjson__"AccessGrantsList"AccessGrantsList.of_jsoninletnextToken=field_mapjson__"NextToken"ContinuationToken.of_jsoninmake?accessGrantsList?nextToken()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns the list of access grants in your S3 Access Grants instance. Permissions You must have the s3:ListAccessGrants permission to use this operation."]moduleListAccessGrantsRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the S3 Access Grants instance."];nextToken:ContinuationToken.toption[@ocaml.doc"A pagination token to request the next page of results. Pass this value into a subsequent List Access Grants request in order to retrieve the next page of results."];maxResults:MaxResults.toption[@ocaml.doc"The maximum number of access grants that you would like returned in the List Access Grants response. If the results include the pagination token NextToken, make another call using the NextToken to determine if there are more results."];granteeType:GranteeType.toption[@ocaml.doc"The type of the grantee to which access has been granted. It can be one of the following values: IAM - An IAM user or role. DIRECTORY_USER - Your corporate directory user. You can use this option if you have added your corporate identity directory to IAM Identity Center and associated the IAM Identity Center instance with your S3 Access Grants instance. DIRECTORY_GROUP - Your corporate directory group. You can use this option if you have added your corporate identity directory to IAM Identity Center and associated the IAM Identity Center instance with your S3 Access Grants instance."];granteeIdentifier:GranteeIdentifier.toption[@ocaml.doc"The unique identifer of the Grantee. If the grantee type is IAM, the identifier is the IAM Amazon Resource Name (ARN) of the user or role. If the grantee type is a directory user or group, the identifier is 128-bit universally unique identifier (UUID) in the format a1b2c3d4-5678-90ab-cdef-EXAMPLE11111. You can obtain this UUID from your Amazon Web Services IAM Identity Center instance."];permission:Permission.toption[@ocaml.doc"The type of permission granted to your S3 data, which can be set to one of the following values: READ \226\128\147 Grant read-only access to the S3 data. WRITE \226\128\147 Grant write-only access to the S3 data. READWRITE \226\128\147 Grant both read and write access to the S3 data."];grantScope:S3Prefix.toption[@ocaml.doc"The S3 path of the data to which you are granting access. It is the result of appending the Subprefix to the location scope."];applicationArn:IdentityCenterApplicationArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of an Amazon Web Services IAM Identity Center application associated with your Identity Center instance. If the grant includes an application ARN, the grantee can only access the S3 data through this application."]}letcontext_="ListAccessGrantsRequest"letmake?nextToken=fun?maxResults->fun?granteeType->fun?granteeIdentifier->fun?permission->fun?grantScope->fun?applicationArn->fun~accountId->fun()->{nextToken;maxResults;granteeType;granteeIdentifier;permission;grantScope;applicationArn;accountId}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("nextToken",(Option.mapx.nextToken~f:ContinuationToken.to_value));("maxResults",(Option.mapx.maxResults~f:MaxResults.to_value));("granteetype",(Option.mapx.granteeType~f:GranteeType.to_value));("granteeidentifier",(Option.mapx.granteeIdentifier~f:GranteeIdentifier.to_value));("permission",(Option.mapx.permission~f:Permission.to_value));("grantscope",(Option.mapx.grantScope~f:S3Prefix.to_value));("application_arn",(Option.mapx.applicationArn~f:IdentityCenterApplicationArn.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letapplicationArn=(Option.map~f:IdentityCenterApplicationArn.of_xml)(Xml.childxml_arg0"application_arn")inletgrantScope=(Option.map~f:S3Prefix.of_xml)(Xml.childxml_arg0"grantscope")inletpermission=(Option.map~f:Permission.of_xml)(Xml.childxml_arg0"permission")inletgranteeIdentifier=(Option.map~f:GranteeIdentifier.of_xml)(Xml.childxml_arg0"granteeidentifier")inletgranteeType=(Option.map~f:GranteeType.of_xml)(Xml.childxml_arg0"granteetype")inletmaxResults=(Option.map~f:MaxResults.of_xml)(Xml.childxml_arg0"maxResults")inletnextToken=(Option.map~f:ContinuationToken.of_xml)(Xml.childxml_arg0"nextToken")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake?applicationArn?grantScope?permission?granteeIdentifier?granteeType?maxResults?nextToken~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letapplicationArn=field_mapjson__"ApplicationArn"IdentityCenterApplicationArn.of_jsoninletgrantScope=field_mapjson__"GrantScope"S3Prefix.of_jsoninletpermission=field_mapjson__"Permission"Permission.of_jsoninletgranteeIdentifier=field_mapjson__"GranteeIdentifier"GranteeIdentifier.of_jsoninletgranteeType=field_mapjson__"GranteeType"GranteeType.of_jsoninletmaxResults=field_mapjson__"MaxResults"MaxResults.of_jsoninletnextToken=field_mapjson__"NextToken"ContinuationToken.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake?applicationArn?grantScope?permission?granteeIdentifier?granteeType?maxResults?nextToken~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns the list of access grants in your S3 Access Grants instance. Permissions You must have the s3:ListAccessGrants permission to use this operation."]moduleListAccessGrantsLocationsResult=structtypenonrect={nextToken:ContinuationToken.toption[@ocaml.doc"A pagination token to request the next page of results. Pass this value into a subsequent List Access Grants Locations request in order to retrieve the next page of results."];accessGrantsLocationsList:AccessGrantsLocationsList.toption[@ocaml.doc"A container for a list of registered locations in an S3 Access Grants instance."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?nextToken=fun?accessGrantsLocationsList->fun()->{nextToken;accessGrantsLocationsList}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("NextToken",(Option.mapx.nextToken~f:ContinuationToken.to_value));("AccessGrantsLocationsList",(Option.mapx.accessGrantsLocationsList~f:AccessGrantsLocationsList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccessGrantsLocationsList=(Option.map~f:AccessGrantsLocationsList.of_xml)(Xml.childxml_arg0"AccessGrantsLocationsList")inletnextToken=(Option.map~f:ContinuationToken.of_xml)(Xml.childxml_arg0"NextToken")inmake?accessGrantsLocationsList?nextToken()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccessGrantsLocationsList=field_mapjson__"AccessGrantsLocationsList"AccessGrantsLocationsList.of_jsoninletnextToken=field_mapjson__"NextToken"ContinuationToken.of_jsoninmake?accessGrantsLocationsList?nextToken()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns a list of the locations registered in your S3 Access Grants instance. Permissions You must have the s3:ListAccessGrantsLocations permission to use this operation."]moduleListAccessGrantsLocationsRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the S3 Access Grants instance."];nextToken:ContinuationToken.toption[@ocaml.doc"A pagination token to request the next page of results. Pass this value into a subsequent List Access Grants Locations request in order to retrieve the next page of results."];maxResults:MaxResults.toption[@ocaml.doc"The maximum number of access grants that you would like returned in the List Access Grants response. If the results include the pagination token NextToken, make another call using the NextToken to determine if there are more results."];locationScope:S3Prefix.toption[@ocaml.doc"The S3 path to the location that you are registering. The location scope can be the default S3 location s3://, the S3 path to a bucket s3://<bucket>, or the S3 path to a bucket and prefix s3://<bucket>/<prefix>. A prefix in S3 is a string of characters at the beginning of an object key name used to organize the objects that you store in your S3 buckets. For example, object key names that start with the engineering/ prefix or object key names that start with the marketing/campaigns/ prefix."]}letcontext_="ListAccessGrantsLocationsRequest"letmake?nextToken=fun?maxResults->fun?locationScope->fun~accountId->fun()->{nextToken;maxResults;locationScope;accountId}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("nextToken",(Option.mapx.nextToken~f:ContinuationToken.to_value));("maxResults",(Option.mapx.maxResults~f:MaxResults.to_value));("locationscope",(Option.mapx.locationScope~f:S3Prefix.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letlocationScope=(Option.map~f:S3Prefix.of_xml)(Xml.childxml_arg0"locationscope")inletmaxResults=(Option.map~f:MaxResults.of_xml)(Xml.childxml_arg0"maxResults")inletnextToken=(Option.map~f:ContinuationToken.of_xml)(Xml.childxml_arg0"nextToken")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake?locationScope?maxResults?nextToken~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letlocationScope=field_mapjson__"LocationScope"S3Prefix.of_jsoninletmaxResults=field_mapjson__"MaxResults"MaxResults.of_jsoninletnextToken=field_mapjson__"NextToken"ContinuationToken.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake?locationScope?maxResults?nextToken~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns a list of the locations registered in your S3 Access Grants instance. Permissions You must have the s3:ListAccessGrantsLocations permission to use this operation."]moduleListAccessGrantsInstancesResult=structtypenonrect={nextToken:ContinuationToken.toption[@ocaml.doc"A pagination token to request the next page of results. Pass this value into a subsequent List Access Grants Instances request in order to retrieve the next page of results."];accessGrantsInstancesList:AccessGrantsInstancesList.toption[@ocaml.doc"A container for a list of S3 Access Grants instances."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?nextToken=fun?accessGrantsInstancesList->fun()->{nextToken;accessGrantsInstancesList}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("NextToken",(Option.mapx.nextToken~f:ContinuationToken.to_value));("AccessGrantsInstancesList",(Option.mapx.accessGrantsInstancesList~f:AccessGrantsInstancesList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccessGrantsInstancesList=(Option.map~f:AccessGrantsInstancesList.of_xml)(Xml.childxml_arg0"AccessGrantsInstancesList")inletnextToken=(Option.map~f:ContinuationToken.of_xml)(Xml.childxml_arg0"NextToken")inmake?accessGrantsInstancesList?nextToken()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccessGrantsInstancesList=field_mapjson__"AccessGrantsInstancesList"AccessGrantsInstancesList.of_jsoninletnextToken=field_mapjson__"NextToken"ContinuationToken.of_jsoninmake?accessGrantsInstancesList?nextToken()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns a list of S3 Access Grants instances. An S3 Access Grants instance serves as a logical grouping for your individual access grants. You can only have one S3 Access Grants instance per Region per account. Permissions You must have the s3:ListAccessGrantsInstances permission to use this operation."]moduleListAccessGrantsInstancesRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the S3 Access Grants instance."];nextToken:ContinuationToken.toption[@ocaml.doc"A pagination token to request the next page of results. Pass this value into a subsequent List Access Grants Instances request in order to retrieve the next page of results."];maxResults:MaxResults.toption[@ocaml.doc"The maximum number of access grants that you would like returned in the List Access Grants response. If the results include the pagination token NextToken, make another call using the NextToken to determine if there are more results."]}letcontext_="ListAccessGrantsInstancesRequest"letmake?nextToken=fun?maxResults->fun~accountId->fun()->{nextToken;maxResults;accountId}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("nextToken",(Option.mapx.nextToken~f:ContinuationToken.to_value));("maxResults",(Option.mapx.maxResults~f:MaxResults.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmaxResults=(Option.map~f:MaxResults.of_xml)(Xml.childxml_arg0"maxResults")inletnextToken=(Option.map~f:ContinuationToken.of_xml)(Xml.childxml_arg0"nextToken")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake?maxResults?nextToken~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmaxResults=field_mapjson__"MaxResults"MaxResults.of_jsoninletnextToken=field_mapjson__"NextToken"ContinuationToken.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake?maxResults?nextToken~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns a list of S3 Access Grants instances. An S3 Access Grants instance serves as a logical grouping for your individual access grants. You can only have one S3 Access Grants instance per Region per account. Permissions You must have the s3:ListAccessGrantsInstances permission to use this operation."]moduleGetStorageLensGroupResult=structtypenonrect={storageLensGroup:StorageLensGroup.toption[@ocaml.doc"The name of the Storage Lens group that you're trying to retrieve the configuration details for."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?storageLensGroup=fun()->{storageLensGroup}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letof_header_and_body=((fun(xs,pipe)->make?storageLensGroup:(Somepipe)())[@warning"-27"])letto_valuex=structure_to_value[("StorageLensGroup",(Option.mapx.storageLensGroup~f:StorageLensGroup.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstorageLensGroup=(Option.map~f:StorageLensGroup.of_xml)(Xml.childxml_arg0"StorageLensGroup")inmake?storageLensGroup()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstorageLensGroup=field_mapjson__"StorageLensGroup"StorageLensGroup.of_jsoninmake?storageLensGroup()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves the Storage Lens group configuration details. To use this operation, you must have the permission to perform the s3:GetStorageLensGroup action. For more information about the required Storage Lens Groups permissions, see Setting account permissions to use S3 Storage Lens groups. For information about Storage Lens groups errors, see List of Amazon S3 Storage Lens error codes."]moduleGetStorageLensGroupRequest=structtypenonrect={name:StorageLensGroupName.t[@ocaml.doc"The name of the Storage Lens group that you're trying to retrieve the configuration details for."];accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID associated with the Storage Lens group that you're trying to retrieve the details for."]}letcontext_="GetStorageLensGroupRequest"letmake~name=fun~accountId->fun()->{name;accountId}letto_valuex=structure_to_value[("name",(Some(StorageLensGroupName.to_valuex.name)));("x-amz-account-id",(Some(AccountId.to_valuex.accountId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inletname=StorageLensGroupName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inmake~accountId~name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninletname=field_map_exnjson__"Name"StorageLensGroupName.of_jsoninmake~accountId~name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves the Storage Lens group configuration details. To use this operation, you must have the permission to perform the s3:GetStorageLensGroup action. For more information about the required Storage Lens Groups permissions, see Setting account permissions to use S3 Storage Lens groups. For information about Storage Lens groups errors, see List of Amazon S3 Storage Lens error codes."]moduleGetStorageLensConfigurationTaggingResult=structtypenonrect={tags:StorageLensTags.toption[@ocaml.doc"The tags of S3 Storage Lens configuration requested."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?tags=fun()->{tags}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Tags",(Option.mapx.tags~f:StorageLensTags.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:StorageLensTags.of_xml)(Xml.childxml_arg0"Tags")inmake?tags()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"Tags"StorageLensTags.of_jsoninmake?tags()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Gets the tags of Amazon S3 Storage Lens configuration. For more information about S3 Storage Lens, see Assessing your storage activity and usage with Amazon S3 Storage Lens in the Amazon S3 User Guide. To use this action, you must have permission to perform the s3:GetStorageLensConfigurationTagging action. For more information, see Setting permissions to use Amazon S3 Storage Lens in the Amazon S3 User Guide."]moduleGetStorageLensConfigurationTaggingRequest=structtypenonrect={configId:ConfigId.t[@ocaml.doc"The ID of the Amazon S3 Storage Lens configuration."];accountId:AccountId.t[@ocaml.doc"The account ID of the requester."]}letcontext_="GetStorageLensConfigurationTaggingRequest"letmake~configId=fun~accountId->fun()->{configId;accountId}letto_valuex=structure_to_value[("storagelensid",(Some(ConfigId.to_valuex.configId)));("x-amz-account-id",(Some(AccountId.to_valuex.accountId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inletconfigId=ConfigId.of_xml(Xml.child_exn~context:context_xml_arg0"storagelensid")inmake~accountId~configId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninletconfigId=field_map_exnjson__"ConfigId"ConfigId.of_jsoninmake~accountId~configId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Gets the tags of Amazon S3 Storage Lens configuration. For more information about S3 Storage Lens, see Assessing your storage activity and usage with Amazon S3 Storage Lens in the Amazon S3 User Guide. To use this action, you must have permission to perform the s3:GetStorageLensConfigurationTagging action. For more information, see Setting permissions to use Amazon S3 Storage Lens in the Amazon S3 User Guide."]moduleGetStorageLensConfigurationResult=structtypenonrect={storageLensConfiguration:StorageLensConfiguration.toption[@ocaml.doc"The S3 Storage Lens configuration requested."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?storageLensConfiguration=fun()->{storageLensConfiguration}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letof_header_and_body=((fun(xs,pipe)->make?storageLensConfiguration:(Somepipe)())[@warning"-27"])letto_valuex=structure_to_value[("StorageLensConfiguration",(Option.mapx.storageLensConfiguration~f:StorageLensConfiguration.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstorageLensConfiguration=(Option.map~f:StorageLensConfiguration.of_xml)(Xml.childxml_arg0"StorageLensConfiguration")inmake?storageLensConfiguration()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstorageLensConfiguration=field_mapjson__"StorageLensConfiguration"StorageLensConfiguration.of_jsoninmake?storageLensConfiguration()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Gets the Amazon S3 Storage Lens configuration. For more information, see Assessing your storage activity and usage with Amazon S3 Storage Lens in the Amazon S3 User Guide. For a complete list of S3 Storage Lens metrics, see S3 Storage Lens metrics glossary in the Amazon S3 User Guide. To use this action, you must have permission to perform the s3:GetStorageLensConfiguration action. For more information, see Setting permissions to use Amazon S3 Storage Lens in the Amazon S3 User Guide."]moduleGetStorageLensConfigurationRequest=structtypenonrect={configId:ConfigId.t[@ocaml.doc"The ID of the Amazon S3 Storage Lens configuration."];accountId:AccountId.t[@ocaml.doc"The account ID of the requester."]}letcontext_="GetStorageLensConfigurationRequest"letmake~configId=fun~accountId->fun()->{configId;accountId}letto_valuex=structure_to_value[("storagelensid",(Some(ConfigId.to_valuex.configId)));("x-amz-account-id",(Some(AccountId.to_valuex.accountId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inletconfigId=ConfigId.of_xml(Xml.child_exn~context:context_xml_arg0"storagelensid")inmake~accountId~configId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninletconfigId=field_map_exnjson__"ConfigId"ConfigId.of_jsoninmake~accountId~configId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Gets the Amazon S3 Storage Lens configuration. For more information, see Assessing your storage activity and usage with Amazon S3 Storage Lens in the Amazon S3 User Guide. For a complete list of S3 Storage Lens metrics, see S3 Storage Lens metrics glossary in the Amazon S3 User Guide. To use this action, you must have permission to perform the s3:GetStorageLensConfiguration action. For more information, see Setting permissions to use Amazon S3 Storage Lens in the Amazon S3 User Guide."]moduleGetPublicAccessBlockRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The account ID for the Amazon Web Services account whose PublicAccessBlock configuration you want to retrieve."]}letcontext_="GetPublicAccessBlockRequest"letmake~accountId=fun()->{accountId}letof_header_and_body=((fun(xs,pipe)->make~accountId:(AccountId.of_string((List.Assoc.find_exn~equal:String.Caseless.equal)xs"x-amz-account-id"))())[@warning"-27"])letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Retrieves the PublicAccessBlock configuration for an Amazon Web Services account. This operation returns the effective account-level configuration, which may inherit from organization-level policies. For more information, see Using Amazon S3 block public access. Related actions include: DeletePublicAccessBlock PutPublicAccessBlock"]moduleGetPublicAccessBlockOutput=structtypenonrect={publicAccessBlockConfiguration:PublicAccessBlockConfiguration.toption[@ocaml.doc"The PublicAccessBlock configuration currently in effect for this Amazon Web Services account."]}typenonrecerror=[`NoSuchPublicAccessBlockConfigurationofNoSuchPublicAccessBlockConfiguration.t|`Unknown_operation_errorof(string*stringoption)]letmake?publicAccessBlockConfiguration=fun()->{publicAccessBlockConfiguration}leterror_of_jsonnamejson=matchnamewith|"NoSuchPublicAccessBlockConfiguration"->`NoSuchPublicAccessBlockConfiguration(NoSuchPublicAccessBlockConfiguration.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"NoSuchPublicAccessBlockConfiguration"->`NoSuchPublicAccessBlockConfiguration(NoSuchPublicAccessBlockConfiguration.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`NoSuchPublicAccessBlockConfiguratione->`Assoc[("error",(`String"NoSuchPublicAccessBlockConfiguration"));("details",(NoSuchPublicAccessBlockConfiguration.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letof_header_and_body=((fun(xs,pipe)->make?publicAccessBlockConfiguration:(Somepipe)())[@warning"-27"])letto_valuex=structure_to_value[("PublicAccessBlockConfiguration",(Option.mapx.publicAccessBlockConfiguration~f:PublicAccessBlockConfiguration.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letpublicAccessBlockConfiguration=(Option.map~f:PublicAccessBlockConfiguration.of_xml)(Xml.childxml_arg0"PublicAccessBlockConfiguration")inmake?publicAccessBlockConfiguration()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letpublicAccessBlockConfiguration=field_mapjson__"PublicAccessBlockConfiguration"PublicAccessBlockConfiguration.of_jsoninmake?publicAccessBlockConfiguration()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Retrieves the PublicAccessBlock configuration for an Amazon Web Services account. This operation returns the effective account-level configuration, which may inherit from organization-level policies. For more information, see Using Amazon S3 block public access. Related actions include: DeletePublicAccessBlock PutPublicAccessBlock"]moduleGetMultiRegionAccessPointRoutesResult=structtypenonrect={mrap:MultiRegionAccessPointId.toption[@ocaml.doc"The Multi-Region Access Point ARN."];routes:RouteList.toption[@ocaml.doc"The different routes that make up the route configuration. Active routes return a value of 100, and passive routes return a value of 0."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?mrap=fun?routes->fun()->{mrap;routes}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Mrap",(Option.mapx.mrap~f:MultiRegionAccessPointId.to_value));("Routes",(Option.mapx.routes~f:RouteList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letroutes=(Option.map~f:RouteList.of_xml)(Xml.childxml_arg0"Routes")inletmrap=(Option.map~f:MultiRegionAccessPointId.of_xml)(Xml.childxml_arg0"Mrap")inmake?routes?mrap()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letroutes=field_mapjson__"Routes"RouteList.of_jsoninletmrap=field_mapjson__"Mrap"MultiRegionAccessPointId.of_jsoninmake?routes?mrap()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Returns the routing configuration for a Multi-Region Access Point, indicating which Regions are active or passive. To obtain routing control changes and failover requests, use the Amazon S3 failover control infrastructure endpoints in these five Amazon Web Services Regions: us-east-1 us-west-2 ap-southeast-2 ap-northeast-1 eu-west-1"]moduleGetMultiRegionAccessPointRoutesRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID for the owner of the Multi-Region Access Point."];mrap:MultiRegionAccessPointId.t[@ocaml.doc"The Multi-Region Access Point ARN."]}letcontext_="GetMultiRegionAccessPointRoutesRequest"letmake~accountId=fun~mrap->fun()->{accountId;mrap}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("mrap",(Some(MultiRegionAccessPointId.to_valuex.mrap)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmrap=MultiRegionAccessPointId.of_xml(Xml.child_exn~context:context_xml_arg0"mrap")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~mrap~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmrap=field_map_exnjson__"Mrap"MultiRegionAccessPointId.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~mrap~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Returns the routing configuration for a Multi-Region Access Point, indicating which Regions are active or passive. To obtain routing control changes and failover requests, use the Amazon S3 failover control infrastructure endpoints in these five Amazon Web Services Regions: us-east-1 us-west-2 ap-southeast-2 ap-northeast-1 eu-west-1"]moduleGetMultiRegionAccessPointResult=structtypenonrect={accessPoint:MultiRegionAccessPointReport.toption[@ocaml.doc"A container element containing the details of the requested Multi-Region Access Point."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?accessPoint=fun()->{accessPoint}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("AccessPoint",(Option.mapx.accessPoint~f:MultiRegionAccessPointReport.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccessPoint=(Option.map~f:MultiRegionAccessPointReport.of_xml)(Xml.childxml_arg0"AccessPoint")inmake?accessPoint()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccessPoint=field_mapjson__"AccessPoint"MultiRegionAccessPointReport.of_jsoninmake?accessPoint()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Returns configuration information about the specified Multi-Region Access Point. This action will always be routed to the US West (Oregon) Region. For more information about the restrictions around working with Multi-Region Access Points, see Multi-Region Access Point restrictions and limitations in the Amazon S3 User Guide. The following actions are related to GetMultiRegionAccessPoint: CreateMultiRegionAccessPoint DeleteMultiRegionAccessPoint DescribeMultiRegionAccessPointOperation ListMultiRegionAccessPoints"]moduleGetMultiRegionAccessPointRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID for the owner of the Multi-Region Access Point."];name:MultiRegionAccessPointName.t[@ocaml.doc"The name of the Multi-Region Access Point whose configuration information you want to receive. The name of the Multi-Region Access Point is different from the alias. For more information about the distinction between the name and the alias of an Multi-Region Access Point, see Rules for naming Amazon S3 Multi-Region Access Points in the Amazon S3 User Guide."]}letcontext_="GetMultiRegionAccessPointRequest"letmake~accountId=fun~name->fun()->{accountId;name}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(MultiRegionAccessPointName.to_valuex.name)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letname=MultiRegionAccessPointName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~name~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letname=field_map_exnjson__"Name"MultiRegionAccessPointName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~name~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Returns configuration information about the specified Multi-Region Access Point. This action will always be routed to the US West (Oregon) Region. For more information about the restrictions around working with Multi-Region Access Points, see Multi-Region Access Point restrictions and limitations in the Amazon S3 User Guide. The following actions are related to GetMultiRegionAccessPoint: CreateMultiRegionAccessPoint DeleteMultiRegionAccessPoint DescribeMultiRegionAccessPointOperation ListMultiRegionAccessPoints"]moduleGetMultiRegionAccessPointPolicyStatusResult=structtypenonrect={established:PolicyStatus.toption}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?established=fun()->{established}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Established",(Option.mapx.established~f:PolicyStatus.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letestablished=(Option.map~f:PolicyStatus.of_xml)(Xml.childxml_arg0"Established")inmake?established()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letestablished=field_mapjson__"Established"PolicyStatus.of_jsoninmake?established()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Indicates whether the specified Multi-Region Access Point has an access control policy that allows public access. This action will always be routed to the US West (Oregon) Region. For more information about the restrictions around working with Multi-Region Access Points, see Multi-Region Access Point restrictions and limitations in the Amazon S3 User Guide. The following actions are related to GetMultiRegionAccessPointPolicyStatus: GetMultiRegionAccessPointPolicy PutMultiRegionAccessPointPolicy"]moduleGetMultiRegionAccessPointPolicyStatusRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID for the owner of the Multi-Region Access Point."];name:MultiRegionAccessPointName.t[@ocaml.doc"Specifies the Multi-Region Access Point. The name of the Multi-Region Access Point is different from the alias. For more information about the distinction between the name and the alias of an Multi-Region Access Point, see Rules for naming Amazon S3 Multi-Region Access Points in the Amazon S3 User Guide."]}letcontext_="GetMultiRegionAccessPointPolicyStatusRequest"letmake~accountId=fun~name->fun()->{accountId;name}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(MultiRegionAccessPointName.to_valuex.name)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letname=MultiRegionAccessPointName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~name~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letname=field_map_exnjson__"Name"MultiRegionAccessPointName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~name~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Indicates whether the specified Multi-Region Access Point has an access control policy that allows public access. This action will always be routed to the US West (Oregon) Region. For more information about the restrictions around working with Multi-Region Access Points, see Multi-Region Access Point restrictions and limitations in the Amazon S3 User Guide. The following actions are related to GetMultiRegionAccessPointPolicyStatus: GetMultiRegionAccessPointPolicy PutMultiRegionAccessPointPolicy"]moduleGetMultiRegionAccessPointPolicyResult=structtypenonrect={policy:MultiRegionAccessPointPolicyDocument.toption[@ocaml.doc"The policy associated with the specified Multi-Region Access Point."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?policy=fun()->{policy}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Policy",(Option.mapx.policy~f:MultiRegionAccessPointPolicyDocument.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letpolicy=(Option.map~f:MultiRegionAccessPointPolicyDocument.of_xml)(Xml.childxml_arg0"Policy")inmake?policy()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letpolicy=field_mapjson__"Policy"MultiRegionAccessPointPolicyDocument.of_jsoninmake?policy()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Returns the access control policy of the specified Multi-Region Access Point. This action will always be routed to the US West (Oregon) Region. For more information about the restrictions around working with Multi-Region Access Points, see Multi-Region Access Point restrictions and limitations in the Amazon S3 User Guide. The following actions are related to GetMultiRegionAccessPointPolicy: GetMultiRegionAccessPointPolicyStatus PutMultiRegionAccessPointPolicy"]moduleGetMultiRegionAccessPointPolicyRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID for the owner of the Multi-Region Access Point."];name:MultiRegionAccessPointName.t[@ocaml.doc"Specifies the Multi-Region Access Point. The name of the Multi-Region Access Point is different from the alias. For more information about the distinction between the name and the alias of an Multi-Region Access Point, see Rules for naming Amazon S3 Multi-Region Access Points in the Amazon S3 User Guide."]}letcontext_="GetMultiRegionAccessPointPolicyRequest"letmake~accountId=fun~name->fun()->{accountId;name}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(MultiRegionAccessPointName.to_valuex.name)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letname=MultiRegionAccessPointName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~name~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letname=field_map_exnjson__"Name"MultiRegionAccessPointName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~name~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Returns the access control policy of the specified Multi-Region Access Point. This action will always be routed to the US West (Oregon) Region. For more information about the restrictions around working with Multi-Region Access Points, see Multi-Region Access Point restrictions and limitations in the Amazon S3 User Guide. The following actions are related to GetMultiRegionAccessPointPolicy: GetMultiRegionAccessPointPolicyStatus PutMultiRegionAccessPointPolicy"]moduleGetJobTaggingResult=structtypenonrect={tags:S3TagSet.toption[@ocaml.doc"The set of tags associated with the S3 Batch Operations job."]}typenonrecerror=[`InternalServiceExceptionofInternalServiceException.t|`NotFoundExceptionofNotFoundException.t|`TooManyRequestsExceptionofTooManyRequestsException.t|`Unknown_operation_errorof(string*stringoption)]letmake?tags=fun()->{tags}leterror_of_jsonnamejson=matchnamewith|"InternalServiceException"->`InternalServiceException(InternalServiceException.of_jsonjson)|"NotFoundException"->`NotFoundException(NotFoundException.of_jsonjson)|"TooManyRequestsException"->`TooManyRequestsException(TooManyRequestsException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"InternalServiceException"->`InternalServiceException(InternalServiceException.of_xmlxml)|"NotFoundException"->`NotFoundException(NotFoundException.of_xmlxml)|"TooManyRequestsException"->`TooManyRequestsException(TooManyRequestsException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`InternalServiceExceptione->`Assoc[("error",(`String"InternalServiceException"));("details",(InternalServiceException.to_jsone))]|`NotFoundExceptione->`Assoc[("error",(`String"NotFoundException"));("details",(NotFoundException.to_jsone))]|`TooManyRequestsExceptione->`Assoc[("error",(`String"TooManyRequestsException"));("details",(TooManyRequestsException.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:S3TagSet.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:S3TagSet.of_xml)(Xml.childxml_arg0"Tags")inmake?tags()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"Tags"S3TagSet.of_jsoninmake?tags()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns the tags on an S3 Batch Operations job. Permissions To use the GetJobTagging operation, you must have permission to perform the s3:GetJobTagging action. For more information, see Controlling access and labeling jobs using tags in the Amazon S3 User Guide. Related actions include: CreateJob PutJobTagging DeleteJobTagging"]moduleGetJobTaggingRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID associated with the S3 Batch Operations job."];jobId:JobId.t[@ocaml.doc"The ID for the S3 Batch Operations job whose tags you want to retrieve."]}letcontext_="GetJobTaggingRequest"letmake~accountId=fun~jobId->fun()->{accountId;jobId}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("id",(Some(JobId.to_valuex.jobId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letjobId=JobId.of_xml(Xml.child_exn~context:context_xml_arg0"id")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~jobId~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letjobId=field_map_exnjson__"JobId"JobId.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~jobId~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns the tags on an S3 Batch Operations job. Permissions To use the GetJobTagging operation, you must have permission to perform the s3:GetJobTagging action. For more information, see Controlling access and labeling jobs using tags in the Amazon S3 User Guide. Related actions include: CreateJob PutJobTagging DeleteJobTagging"]moduleGetDataAccessResult=structtypenonrect={credentials:Credentials.toption[@ocaml.doc"The temporary credential token that S3 Access Grants vends."];matchedGrantTarget:S3Prefix.toption[@ocaml.doc"The S3 URI path of the data to which you are being granted temporary access credentials."];grantee:Grantee.toption[@ocaml.doc"The user, group, or role that was granted access to the S3 location scope. For directory identities, this API also returns the grants of the IAM role used for the identity-aware request. For more information on identity-aware sessions, see Granting permissions to use identity-aware console sessions."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?credentials=fun?matchedGrantTarget->fun?grantee->fun()->{credentials;matchedGrantTarget;grantee}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Credentials",(Option.mapx.credentials~f:Credentials.to_value));("MatchedGrantTarget",(Option.mapx.matchedGrantTarget~f:S3Prefix.to_value));("Grantee",(Option.mapx.grantee~f:Grantee.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letgrantee=(Option.map~f:Grantee.of_xml)(Xml.childxml_arg0"Grantee")inletmatchedGrantTarget=(Option.map~f:S3Prefix.of_xml)(Xml.childxml_arg0"MatchedGrantTarget")inletcredentials=(Option.map~f:Credentials.of_xml)(Xml.childxml_arg0"Credentials")inmake?grantee?matchedGrantTarget?credentials()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letgrantee=field_mapjson__"Grantee"Grantee.of_jsoninletmatchedGrantTarget=field_mapjson__"MatchedGrantTarget"S3Prefix.of_jsoninletcredentials=field_mapjson__"Credentials"Credentials.of_jsoninmake?grantee?matchedGrantTarget?credentials()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns a temporary access credential from S3 Access Grants to the grantee or client application. The temporary credential is an Amazon Web Services STS token that grants them access to the S3 data. Permissions You must have the s3:GetDataAccess permission to use this operation. Additional Permissions The IAM role that S3 Access Grants assumes must have the following permissions specified in the trust policy when registering the location: sts:AssumeRole, for directory users or groups sts:SetContext, and for IAM users or roles sts:SetSourceIdentity."]moduleGetDataAccessRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the S3 Access Grants instance."];target:S3Prefix.t[@ocaml.doc"The S3 URI path of the data to which you are requesting temporary access credentials. If the requesting account has an access grant for this data, S3 Access Grants vends temporary access credentials in the response."];permission:Permission.t[@ocaml.doc"The type of permission granted to your S3 data, which can be set to one of the following values: READ \226\128\147 Grant read-only access to the S3 data. WRITE \226\128\147 Grant write-only access to the S3 data. READWRITE \226\128\147 Grant both read and write access to the S3 data."];durationSeconds:DurationSeconds.toption[@ocaml.doc"The session duration, in seconds, of the temporary access credential that S3 Access Grants vends to the grantee or client application. The default value is 1 hour, but the grantee can specify a range from 900 seconds (15 minutes) up to 43200 seconds (12 hours). If the grantee requests a value higher than this maximum, the operation fails."];privilege:Privilege.toption[@ocaml.doc"The scope of the temporary access credential that S3 Access Grants vends to the grantee or client application. Default \226\128\147 The scope of the returned temporary access token is the scope of the grant that is closest to the target scope. Minimal \226\128\147 The scope of the returned temporary access token is the same as the requested target scope as long as the requested scope is the same as or a subset of the grant scope."];targetType:S3PrefixType.toption[@ocaml.doc"The type of Target. The only possible value is Object. Pass this value if the target data that you would like to access is a path to an object. Do not pass this value if the target data is a bucket or a bucket and a prefix."];auditContext:AuditContext.toption[@ocaml.doc"The context to identify the job or query associated with the credential request. This information will be displayed in CloudTrail log in your account."]}letcontext_="GetDataAccessRequest"letmake?durationSeconds=fun?privilege->fun?targetType->fun?auditContext->fun~accountId->fun~target->fun~permission->fun()->{durationSeconds;privilege;targetType;auditContext;accountId;target;permission}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("target",(Some(S3Prefix.to_valuex.target)));("permission",(Some(Permission.to_valuex.permission)));("durationSeconds",(Option.mapx.durationSeconds~f:DurationSeconds.to_value));("privilege",(Option.mapx.privilege~f:Privilege.to_value));("targetType",(Option.mapx.targetType~f:S3PrefixType.to_value));("auditContext",(Option.mapx.auditContext~f:AuditContext.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letauditContext=(Option.map~f:AuditContext.of_xml)(Xml.childxml_arg0"auditContext")inlettargetType=(Option.map~f:S3PrefixType.of_xml)(Xml.childxml_arg0"targetType")inletprivilege=(Option.map~f:Privilege.of_xml)(Xml.childxml_arg0"privilege")inletdurationSeconds=(Option.map~f:DurationSeconds.of_xml)(Xml.childxml_arg0"durationSeconds")inletpermission=Permission.of_xml(Xml.child_exn~context:context_xml_arg0"permission")inlettarget=S3Prefix.of_xml(Xml.child_exn~context:context_xml_arg0"target")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake?auditContext?targetType?privilege?durationSeconds~permission~target~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letauditContext=field_mapjson__"AuditContext"AuditContext.of_jsoninlettargetType=field_mapjson__"TargetType"S3PrefixType.of_jsoninletprivilege=field_mapjson__"Privilege"Privilege.of_jsoninletdurationSeconds=field_mapjson__"DurationSeconds"DurationSeconds.of_jsoninletpermission=field_map_exnjson__"Permission"Permission.of_jsoninlettarget=field_map_exnjson__"Target"S3Prefix.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake?auditContext?targetType?privilege?durationSeconds~permission~target~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns a temporary access credential from S3 Access Grants to the grantee or client application. The temporary credential is an Amazon Web Services STS token that grants them access to the S3 data. Permissions You must have the s3:GetDataAccess permission to use this operation. Additional Permissions The IAM role that S3 Access Grants assumes must have the following permissions specified in the trust policy when registering the location: sts:AssumeRole, for directory users or groups sts:SetContext, and for IAM users or roles sts:SetSourceIdentity."]moduleGetBucketVersioningResult=structtypenonrect={status:BucketVersioningStatus.toption[@ocaml.doc"The versioning state of the S3 on Outposts bucket."];mFADelete:MFADeleteStatus.toption[@ocaml.doc"Specifies whether MFA delete is enabled in the bucket versioning configuration. This element is returned only if the bucket has been configured with MFA delete. If MFA delete has never been configured for the bucket, this element is not returned."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?status=fun?mFADelete->fun()->{status;mFADelete}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Status",(Option.mapx.status~f:BucketVersioningStatus.to_value));("MfaDelete",(Option.mapx.mFADelete~f:MFADeleteStatus.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmFADelete=(Option.map~f:MFADeleteStatus.of_xml)(Xml.childxml_arg0"MfaDelete")inletstatus=(Option.map~f:BucketVersioningStatus.of_xml)(Xml.childxml_arg0"Status")inmake?mFADelete?status()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmFADelete=field_mapjson__"MFADelete"MFADeleteStatus.of_jsoninletstatus=field_mapjson__"Status"BucketVersioningStatus.of_jsoninmake?mFADelete?status()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation returns the versioning state for S3 on Outposts buckets only. To return the versioning state for an S3 bucket, see GetBucketVersioning in the Amazon S3 API Reference. Returns the versioning state for an S3 on Outposts bucket. With S3 Versioning, you can save multiple distinct copies of your objects and recover from unintended user actions and application failures. If you've never set versioning on your bucket, it has no versioning state. In that case, the GetBucketVersioning request does not return a versioning state value. For more information about versioning, see Versioning in the Amazon S3 User Guide. All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section. The following operations are related to GetBucketVersioning for S3 on Outposts. PutBucketVersioning PutBucketLifecycleConfiguration GetBucketLifecycleConfiguration"]moduleGetBucketVersioningRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the S3 on Outposts bucket."];bucket:BucketName.t[@ocaml.doc"The S3 on Outposts bucket to return the versioning state for."]}letcontext_="GetBucketVersioningRequest"letmake~accountId=fun~bucket->fun()->{accountId;bucket}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(BucketName.to_valuex.bucket)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letbucket=BucketName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~bucket~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letbucket=field_map_exnjson__"Bucket"BucketName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~bucket~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation returns the versioning state for S3 on Outposts buckets only. To return the versioning state for an S3 bucket, see GetBucketVersioning in the Amazon S3 API Reference. Returns the versioning state for an S3 on Outposts bucket. With S3 Versioning, you can save multiple distinct copies of your objects and recover from unintended user actions and application failures. If you've never set versioning on your bucket, it has no versioning state. In that case, the GetBucketVersioning request does not return a versioning state value. For more information about versioning, see Versioning in the Amazon S3 User Guide. All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section. The following operations are related to GetBucketVersioning for S3 on Outposts. PutBucketVersioning PutBucketLifecycleConfiguration GetBucketLifecycleConfiguration"]moduleGetBucketTaggingResult=structtypenonrect={tagSet:S3TagSet.toption[@ocaml.doc"The tags set of the Outposts bucket."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?tagSet=fun()->{tagSet}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("TagSet",(Option.mapx.tagSet~f:S3TagSet.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettagSet=(Option.map~f:S3TagSet.of_xml)(Xml.childxml_arg0"TagSet")inmake?tagSet()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettagSet=field_mapjson__"TagSet"S3TagSet.of_jsoninmake?tagSet()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This action gets an Amazon S3 on Outposts bucket's tags. To get an S3 bucket tags, see GetBucketTagging in the Amazon S3 API Reference. Returns the tag set associated with the Outposts bucket. For more information, see Using Amazon S3 on Outposts in the Amazon S3 User Guide. To use this action, you must have permission to perform the GetBucketTagging action. By default, the bucket owner has this permission and can grant this permission to others. GetBucketTagging has the following special error: Error code: NoSuchTagSetError Description: There is no tag set associated with the bucket. All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section. The following actions are related to GetBucketTagging: PutBucketTagging DeleteBucketTagging"]moduleGetBucketTaggingRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the Outposts bucket."];bucket:BucketName.t[@ocaml.doc"Specifies the bucket. For using this parameter with Amazon S3 on Outposts with the REST API, you must specify the name and the x-amz-outpost-id as well. For using this parameter with S3 on Outposts with the Amazon Web Services SDK and CLI, you must specify the ARN of the bucket accessed in the format arn:aws:s3-outposts:<Region>:<account-id>:outpost/<outpost-id>/bucket/<my-bucket-name>. For example, to access the bucket reports through Outpost my-outpost owned by account 123456789012 in Region us-west-2, use the URL encoding of arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/bucket/reports. The value must be URL encoded."]}letcontext_="GetBucketTaggingRequest"letmake~accountId=fun~bucket->fun()->{accountId;bucket}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(BucketName.to_valuex.bucket)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letbucket=BucketName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~bucket~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letbucket=field_map_exnjson__"Bucket"BucketName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~bucket~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This action gets an Amazon S3 on Outposts bucket's tags. To get an S3 bucket tags, see GetBucketTagging in the Amazon S3 API Reference. Returns the tag set associated with the Outposts bucket. For more information, see Using Amazon S3 on Outposts in the Amazon S3 User Guide. To use this action, you must have permission to perform the GetBucketTagging action. By default, the bucket owner has this permission and can grant this permission to others. GetBucketTagging has the following special error: Error code: NoSuchTagSetError Description: There is no tag set associated with the bucket. All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section. The following actions are related to GetBucketTagging: PutBucketTagging DeleteBucketTagging"]moduleGetBucketResult=structtypenonrect={bucket:BucketName.toption[@ocaml.doc"The Outposts bucket requested."];publicAccessBlockEnabled:PublicAccessBlockEnabled.toption;creationDate:CreationDate.toption[@ocaml.doc"The creation date of the Outposts bucket."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?bucket=fun?publicAccessBlockEnabled->fun?creationDate->fun()->{bucket;publicAccessBlockEnabled;creationDate}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Bucket",(Option.mapx.bucket~f:BucketName.to_value));("PublicAccessBlockEnabled",(Option.mapx.publicAccessBlockEnabled~f:PublicAccessBlockEnabled.to_value));("CreationDate",(Option.mapx.creationDate~f:CreationDate.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcreationDate=(Option.map~f:CreationDate.of_xml)(Xml.childxml_arg0"CreationDate")inletpublicAccessBlockEnabled=(Option.map~f:PublicAccessBlockEnabled.of_xml)(Xml.childxml_arg0"PublicAccessBlockEnabled")inletbucket=(Option.map~f:BucketName.of_xml)(Xml.childxml_arg0"Bucket")inmake?creationDate?publicAccessBlockEnabled?bucket()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcreationDate=field_mapjson__"CreationDate"CreationDate.of_jsoninletpublicAccessBlockEnabled=field_mapjson__"PublicAccessBlockEnabled"PublicAccessBlockEnabled.of_jsoninletbucket=field_mapjson__"Bucket"BucketName.of_jsoninmake?creationDate?publicAccessBlockEnabled?bucket()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Gets an Amazon S3 on Outposts bucket. For more information, see Using Amazon S3 on Outposts in the Amazon S3 User Guide. If you are using an identity other than the root user of the Amazon Web Services account that owns the Outposts bucket, the calling identity must have the s3-outposts:GetBucket permissions on the specified Outposts bucket and belong to the Outposts bucket owner's account in order to use this action. Only users from Outposts bucket owner account with the right permissions can perform actions on an Outposts bucket. If you don't have s3-outposts:GetBucket permissions or you're not using an identity that belongs to the bucket owner's account, Amazon S3 returns a 403 Access Denied error. The following actions are related to GetBucket for Amazon S3 on Outposts: All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section. PutObject CreateBucket DeleteBucket"]moduleGetBucketRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the Outposts bucket."];bucket:BucketName.t[@ocaml.doc"Specifies the bucket. For using this parameter with Amazon S3 on Outposts with the REST API, you must specify the name and the x-amz-outpost-id as well. For using this parameter with S3 on Outposts with the Amazon Web Services SDK and CLI, you must specify the ARN of the bucket accessed in the format arn:aws:s3-outposts:<Region>:<account-id>:outpost/<outpost-id>/bucket/<my-bucket-name>. For example, to access the bucket reports through Outpost my-outpost owned by account 123456789012 in Region us-west-2, use the URL encoding of arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/bucket/reports. The value must be URL encoded."]}letcontext_="GetBucketRequest"letmake~accountId=fun~bucket->fun()->{accountId;bucket}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(BucketName.to_valuex.bucket)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letbucket=BucketName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~bucket~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letbucket=field_map_exnjson__"Bucket"BucketName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~bucket~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Gets an Amazon S3 on Outposts bucket. For more information, see Using Amazon S3 on Outposts in the Amazon S3 User Guide. If you are using an identity other than the root user of the Amazon Web Services account that owns the Outposts bucket, the calling identity must have the s3-outposts:GetBucket permissions on the specified Outposts bucket and belong to the Outposts bucket owner's account in order to use this action. Only users from Outposts bucket owner account with the right permissions can perform actions on an Outposts bucket. If you don't have s3-outposts:GetBucket permissions or you're not using an identity that belongs to the bucket owner's account, Amazon S3 returns a 403 Access Denied error. The following actions are related to GetBucket for Amazon S3 on Outposts: All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section. PutObject CreateBucket DeleteBucket"]moduleGetBucketReplicationResult=structtypenonrect={replicationConfiguration:ReplicationConfiguration.toption[@ocaml.doc"A container for one or more replication rules. A replication configuration must have at least one rule and you can add up to 100 rules. The maximum size of a replication configuration is 128 KB."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?replicationConfiguration=fun()->{replicationConfiguration}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("ReplicationConfiguration",(Option.mapx.replicationConfiguration~f:ReplicationConfiguration.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letreplicationConfiguration=(Option.map~f:ReplicationConfiguration.of_xml)(Xml.childxml_arg0"ReplicationConfiguration")inmake?replicationConfiguration()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letreplicationConfiguration=field_mapjson__"ReplicationConfiguration"ReplicationConfiguration.of_jsoninmake?replicationConfiguration()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation gets an Amazon S3 on Outposts bucket's replication configuration. To get an S3 bucket's replication configuration, see GetBucketReplication in the Amazon S3 API Reference. Returns the replication configuration of an S3 on Outposts bucket. For more information about S3 on Outposts, see Using Amazon S3 on Outposts in the Amazon S3 User Guide. For information about S3 replication on Outposts configuration, see Replicating objects for S3 on Outposts in the Amazon S3 User Guide. It can take a while to propagate PUT or DELETE requests for a replication configuration to all S3 on Outposts systems. Therefore, the replication configuration that's returned by a GET request soon after a PUT or DELETE request might return a more recent result than what's on the Outpost. If an Outpost is offline, the delay in updating the replication configuration on that Outpost can be significant. This action requires permissions for the s3-outposts:GetReplicationConfiguration action. The Outposts bucket owner has this permission by default and can grant it to others. For more information about permissions, see Setting up IAM with S3 on Outposts and Managing access to S3 on Outposts bucket in the Amazon S3 User Guide. All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section. If you include the Filter element in a replication configuration, you must also include the DeleteMarkerReplication, Status, and Priority elements. The response also returns those elements. For information about S3 on Outposts replication failure reasons, see Replication failure reasons in the Amazon S3 User Guide. The following operations are related to GetBucketReplication: PutBucketReplication DeleteBucketReplication"]moduleGetBucketReplicationRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the Outposts bucket."];bucket:BucketName.t[@ocaml.doc"Specifies the bucket to get the replication information for. For using this parameter with Amazon S3 on Outposts with the REST API, you must specify the name and the x-amz-outpost-id as well. For using this parameter with S3 on Outposts with the Amazon Web Services SDK and CLI, you must specify the ARN of the bucket accessed in the format arn:aws:s3-outposts:<Region>:<account-id>:outpost/<outpost-id>/bucket/<my-bucket-name>. For example, to access the bucket reports through Outpost my-outpost owned by account 123456789012 in Region us-west-2, use the URL encoding of arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/bucket/reports. The value must be URL encoded."]}letcontext_="GetBucketReplicationRequest"letmake~accountId=fun~bucket->fun()->{accountId;bucket}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(BucketName.to_valuex.bucket)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letbucket=BucketName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~bucket~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letbucket=field_map_exnjson__"Bucket"BucketName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~bucket~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation gets an Amazon S3 on Outposts bucket's replication configuration. To get an S3 bucket's replication configuration, see GetBucketReplication in the Amazon S3 API Reference. Returns the replication configuration of an S3 on Outposts bucket. For more information about S3 on Outposts, see Using Amazon S3 on Outposts in the Amazon S3 User Guide. For information about S3 replication on Outposts configuration, see Replicating objects for S3 on Outposts in the Amazon S3 User Guide. It can take a while to propagate PUT or DELETE requests for a replication configuration to all S3 on Outposts systems. Therefore, the replication configuration that's returned by a GET request soon after a PUT or DELETE request might return a more recent result than what's on the Outpost. If an Outpost is offline, the delay in updating the replication configuration on that Outpost can be significant. This action requires permissions for the s3-outposts:GetReplicationConfiguration action. The Outposts bucket owner has this permission by default and can grant it to others. For more information about permissions, see Setting up IAM with S3 on Outposts and Managing access to S3 on Outposts bucket in the Amazon S3 User Guide. All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section. If you include the Filter element in a replication configuration, you must also include the DeleteMarkerReplication, Status, and Priority elements. The response also returns those elements. For information about S3 on Outposts replication failure reasons, see Replication failure reasons in the Amazon S3 User Guide. The following operations are related to GetBucketReplication: PutBucketReplication DeleteBucketReplication"]moduleGetBucketPolicyResult=structtypenonrect={policy:Policy.toption[@ocaml.doc"The policy of the Outposts bucket."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?policy=fun()->{policy}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Policy",(Option.mapx.policy~f:Policy.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letpolicy=(Option.map~f:Policy.of_xml)(Xml.childxml_arg0"Policy")inmake?policy()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letpolicy=field_mapjson__"Policy"Policy.of_jsoninmake?policy()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This action gets a bucket policy for an Amazon S3 on Outposts bucket. To get a policy for an S3 bucket, see GetBucketPolicy in the Amazon S3 API Reference. Returns the policy of a specified Outposts bucket. For more information, see Using Amazon S3 on Outposts in the Amazon S3 User Guide. If you are using an identity other than the root user of the Amazon Web Services account that owns the bucket, the calling identity must have the GetBucketPolicy permissions on the specified bucket and belong to the bucket owner's account in order to use this action. Only users from Outposts bucket owner account with the right permissions can perform actions on an Outposts bucket. If you don't have s3-outposts:GetBucketPolicy permissions or you're not using an identity that belongs to the bucket owner's account, Amazon S3 returns a 403 Access Denied error. As a security precaution, the root user of the Amazon Web Services account that owns a bucket can always use this action, even if the policy explicitly denies the root user the ability to perform this action. For more information about bucket policies, see Using Bucket Policies and User Policies. All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section. The following actions are related to GetBucketPolicy: GetObject PutBucketPolicy DeleteBucketPolicy"]moduleGetBucketPolicyRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the Outposts bucket."];bucket:BucketName.t[@ocaml.doc"Specifies the bucket. For using this parameter with Amazon S3 on Outposts with the REST API, you must specify the name and the x-amz-outpost-id as well. For using this parameter with S3 on Outposts with the Amazon Web Services SDK and CLI, you must specify the ARN of the bucket accessed in the format arn:aws:s3-outposts:<Region>:<account-id>:outpost/<outpost-id>/bucket/<my-bucket-name>. For example, to access the bucket reports through Outpost my-outpost owned by account 123456789012 in Region us-west-2, use the URL encoding of arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/bucket/reports. The value must be URL encoded."]}letcontext_="GetBucketPolicyRequest"letmake~accountId=fun~bucket->fun()->{accountId;bucket}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(BucketName.to_valuex.bucket)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letbucket=BucketName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~bucket~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letbucket=field_map_exnjson__"Bucket"BucketName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~bucket~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This action gets a bucket policy for an Amazon S3 on Outposts bucket. To get a policy for an S3 bucket, see GetBucketPolicy in the Amazon S3 API Reference. Returns the policy of a specified Outposts bucket. For more information, see Using Amazon S3 on Outposts in the Amazon S3 User Guide. If you are using an identity other than the root user of the Amazon Web Services account that owns the bucket, the calling identity must have the GetBucketPolicy permissions on the specified bucket and belong to the bucket owner's account in order to use this action. Only users from Outposts bucket owner account with the right permissions can perform actions on an Outposts bucket. If you don't have s3-outposts:GetBucketPolicy permissions or you're not using an identity that belongs to the bucket owner's account, Amazon S3 returns a 403 Access Denied error. As a security precaution, the root user of the Amazon Web Services account that owns a bucket can always use this action, even if the policy explicitly denies the root user the ability to perform this action. For more information about bucket policies, see Using Bucket Policies and User Policies. All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section. The following actions are related to GetBucketPolicy: GetObject PutBucketPolicy DeleteBucketPolicy"]moduleGetBucketLifecycleConfigurationResult=structtypenonrect={rules:LifecycleRules.toption[@ocaml.doc"Container for the lifecycle rule of the Outposts bucket."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?rules=fun()->{rules}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Rules",(Option.mapx.rules~f:LifecycleRules.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letrules=(Option.map~f:LifecycleRules.of_xml)(Xml.childxml_arg0"Rules")inmake?rules()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letrules=field_mapjson__"Rules"LifecycleRules.of_jsoninmake?rules()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This action gets an Amazon S3 on Outposts bucket's lifecycle configuration. To get an S3 bucket's lifecycle configuration, see GetBucketLifecycleConfiguration in the Amazon S3 API Reference. Returns the lifecycle configuration information set on the Outposts bucket. For more information, see Using Amazon S3 on Outposts and for information about lifecycle configuration, see Object Lifecycle Management in Amazon S3 User Guide. To use this action, you must have permission to perform the s3-outposts:GetLifecycleConfiguration action. The Outposts bucket owner has this permission, by default. The bucket owner can grant this permission to others. For more information about permissions, see Permissions Related to Bucket Subresource Operations and Managing Access Permissions to Your Amazon S3 Resources. All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section. GetBucketLifecycleConfiguration has the following special error: Error code: NoSuchLifecycleConfiguration Description: The lifecycle configuration does not exist. HTTP Status Code: 404 Not Found SOAP Fault Code Prefix: Client The following actions are related to GetBucketLifecycleConfiguration: PutBucketLifecycleConfiguration DeleteBucketLifecycleConfiguration"]moduleGetBucketLifecycleConfigurationRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the Outposts bucket."];bucket:BucketName.t[@ocaml.doc"The Amazon Resource Name (ARN) of the bucket. For using this parameter with Amazon S3 on Outposts with the REST API, you must specify the name and the x-amz-outpost-id as well. For using this parameter with S3 on Outposts with the Amazon Web Services SDK and CLI, you must specify the ARN of the bucket accessed in the format arn:aws:s3-outposts:<Region>:<account-id>:outpost/<outpost-id>/bucket/<my-bucket-name>. For example, to access the bucket reports through Outpost my-outpost owned by account 123456789012 in Region us-west-2, use the URL encoding of arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/bucket/reports. The value must be URL encoded."]}letcontext_="GetBucketLifecycleConfigurationRequest"letmake~accountId=fun~bucket->fun()->{accountId;bucket}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(BucketName.to_valuex.bucket)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letbucket=BucketName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~bucket~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letbucket=field_map_exnjson__"Bucket"BucketName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~bucket~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This action gets an Amazon S3 on Outposts bucket's lifecycle configuration. To get an S3 bucket's lifecycle configuration, see GetBucketLifecycleConfiguration in the Amazon S3 API Reference. Returns the lifecycle configuration information set on the Outposts bucket. For more information, see Using Amazon S3 on Outposts and for information about lifecycle configuration, see Object Lifecycle Management in Amazon S3 User Guide. To use this action, you must have permission to perform the s3-outposts:GetLifecycleConfiguration action. The Outposts bucket owner has this permission, by default. The bucket owner can grant this permission to others. For more information about permissions, see Permissions Related to Bucket Subresource Operations and Managing Access Permissions to Your Amazon S3 Resources. All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section. GetBucketLifecycleConfiguration has the following special error: Error code: NoSuchLifecycleConfiguration Description: The lifecycle configuration does not exist. HTTP Status Code: 404 Not Found SOAP Fault Code Prefix: Client The following actions are related to GetBucketLifecycleConfiguration: PutBucketLifecycleConfiguration DeleteBucketLifecycleConfiguration"]moduleGetAccessPointScopeResult=structtypenonrect={scope:Scope.toption[@ocaml.doc"The contents of the access point scope."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?scope=fun()->{scope}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Scope",(Option.mapx.scope~f:Scope.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letscope=(Option.map~f:Scope.of_xml)(Xml.childxml_arg0"Scope")inmake?scope()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letscope=field_mapjson__"Scope"Scope.of_jsoninmake?scope()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns the access point scope for a directory bucket. To use this operation, you must have the permission to perform the s3express:GetAccessPointScope action. For information about REST API errors, see REST error responses."]moduleGetAccessPointScopeRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID that owns the access point with the scope that you want to retrieve."];name:AccessPointName.t[@ocaml.doc"The name of the access point with the scope you want to retrieve."]}letcontext_="GetAccessPointScopeRequest"letmake~accountId=fun~name->fun()->{accountId;name}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(AccessPointName.to_valuex.name)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letname=AccessPointName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~name~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letname=field_map_exnjson__"Name"AccessPointName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~name~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns the access point scope for a directory bucket. To use this operation, you must have the permission to perform the s3express:GetAccessPointScope action. For information about REST API errors, see REST error responses."]moduleGetAccessPointResult=structtypenonrect={name:AccessPointName.toption[@ocaml.doc"The name of the specified access point."];bucket:AccessPointBucketName.toption[@ocaml.doc"The name of the bucket associated with the specified access point."];networkOrigin:NetworkOrigin.toption[@ocaml.doc"Indicates whether this access point allows access from the public internet. If VpcConfiguration is specified for this access point, then NetworkOrigin is VPC, and the access point doesn't allow access from the public internet. Otherwise, NetworkOrigin is Internet, and the access point allows access from the public internet, subject to the access point and bucket access policies. This will always be true for an Amazon S3 on Outposts access point"];vpcConfiguration:VpcConfiguration.toption[@ocaml.doc"Contains the virtual private cloud (VPC) configuration for the specified access point. This element is empty if this access point is an Amazon S3 on Outposts access point that is used by other Amazon Web Services services."];publicAccessBlockConfiguration:PublicAccessBlockConfiguration.toption;creationDate:CreationDate.toption[@ocaml.doc"The date and time when the specified access point was created."];alias:Alias.toption[@ocaml.doc"The name or alias of the access point."];accessPointArn:S3AccessPointArn.toption[@ocaml.doc"The ARN of the access point."];endpoints:Endpoints.toption[@ocaml.doc"The VPC endpoint for the access point."];bucketAccountId:AccountId.toption[@ocaml.doc"The Amazon Web Services account ID associated with the S3 bucket associated with this access point."];dataSourceId:DataSourceId.toption[@ocaml.doc"The unique identifier for the data source of the access point."];dataSourceType:DataSourceType.toption[@ocaml.doc"The type of the data source that the access point is attached to."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?name=fun?bucket->fun?networkOrigin->fun?vpcConfiguration->fun?publicAccessBlockConfiguration->fun?creationDate->fun?alias->fun?accessPointArn->fun?endpoints->fun?bucketAccountId->fun?dataSourceId->fun?dataSourceType->fun()->{name;bucket;networkOrigin;vpcConfiguration;publicAccessBlockConfiguration;creationDate;alias;accessPointArn;endpoints;bucketAccountId;dataSourceId;dataSourceType}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Name",(Option.mapx.name~f:AccessPointName.to_value));("Bucket",(Option.mapx.bucket~f:AccessPointBucketName.to_value));("NetworkOrigin",(Option.mapx.networkOrigin~f:NetworkOrigin.to_value));("VpcConfiguration",(Option.mapx.vpcConfiguration~f:VpcConfiguration.to_value));("PublicAccessBlockConfiguration",(Option.mapx.publicAccessBlockConfiguration~f:PublicAccessBlockConfiguration.to_value));("CreationDate",(Option.mapx.creationDate~f:CreationDate.to_value));("Alias",(Option.mapx.alias~f:Alias.to_value));("AccessPointArn",(Option.mapx.accessPointArn~f:S3AccessPointArn.to_value));("Endpoints",(Option.mapx.endpoints~f:Endpoints.to_value));("BucketAccountId",(Option.mapx.bucketAccountId~f:AccountId.to_value));("DataSourceId",(Option.mapx.dataSourceId~f:DataSourceId.to_value));("DataSourceType",(Option.mapx.dataSourceType~f:DataSourceType.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdataSourceType=(Option.map~f:DataSourceType.of_xml)(Xml.childxml_arg0"DataSourceType")inletdataSourceId=(Option.map~f:DataSourceId.of_xml)(Xml.childxml_arg0"DataSourceId")inletbucketAccountId=(Option.map~f:AccountId.of_xml)(Xml.childxml_arg0"BucketAccountId")inletendpoints=(Option.map~f:Endpoints.of_xml)(Xml.childxml_arg0"Endpoints")inletaccessPointArn=(Option.map~f:S3AccessPointArn.of_xml)(Xml.childxml_arg0"AccessPointArn")inletalias=(Option.map~f:Alias.of_xml)(Xml.childxml_arg0"Alias")inletcreationDate=(Option.map~f:CreationDate.of_xml)(Xml.childxml_arg0"CreationDate")inletpublicAccessBlockConfiguration=(Option.map~f:PublicAccessBlockConfiguration.of_xml)(Xml.childxml_arg0"PublicAccessBlockConfiguration")inletvpcConfiguration=(Option.map~f:VpcConfiguration.of_xml)(Xml.childxml_arg0"VpcConfiguration")inletnetworkOrigin=(Option.map~f:NetworkOrigin.of_xml)(Xml.childxml_arg0"NetworkOrigin")inletbucket=(Option.map~f:AccessPointBucketName.of_xml)(Xml.childxml_arg0"Bucket")inletname=(Option.map~f:AccessPointName.of_xml)(Xml.childxml_arg0"Name")inmake?dataSourceType?dataSourceId?bucketAccountId?endpoints?accessPointArn?alias?creationDate?publicAccessBlockConfiguration?vpcConfiguration?networkOrigin?bucket?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdataSourceType=field_mapjson__"DataSourceType"DataSourceType.of_jsoninletdataSourceId=field_mapjson__"DataSourceId"DataSourceId.of_jsoninletbucketAccountId=field_mapjson__"BucketAccountId"AccountId.of_jsoninletendpoints=field_mapjson__"Endpoints"Endpoints.of_jsoninletaccessPointArn=field_mapjson__"AccessPointArn"S3AccessPointArn.of_jsoninletalias=field_mapjson__"Alias"Alias.of_jsoninletcreationDate=field_mapjson__"CreationDate"CreationDate.of_jsoninletpublicAccessBlockConfiguration=field_mapjson__"PublicAccessBlockConfiguration"PublicAccessBlockConfiguration.of_jsoninletvpcConfiguration=field_mapjson__"VpcConfiguration"VpcConfiguration.of_jsoninletnetworkOrigin=field_mapjson__"NetworkOrigin"NetworkOrigin.of_jsoninletbucket=field_mapjson__"Bucket"AccessPointBucketName.of_jsoninletname=field_mapjson__"Name"AccessPointName.of_jsoninmake?dataSourceType?dataSourceId?bucketAccountId?endpoints?accessPointArn?alias?creationDate?publicAccessBlockConfiguration?vpcConfiguration?networkOrigin?bucket?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns configuration information about the specified access point. All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section. The following actions are related to GetAccessPoint: CreateAccessPoint DeleteAccessPoint ListAccessPoints"]moduleGetAccessPointRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID for the account that owns the specified access point."];name:AccessPointName.t[@ocaml.doc"The name of the access point whose configuration information you want to retrieve. For using this parameter with Amazon S3 on Outposts with the REST API, you must specify the name and the x-amz-outpost-id as well. For using this parameter with S3 on Outposts with the Amazon Web Services SDK and CLI, you must specify the ARN of the access point accessed in the format arn:aws:s3-outposts:<Region>:<account-id>:outpost/<outpost-id>/accesspoint/<my-accesspoint-name>. For example, to access the access point reports-ap through Outpost my-outpost owned by account 123456789012 in Region us-west-2, use the URL encoding of arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/accesspoint/reports-ap. The value must be URL encoded."]}letcontext_="GetAccessPointRequest"letmake~accountId=fun~name->fun()->{accountId;name}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(AccessPointName.to_valuex.name)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letname=AccessPointName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~name~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letname=field_map_exnjson__"Name"AccessPointName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~name~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns configuration information about the specified access point. All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section. The following actions are related to GetAccessPoint: CreateAccessPoint DeleteAccessPoint ListAccessPoints"]moduleGetAccessPointPolicyStatusResult=structtypenonrect={policyStatus:PolicyStatus.toption[@ocaml.doc"Indicates the current policy status of the specified access point."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?policyStatus=fun()->{policyStatus}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("PolicyStatus",(Option.mapx.policyStatus~f:PolicyStatus.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letpolicyStatus=(Option.map~f:PolicyStatus.of_xml)(Xml.childxml_arg0"PolicyStatus")inmake?policyStatus()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letpolicyStatus=field_mapjson__"PolicyStatus"PolicyStatus.of_jsoninmake?policyStatus()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Indicates whether the specified access point currently has a policy that allows public access. For more information about public access through access points, see Managing Data Access with Amazon S3 access points in the Amazon S3 User Guide."]moduleGetAccessPointPolicyStatusRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The account ID for the account that owns the specified access point."];name:AccessPointName.t[@ocaml.doc"The name of the access point whose policy status you want to retrieve."]}letcontext_="GetAccessPointPolicyStatusRequest"letmake~accountId=fun~name->fun()->{accountId;name}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(AccessPointName.to_valuex.name)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letname=AccessPointName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~name~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letname=field_map_exnjson__"Name"AccessPointName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~name~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Indicates whether the specified access point currently has a policy that allows public access. For more information about public access through access points, see Managing Data Access with Amazon S3 access points in the Amazon S3 User Guide."]moduleGetAccessPointPolicyStatusForObjectLambdaResult=structtypenonrect={policyStatus:PolicyStatus.toption}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?policyStatus=fun()->{policyStatus}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("PolicyStatus",(Option.mapx.policyStatus~f:PolicyStatus.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letpolicyStatus=(Option.map~f:PolicyStatus.of_xml)(Xml.childxml_arg0"PolicyStatus")inmake?policyStatus()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letpolicyStatus=field_mapjson__"PolicyStatus"PolicyStatus.of_jsoninmake?policyStatus()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Returns the status of the resource policy associated with an Object Lambda Access Point."]moduleGetAccessPointPolicyStatusForObjectLambdaRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The account ID for the account that owns the specified Object Lambda Access Point."];name:ObjectLambdaAccessPointName.t[@ocaml.doc"The name of the Object Lambda Access Point."]}letcontext_="GetAccessPointPolicyStatusForObjectLambdaRequest"letmake~accountId=fun~name->fun()->{accountId;name}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(ObjectLambdaAccessPointName.to_valuex.name)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letname=ObjectLambdaAccessPointName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~name~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letname=field_map_exnjson__"Name"ObjectLambdaAccessPointName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~name~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Returns the status of the resource policy associated with an Object Lambda Access Point."]moduleGetAccessPointPolicyResult=structtypenonrect={policy:Policy.toption[@ocaml.doc"The access point policy associated with the specified access point."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?policy=fun()->{policy}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Policy",(Option.mapx.policy~f:Policy.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letpolicy=(Option.map~f:Policy.of_xml)(Xml.childxml_arg0"Policy")inmake?policy()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letpolicy=field_mapjson__"Policy"Policy.of_jsoninmake?policy()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns the access point policy associated with the specified access point. The following actions are related to GetAccessPointPolicy: PutAccessPointPolicy DeleteAccessPointPolicy"]moduleGetAccessPointPolicyRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The account ID for the account that owns the specified access point."];name:AccessPointName.t[@ocaml.doc"The name of the access point whose policy you want to retrieve. For using this parameter with Amazon S3 on Outposts with the REST API, you must specify the name and the x-amz-outpost-id as well. For using this parameter with S3 on Outposts with the Amazon Web Services SDK and CLI, you must specify the ARN of the access point accessed in the format arn:aws:s3-outposts:<Region>:<account-id>:outpost/<outpost-id>/accesspoint/<my-accesspoint-name>. For example, to access the access point reports-ap through Outpost my-outpost owned by account 123456789012 in Region us-west-2, use the URL encoding of arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/accesspoint/reports-ap. The value must be URL encoded."]}letcontext_="GetAccessPointPolicyRequest"letmake~accountId=fun~name->fun()->{accountId;name}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(AccessPointName.to_valuex.name)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letname=AccessPointName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~name~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letname=field_map_exnjson__"Name"AccessPointName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~name~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns the access point policy associated with the specified access point. The following actions are related to GetAccessPointPolicy: PutAccessPointPolicy DeleteAccessPointPolicy"]moduleGetAccessPointPolicyForObjectLambdaResult=structtypenonrect={policy:ObjectLambdaPolicy.toption[@ocaml.doc"Object Lambda Access Point resource policy document."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?policy=fun()->{policy}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Policy",(Option.mapx.policy~f:ObjectLambdaPolicy.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letpolicy=(Option.map~f:ObjectLambdaPolicy.of_xml)(Xml.childxml_arg0"Policy")inmake?policy()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letpolicy=field_mapjson__"Policy"ObjectLambdaPolicy.of_jsoninmake?policy()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Returns the resource policy for an Object Lambda Access Point. The following actions are related to GetAccessPointPolicyForObjectLambda: DeleteAccessPointPolicyForObjectLambda PutAccessPointPolicyForObjectLambda"]moduleGetAccessPointPolicyForObjectLambdaRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The account ID for the account that owns the specified Object Lambda Access Point."];name:ObjectLambdaAccessPointName.t[@ocaml.doc"The name of the Object Lambda Access Point."]}letcontext_="GetAccessPointPolicyForObjectLambdaRequest"letmake~accountId=fun~name->fun()->{accountId;name}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(ObjectLambdaAccessPointName.to_valuex.name)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letname=ObjectLambdaAccessPointName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~name~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letname=field_map_exnjson__"Name"ObjectLambdaAccessPointName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~name~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Returns the resource policy for an Object Lambda Access Point. The following actions are related to GetAccessPointPolicyForObjectLambda: DeleteAccessPointPolicyForObjectLambda PutAccessPointPolicyForObjectLambda"]moduleGetAccessPointForObjectLambdaResult=structtypenonrect={name:ObjectLambdaAccessPointName.toption[@ocaml.doc"The name of the Object Lambda Access Point."];publicAccessBlockConfiguration:PublicAccessBlockConfiguration.toption[@ocaml.doc"Configuration to block all public access. This setting is turned on and can not be edited."];creationDate:CreationDate.toption[@ocaml.doc"The date and time when the specified Object Lambda Access Point was created."];alias:ObjectLambdaAccessPointAlias.toption[@ocaml.doc"The alias of the Object Lambda Access Point."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?name=fun?publicAccessBlockConfiguration->fun?creationDate->fun?alias->fun()->{name;publicAccessBlockConfiguration;creationDate;alias}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Name",(Option.mapx.name~f:ObjectLambdaAccessPointName.to_value));("PublicAccessBlockConfiguration",(Option.mapx.publicAccessBlockConfiguration~f:PublicAccessBlockConfiguration.to_value));("CreationDate",(Option.mapx.creationDate~f:CreationDate.to_value));("Alias",(Option.mapx.alias~f:ObjectLambdaAccessPointAlias.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letalias=(Option.map~f:ObjectLambdaAccessPointAlias.of_xml)(Xml.childxml_arg0"Alias")inletcreationDate=(Option.map~f:CreationDate.of_xml)(Xml.childxml_arg0"CreationDate")inletpublicAccessBlockConfiguration=(Option.map~f:PublicAccessBlockConfiguration.of_xml)(Xml.childxml_arg0"PublicAccessBlockConfiguration")inletname=(Option.map~f:ObjectLambdaAccessPointName.of_xml)(Xml.childxml_arg0"Name")inmake?alias?creationDate?publicAccessBlockConfiguration?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letalias=field_mapjson__"Alias"ObjectLambdaAccessPointAlias.of_jsoninletcreationDate=field_mapjson__"CreationDate"CreationDate.of_jsoninletpublicAccessBlockConfiguration=field_mapjson__"PublicAccessBlockConfiguration"PublicAccessBlockConfiguration.of_jsoninletname=field_mapjson__"Name"ObjectLambdaAccessPointName.of_jsoninmake?alias?creationDate?publicAccessBlockConfiguration?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Returns configuration information about the specified Object Lambda Access Point The following actions are related to GetAccessPointForObjectLambda: CreateAccessPointForObjectLambda DeleteAccessPointForObjectLambda ListAccessPointsForObjectLambda"]moduleGetAccessPointForObjectLambdaRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The account ID for the account that owns the specified Object Lambda Access Point."];name:ObjectLambdaAccessPointName.t[@ocaml.doc"The name of the Object Lambda Access Point."]}letcontext_="GetAccessPointForObjectLambdaRequest"letmake~accountId=fun~name->fun()->{accountId;name}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(ObjectLambdaAccessPointName.to_valuex.name)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letname=ObjectLambdaAccessPointName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~name~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letname=field_map_exnjson__"Name"ObjectLambdaAccessPointName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~name~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Returns configuration information about the specified Object Lambda Access Point The following actions are related to GetAccessPointForObjectLambda: CreateAccessPointForObjectLambda DeleteAccessPointForObjectLambda ListAccessPointsForObjectLambda"]moduleGetAccessPointConfigurationForObjectLambdaResult=structtypenonrect={configuration:ObjectLambdaConfiguration.toption[@ocaml.doc"Object Lambda Access Point configuration document."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?configuration=fun()->{configuration}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Configuration",(Option.mapx.configuration~f:ObjectLambdaConfiguration.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letconfiguration=(Option.map~f:ObjectLambdaConfiguration.of_xml)(Xml.childxml_arg0"Configuration")inmake?configuration()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letconfiguration=field_mapjson__"Configuration"ObjectLambdaConfiguration.of_jsoninmake?configuration()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Returns configuration for an Object Lambda Access Point. The following actions are related to GetAccessPointConfigurationForObjectLambda: PutAccessPointConfigurationForObjectLambda"]moduleGetAccessPointConfigurationForObjectLambdaRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The account ID for the account that owns the specified Object Lambda Access Point."];name:ObjectLambdaAccessPointName.t[@ocaml.doc"The name of the Object Lambda Access Point you want to return the configuration for."]}letcontext_="GetAccessPointConfigurationForObjectLambdaRequest"letmake~accountId=fun~name->fun()->{accountId;name}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(ObjectLambdaAccessPointName.to_valuex.name)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letname=ObjectLambdaAccessPointName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~name~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letname=field_map_exnjson__"Name"ObjectLambdaAccessPointName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~name~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Returns configuration for an Object Lambda Access Point. The following actions are related to GetAccessPointConfigurationForObjectLambda: PutAccessPointConfigurationForObjectLambda"]moduleGetAccessGrantsLocationResult=structtypenonrect={createdAt:CreationTimestamp.toption[@ocaml.doc"The date and time when you registered the location."];accessGrantsLocationId:AccessGrantsLocationId.toption[@ocaml.doc"The ID of the registered location to which you are granting access. S3 Access Grants assigns this ID when you register the location. S3 Access Grants assigns the ID default to the default location s3:// and assigns an auto-generated ID to other locations that you register."];accessGrantsLocationArn:AccessGrantsLocationArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the registered location."];locationScope:S3Prefix.toption[@ocaml.doc"The S3 URI path to the registered location. The location scope can be the default S3 location s3://, the S3 path to a bucket, or the S3 path to a bucket and prefix. A prefix in S3 is a string of characters at the beginning of an object key name used to organize the objects that you store in your S3 buckets. For example, object key names that start with the engineering/ prefix or object key names that start with the marketing/campaigns/ prefix."];iAMRoleArn:IAMRoleArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the IAM role for the registered location. S3 Access Grants assumes this role to manage access to the registered location."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?createdAt=fun?accessGrantsLocationId->fun?accessGrantsLocationArn->fun?locationScope->fun?iAMRoleArn->fun()->{createdAt;accessGrantsLocationId;accessGrantsLocationArn;locationScope;iAMRoleArn}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("CreatedAt",(Option.mapx.createdAt~f:CreationTimestamp.to_value));("AccessGrantsLocationId",(Option.mapx.accessGrantsLocationId~f:AccessGrantsLocationId.to_value));("AccessGrantsLocationArn",(Option.mapx.accessGrantsLocationArn~f:AccessGrantsLocationArn.to_value));("LocationScope",(Option.mapx.locationScope~f:S3Prefix.to_value));("IAMRoleArn",(Option.mapx.iAMRoleArn~f:IAMRoleArn.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letiAMRoleArn=(Option.map~f:IAMRoleArn.of_xml)(Xml.childxml_arg0"IAMRoleArn")inletlocationScope=(Option.map~f:S3Prefix.of_xml)(Xml.childxml_arg0"LocationScope")inletaccessGrantsLocationArn=(Option.map~f:AccessGrantsLocationArn.of_xml)(Xml.childxml_arg0"AccessGrantsLocationArn")inletaccessGrantsLocationId=(Option.map~f:AccessGrantsLocationId.of_xml)(Xml.childxml_arg0"AccessGrantsLocationId")inletcreatedAt=(Option.map~f:CreationTimestamp.of_xml)(Xml.childxml_arg0"CreatedAt")inmake?iAMRoleArn?locationScope?accessGrantsLocationArn?accessGrantsLocationId?createdAt()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letiAMRoleArn=field_mapjson__"IAMRoleArn"IAMRoleArn.of_jsoninletlocationScope=field_mapjson__"LocationScope"S3Prefix.of_jsoninletaccessGrantsLocationArn=field_mapjson__"AccessGrantsLocationArn"AccessGrantsLocationArn.of_jsoninletaccessGrantsLocationId=field_mapjson__"AccessGrantsLocationId"AccessGrantsLocationId.of_jsoninletcreatedAt=field_mapjson__"CreatedAt"CreationTimestamp.of_jsoninmake?iAMRoleArn?locationScope?accessGrantsLocationArn?accessGrantsLocationId?createdAt()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves the details of a particular location registered in your S3 Access Grants instance. Permissions You must have the s3:GetAccessGrantsLocation permission to use this operation."]moduleGetAccessGrantsLocationRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the S3 Access Grants instance."];accessGrantsLocationId:AccessGrantsLocationId.t[@ocaml.doc"The ID of the registered location that you are retrieving. S3 Access Grants assigns this ID when you register the location. S3 Access Grants assigns the ID default to the default location s3:// and assigns an auto-generated ID to other locations that you register."]}letcontext_="GetAccessGrantsLocationRequest"letmake~accountId=fun~accessGrantsLocationId->fun()->{accountId;accessGrantsLocationId}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("id",(Some(AccessGrantsLocationId.to_valuex.accessGrantsLocationId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccessGrantsLocationId=AccessGrantsLocationId.of_xml(Xml.child_exn~context:context_xml_arg0"id")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~accessGrantsLocationId~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccessGrantsLocationId=field_map_exnjson__"AccessGrantsLocationId"AccessGrantsLocationId.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~accessGrantsLocationId~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves the details of a particular location registered in your S3 Access Grants instance. Permissions You must have the s3:GetAccessGrantsLocation permission to use this operation."]moduleGetAccessGrantsInstanceResult=structtypenonrect={accessGrantsInstanceArn:AccessGrantsInstanceArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the S3 Access Grants instance."];accessGrantsInstanceId:AccessGrantsInstanceId.toption[@ocaml.doc"The ID of the S3 Access Grants instance. The ID is default. You can have one S3 Access Grants instance per Region per account."];identityCenterArn:IdentityCenterArn.toption[@ocaml.doc"If you associated your S3 Access Grants instance with an Amazon Web Services IAM Identity Center instance, this field returns the Amazon Resource Name (ARN) of the IAM Identity Center instance application; a subresource of the original Identity Center instance. S3 Access Grants creates this Identity Center application for the specific S3 Access Grants instance."];identityCenterInstanceArn:IdentityCenterArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the Amazon Web Services IAM Identity Center instance that you are associating with your S3 Access Grants instance. An IAM Identity Center instance is your corporate identity directory that you added to the IAM Identity Center. You can use the ListInstances API operation to retrieve a list of your Identity Center instances and their ARNs."];identityCenterApplicationArn:IdentityCenterApplicationArn.toption[@ocaml.doc"If you associated your S3 Access Grants instance with an Amazon Web Services IAM Identity Center instance, this field returns the Amazon Resource Name (ARN) of the IAM Identity Center instance application; a subresource of the original Identity Center instance. S3 Access Grants creates this Identity Center application for the specific S3 Access Grants instance."];createdAt:CreationTimestamp.toption[@ocaml.doc"The date and time when you created the S3 Access Grants instance."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?accessGrantsInstanceArn=fun?accessGrantsInstanceId->fun?identityCenterArn->fun?identityCenterInstanceArn->fun?identityCenterApplicationArn->fun?createdAt->fun()->{accessGrantsInstanceArn;accessGrantsInstanceId;identityCenterArn;identityCenterInstanceArn;identityCenterApplicationArn;createdAt}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("AccessGrantsInstanceArn",(Option.mapx.accessGrantsInstanceArn~f:AccessGrantsInstanceArn.to_value));("AccessGrantsInstanceId",(Option.mapx.accessGrantsInstanceId~f:AccessGrantsInstanceId.to_value));("IdentityCenterArn",(Option.mapx.identityCenterArn~f:IdentityCenterArn.to_value));("IdentityCenterInstanceArn",(Option.mapx.identityCenterInstanceArn~f:IdentityCenterArn.to_value));("IdentityCenterApplicationArn",(Option.mapx.identityCenterApplicationArn~f:IdentityCenterApplicationArn.to_value));("CreatedAt",(Option.mapx.createdAt~f:CreationTimestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcreatedAt=(Option.map~f:CreationTimestamp.of_xml)(Xml.childxml_arg0"CreatedAt")inletidentityCenterApplicationArn=(Option.map~f:IdentityCenterApplicationArn.of_xml)(Xml.childxml_arg0"IdentityCenterApplicationArn")inletidentityCenterInstanceArn=(Option.map~f:IdentityCenterArn.of_xml)(Xml.childxml_arg0"IdentityCenterInstanceArn")inletidentityCenterArn=(Option.map~f:IdentityCenterArn.of_xml)(Xml.childxml_arg0"IdentityCenterArn")inletaccessGrantsInstanceId=(Option.map~f:AccessGrantsInstanceId.of_xml)(Xml.childxml_arg0"AccessGrantsInstanceId")inletaccessGrantsInstanceArn=(Option.map~f:AccessGrantsInstanceArn.of_xml)(Xml.childxml_arg0"AccessGrantsInstanceArn")inmake?createdAt?identityCenterApplicationArn?identityCenterInstanceArn?identityCenterArn?accessGrantsInstanceId?accessGrantsInstanceArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcreatedAt=field_mapjson__"CreatedAt"CreationTimestamp.of_jsoninletidentityCenterApplicationArn=field_mapjson__"IdentityCenterApplicationArn"IdentityCenterApplicationArn.of_jsoninletidentityCenterInstanceArn=field_mapjson__"IdentityCenterInstanceArn"IdentityCenterArn.of_jsoninletidentityCenterArn=field_mapjson__"IdentityCenterArn"IdentityCenterArn.of_jsoninletaccessGrantsInstanceId=field_mapjson__"AccessGrantsInstanceId"AccessGrantsInstanceId.of_jsoninletaccessGrantsInstanceArn=field_mapjson__"AccessGrantsInstanceArn"AccessGrantsInstanceArn.of_jsoninmake?createdAt?identityCenterApplicationArn?identityCenterInstanceArn?identityCenterArn?accessGrantsInstanceId?accessGrantsInstanceArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves the S3 Access Grants instance for a Region in your account. Permissions You must have the s3:GetAccessGrantsInstance permission to use this operation. GetAccessGrantsInstance is not supported for cross-account access. You can only call the API from the account that owns the S3 Access Grants instance."]moduleGetAccessGrantsInstanceResourcePolicyResult=structtypenonrect={policy:PolicyDocument.toption[@ocaml.doc"The resource policy of the S3 Access Grants instance."];organization:Organization.toption[@ocaml.doc"The Organization of the resource policy of the S3 Access Grants instance."];createdAt:CreationTimestamp.toption[@ocaml.doc"The date and time when you created the S3 Access Grants instance resource policy."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?policy=fun?organization->fun?createdAt->fun()->{policy;organization;createdAt}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Policy",(Option.mapx.policy~f:PolicyDocument.to_value));("Organization",(Option.mapx.organization~f:Organization.to_value));("CreatedAt",(Option.mapx.createdAt~f:CreationTimestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcreatedAt=(Option.map~f:CreationTimestamp.of_xml)(Xml.childxml_arg0"CreatedAt")inletorganization=(Option.map~f:Organization.of_xml)(Xml.childxml_arg0"Organization")inletpolicy=(Option.map~f:PolicyDocument.of_xml)(Xml.childxml_arg0"Policy")inmake?createdAt?organization?policy()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcreatedAt=field_mapjson__"CreatedAt"CreationTimestamp.of_jsoninletorganization=field_mapjson__"Organization"Organization.of_jsoninletpolicy=field_mapjson__"Policy"PolicyDocument.of_jsoninmake?createdAt?organization?policy()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns the resource policy of the S3 Access Grants instance. Permissions You must have the s3:GetAccessGrantsInstanceResourcePolicy permission to use this operation."]moduleGetAccessGrantsInstanceResourcePolicyRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the S3 Access Grants instance."]}letcontext_="GetAccessGrantsInstanceResourcePolicyRequest"letmake~accountId=fun()->{accountId}letof_header_and_body=((fun(xs,pipe)->make~accountId:(AccountId.of_string((List.Assoc.find_exn~equal:String.Caseless.equal)xs"x-amz-account-id"))())[@warning"-27"])letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns the resource policy of the S3 Access Grants instance. Permissions You must have the s3:GetAccessGrantsInstanceResourcePolicy permission to use this operation."]moduleGetAccessGrantsInstanceRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the S3 Access Grants instance."]}letcontext_="GetAccessGrantsInstanceRequest"letmake~accountId=fun()->{accountId}letof_header_and_body=((fun(xs,pipe)->make~accountId:(AccountId.of_string((List.Assoc.find_exn~equal:String.Caseless.equal)xs"x-amz-account-id"))())[@warning"-27"])letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves the S3 Access Grants instance for a Region in your account. Permissions You must have the s3:GetAccessGrantsInstance permission to use this operation. GetAccessGrantsInstance is not supported for cross-account access. You can only call the API from the account that owns the S3 Access Grants instance."]moduleGetAccessGrantsInstanceForPrefixResult=structtypenonrect={accessGrantsInstanceArn:AccessGrantsInstanceArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the S3 Access Grants instance."];accessGrantsInstanceId:AccessGrantsInstanceId.toption[@ocaml.doc"The ID of the S3 Access Grants instance. The ID is default. You can have one S3 Access Grants instance per Region per account."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?accessGrantsInstanceArn=fun?accessGrantsInstanceId->fun()->{accessGrantsInstanceArn;accessGrantsInstanceId}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("AccessGrantsInstanceArn",(Option.mapx.accessGrantsInstanceArn~f:AccessGrantsInstanceArn.to_value));("AccessGrantsInstanceId",(Option.mapx.accessGrantsInstanceId~f:AccessGrantsInstanceId.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccessGrantsInstanceId=(Option.map~f:AccessGrantsInstanceId.of_xml)(Xml.childxml_arg0"AccessGrantsInstanceId")inletaccessGrantsInstanceArn=(Option.map~f:AccessGrantsInstanceArn.of_xml)(Xml.childxml_arg0"AccessGrantsInstanceArn")inmake?accessGrantsInstanceId?accessGrantsInstanceArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccessGrantsInstanceId=field_mapjson__"AccessGrantsInstanceId"AccessGrantsInstanceId.of_jsoninletaccessGrantsInstanceArn=field_mapjson__"AccessGrantsInstanceArn"AccessGrantsInstanceArn.of_jsoninmake?accessGrantsInstanceId?accessGrantsInstanceArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieve the S3 Access Grants instance that contains a particular prefix. Permissions You must have the s3:GetAccessGrantsInstanceForPrefix permission for the caller account to use this operation. Additional Permissions The prefix owner account must grant you the following permissions to their S3 Access Grants instance: s3:GetAccessGrantsInstanceForPrefix."]moduleGetAccessGrantsInstanceForPrefixRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The ID of the Amazon Web Services account that is making this request."];s3Prefix:S3Prefix.t[@ocaml.doc"The S3 prefix of the access grants that you would like to retrieve."]}letcontext_="GetAccessGrantsInstanceForPrefixRequest"letmake~accountId=fun~s3Prefix->fun()->{accountId;s3Prefix}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("s3prefix",(Some(S3Prefix.to_valuex.s3Prefix)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lets3Prefix=S3Prefix.of_xml(Xml.child_exn~context:context_xml_arg0"s3prefix")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~s3Prefix~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lets3Prefix=field_map_exnjson__"S3Prefix"S3Prefix.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~s3Prefix~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieve the S3 Access Grants instance that contains a particular prefix. Permissions You must have the s3:GetAccessGrantsInstanceForPrefix permission for the caller account to use this operation. Additional Permissions The prefix owner account must grant you the following permissions to their S3 Access Grants instance: s3:GetAccessGrantsInstanceForPrefix."]moduleGetAccessGrantResult=structtypenonrect={createdAt:CreationTimestamp.toption[@ocaml.doc"The date and time when you created the access grant."];accessGrantId:AccessGrantId.toption[@ocaml.doc"The ID of the access grant. S3 Access Grants auto-generates this ID when you create the access grant."];accessGrantArn:AccessGrantArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the access grant."];grantee:Grantee.toption[@ocaml.doc"The user, group, or role to which you are granting access. You can grant access to an IAM user or role. If you have added a corporate directory to Amazon Web Services IAM Identity Center and associated this Identity Center instance with the S3 Access Grants instance, the grantee can also be a corporate directory user or group."];permission:Permission.toption[@ocaml.doc"The type of permission that was granted in the access grant. Can be one of the following values: READ \226\128\147 Grant read-only access to the S3 data. WRITE \226\128\147 Grant write-only access to the S3 data. READWRITE \226\128\147 Grant both read and write access to the S3 data."];accessGrantsLocationId:AccessGrantsLocationId.toption[@ocaml.doc"The ID of the registered location to which you are granting access. S3 Access Grants assigns this ID when you register the location. S3 Access Grants assigns the ID default to the default location s3:// and assigns an auto-generated ID to other locations that you register."];accessGrantsLocationConfiguration:AccessGrantsLocationConfiguration.toption[@ocaml.doc"The configuration options of the grant location. The grant location is the S3 path to the data to which you are granting access."];grantScope:S3Prefix.toption[@ocaml.doc"The S3 path of the data to which you are granting access. It is the result of appending the Subprefix to the location scope."];applicationArn:IdentityCenterApplicationArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of an Amazon Web Services IAM Identity Center application associated with your Identity Center instance. If the grant includes an application ARN, the grantee can only access the S3 data through this application."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?createdAt=fun?accessGrantId->fun?accessGrantArn->fun?grantee->fun?permission->fun?accessGrantsLocationId->fun?accessGrantsLocationConfiguration->fun?grantScope->fun?applicationArn->fun()->{createdAt;accessGrantId;accessGrantArn;grantee;permission;accessGrantsLocationId;accessGrantsLocationConfiguration;grantScope;applicationArn}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("CreatedAt",(Option.mapx.createdAt~f:CreationTimestamp.to_value));("AccessGrantId",(Option.mapx.accessGrantId~f:AccessGrantId.to_value));("AccessGrantArn",(Option.mapx.accessGrantArn~f:AccessGrantArn.to_value));("Grantee",(Option.mapx.grantee~f:Grantee.to_value));("Permission",(Option.mapx.permission~f:Permission.to_value));("AccessGrantsLocationId",(Option.mapx.accessGrantsLocationId~f:AccessGrantsLocationId.to_value));("AccessGrantsLocationConfiguration",(Option.mapx.accessGrantsLocationConfiguration~f:AccessGrantsLocationConfiguration.to_value));("GrantScope",(Option.mapx.grantScope~f:S3Prefix.to_value));("ApplicationArn",(Option.mapx.applicationArn~f:IdentityCenterApplicationArn.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letapplicationArn=(Option.map~f:IdentityCenterApplicationArn.of_xml)(Xml.childxml_arg0"ApplicationArn")inletgrantScope=(Option.map~f:S3Prefix.of_xml)(Xml.childxml_arg0"GrantScope")inletaccessGrantsLocationConfiguration=(Option.map~f:AccessGrantsLocationConfiguration.of_xml)(Xml.childxml_arg0"AccessGrantsLocationConfiguration")inletaccessGrantsLocationId=(Option.map~f:AccessGrantsLocationId.of_xml)(Xml.childxml_arg0"AccessGrantsLocationId")inletpermission=(Option.map~f:Permission.of_xml)(Xml.childxml_arg0"Permission")inletgrantee=(Option.map~f:Grantee.of_xml)(Xml.childxml_arg0"Grantee")inletaccessGrantArn=(Option.map~f:AccessGrantArn.of_xml)(Xml.childxml_arg0"AccessGrantArn")inletaccessGrantId=(Option.map~f:AccessGrantId.of_xml)(Xml.childxml_arg0"AccessGrantId")inletcreatedAt=(Option.map~f:CreationTimestamp.of_xml)(Xml.childxml_arg0"CreatedAt")inmake?applicationArn?grantScope?accessGrantsLocationConfiguration?accessGrantsLocationId?permission?grantee?accessGrantArn?accessGrantId?createdAt()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letapplicationArn=field_mapjson__"ApplicationArn"IdentityCenterApplicationArn.of_jsoninletgrantScope=field_mapjson__"GrantScope"S3Prefix.of_jsoninletaccessGrantsLocationConfiguration=field_mapjson__"AccessGrantsLocationConfiguration"AccessGrantsLocationConfiguration.of_jsoninletaccessGrantsLocationId=field_mapjson__"AccessGrantsLocationId"AccessGrantsLocationId.of_jsoninletpermission=field_mapjson__"Permission"Permission.of_jsoninletgrantee=field_mapjson__"Grantee"Grantee.of_jsoninletaccessGrantArn=field_mapjson__"AccessGrantArn"AccessGrantArn.of_jsoninletaccessGrantId=field_mapjson__"AccessGrantId"AccessGrantId.of_jsoninletcreatedAt=field_mapjson__"CreatedAt"CreationTimestamp.of_jsoninmake?applicationArn?grantScope?accessGrantsLocationConfiguration?accessGrantsLocationId?permission?grantee?accessGrantArn?accessGrantId?createdAt()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Get the details of an access grant from your S3 Access Grants instance. Permissions You must have the s3:GetAccessGrant permission to use this operation."]moduleGetAccessGrantRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the S3 Access Grants instance."];accessGrantId:AccessGrantId.t[@ocaml.doc"The ID of the access grant. S3 Access Grants auto-generates this ID when you create the access grant."]}letcontext_="GetAccessGrantRequest"letmake~accountId=fun~accessGrantId->fun()->{accountId;accessGrantId}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("id",(Some(AccessGrantId.to_valuex.accessGrantId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccessGrantId=AccessGrantId.of_xml(Xml.child_exn~context:context_xml_arg0"id")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~accessGrantId~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccessGrantId=field_map_exnjson__"AccessGrantId"AccessGrantId.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~accessGrantId~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Get the details of an access grant from your S3 Access Grants instance. Permissions You must have the s3:GetAccessGrant permission to use this operation."]moduleDissociateAccessGrantsIdentityCenterRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the S3 Access Grants instance."]}letcontext_="DissociateAccessGrantsIdentityCenterRequest"letmake~accountId=fun()->{accountId}letof_header_and_body=((fun(xs,pipe)->make~accountId:(AccountId.of_string((List.Assoc.find_exn~equal:String.Caseless.equal)xs"x-amz-account-id"))())[@warning"-27"])letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Dissociates the Amazon Web Services IAM Identity Center instance from the S3 Access Grants instance. Permissions You must have the s3:DissociateAccessGrantsIdentityCenter permission to use this operation. Additional Permissions You must have the sso:DeleteApplication permission to use this operation."]moduleDescribeMultiRegionAccessPointOperationResult=structtypenonrect={asyncOperation:AsyncOperation.toption[@ocaml.doc"A container element containing the details of the asynchronous operation."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?asyncOperation=fun()->{asyncOperation}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("AsyncOperation",(Option.mapx.asyncOperation~f:AsyncOperation.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letasyncOperation=(Option.map~f:AsyncOperation.of_xml)(Xml.childxml_arg0"AsyncOperation")inmake?asyncOperation()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letasyncOperation=field_mapjson__"AsyncOperation"AsyncOperation.of_jsoninmake?asyncOperation()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Retrieves the status of an asynchronous request to manage a Multi-Region Access Point. For more information about managing Multi-Region Access Points and how asynchronous requests work, see Using Multi-Region Access Points in the Amazon S3 User Guide. The following actions are related to GetMultiRegionAccessPoint: CreateMultiRegionAccessPoint DeleteMultiRegionAccessPoint GetMultiRegionAccessPoint ListMultiRegionAccessPoints"]moduleDescribeMultiRegionAccessPointOperationRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID for the owner of the Multi-Region Access Point."];requestTokenARN:AsyncRequestTokenARN.t[@ocaml.doc"The request token associated with the request you want to know about. This request token is returned as part of the response when you make an asynchronous request. You provide this token to query about the status of the asynchronous action."]}letcontext_="DescribeMultiRegionAccessPointOperationRequest"letmake~accountId=fun~requestTokenARN->fun()->{accountId;requestTokenARN}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("request_token",(Some(AsyncRequestTokenARN.to_valuex.requestTokenARN)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letrequestTokenARN=AsyncRequestTokenARN.of_xml(Xml.child_exn~context:context_xml_arg0"request_token")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~requestTokenARN~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letrequestTokenARN=field_map_exnjson__"RequestTokenARN"AsyncRequestTokenARN.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~requestTokenARN~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Retrieves the status of an asynchronous request to manage a Multi-Region Access Point. For more information about managing Multi-Region Access Points and how asynchronous requests work, see Using Multi-Region Access Points in the Amazon S3 User Guide. The following actions are related to GetMultiRegionAccessPoint: CreateMultiRegionAccessPoint DeleteMultiRegionAccessPoint GetMultiRegionAccessPoint ListMultiRegionAccessPoints"]moduleDescribeJobResult=structtypenonrect={job:JobDescriptor.toption[@ocaml.doc"Contains the configuration parameters and status for the job specified in the Describe Job request."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`InternalServiceExceptionofInternalServiceException.t|`NotFoundExceptionofNotFoundException.t|`TooManyRequestsExceptionofTooManyRequestsException.t|`Unknown_operation_errorof(string*stringoption)]letmake?job=fun()->{job}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"InternalServiceException"->`InternalServiceException(InternalServiceException.of_jsonjson)|"NotFoundException"->`NotFoundException(NotFoundException.of_jsonjson)|"TooManyRequestsException"->`TooManyRequestsException(TooManyRequestsException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"InternalServiceException"->`InternalServiceException(InternalServiceException.of_xmlxml)|"NotFoundException"->`NotFoundException(NotFoundException.of_xmlxml)|"TooManyRequestsException"->`TooManyRequestsException(TooManyRequestsException.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))]|`InternalServiceExceptione->`Assoc[("error",(`String"InternalServiceException"));("details",(InternalServiceException.to_jsone))]|`NotFoundExceptione->`Assoc[("error",(`String"NotFoundException"));("details",(NotFoundException.to_jsone))]|`TooManyRequestsExceptione->`Assoc[("error",(`String"TooManyRequestsException"));("details",(TooManyRequestsException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Job",(Option.mapx.job~f:JobDescriptor.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letjob=(Option.map~f:JobDescriptor.of_xml)(Xml.childxml_arg0"Job")inmake?job()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letjob=field_mapjson__"Job"JobDescriptor.of_jsoninmake?job()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves the configuration parameters and status for a Batch Operations job. For more information, see S3 Batch Operations in the Amazon S3 User Guide. Permissions To use the DescribeJob operation, you must have permission to perform the s3:DescribeJob action. Related actions include: CreateJob ListJobs UpdateJobPriority UpdateJobStatus"]moduleDescribeJobRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID associated with the S3 Batch Operations job."];jobId:JobId.t[@ocaml.doc"The ID for the job whose information you want to retrieve."]}letcontext_="DescribeJobRequest"letmake~accountId=fun~jobId->fun()->{accountId;jobId}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("id",(Some(JobId.to_valuex.jobId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letjobId=JobId.of_xml(Xml.child_exn~context:context_xml_arg0"id")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~jobId~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letjobId=field_map_exnjson__"JobId"JobId.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~jobId~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves the configuration parameters and status for a Batch Operations job. For more information, see S3 Batch Operations in the Amazon S3 User Guide. Permissions To use the DescribeJob operation, you must have permission to perform the s3:DescribeJob action. Related actions include: CreateJob ListJobs UpdateJobPriority UpdateJobStatus"]moduleDeleteStorageLensGroupRequest=structtypenonrect={name:StorageLensGroupName.t[@ocaml.doc"The name of the Storage Lens group that you're trying to delete."];accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID used to create the Storage Lens group that you're trying to delete."]}letcontext_="DeleteStorageLensGroupRequest"letmake~name=fun~accountId->fun()->{name;accountId}letto_valuex=structure_to_value[("name",(Some(StorageLensGroupName.to_valuex.name)));("x-amz-account-id",(Some(AccountId.to_valuex.accountId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inletname=StorageLensGroupName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inmake~accountId~name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninletname=field_map_exnjson__"Name"StorageLensGroupName.of_jsoninmake~accountId~name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Deletes an existing S3 Storage Lens group. To use this operation, you must have the permission to perform the s3:DeleteStorageLensGroup action. For more information about the required Storage Lens Groups permissions, see Setting account permissions to use S3 Storage Lens groups. For information about Storage Lens groups errors, see List of Amazon S3 Storage Lens error codes."]moduleDeleteStorageLensConfigurationTaggingResult=structtypenonrect=unittypenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`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"This operation is not supported by directory buckets. Deletes the Amazon S3 Storage Lens configuration tags. For more information about S3 Storage Lens, see Assessing your storage activity and usage with Amazon S3 Storage Lens in the Amazon S3 User Guide. To use this action, you must have permission to perform the s3:DeleteStorageLensConfigurationTagging action. For more information, see Setting permissions to use Amazon S3 Storage Lens in the Amazon S3 User Guide."]moduleDeleteStorageLensConfigurationTaggingRequest=structtypenonrect={configId:ConfigId.t[@ocaml.doc"The ID of the S3 Storage Lens configuration."];accountId:AccountId.t[@ocaml.doc"The account ID of the requester."]}letcontext_="DeleteStorageLensConfigurationTaggingRequest"letmake~configId=fun~accountId->fun()->{configId;accountId}letto_valuex=structure_to_value[("storagelensid",(Some(ConfigId.to_valuex.configId)));("x-amz-account-id",(Some(AccountId.to_valuex.accountId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inletconfigId=ConfigId.of_xml(Xml.child_exn~context:context_xml_arg0"storagelensid")inmake~accountId~configId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninletconfigId=field_map_exnjson__"ConfigId"ConfigId.of_jsoninmake~accountId~configId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Deletes the Amazon S3 Storage Lens configuration tags. For more information about S3 Storage Lens, see Assessing your storage activity and usage with Amazon S3 Storage Lens in the Amazon S3 User Guide. To use this action, you must have permission to perform the s3:DeleteStorageLensConfigurationTagging action. For more information, see Setting permissions to use Amazon S3 Storage Lens in the Amazon S3 User Guide."]moduleDeleteStorageLensConfigurationRequest=structtypenonrect={configId:ConfigId.t[@ocaml.doc"The ID of the S3 Storage Lens configuration."];accountId:AccountId.t[@ocaml.doc"The account ID of the requester."]}letcontext_="DeleteStorageLensConfigurationRequest"letmake~configId=fun~accountId->fun()->{configId;accountId}letto_valuex=structure_to_value[("storagelensid",(Some(ConfigId.to_valuex.configId)));("x-amz-account-id",(Some(AccountId.to_valuex.accountId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inletconfigId=ConfigId.of_xml(Xml.child_exn~context:context_xml_arg0"storagelensid")inmake~accountId~configId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninletconfigId=field_map_exnjson__"ConfigId"ConfigId.of_jsoninmake~accountId~configId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Deletes the Amazon S3 Storage Lens configuration. For more information about S3 Storage Lens, see Assessing your storage activity and usage with Amazon S3 Storage Lens in the Amazon S3 User Guide. To use this action, you must have permission to perform the s3:DeleteStorageLensConfiguration action. For more information, see Setting permissions to use Amazon S3 Storage Lens in the Amazon S3 User Guide."]moduleDeletePublicAccessBlockRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The account ID for the Amazon Web Services account whose PublicAccessBlock configuration you want to remove."]}letcontext_="DeletePublicAccessBlockRequest"letmake~accountId=fun()->{accountId}letof_header_and_body=((fun(xs,pipe)->make~accountId:(AccountId.of_string((List.Assoc.find_exn~equal:String.Caseless.equal)xs"x-amz-account-id"))())[@warning"-27"])letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Removes the PublicAccessBlock configuration for an Amazon Web Services account. This operation might be restricted when the account is managed by organization-level Block Public Access policies. You\226\128\153ll get an Access Denied (403) error when the account is managed by organization-level Block Public Access policies. Organization-level policies override account-level settings, preventing direct account-level modifications. For more information, see Using Amazon S3 block public access. Related actions include: GetPublicAccessBlock PutPublicAccessBlock"]moduleDeleteMultiRegionAccessPointResult=structtypenonrect={requestTokenARN:AsyncRequestTokenARN.toption[@ocaml.doc"The request token associated with the request. You can use this token with DescribeMultiRegionAccessPointOperation to determine the status of asynchronous requests."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?requestTokenARN=fun()->{requestTokenARN}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("RequestTokenARN",(Option.mapx.requestTokenARN~f:AsyncRequestTokenARN.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letrequestTokenARN=(Option.map~f:AsyncRequestTokenARN.of_xml)(Xml.childxml_arg0"RequestTokenARN")inmake?requestTokenARN()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letrequestTokenARN=field_mapjson__"RequestTokenARN"AsyncRequestTokenARN.of_jsoninmake?requestTokenARN()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Deletes a Multi-Region Access Point. This action does not delete the buckets associated with the Multi-Region Access Point, only the Multi-Region Access Point itself. This action will always be routed to the US West (Oregon) Region. For more information about the restrictions around working with Multi-Region Access Points, see Multi-Region Access Point restrictions and limitations in the Amazon S3 User Guide. This request is asynchronous, meaning that you might receive a response before the command has completed. When this request provides a response, it provides a token that you can use to monitor the status of the request with DescribeMultiRegionAccessPointOperation. The following actions are related to DeleteMultiRegionAccessPoint: CreateMultiRegionAccessPoint DescribeMultiRegionAccessPointOperation GetMultiRegionAccessPoint ListMultiRegionAccessPoints"]moduleDeleteMultiRegionAccessPointRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID for the owner of the Multi-Region Access Point."];clientToken:MultiRegionAccessPointClientToken.t[@ocaml.doc"An idempotency token used to identify the request and guarantee that requests are unique."];details:DeleteMultiRegionAccessPointInput.t[@ocaml.doc"A container element containing details about the Multi-Region Access Point."]}letcontext_="DeleteMultiRegionAccessPointRequest"letmake~accountId=fun~clientToken->fun~details->fun()->{accountId;clientToken;details}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("ClientToken",(Some(MultiRegionAccessPointClientToken.to_valuex.clientToken)));("Details",(Some(DeleteMultiRegionAccessPointInput.to_valuex.details)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdetails=DeleteMultiRegionAccessPointInput.of_xml(Xml.child_exn~context:context_xml_arg0"Details")inletclientToken=MultiRegionAccessPointClientToken.of_xml(Xml.child_exn~context:context_xml_arg0"ClientToken")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~details~clientToken~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdetails=field_map_exnjson__"Details"DeleteMultiRegionAccessPointInput.of_jsoninletclientToken=field_map_exnjson__"ClientToken"MultiRegionAccessPointClientToken.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~details~clientToken~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Deletes a Multi-Region Access Point. This action does not delete the buckets associated with the Multi-Region Access Point, only the Multi-Region Access Point itself. This action will always be routed to the US West (Oregon) Region. For more information about the restrictions around working with Multi-Region Access Points, see Multi-Region Access Point restrictions and limitations in the Amazon S3 User Guide. This request is asynchronous, meaning that you might receive a response before the command has completed. When this request provides a response, it provides a token that you can use to monitor the status of the request with DescribeMultiRegionAccessPointOperation. The following actions are related to DeleteMultiRegionAccessPoint: CreateMultiRegionAccessPoint DescribeMultiRegionAccessPointOperation GetMultiRegionAccessPoint ListMultiRegionAccessPoints"]moduleDeleteJobTaggingResult=structtypenonrect=unittypenonrecerror=[`InternalServiceExceptionofInternalServiceException.t|`NotFoundExceptionofNotFoundException.t|`TooManyRequestsExceptionofTooManyRequestsException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"InternalServiceException"->`InternalServiceException(InternalServiceException.of_jsonjson)|"NotFoundException"->`NotFoundException(NotFoundException.of_jsonjson)|"TooManyRequestsException"->`TooManyRequestsException(TooManyRequestsException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"InternalServiceException"->`InternalServiceException(InternalServiceException.of_xmlxml)|"NotFoundException"->`NotFoundException(NotFoundException.of_xmlxml)|"TooManyRequestsException"->`TooManyRequestsException(TooManyRequestsException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`InternalServiceExceptione->`Assoc[("error",(`String"InternalServiceException"));("details",(InternalServiceException.to_jsone))]|`NotFoundExceptione->`Assoc[("error",(`String"NotFoundException"));("details",(NotFoundException.to_jsone))]|`TooManyRequestsExceptione->`Assoc[("error",(`String"TooManyRequestsException"));("details",(TooManyRequestsException.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 entire tag set from the specified S3 Batch Operations job. Permissions To use the DeleteJobTagging operation, you must have permission to perform the s3:DeleteJobTagging action. For more information, see Controlling access and labeling jobs using tags in the Amazon S3 User Guide. Related actions include: CreateJob GetJobTagging PutJobTagging"]moduleDeleteJobTaggingRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID associated with the S3 Batch Operations job."];jobId:JobId.t[@ocaml.doc"The ID for the S3 Batch Operations job whose tags you want to delete."]}letcontext_="DeleteJobTaggingRequest"letmake~accountId=fun~jobId->fun()->{accountId;jobId}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("id",(Some(JobId.to_valuex.jobId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letjobId=JobId.of_xml(Xml.child_exn~context:context_xml_arg0"id")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~jobId~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letjobId=field_map_exnjson__"JobId"JobId.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~jobId~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Removes the entire tag set from the specified S3 Batch Operations job. Permissions To use the DeleteJobTagging operation, you must have permission to perform the s3:DeleteJobTagging action. For more information, see Controlling access and labeling jobs using tags in the Amazon S3 User Guide. Related actions include: CreateJob GetJobTagging PutJobTagging"]moduleDeleteBucketTaggingRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the Outposts bucket tag set to be removed."];bucket:BucketName.t[@ocaml.doc"The bucket ARN that has the tag set to be removed. For using this parameter with Amazon S3 on Outposts with the REST API, you must specify the name and the x-amz-outpost-id as well. For using this parameter with S3 on Outposts with the Amazon Web Services SDK and CLI, you must specify the ARN of the bucket accessed in the format arn:aws:s3-outposts:<Region>:<account-id>:outpost/<outpost-id>/bucket/<my-bucket-name>. For example, to access the bucket reports through Outpost my-outpost owned by account 123456789012 in Region us-west-2, use the URL encoding of arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/bucket/reports. The value must be URL encoded."]}letcontext_="DeleteBucketTaggingRequest"letmake~accountId=fun~bucket->fun()->{accountId;bucket}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(BucketName.to_valuex.bucket)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letbucket=BucketName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~bucket~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letbucket=field_map_exnjson__"Bucket"BucketName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~bucket~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This action deletes an Amazon S3 on Outposts bucket's tags. To delete an S3 bucket tags, see DeleteBucketTagging in the Amazon S3 API Reference. Deletes the tags from the Outposts bucket. For more information, see Using Amazon S3 on Outposts in Amazon S3 User Guide. To use this action, you must have permission to perform the PutBucketTagging action. By default, the bucket owner has this permission and can grant this permission to others. All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section. The following actions are related to DeleteBucketTagging: GetBucketTagging PutBucketTagging"]moduleDeleteBucketRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The account ID that owns the Outposts bucket."];bucket:BucketName.t[@ocaml.doc"Specifies the bucket being deleted. For using this parameter with Amazon S3 on Outposts with the REST API, you must specify the name and the x-amz-outpost-id as well. For using this parameter with S3 on Outposts with the Amazon Web Services SDK and CLI, you must specify the ARN of the bucket accessed in the format arn:aws:s3-outposts:<Region>:<account-id>:outpost/<outpost-id>/bucket/<my-bucket-name>. For example, to access the bucket reports through Outpost my-outpost owned by account 123456789012 in Region us-west-2, use the URL encoding of arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/bucket/reports. The value must be URL encoded."]}letcontext_="DeleteBucketRequest"letmake~accountId=fun~bucket->fun()->{accountId;bucket}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(BucketName.to_valuex.bucket)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letbucket=BucketName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~bucket~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letbucket=field_map_exnjson__"Bucket"BucketName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~bucket~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This action deletes an Amazon S3 on Outposts bucket. To delete an S3 bucket, see DeleteBucket in the Amazon S3 API Reference. Deletes the Amazon S3 on Outposts bucket. All objects (including all object versions and delete markers) in the bucket must be deleted before the bucket itself can be deleted. For more information, see Using Amazon S3 on Outposts in Amazon S3 User Guide. All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section. Related Resources CreateBucket GetBucket DeleteObject"]moduleDeleteBucketReplicationRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the Outposts bucket to delete the replication configuration for."];bucket:BucketName.t[@ocaml.doc"Specifies the S3 on Outposts bucket to delete the replication configuration for. For using this parameter with Amazon S3 on Outposts with the REST API, you must specify the name and the x-amz-outpost-id as well. For using this parameter with S3 on Outposts with the Amazon Web Services SDK and CLI, you must specify the ARN of the bucket accessed in the format arn:aws:s3-outposts:<Region>:<account-id>:outpost/<outpost-id>/bucket/<my-bucket-name>. For example, to access the bucket reports through Outpost my-outpost owned by account 123456789012 in Region us-west-2, use the URL encoding of arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/bucket/reports. The value must be URL encoded."]}letcontext_="DeleteBucketReplicationRequest"letmake~accountId=fun~bucket->fun()->{accountId;bucket}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(BucketName.to_valuex.bucket)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letbucket=BucketName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~bucket~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letbucket=field_map_exnjson__"Bucket"BucketName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~bucket~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation deletes an Amazon S3 on Outposts bucket's replication configuration. To delete an S3 bucket's replication configuration, see DeleteBucketReplication in the Amazon S3 API Reference. Deletes the replication configuration from the specified S3 on Outposts bucket. To use this operation, you must have permissions to perform the s3-outposts:PutReplicationConfiguration action. The Outposts bucket owner has this permission by default and can grant it to others. For more information about permissions, see Setting up IAM with S3 on Outposts and Managing access to S3 on Outposts buckets in the Amazon S3 User Guide. It can take a while to propagate PUT or DELETE requests for a replication configuration to all S3 on Outposts systems. Therefore, the replication configuration that's returned by a GET request soon after a PUT or DELETE request might return a more recent result than what's on the Outpost. If an Outpost is offline, the delay in updating the replication configuration on that Outpost can be significant. All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section. For information about S3 replication on Outposts configuration, see Replicating objects for S3 on Outposts in the Amazon S3 User Guide. The following operations are related to DeleteBucketReplication: PutBucketReplication GetBucketReplication"]moduleDeleteBucketPolicyRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The account ID of the Outposts bucket."];bucket:BucketName.t[@ocaml.doc"Specifies the bucket. For using this parameter with Amazon S3 on Outposts with the REST API, you must specify the name and the x-amz-outpost-id as well. For using this parameter with S3 on Outposts with the Amazon Web Services SDK and CLI, you must specify the ARN of the bucket accessed in the format arn:aws:s3-outposts:<Region>:<account-id>:outpost/<outpost-id>/bucket/<my-bucket-name>. For example, to access the bucket reports through Outpost my-outpost owned by account 123456789012 in Region us-west-2, use the URL encoding of arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/bucket/reports. The value must be URL encoded."]}letcontext_="DeleteBucketPolicyRequest"letmake~accountId=fun~bucket->fun()->{accountId;bucket}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(BucketName.to_valuex.bucket)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letbucket=BucketName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~bucket~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letbucket=field_map_exnjson__"Bucket"BucketName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~bucket~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This action deletes an Amazon S3 on Outposts bucket policy. To delete an S3 bucket policy, see DeleteBucketPolicy in the Amazon S3 API Reference. This implementation of the DELETE action uses the policy subresource to delete the policy of a specified Amazon S3 on Outposts bucket. If you are using an identity other than the root user of the Amazon Web Services account that owns the bucket, the calling identity must have the s3-outposts:DeleteBucketPolicy permissions on the specified Outposts bucket and belong to the bucket owner's account to use this action. For more information, see Using Amazon S3 on Outposts in Amazon S3 User Guide. If you don't have DeleteBucketPolicy permissions, Amazon S3 returns a 403 Access Denied error. If you have the correct permissions, but you're not using an identity that belongs to the bucket owner's account, Amazon S3 returns a 405 Method Not Allowed error. As a security precaution, the root user of the Amazon Web Services account that owns a bucket can always use this action, even if the policy explicitly denies the root user the ability to perform this action. For more information about bucket policies, see Using Bucket Policies and User Policies. All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section. The following actions are related to DeleteBucketPolicy: GetBucketPolicy PutBucketPolicy"]moduleDeleteBucketLifecycleConfigurationRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The account ID of the lifecycle configuration to delete."];bucket:BucketName.t[@ocaml.doc"Specifies the bucket. For using this parameter with Amazon S3 on Outposts with the REST API, you must specify the name and the x-amz-outpost-id as well. For using this parameter with S3 on Outposts with the Amazon Web Services SDK and CLI, you must specify the ARN of the bucket accessed in the format arn:aws:s3-outposts:<Region>:<account-id>:outpost/<outpost-id>/bucket/<my-bucket-name>. For example, to access the bucket reports through Outpost my-outpost owned by account 123456789012 in Region us-west-2, use the URL encoding of arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/bucket/reports. The value must be URL encoded."]}letcontext_="DeleteBucketLifecycleConfigurationRequest"letmake~accountId=fun~bucket->fun()->{accountId;bucket}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(BucketName.to_valuex.bucket)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letbucket=BucketName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~bucket~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letbucket=field_map_exnjson__"Bucket"BucketName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~bucket~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This action deletes an Amazon S3 on Outposts bucket's lifecycle configuration. To delete an S3 bucket's lifecycle configuration, see DeleteBucketLifecycle in the Amazon S3 API Reference. Deletes the lifecycle configuration from the specified Outposts bucket. Amazon S3 on Outposts removes all the lifecycle configuration rules in the lifecycle subresource associated with the bucket. Your objects never expire, and Amazon S3 on Outposts no longer automatically deletes any objects on the basis of rules contained in the deleted lifecycle configuration. For more information, see Using Amazon S3 on Outposts in Amazon S3 User Guide. To use this operation, you must have permission to perform the s3-outposts:PutLifecycleConfiguration action. By default, the bucket owner has this permission and the Outposts bucket owner can grant this permission to others. All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section. For more information about object expiration, see Elements to Describe Lifecycle Actions. Related actions include: PutBucketLifecycleConfiguration GetBucketLifecycleConfiguration"]moduleDeleteAccessPointScopeRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID that owns the access point with the scope that you want to delete."];name:AccessPointName.t[@ocaml.doc"The name of the access point with the scope that you want to delete."]}letcontext_="DeleteAccessPointScopeRequest"letmake~accountId=fun~name->fun()->{accountId;name}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(AccessPointName.to_valuex.name)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letname=AccessPointName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~name~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letname=field_map_exnjson__"Name"AccessPointName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~name~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Deletes an existing access point scope for a directory bucket. When you delete the scope of an access point, all prefixes and permissions are deleted. To use this operation, you must have the permission to perform the s3express:DeleteAccessPointScope action. For information about REST API errors, see REST error responses."]moduleDeleteAccessPointRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID for the account that owns the specified access point."];name:AccessPointName.t[@ocaml.doc"The name of the access point you want to delete. For using this parameter with Amazon S3 on Outposts with the REST API, you must specify the name and the x-amz-outpost-id as well. For using this parameter with S3 on Outposts with the Amazon Web Services SDK and CLI, you must specify the ARN of the access point accessed in the format arn:aws:s3-outposts:<Region>:<account-id>:outpost/<outpost-id>/accesspoint/<my-accesspoint-name>. For example, to access the access point reports-ap through Outpost my-outpost owned by account 123456789012 in Region us-west-2, use the URL encoding of arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/accesspoint/reports-ap. The value must be URL encoded."]}letcontext_="DeleteAccessPointRequest"letmake~accountId=fun~name->fun()->{accountId;name}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(AccessPointName.to_valuex.name)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letname=AccessPointName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~name~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letname=field_map_exnjson__"Name"AccessPointName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~name~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Deletes the specified access point. All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section. The following actions are related to DeleteAccessPoint: CreateAccessPoint GetAccessPoint ListAccessPoints"]moduleDeleteAccessPointPolicyRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The account ID for the account that owns the specified access point."];name:AccessPointName.t[@ocaml.doc"The name of the access point whose policy you want to delete. For using this parameter with Amazon S3 on Outposts with the REST API, you must specify the name and the x-amz-outpost-id as well. For using this parameter with S3 on Outposts with the Amazon Web Services SDK and CLI, you must specify the ARN of the access point accessed in the format arn:aws:s3-outposts:<Region>:<account-id>:outpost/<outpost-id>/accesspoint/<my-accesspoint-name>. For example, to access the access point reports-ap through Outpost my-outpost owned by account 123456789012 in Region us-west-2, use the URL encoding of arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/accesspoint/reports-ap. The value must be URL encoded."]}letcontext_="DeleteAccessPointPolicyRequest"letmake~accountId=fun~name->fun()->{accountId;name}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(AccessPointName.to_valuex.name)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letname=AccessPointName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~name~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letname=field_map_exnjson__"Name"AccessPointName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~name~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Deletes the access point policy for the specified access point. All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section. The following actions are related to DeleteAccessPointPolicy: PutAccessPointPolicy GetAccessPointPolicy"]moduleDeleteAccessPointPolicyForObjectLambdaRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The account ID for the account that owns the specified Object Lambda Access Point."];name:ObjectLambdaAccessPointName.t[@ocaml.doc"The name of the Object Lambda Access Point you want to delete the policy for."]}letcontext_="DeleteAccessPointPolicyForObjectLambdaRequest"letmake~accountId=fun~name->fun()->{accountId;name}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(ObjectLambdaAccessPointName.to_valuex.name)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letname=ObjectLambdaAccessPointName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~name~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letname=field_map_exnjson__"Name"ObjectLambdaAccessPointName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~name~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Removes the resource policy for an Object Lambda Access Point. The following actions are related to DeleteAccessPointPolicyForObjectLambda: GetAccessPointPolicyForObjectLambda PutAccessPointPolicyForObjectLambda"]moduleDeleteAccessPointForObjectLambdaRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The account ID for the account that owns the specified Object Lambda Access Point."];name:ObjectLambdaAccessPointName.t[@ocaml.doc"The name of the access point you want to delete."]}letcontext_="DeleteAccessPointForObjectLambdaRequest"letmake~accountId=fun~name->fun()->{accountId;name}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(ObjectLambdaAccessPointName.to_valuex.name)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letname=ObjectLambdaAccessPointName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~name~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letname=field_map_exnjson__"Name"ObjectLambdaAccessPointName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~name~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Deletes the specified Object Lambda Access Point. The following actions are related to DeleteAccessPointForObjectLambda: CreateAccessPointForObjectLambda GetAccessPointForObjectLambda ListAccessPointsForObjectLambda"]moduleDeleteAccessGrantsLocationRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the S3 Access Grants instance."];accessGrantsLocationId:AccessGrantsLocationId.t[@ocaml.doc"The ID of the registered location that you are deregistering from your S3 Access Grants instance. S3 Access Grants assigned this ID when you registered the location. S3 Access Grants assigns the ID default to the default location s3:// and assigns an auto-generated ID to other locations that you register."]}letcontext_="DeleteAccessGrantsLocationRequest"letmake~accountId=fun~accessGrantsLocationId->fun()->{accountId;accessGrantsLocationId}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("id",(Some(AccessGrantsLocationId.to_valuex.accessGrantsLocationId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccessGrantsLocationId=AccessGrantsLocationId.of_xml(Xml.child_exn~context:context_xml_arg0"id")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~accessGrantsLocationId~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccessGrantsLocationId=field_map_exnjson__"AccessGrantsLocationId"AccessGrantsLocationId.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~accessGrantsLocationId~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Deregisters a location from your S3 Access Grants instance. You can only delete a location registration from an S3 Access Grants instance if there are no grants associated with this location. See Delete a grant for information on how to delete grants. You need to have at least one registered location in your S3 Access Grants instance in order to create access grants. Permissions You must have the s3:DeleteAccessGrantsLocation permission to use this operation."]moduleDeleteAccessGrantsInstanceResourcePolicyRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the S3 Access Grants instance."]}letcontext_="DeleteAccessGrantsInstanceResourcePolicyRequest"letmake~accountId=fun()->{accountId}letof_header_and_body=((fun(xs,pipe)->make~accountId:(AccountId.of_string((List.Assoc.find_exn~equal:String.Caseless.equal)xs"x-amz-account-id"))())[@warning"-27"])letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Deletes the resource policy of the S3 Access Grants instance. The resource policy is used to manage cross-account access to your S3 Access Grants instance. By deleting the resource policy, you delete any cross-account permissions to your S3 Access Grants instance. Permissions You must have the s3:DeleteAccessGrantsInstanceResourcePolicy permission to use this operation."]moduleDeleteAccessGrantsInstanceRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the S3 Access Grants instance."]}letcontext_="DeleteAccessGrantsInstanceRequest"letmake~accountId=fun()->{accountId}letof_header_and_body=((fun(xs,pipe)->make~accountId:(AccountId.of_string((List.Assoc.find_exn~equal:String.Caseless.equal)xs"x-amz-account-id"))())[@warning"-27"])letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Deletes your S3 Access Grants instance. You must first delete the access grants and locations before S3 Access Grants can delete the instance. See DeleteAccessGrant and DeleteAccessGrantsLocation. If you have associated an IAM Identity Center instance with your S3 Access Grants instance, you must first dissassociate the Identity Center instance from the S3 Access Grants instance before you can delete the S3 Access Grants instance. See AssociateAccessGrantsIdentityCenter and DissociateAccessGrantsIdentityCenter. Permissions You must have the s3:DeleteAccessGrantsInstance permission to use this operation."]moduleDeleteAccessGrantRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the S3 Access Grants instance."];accessGrantId:AccessGrantId.t[@ocaml.doc"The ID of the access grant. S3 Access Grants auto-generates this ID when you create the access grant."]}letcontext_="DeleteAccessGrantRequest"letmake~accountId=fun~accessGrantId->fun()->{accountId;accessGrantId}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("id",(Some(AccessGrantId.to_valuex.accessGrantId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letaccessGrantId=AccessGrantId.of_xml(Xml.child_exn~context:context_xml_arg0"id")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~accessGrantId~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letaccessGrantId=field_map_exnjson__"AccessGrantId"AccessGrantId.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~accessGrantId~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Deletes the access grant from the S3 Access Grants instance. You cannot undo an access grant deletion and the grantee will no longer have access to the S3 data. Permissions You must have the s3:DeleteAccessGrant permission to use this operation."]moduleCreateStorageLensGroupRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID that the Storage Lens group is created from and associated with."];storageLensGroup:StorageLensGroup.t[@ocaml.doc"The Storage Lens group configuration."];tags:TagList.toption[@ocaml.doc"The Amazon Web Services resource tags that you're adding to your Storage Lens group. This parameter is optional."]}letcontext_="CreateStorageLensGroupRequest"letmake?tags=fun~accountId->fun~storageLensGroup->fun()->{tags;accountId;storageLensGroup}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("StorageLensGroup",(Some(StorageLensGroup.to_valuex.storageLensGroup)));("Tags",(Option.mapx.tags~f:TagList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:TagList.of_xml)(Xml.childxml_arg0"Tags")inletstorageLensGroup=StorageLensGroup.of_xml(Xml.child_exn~context:context_xml_arg0"StorageLensGroup")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake?tags~storageLensGroup~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"Tags"TagList.of_jsoninletstorageLensGroup=field_map_exnjson__"StorageLensGroup"StorageLensGroup.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake?tags~storageLensGroup~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates a new S3 Storage Lens group and associates it with the specified Amazon Web Services account ID. An S3 Storage Lens group is a custom grouping of objects based on prefix, suffix, object tags, object size, object age, or a combination of these filters. For each Storage Lens group that you\226\128\153ve created, you can also optionally add Amazon Web Services resource tags. For more information about S3 Storage Lens groups, see Working with S3 Storage Lens groups. To use this operation, you must have the permission to perform the s3:CreateStorageLensGroup action. If you\226\128\153re trying to create a Storage Lens group with Amazon Web Services resource tags, you must also have permission to perform the s3:TagResource action. For more information about the required Storage Lens Groups permissions, see Setting account permissions to use S3 Storage Lens groups. For information about Storage Lens groups errors, see List of Amazon S3 Storage Lens error codes."]moduleCreateMultiRegionAccessPointResult=structtypenonrect={requestTokenARN:AsyncRequestTokenARN.toption[@ocaml.doc"The request token associated with the request. You can use this token with DescribeMultiRegionAccessPointOperation to determine the status of asynchronous requests."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?requestTokenARN=fun()->{requestTokenARN}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("RequestTokenARN",(Option.mapx.requestTokenARN~f:AsyncRequestTokenARN.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letrequestTokenARN=(Option.map~f:AsyncRequestTokenARN.of_xml)(Xml.childxml_arg0"RequestTokenARN")inmake?requestTokenARN()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letrequestTokenARN=field_mapjson__"RequestTokenARN"AsyncRequestTokenARN.of_jsoninmake?requestTokenARN()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Creates a Multi-Region Access Point and associates it with the specified buckets. For more information about creating Multi-Region Access Points, see Creating Multi-Region Access Points in the Amazon S3 User Guide. This action will always be routed to the US West (Oregon) Region. For more information about the restrictions around working with Multi-Region Access Points, see Multi-Region Access Point restrictions and limitations in the Amazon S3 User Guide. This request is asynchronous, meaning that you might receive a response before the command has completed. When this request provides a response, it provides a token that you can use to monitor the status of the request with DescribeMultiRegionAccessPointOperation. The following actions are related to CreateMultiRegionAccessPoint: DeleteMultiRegionAccessPoint DescribeMultiRegionAccessPointOperation GetMultiRegionAccessPoint ListMultiRegionAccessPoints"]moduleCreateMultiRegionAccessPointRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID for the owner of the Multi-Region Access Point. The owner of the Multi-Region Access Point also must own the underlying buckets."];clientToken:MultiRegionAccessPointClientToken.t[@ocaml.doc"An idempotency token used to identify the request and guarantee that requests are unique."];details:CreateMultiRegionAccessPointInput.t[@ocaml.doc"A container element containing details about the Multi-Region Access Point."]}letcontext_="CreateMultiRegionAccessPointRequest"letmake~accountId=fun~clientToken->fun~details->fun()->{accountId;clientToken;details}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("ClientToken",(Some(MultiRegionAccessPointClientToken.to_valuex.clientToken)));("Details",(Some(CreateMultiRegionAccessPointInput.to_valuex.details)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdetails=CreateMultiRegionAccessPointInput.of_xml(Xml.child_exn~context:context_xml_arg0"Details")inletclientToken=MultiRegionAccessPointClientToken.of_xml(Xml.child_exn~context:context_xml_arg0"ClientToken")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~details~clientToken~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdetails=field_map_exnjson__"Details"CreateMultiRegionAccessPointInput.of_jsoninletclientToken=field_map_exnjson__"ClientToken"MultiRegionAccessPointClientToken.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~details~clientToken~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Creates a Multi-Region Access Point and associates it with the specified buckets. For more information about creating Multi-Region Access Points, see Creating Multi-Region Access Points in the Amazon S3 User Guide. This action will always be routed to the US West (Oregon) Region. For more information about the restrictions around working with Multi-Region Access Points, see Multi-Region Access Point restrictions and limitations in the Amazon S3 User Guide. This request is asynchronous, meaning that you might receive a response before the command has completed. When this request provides a response, it provides a token that you can use to monitor the status of the request with DescribeMultiRegionAccessPointOperation. The following actions are related to CreateMultiRegionAccessPoint: DeleteMultiRegionAccessPoint DescribeMultiRegionAccessPointOperation GetMultiRegionAccessPoint ListMultiRegionAccessPoints"]moduleCreateJobResult=structtypenonrect={jobId:JobId.toption[@ocaml.doc"The ID for this job. Amazon S3 generates this ID automatically and returns it after a successful Create Job request."]}typenonrecerror=[`BadRequestExceptionofBadRequestException.t|`IdempotencyExceptionofIdempotencyException.t|`InternalServiceExceptionofInternalServiceException.t|`TooManyRequestsExceptionofTooManyRequestsException.t|`Unknown_operation_errorof(string*stringoption)]letmake?jobId=fun()->{jobId}leterror_of_jsonnamejson=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_jsonjson)|"IdempotencyException"->`IdempotencyException(IdempotencyException.of_jsonjson)|"InternalServiceException"->`InternalServiceException(InternalServiceException.of_jsonjson)|"TooManyRequestsException"->`TooManyRequestsException(TooManyRequestsException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BadRequestException"->`BadRequestException(BadRequestException.of_xmlxml)|"IdempotencyException"->`IdempotencyException(IdempotencyException.of_xmlxml)|"InternalServiceException"->`InternalServiceException(InternalServiceException.of_xmlxml)|"TooManyRequestsException"->`TooManyRequestsException(TooManyRequestsException.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))]|`IdempotencyExceptione->`Assoc[("error",(`String"IdempotencyException"));("details",(IdempotencyException.to_jsone))]|`InternalServiceExceptione->`Assoc[("error",(`String"InternalServiceException"));("details",(InternalServiceException.to_jsone))]|`TooManyRequestsExceptione->`Assoc[("error",(`String"TooManyRequestsException"));("details",(TooManyRequestsException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("JobId",(Option.mapx.jobId~f:JobId.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letjobId=(Option.map~f:JobId.of_xml)(Xml.childxml_arg0"JobId")inmake?jobId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letjobId=field_mapjson__"JobId"JobId.of_jsoninmake?jobId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation creates an S3 Batch Operations job. You can use S3 Batch Operations to perform large-scale batch actions on Amazon S3 objects. Batch Operations can run a single action on lists of Amazon S3 objects that you specify. For more information, see S3 Batch Operations in the Amazon S3 User Guide. Permissions For information about permissions required to use the Batch Operations, see Granting permissions for S3 Batch Operations in the Amazon S3 User Guide. Related actions include: DescribeJob ListJobs UpdateJobPriority UpdateJobStatus JobOperation"]moduleCreateJobRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID that creates the job."];confirmationRequired:ConfirmationRequired.toption[@ocaml.doc"Indicates whether confirmation is required before Amazon S3 runs the job. Confirmation is only required for jobs created through the Amazon S3 console."];operation:JobOperation.t[@ocaml.doc"The action that you want this job to perform on every object listed in the manifest. For more information about the available actions, see Operations in the Amazon S3 User Guide."];report:JobReport.t[@ocaml.doc"Configuration parameters for the optional job-completion report."];clientRequestToken:NonEmptyMaxLength64String.t[@ocaml.doc"An idempotency token to ensure that you don't accidentally submit the same request twice. You can use any string up to the maximum length."];manifest:JobManifest.toption[@ocaml.doc"Configuration parameters for the manifest."];description:NonEmptyMaxLength256String.toption[@ocaml.doc"A description for this job. You can use any string within the permitted length. Descriptions don't need to be unique and can be used for multiple jobs."];priority:JobPriority.t[@ocaml.doc"The numerical priority for this job. Higher numbers indicate higher priority."];roleArn:IAMRoleArn.t[@ocaml.doc"The Amazon Resource Name (ARN) for the Identity and Access Management (IAM) role that Batch Operations will use to run this job's action on every object in the manifest."];tags:S3TagSet.toption[@ocaml.doc"A set of tags to associate with the S3 Batch Operations job. This is an optional parameter."];manifestGenerator:JobManifestGenerator.toption[@ocaml.doc"The attribute container for the ManifestGenerator details. Jobs must be created with either a manifest file or a ManifestGenerator, but not both."]}letcontext_="CreateJobRequest"letmake?confirmationRequired=fun?manifest->fun?description->fun?tags->fun?manifestGenerator->fun~accountId->fun~operation->fun~report->fun~clientRequestToken->fun~priority->fun~roleArn->fun()->{confirmationRequired;manifest;description;tags;manifestGenerator;accountId;operation;report;clientRequestToken;priority;roleArn}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("ConfirmationRequired",(Option.mapx.confirmationRequired~f:ConfirmationRequired.to_value));("Operation",(Some(JobOperation.to_valuex.operation)));("Report",(Some(JobReport.to_valuex.report)));("ClientRequestToken",(Some(NonEmptyMaxLength64String.to_valuex.clientRequestToken)));("Manifest",(Option.mapx.manifest~f:JobManifest.to_value));("Description",(Option.mapx.description~f:NonEmptyMaxLength256String.to_value));("Priority",(Some(JobPriority.to_valuex.priority)));("RoleArn",(Some(IAMRoleArn.to_valuex.roleArn)));("Tags",(Option.mapx.tags~f:S3TagSet.to_value));("ManifestGenerator",(Option.mapx.manifestGenerator~f:JobManifestGenerator.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmanifestGenerator=(Option.map~f:JobManifestGenerator.of_xml)(Xml.childxml_arg0"ManifestGenerator")inlettags=(Option.map~f:S3TagSet.of_xml)(Xml.childxml_arg0"Tags")inletroleArn=IAMRoleArn.of_xml(Xml.child_exn~context:context_xml_arg0"RoleArn")inletpriority=JobPriority.of_xml(Xml.child_exn~context:context_xml_arg0"Priority")inletdescription=(Option.map~f:NonEmptyMaxLength256String.of_xml)(Xml.childxml_arg0"Description")inletmanifest=(Option.map~f:JobManifest.of_xml)(Xml.childxml_arg0"Manifest")inletclientRequestToken=NonEmptyMaxLength64String.of_xml(Xml.child_exn~context:context_xml_arg0"ClientRequestToken")inletreport=JobReport.of_xml(Xml.child_exn~context:context_xml_arg0"Report")inletoperation=JobOperation.of_xml(Xml.child_exn~context:context_xml_arg0"Operation")inletconfirmationRequired=(Option.map~f:ConfirmationRequired.of_xml)(Xml.childxml_arg0"ConfirmationRequired")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake?manifestGenerator?tags~roleArn~priority?description?manifest~clientRequestToken~report~operation?confirmationRequired~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmanifestGenerator=field_mapjson__"ManifestGenerator"JobManifestGenerator.of_jsoninlettags=field_mapjson__"Tags"S3TagSet.of_jsoninletroleArn=field_map_exnjson__"RoleArn"IAMRoleArn.of_jsoninletpriority=field_map_exnjson__"Priority"JobPriority.of_jsoninletdescription=field_mapjson__"Description"NonEmptyMaxLength256String.of_jsoninletmanifest=field_mapjson__"Manifest"JobManifest.of_jsoninletclientRequestToken=field_map_exnjson__"ClientRequestToken"NonEmptyMaxLength64String.of_jsoninletreport=field_map_exnjson__"Report"JobReport.of_jsoninletoperation=field_map_exnjson__"Operation"JobOperation.of_jsoninletconfirmationRequired=field_mapjson__"ConfirmationRequired"ConfirmationRequired.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake?manifestGenerator?tags~roleArn~priority?description?manifest~clientRequestToken~report~operation?confirmationRequired~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation creates an S3 Batch Operations job. You can use S3 Batch Operations to perform large-scale batch actions on Amazon S3 objects. Batch Operations can run a single action on lists of Amazon S3 objects that you specify. For more information, see S3 Batch Operations in the Amazon S3 User Guide. Permissions For information about permissions required to use the Batch Operations, see Granting permissions for S3 Batch Operations in the Amazon S3 User Guide. Related actions include: DescribeJob ListJobs UpdateJobPriority UpdateJobStatus JobOperation"]moduleCreateBucketResult=structtypenonrect={location:Location.toption[@ocaml.doc"The location of the bucket."];bucketArn:S3RegionalBucketArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the bucket. For using this parameter with Amazon S3 on Outposts with the REST API, you must specify the name and the x-amz-outpost-id as well. For using this parameter with S3 on Outposts with the Amazon Web Services SDK and CLI, you must specify the ARN of the bucket accessed in the format arn:aws:s3-outposts:<Region>:<account-id>:outpost/<outpost-id>/bucket/<my-bucket-name>. For example, to access the bucket reports through Outpost my-outpost owned by account 123456789012 in Region us-west-2, use the URL encoding of arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/bucket/reports. The value must be URL encoded."]}typenonrecerror=[`BucketAlreadyExistsofBucketAlreadyExists.t|`BucketAlreadyOwnedByYouofBucketAlreadyOwnedByYou.t|`Unknown_operation_errorof(string*stringoption)]letmake?location=fun?bucketArn->fun()->{location;bucketArn}leterror_of_jsonnamejson=matchnamewith|"BucketAlreadyExists"->`BucketAlreadyExists(BucketAlreadyExists.of_jsonjson)|"BucketAlreadyOwnedByYou"->`BucketAlreadyOwnedByYou(BucketAlreadyOwnedByYou.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"BucketAlreadyExists"->`BucketAlreadyExists(BucketAlreadyExists.of_xmlxml)|"BucketAlreadyOwnedByYou"->`BucketAlreadyOwnedByYou(BucketAlreadyOwnedByYou.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`BucketAlreadyExistse->`Assoc[("error",(`String"BucketAlreadyExists"));("details",(BucketAlreadyExists.to_jsone))]|`BucketAlreadyOwnedByYoue->`Assoc[("error",(`String"BucketAlreadyOwnedByYou"));("details",(BucketAlreadyOwnedByYou.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Location",(Option.mapx.location~f:Location.to_value));("BucketArn",(Option.mapx.bucketArn~f:S3RegionalBucketArn.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letbucketArn=(Option.map~f:S3RegionalBucketArn.of_xml)(Xml.childxml_arg0"BucketArn")inletlocation=(Option.map~f:Location.of_xml)(Xml.childxml_arg0"Location")inmake?bucketArn?location()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letbucketArn=field_mapjson__"BucketArn"S3RegionalBucketArn.of_jsoninletlocation=field_mapjson__"Location"Location.of_jsoninmake?bucketArn?location()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This action creates an Amazon S3 on Outposts bucket. To create an S3 bucket, see Create Bucket in the Amazon S3 API Reference. Creates a new Outposts bucket. By creating the bucket, you become the bucket owner. To create an Outposts bucket, you must have S3 on Outposts. For more information, see Using Amazon S3 on Outposts in Amazon S3 User Guide. Not every string is an acceptable bucket name. For information on bucket naming restrictions, see Working with Amazon S3 Buckets. S3 on Outposts buckets support: Tags LifecycleConfigurations for deleting expired objects For a complete list of restrictions and Amazon S3 feature limitations on S3 on Outposts, see Amazon S3 on Outposts Restrictions and Limitations. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and x-amz-outpost-id in your API request, see the Examples section. The following actions are related to CreateBucket for Amazon S3 on Outposts: PutObject GetBucket DeleteBucket CreateAccessPoint PutAccessPointPolicy"]moduleCreateBucketRequest=structtypenonrect={aCL:BucketCannedACL.toption[@ocaml.doc"The canned ACL to apply to the bucket. This is not supported by Amazon S3 on Outposts buckets."];bucket:BucketName.t[@ocaml.doc"The name of the bucket."];createBucketConfiguration:CreateBucketConfiguration.toption[@ocaml.doc"The configuration information for the bucket. This is not supported by Amazon S3 on Outposts buckets."];grantFullControl:GrantFullControl.toption[@ocaml.doc"Allows grantee the read, write, read ACP, and write ACP permissions on the bucket. This is not supported by Amazon S3 on Outposts buckets."];grantRead:GrantRead.toption[@ocaml.doc"Allows grantee to list the objects in the bucket. This is not supported by Amazon S3 on Outposts buckets."];grantReadACP:GrantReadACP.toption[@ocaml.doc"Allows grantee to read the bucket ACL. This is not supported by Amazon S3 on Outposts buckets."];grantWrite:GrantWrite.toption[@ocaml.doc"Allows grantee to create, overwrite, and delete any object in the bucket. This is not supported by Amazon S3 on Outposts buckets."];grantWriteACP:GrantWriteACP.toption[@ocaml.doc"Allows grantee to write the ACL for the applicable bucket. This is not supported by Amazon S3 on Outposts buckets."];objectLockEnabledForBucket:ObjectLockEnabledForBucket.toption[@ocaml.doc"Specifies whether you want S3 Object Lock to be enabled for the new bucket. This is not supported by Amazon S3 on Outposts buckets."];outpostId:NonEmptyMaxLength64String.toption[@ocaml.doc"The ID of the Outposts where the bucket is being created. This ID is required by Amazon S3 on Outposts buckets."]}letcontext_="CreateBucketRequest"letmake?aCL=fun?createBucketConfiguration->fun?grantFullControl->fun?grantRead->fun?grantReadACP->fun?grantWrite->fun?grantWriteACP->fun?objectLockEnabledForBucket->fun?outpostId->fun~bucket->fun()->{aCL;createBucketConfiguration;grantFullControl;grantRead;grantReadACP;grantWrite;grantWriteACP;objectLockEnabledForBucket;outpostId;bucket}letof_header_and_body=((fun(xs,pipe)->make?aCL:(Option.map((List.Assoc.find~equal:String.Caseless.equal)xs"x-amz-acl")~f:BucketCannedACL.of_string)~bucket:(BucketName.of_string((List.Assoc.find_exn~equal:String.Caseless.equal)xs"name"))?createBucketConfiguration:(Somepipe)?grantFullControl:(Option.map((List.Assoc.find~equal:String.Caseless.equal)xs"x-amz-grant-full-control")~f:GrantFullControl.of_string)?grantRead:(Option.map((List.Assoc.find~equal:String.Caseless.equal)xs"x-amz-grant-read")~f:GrantRead.of_string)?grantReadACP:(Option.map((List.Assoc.find~equal:String.Caseless.equal)xs"x-amz-grant-read-acp")~f:GrantReadACP.of_string)?grantWrite:(Option.map((List.Assoc.find~equal:String.Caseless.equal)xs"x-amz-grant-write")~f:GrantWrite.of_string)?grantWriteACP:(Option.map((List.Assoc.find~equal:String.Caseless.equal)xs"x-amz-grant-write-acp")~f:GrantWriteACP.of_string)?objectLockEnabledForBucket:(Option.map((List.Assoc.find~equal:String.Caseless.equal)xs"x-amz-bucket-object-lock-enabled")~f:ObjectLockEnabledForBucket.of_string)?outpostId:(Option.map((List.Assoc.find~equal:String.Caseless.equal)xs"x-amz-outpost-id")~f:NonEmptyMaxLength64String.of_string)())[@warning"-27"])letto_valuex=structure_to_value[("x-amz-acl",(Option.mapx.aCL~f:BucketCannedACL.to_value));("name",(Some(BucketName.to_valuex.bucket)));("CreateBucketConfiguration",(Option.mapx.createBucketConfiguration~f:CreateBucketConfiguration.to_value));("x-amz-grant-full-control",(Option.mapx.grantFullControl~f:GrantFullControl.to_value));("x-amz-grant-read",(Option.mapx.grantRead~f:GrantRead.to_value));("x-amz-grant-read-acp",(Option.mapx.grantReadACP~f:GrantReadACP.to_value));("x-amz-grant-write",(Option.mapx.grantWrite~f:GrantWrite.to_value));("x-amz-grant-write-acp",(Option.mapx.grantWriteACP~f:GrantWriteACP.to_value));("x-amz-bucket-object-lock-enabled",(Option.mapx.objectLockEnabledForBucket~f:ObjectLockEnabledForBucket.to_value));("x-amz-outpost-id",(Option.mapx.outpostId~f:NonEmptyMaxLength64String.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letoutpostId=(Option.map~f:NonEmptyMaxLength64String.of_xml)(Xml.childxml_arg0"x-amz-outpost-id")inletobjectLockEnabledForBucket=(Option.map~f:ObjectLockEnabledForBucket.of_xml)(Xml.childxml_arg0"x-amz-bucket-object-lock-enabled")inletgrantWriteACP=(Option.map~f:GrantWriteACP.of_xml)(Xml.childxml_arg0"x-amz-grant-write-acp")inletgrantWrite=(Option.map~f:GrantWrite.of_xml)(Xml.childxml_arg0"x-amz-grant-write")inletgrantReadACP=(Option.map~f:GrantReadACP.of_xml)(Xml.childxml_arg0"x-amz-grant-read-acp")inletgrantRead=(Option.map~f:GrantRead.of_xml)(Xml.childxml_arg0"x-amz-grant-read")inletgrantFullControl=(Option.map~f:GrantFullControl.of_xml)(Xml.childxml_arg0"x-amz-grant-full-control")inletcreateBucketConfiguration=(Option.map~f:CreateBucketConfiguration.of_xml)(Xml.childxml_arg0"CreateBucketConfiguration")inletbucket=BucketName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaCL=(Option.map~f:BucketCannedACL.of_xml)(Xml.childxml_arg0"x-amz-acl")inmake?outpostId?objectLockEnabledForBucket?grantWriteACP?grantWrite?grantReadACP?grantRead?grantFullControl?createBucketConfiguration~bucket?aCL()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letoutpostId=field_mapjson__"OutpostId"NonEmptyMaxLength64String.of_jsoninletobjectLockEnabledForBucket=field_mapjson__"ObjectLockEnabledForBucket"ObjectLockEnabledForBucket.of_jsoninletgrantWriteACP=field_mapjson__"GrantWriteACP"GrantWriteACP.of_jsoninletgrantWrite=field_mapjson__"GrantWrite"GrantWrite.of_jsoninletgrantReadACP=field_mapjson__"GrantReadACP"GrantReadACP.of_jsoninletgrantRead=field_mapjson__"GrantRead"GrantRead.of_jsoninletgrantFullControl=field_mapjson__"GrantFullControl"GrantFullControl.of_jsoninletcreateBucketConfiguration=field_mapjson__"CreateBucketConfiguration"CreateBucketConfiguration.of_jsoninletbucket=field_map_exnjson__"Bucket"BucketName.of_jsoninletaCL=field_mapjson__"ACL"BucketCannedACL.of_jsoninmake?outpostId?objectLockEnabledForBucket?grantWriteACP?grantWrite?grantReadACP?grantRead?grantFullControl?createBucketConfiguration~bucket?aCL()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This action creates an Amazon S3 on Outposts bucket. To create an S3 bucket, see Create Bucket in the Amazon S3 API Reference. Creates a new Outposts bucket. By creating the bucket, you become the bucket owner. To create an Outposts bucket, you must have S3 on Outposts. For more information, see Using Amazon S3 on Outposts in Amazon S3 User Guide. Not every string is an acceptable bucket name. For information on bucket naming restrictions, see Working with Amazon S3 Buckets. S3 on Outposts buckets support: Tags LifecycleConfigurations for deleting expired objects For a complete list of restrictions and Amazon S3 feature limitations on S3 on Outposts, see Amazon S3 on Outposts Restrictions and Limitations. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and x-amz-outpost-id in your API request, see the Examples section. The following actions are related to CreateBucket for Amazon S3 on Outposts: PutObject GetBucket DeleteBucket CreateAccessPoint PutAccessPointPolicy"]moduleCreateAccessPointResult=structtypenonrect={accessPointArn:S3AccessPointArn.toption[@ocaml.doc"The ARN of the access point. This is only supported by Amazon S3 on Outposts."];alias:Alias.toption[@ocaml.doc"The name or alias of the access point."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?accessPointArn=fun?alias->fun()->{accessPointArn;alias}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("AccessPointArn",(Option.mapx.accessPointArn~f:S3AccessPointArn.to_value));("Alias",(Option.mapx.alias~f:Alias.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letalias=(Option.map~f:Alias.of_xml)(Xml.childxml_arg0"Alias")inletaccessPointArn=(Option.map~f:S3AccessPointArn.of_xml)(Xml.childxml_arg0"AccessPointArn")inmake?alias?accessPointArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letalias=field_mapjson__"Alias"Alias.of_jsoninletaccessPointArn=field_mapjson__"AccessPointArn"S3AccessPointArn.of_jsoninmake?alias?accessPointArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates an access point and associates it to a specified bucket. For more information, see Managing access to shared datasets with access points or Managing access to shared datasets in directory buckets with access points in the Amazon S3 User Guide. To create an access point and attach it to a volume on an Amazon FSx file system, see CreateAndAttachS3AccessPoint in the Amazon FSx API Reference. S3 on Outposts only supports VPC-style access points. For more information, see Accessing Amazon S3 on Outposts using virtual private cloud (VPC) only access points in the Amazon S3 User Guide. All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section. The following actions are related to CreateAccessPoint: GetAccessPoint DeleteAccessPoint ListAccessPoints ListAccessPointsForDirectoryBuckets"]moduleCreateAccessPointRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID for the account that owns the specified access point."];name:AccessPointName.t[@ocaml.doc"The name you want to assign to this access point. For directory buckets, the access point name must consist of a base name that you provide and suffix that includes the ZoneID (Amazon Web Services Availability Zone or Local Zone) of your bucket location, followed by --xa-s3. For more information, see Managing access to shared datasets in directory buckets with access points in the Amazon S3 User Guide."];bucket:BucketName.t[@ocaml.doc"The name of the bucket that you want to associate this access point with. For using this parameter with Amazon S3 on Outposts with the REST API, you must specify the name and the x-amz-outpost-id as well. For using this parameter with S3 on Outposts with the Amazon Web Services SDK and CLI, you must specify the ARN of the bucket accessed in the format arn:aws:s3-outposts:<Region>:<account-id>:outpost/<outpost-id>/bucket/<my-bucket-name>. For example, to access the bucket reports through Outpost my-outpost owned by account 123456789012 in Region us-west-2, use the URL encoding of arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/bucket/reports. The value must be URL encoded."];vpcConfiguration:VpcConfiguration.toption[@ocaml.doc"If you include this field, Amazon S3 restricts access to this access point to requests from the specified virtual private cloud (VPC). This is required for creating an access point for Amazon S3 on Outposts buckets."];publicAccessBlockConfiguration:PublicAccessBlockConfiguration.toption[@ocaml.doc"The PublicAccessBlock configuration that you want to apply to the access point."];bucketAccountId:AccountId.toption[@ocaml.doc"The Amazon Web Services account ID associated with the S3 bucket associated with this access point. For same account access point when your bucket and access point belong to the same account owner, the BucketAccountId is not required. For cross-account access point when your bucket and access point are not in the same account, the BucketAccountId is required."];scope:Scope.toption[@ocaml.doc"For directory buckets, you can filter access control to specific prefixes, API operations, or a combination of both. For more information, see Managing access to shared datasets in directory buckets with access points in the Amazon S3 User Guide. Scope is only supported for access points attached to directory buckets."];tags:TagList.toption[@ocaml.doc"An array of tags that you can apply to an access point. Tags are key-value pairs of metadata used to control access to your access points. For more information about tags, see Using tags with Amazon S3. For information about tagging access points, see Using tags for attribute-based access control (ABAC)."]}letcontext_="CreateAccessPointRequest"letmake?vpcConfiguration=fun?publicAccessBlockConfiguration->fun?bucketAccountId->fun?scope->fun?tags->fun~accountId->fun~name->fun~bucket->fun()->{vpcConfiguration;publicAccessBlockConfiguration;bucketAccountId;scope;tags;accountId;name;bucket}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(AccessPointName.to_valuex.name)));("Bucket",(Some(BucketName.to_valuex.bucket)));("VpcConfiguration",(Option.mapx.vpcConfiguration~f:VpcConfiguration.to_value));("PublicAccessBlockConfiguration",(Option.mapx.publicAccessBlockConfiguration~f:PublicAccessBlockConfiguration.to_value));("BucketAccountId",(Option.mapx.bucketAccountId~f:AccountId.to_value));("Scope",(Option.mapx.scope~f:Scope.to_value));("Tags",(Option.mapx.tags~f:TagList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:TagList.of_xml)(Xml.childxml_arg0"Tags")inletscope=(Option.map~f:Scope.of_xml)(Xml.childxml_arg0"Scope")inletbucketAccountId=(Option.map~f:AccountId.of_xml)(Xml.childxml_arg0"BucketAccountId")inletpublicAccessBlockConfiguration=(Option.map~f:PublicAccessBlockConfiguration.of_xml)(Xml.childxml_arg0"PublicAccessBlockConfiguration")inletvpcConfiguration=(Option.map~f:VpcConfiguration.of_xml)(Xml.childxml_arg0"VpcConfiguration")inletbucket=BucketName.of_xml(Xml.child_exn~context:context_xml_arg0"Bucket")inletname=AccessPointName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake?tags?scope?bucketAccountId?publicAccessBlockConfiguration?vpcConfiguration~bucket~name~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"Tags"TagList.of_jsoninletscope=field_mapjson__"Scope"Scope.of_jsoninletbucketAccountId=field_mapjson__"BucketAccountId"AccountId.of_jsoninletpublicAccessBlockConfiguration=field_mapjson__"PublicAccessBlockConfiguration"PublicAccessBlockConfiguration.of_jsoninletvpcConfiguration=field_mapjson__"VpcConfiguration"VpcConfiguration.of_jsoninletbucket=field_map_exnjson__"Bucket"BucketName.of_jsoninletname=field_map_exnjson__"Name"AccessPointName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake?tags?scope?bucketAccountId?publicAccessBlockConfiguration?vpcConfiguration~bucket~name~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates an access point and associates it to a specified bucket. For more information, see Managing access to shared datasets with access points or Managing access to shared datasets in directory buckets with access points in the Amazon S3 User Guide. To create an access point and attach it to a volume on an Amazon FSx file system, see CreateAndAttachS3AccessPoint in the Amazon FSx API Reference. S3 on Outposts only supports VPC-style access points. For more information, see Accessing Amazon S3 on Outposts using virtual private cloud (VPC) only access points in the Amazon S3 User Guide. All Amazon S3 on Outposts REST API requests for this action require an additional parameter of x-amz-outpost-id to be passed with the request. In addition, you must use an S3 on Outposts endpoint hostname prefix instead of s3-control. For an example of the request syntax for Amazon S3 on Outposts that uses the S3 on Outposts endpoint hostname prefix and the x-amz-outpost-id derived by using the access point ARN, see the Examples section. The following actions are related to CreateAccessPoint: GetAccessPoint DeleteAccessPoint ListAccessPoints ListAccessPointsForDirectoryBuckets"]moduleCreateAccessPointForObjectLambdaResult=structtypenonrect={objectLambdaAccessPointArn:ObjectLambdaAccessPointArn.toption[@ocaml.doc"Specifies the ARN for the Object Lambda Access Point."];alias:ObjectLambdaAccessPointAlias.toption[@ocaml.doc"The alias of the Object Lambda Access Point."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?objectLambdaAccessPointArn=fun?alias->fun()->{objectLambdaAccessPointArn;alias}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("ObjectLambdaAccessPointArn",(Option.mapx.objectLambdaAccessPointArn~f:ObjectLambdaAccessPointArn.to_value));("Alias",(Option.mapx.alias~f:ObjectLambdaAccessPointAlias.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letalias=(Option.map~f:ObjectLambdaAccessPointAlias.of_xml)(Xml.childxml_arg0"Alias")inletobjectLambdaAccessPointArn=(Option.map~f:ObjectLambdaAccessPointArn.of_xml)(Xml.childxml_arg0"ObjectLambdaAccessPointArn")inmake?alias?objectLambdaAccessPointArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letalias=field_mapjson__"Alias"ObjectLambdaAccessPointAlias.of_jsoninletobjectLambdaAccessPointArn=field_mapjson__"ObjectLambdaAccessPointArn"ObjectLambdaAccessPointArn.of_jsoninmake?alias?objectLambdaAccessPointArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Creates an Object Lambda Access Point. For more information, see Transforming objects with Object Lambda Access Points in the Amazon S3 User Guide. The following actions are related to CreateAccessPointForObjectLambda: DeleteAccessPointForObjectLambda GetAccessPointForObjectLambda ListAccessPointsForObjectLambda"]moduleCreateAccessPointForObjectLambdaRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID for owner of the specified Object Lambda Access Point."];name:ObjectLambdaAccessPointName.t[@ocaml.doc"The name you want to assign to this Object Lambda Access Point."];configuration:ObjectLambdaConfiguration.t[@ocaml.doc"Object Lambda Access Point configuration as a JSON document."]}letcontext_="CreateAccessPointForObjectLambdaRequest"letmake~accountId=fun~name->fun~configuration->fun()->{accountId;name;configuration}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("name",(Some(ObjectLambdaAccessPointName.to_valuex.name)));("Configuration",(Some(ObjectLambdaConfiguration.to_valuex.configuration)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letconfiguration=ObjectLambdaConfiguration.of_xml(Xml.child_exn~context:context_xml_arg0"Configuration")inletname=ObjectLambdaAccessPointName.of_xml(Xml.child_exn~context:context_xml_arg0"name")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~configuration~name~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letconfiguration=field_map_exnjson__"Configuration"ObjectLambdaConfiguration.of_jsoninletname=field_map_exnjson__"Name"ObjectLambdaAccessPointName.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~configuration~name~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is not supported by directory buckets. Creates an Object Lambda Access Point. For more information, see Transforming objects with Object Lambda Access Points in the Amazon S3 User Guide. The following actions are related to CreateAccessPointForObjectLambda: DeleteAccessPointForObjectLambda GetAccessPointForObjectLambda ListAccessPointsForObjectLambda"]moduleCreateAccessGrantsLocationResult=structtypenonrect={createdAt:CreationTimestamp.toption[@ocaml.doc"The date and time when you registered the location."];accessGrantsLocationId:AccessGrantsLocationId.toption[@ocaml.doc"The ID of the registered location to which you are granting access. S3 Access Grants assigns this ID when you register the location. S3 Access Grants assigns the ID default to the default location s3:// and assigns an auto-generated ID to other locations that you register."];accessGrantsLocationArn:AccessGrantsLocationArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the location you are registering."];locationScope:S3Prefix.toption[@ocaml.doc"The S3 URI path to the location that you are registering. The location scope can be the default S3 location s3://, the S3 path to a bucket, or the S3 path to a bucket and prefix. A prefix in S3 is a string of characters at the beginning of an object key name used to organize the objects that you store in your S3 buckets. For example, object key names that start with the engineering/ prefix or object key names that start with the marketing/campaigns/ prefix."];iAMRoleArn:IAMRoleArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the IAM role for the registered location. S3 Access Grants assumes this role to manage access to the registered location."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?createdAt=fun?accessGrantsLocationId->fun?accessGrantsLocationArn->fun?locationScope->fun?iAMRoleArn->fun()->{createdAt;accessGrantsLocationId;accessGrantsLocationArn;locationScope;iAMRoleArn}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("CreatedAt",(Option.mapx.createdAt~f:CreationTimestamp.to_value));("AccessGrantsLocationId",(Option.mapx.accessGrantsLocationId~f:AccessGrantsLocationId.to_value));("AccessGrantsLocationArn",(Option.mapx.accessGrantsLocationArn~f:AccessGrantsLocationArn.to_value));("LocationScope",(Option.mapx.locationScope~f:S3Prefix.to_value));("IAMRoleArn",(Option.mapx.iAMRoleArn~f:IAMRoleArn.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letiAMRoleArn=(Option.map~f:IAMRoleArn.of_xml)(Xml.childxml_arg0"IAMRoleArn")inletlocationScope=(Option.map~f:S3Prefix.of_xml)(Xml.childxml_arg0"LocationScope")inletaccessGrantsLocationArn=(Option.map~f:AccessGrantsLocationArn.of_xml)(Xml.childxml_arg0"AccessGrantsLocationArn")inletaccessGrantsLocationId=(Option.map~f:AccessGrantsLocationId.of_xml)(Xml.childxml_arg0"AccessGrantsLocationId")inletcreatedAt=(Option.map~f:CreationTimestamp.of_xml)(Xml.childxml_arg0"CreatedAt")inmake?iAMRoleArn?locationScope?accessGrantsLocationArn?accessGrantsLocationId?createdAt()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letiAMRoleArn=field_mapjson__"IAMRoleArn"IAMRoleArn.of_jsoninletlocationScope=field_mapjson__"LocationScope"S3Prefix.of_jsoninletaccessGrantsLocationArn=field_mapjson__"AccessGrantsLocationArn"AccessGrantsLocationArn.of_jsoninletaccessGrantsLocationId=field_mapjson__"AccessGrantsLocationId"AccessGrantsLocationId.of_jsoninletcreatedAt=field_mapjson__"CreatedAt"CreationTimestamp.of_jsoninmake?iAMRoleArn?locationScope?accessGrantsLocationArn?accessGrantsLocationId?createdAt()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The S3 data location that you would like to register in your S3 Access Grants instance. Your S3 data must be in the same Region as your S3 Access Grants instance. The location can be one of the following: The default S3 location s3:// A bucket - S3://<bucket-name> A bucket and prefix - S3://<bucket-name>/<prefix> When you register a location, you must include the IAM role that has permission to manage the S3 location that you are registering. Give S3 Access Grants permission to assume this role using a policy. S3 Access Grants assumes this role to manage access to the location and to vend temporary credentials to grantees or client applications. Permissions You must have the s3:CreateAccessGrantsLocation permission to use this operation. Additional Permissions You must also have the following permission for the specified IAM role: iam:PassRole"]moduleCreateAccessGrantsLocationRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the S3 Access Grants instance."];locationScope:S3Prefix.t[@ocaml.doc"The S3 path to the location that you are registering. The location scope can be the default S3 location s3://, the S3 path to a bucket s3://<bucket>, or the S3 path to a bucket and prefix s3://<bucket>/<prefix>. A prefix in S3 is a string of characters at the beginning of an object key name used to organize the objects that you store in your S3 buckets. For example, object key names that start with the engineering/ prefix or object key names that start with the marketing/campaigns/ prefix."];iAMRoleArn:IAMRoleArn.t[@ocaml.doc"The Amazon Resource Name (ARN) of the IAM role for the registered location. S3 Access Grants assumes this role to manage access to the registered location."];tags:TagList.toption[@ocaml.doc"The Amazon Web Services resource tags that you are adding to the S3 Access Grants location. Each tag is a label consisting of a user-defined key and value. Tags can help you manage, identify, organize, search for, and filter resources."]}letcontext_="CreateAccessGrantsLocationRequest"letmake?tags=fun~accountId->fun~locationScope->fun~iAMRoleArn->fun()->{tags;accountId;locationScope;iAMRoleArn}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("LocationScope",(Some(S3Prefix.to_valuex.locationScope)));("IAMRoleArn",(Some(IAMRoleArn.to_valuex.iAMRoleArn)));("Tags",(Option.mapx.tags~f:TagList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:TagList.of_xml)(Xml.childxml_arg0"Tags")inletiAMRoleArn=IAMRoleArn.of_xml(Xml.child_exn~context:context_xml_arg0"IAMRoleArn")inletlocationScope=S3Prefix.of_xml(Xml.child_exn~context:context_xml_arg0"LocationScope")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake?tags~iAMRoleArn~locationScope~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"Tags"TagList.of_jsoninletiAMRoleArn=field_map_exnjson__"IAMRoleArn"IAMRoleArn.of_jsoninletlocationScope=field_map_exnjson__"LocationScope"S3Prefix.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake?tags~iAMRoleArn~locationScope~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The S3 data location that you would like to register in your S3 Access Grants instance. Your S3 data must be in the same Region as your S3 Access Grants instance. The location can be one of the following: The default S3 location s3:// A bucket - S3://<bucket-name> A bucket and prefix - S3://<bucket-name>/<prefix> When you register a location, you must include the IAM role that has permission to manage the S3 location that you are registering. Give S3 Access Grants permission to assume this role using a policy. S3 Access Grants assumes this role to manage access to the location and to vend temporary credentials to grantees or client applications. Permissions You must have the s3:CreateAccessGrantsLocation permission to use this operation. Additional Permissions You must also have the following permission for the specified IAM role: iam:PassRole"]moduleCreateAccessGrantsInstanceResult=structtypenonrect={createdAt:CreationTimestamp.toption[@ocaml.doc"The date and time when you created the S3 Access Grants instance."];accessGrantsInstanceId:AccessGrantsInstanceId.toption[@ocaml.doc"The ID of the S3 Access Grants instance. The ID is default. You can have one S3 Access Grants instance per Region per account."];accessGrantsInstanceArn:AccessGrantsInstanceArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the Amazon Web Services IAM Identity Center instance that you are associating with your S3 Access Grants instance. An IAM Identity Center instance is your corporate identity directory that you added to the IAM Identity Center. You can use the ListInstances API operation to retrieve a list of your Identity Center instances and their ARNs."];identityCenterArn:IdentityCenterArn.toption[@ocaml.doc"If you associated your S3 Access Grants instance with an Amazon Web Services IAM Identity Center instance, this field returns the Amazon Resource Name (ARN) of the IAM Identity Center instance application; a subresource of the original Identity Center instance. S3 Access Grants creates this Identity Center application for the specific S3 Access Grants instance."];identityCenterInstanceArn:IdentityCenterArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the Amazon Web Services IAM Identity Center instance that you are associating with your S3 Access Grants instance. An IAM Identity Center instance is your corporate identity directory that you added to the IAM Identity Center. You can use the ListInstances API operation to retrieve a list of your Identity Center instances and their ARNs."];identityCenterApplicationArn:IdentityCenterApplicationArn.toption[@ocaml.doc"If you associated your S3 Access Grants instance with an Amazon Web Services IAM Identity Center instance, this field returns the Amazon Resource Name (ARN) of the IAM Identity Center instance application; a subresource of the original Identity Center instance. S3 Access Grants creates this Identity Center application for the specific S3 Access Grants instance."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?createdAt=fun?accessGrantsInstanceId->fun?accessGrantsInstanceArn->fun?identityCenterArn->fun?identityCenterInstanceArn->fun?identityCenterApplicationArn->fun()->{createdAt;accessGrantsInstanceId;accessGrantsInstanceArn;identityCenterArn;identityCenterInstanceArn;identityCenterApplicationArn}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("CreatedAt",(Option.mapx.createdAt~f:CreationTimestamp.to_value));("AccessGrantsInstanceId",(Option.mapx.accessGrantsInstanceId~f:AccessGrantsInstanceId.to_value));("AccessGrantsInstanceArn",(Option.mapx.accessGrantsInstanceArn~f:AccessGrantsInstanceArn.to_value));("IdentityCenterArn",(Option.mapx.identityCenterArn~f:IdentityCenterArn.to_value));("IdentityCenterInstanceArn",(Option.mapx.identityCenterInstanceArn~f:IdentityCenterArn.to_value));("IdentityCenterApplicationArn",(Option.mapx.identityCenterApplicationArn~f:IdentityCenterApplicationArn.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letidentityCenterApplicationArn=(Option.map~f:IdentityCenterApplicationArn.of_xml)(Xml.childxml_arg0"IdentityCenterApplicationArn")inletidentityCenterInstanceArn=(Option.map~f:IdentityCenterArn.of_xml)(Xml.childxml_arg0"IdentityCenterInstanceArn")inletidentityCenterArn=(Option.map~f:IdentityCenterArn.of_xml)(Xml.childxml_arg0"IdentityCenterArn")inletaccessGrantsInstanceArn=(Option.map~f:AccessGrantsInstanceArn.of_xml)(Xml.childxml_arg0"AccessGrantsInstanceArn")inletaccessGrantsInstanceId=(Option.map~f:AccessGrantsInstanceId.of_xml)(Xml.childxml_arg0"AccessGrantsInstanceId")inletcreatedAt=(Option.map~f:CreationTimestamp.of_xml)(Xml.childxml_arg0"CreatedAt")inmake?identityCenterApplicationArn?identityCenterInstanceArn?identityCenterArn?accessGrantsInstanceArn?accessGrantsInstanceId?createdAt()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letidentityCenterApplicationArn=field_mapjson__"IdentityCenterApplicationArn"IdentityCenterApplicationArn.of_jsoninletidentityCenterInstanceArn=field_mapjson__"IdentityCenterInstanceArn"IdentityCenterArn.of_jsoninletidentityCenterArn=field_mapjson__"IdentityCenterArn"IdentityCenterArn.of_jsoninletaccessGrantsInstanceArn=field_mapjson__"AccessGrantsInstanceArn"AccessGrantsInstanceArn.of_jsoninletaccessGrantsInstanceId=field_mapjson__"AccessGrantsInstanceId"AccessGrantsInstanceId.of_jsoninletcreatedAt=field_mapjson__"CreatedAt"CreationTimestamp.of_jsoninmake?identityCenterApplicationArn?identityCenterInstanceArn?identityCenterArn?accessGrantsInstanceArn?accessGrantsInstanceId?createdAt()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates an S3 Access Grants instance, which serves as a logical grouping for access grants. You can create one S3 Access Grants instance per Region per account. Permissions You must have the s3:CreateAccessGrantsInstance permission to use this operation. Additional Permissions To associate an IAM Identity Center instance with your S3 Access Grants instance, you must also have the sso:DescribeInstance, sso:CreateApplication, sso:PutApplicationGrant, and sso:PutApplicationAuthenticationMethod permissions."]moduleCreateAccessGrantsInstanceRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the S3 Access Grants instance."];identityCenterArn:IdentityCenterArn.toption[@ocaml.doc"If you would like to associate your S3 Access Grants instance with an Amazon Web Services IAM Identity Center instance, use this field to pass the Amazon Resource Name (ARN) of the Amazon Web Services IAM Identity Center instance that you are associating with your S3 Access Grants instance. An IAM Identity Center instance is your corporate identity directory that you added to the IAM Identity Center. You can use the ListInstances API operation to retrieve a list of your Identity Center instances and their ARNs."];tags:TagList.toption[@ocaml.doc"The Amazon Web Services resource tags that you are adding to the S3 Access Grants instance. Each tag is a label consisting of a user-defined key and value. Tags can help you manage, identify, organize, search for, and filter resources."]}letcontext_="CreateAccessGrantsInstanceRequest"letmake?identityCenterArn=fun?tags->fun~accountId->fun()->{identityCenterArn;tags;accountId}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("IdentityCenterArn",(Option.mapx.identityCenterArn~f:IdentityCenterArn.to_value));("Tags",(Option.mapx.tags~f:TagList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:TagList.of_xml)(Xml.childxml_arg0"Tags")inletidentityCenterArn=(Option.map~f:IdentityCenterArn.of_xml)(Xml.childxml_arg0"IdentityCenterArn")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake?tags?identityCenterArn~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"Tags"TagList.of_jsoninletidentityCenterArn=field_mapjson__"IdentityCenterArn"IdentityCenterArn.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake?tags?identityCenterArn~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates an S3 Access Grants instance, which serves as a logical grouping for access grants. You can create one S3 Access Grants instance per Region per account. Permissions You must have the s3:CreateAccessGrantsInstance permission to use this operation. Additional Permissions To associate an IAM Identity Center instance with your S3 Access Grants instance, you must also have the sso:DescribeInstance, sso:CreateApplication, sso:PutApplicationGrant, and sso:PutApplicationAuthenticationMethod permissions."]moduleCreateAccessGrantResult=structtypenonrect={createdAt:CreationTimestamp.toption[@ocaml.doc"The date and time when you created the access grant."];accessGrantId:AccessGrantId.toption[@ocaml.doc"The ID of the access grant. S3 Access Grants auto-generates this ID when you create the access grant."];accessGrantArn:AccessGrantArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the access grant."];grantee:Grantee.toption[@ocaml.doc"The user, group, or role to which you are granting access. You can grant access to an IAM user or role. If you have added your corporate directory to Amazon Web Services IAM Identity Center and associated your Identity Center instance with your S3 Access Grants instance, the grantee can also be a corporate directory user or group."];accessGrantsLocationId:AccessGrantsLocationId.toption[@ocaml.doc"The ID of the registered location to which you are granting access. S3 Access Grants assigns this ID when you register the location. S3 Access Grants assigns the ID default to the default location s3:// and assigns an auto-generated ID to other locations that you register."];accessGrantsLocationConfiguration:AccessGrantsLocationConfiguration.toption[@ocaml.doc"The configuration options of the grant location. The grant location is the S3 path to the data to which you are granting access."];permission:Permission.toption[@ocaml.doc"The type of access that you are granting to your S3 data, which can be set to one of the following values: READ \226\128\147 Grant read-only access to the S3 data. WRITE \226\128\147 Grant write-only access to the S3 data. READWRITE \226\128\147 Grant both read and write access to the S3 data."];applicationArn:IdentityCenterApplicationArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of an Amazon Web Services IAM Identity Center application associated with your Identity Center instance. If the grant includes an application ARN, the grantee can only access the S3 data through this application."];grantScope:S3Prefix.toption[@ocaml.doc"The S3 path of the data to which you are granting access. It is the result of appending the Subprefix to the location scope."]}typenonrecerror=[`Unknown_operation_errorof(string*stringoption)]letmake?createdAt=fun?accessGrantId->fun?accessGrantArn->fun?grantee->fun?accessGrantsLocationId->fun?accessGrantsLocationConfiguration->fun?permission->fun?applicationArn->fun?grantScope->fun()->{createdAt;accessGrantId;accessGrantArn;grantee;accessGrantsLocationId;accessGrantsLocationConfiguration;permission;applicationArn;grantScope}leterror_of_jsonnamejson=matchnamewith|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("CreatedAt",(Option.mapx.createdAt~f:CreationTimestamp.to_value));("AccessGrantId",(Option.mapx.accessGrantId~f:AccessGrantId.to_value));("AccessGrantArn",(Option.mapx.accessGrantArn~f:AccessGrantArn.to_value));("Grantee",(Option.mapx.grantee~f:Grantee.to_value));("AccessGrantsLocationId",(Option.mapx.accessGrantsLocationId~f:AccessGrantsLocationId.to_value));("AccessGrantsLocationConfiguration",(Option.mapx.accessGrantsLocationConfiguration~f:AccessGrantsLocationConfiguration.to_value));("Permission",(Option.mapx.permission~f:Permission.to_value));("ApplicationArn",(Option.mapx.applicationArn~f:IdentityCenterApplicationArn.to_value));("GrantScope",(Option.mapx.grantScope~f:S3Prefix.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letgrantScope=(Option.map~f:S3Prefix.of_xml)(Xml.childxml_arg0"GrantScope")inletapplicationArn=(Option.map~f:IdentityCenterApplicationArn.of_xml)(Xml.childxml_arg0"ApplicationArn")inletpermission=(Option.map~f:Permission.of_xml)(Xml.childxml_arg0"Permission")inletaccessGrantsLocationConfiguration=(Option.map~f:AccessGrantsLocationConfiguration.of_xml)(Xml.childxml_arg0"AccessGrantsLocationConfiguration")inletaccessGrantsLocationId=(Option.map~f:AccessGrantsLocationId.of_xml)(Xml.childxml_arg0"AccessGrantsLocationId")inletgrantee=(Option.map~f:Grantee.of_xml)(Xml.childxml_arg0"Grantee")inletaccessGrantArn=(Option.map~f:AccessGrantArn.of_xml)(Xml.childxml_arg0"AccessGrantArn")inletaccessGrantId=(Option.map~f:AccessGrantId.of_xml)(Xml.childxml_arg0"AccessGrantId")inletcreatedAt=(Option.map~f:CreationTimestamp.of_xml)(Xml.childxml_arg0"CreatedAt")inmake?grantScope?applicationArn?permission?accessGrantsLocationConfiguration?accessGrantsLocationId?grantee?accessGrantArn?accessGrantId?createdAt()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letgrantScope=field_mapjson__"GrantScope"S3Prefix.of_jsoninletapplicationArn=field_mapjson__"ApplicationArn"IdentityCenterApplicationArn.of_jsoninletpermission=field_mapjson__"Permission"Permission.of_jsoninletaccessGrantsLocationConfiguration=field_mapjson__"AccessGrantsLocationConfiguration"AccessGrantsLocationConfiguration.of_jsoninletaccessGrantsLocationId=field_mapjson__"AccessGrantsLocationId"AccessGrantsLocationId.of_jsoninletgrantee=field_mapjson__"Grantee"Grantee.of_jsoninletaccessGrantArn=field_mapjson__"AccessGrantArn"AccessGrantArn.of_jsoninletaccessGrantId=field_mapjson__"AccessGrantId"AccessGrantId.of_jsoninletcreatedAt=field_mapjson__"CreatedAt"CreationTimestamp.of_jsoninmake?grantScope?applicationArn?permission?accessGrantsLocationConfiguration?accessGrantsLocationId?grantee?accessGrantArn?accessGrantId?createdAt()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates an access grant that gives a grantee access to your S3 data. The grantee can be an IAM user or role or a directory user, or group. Before you can create a grant, you must have an S3 Access Grants instance in the same Region as the S3 data. You can create an S3 Access Grants instance using the CreateAccessGrantsInstance. You must also have registered at least one S3 data location in your S3 Access Grants instance using CreateAccessGrantsLocation. Permissions You must have the s3:CreateAccessGrant permission to use this operation. Additional Permissions For any directory identity - sso:DescribeInstance and sso:DescribeApplication For directory users - identitystore:DescribeUser For directory groups - identitystore:DescribeGroup"]moduleCreateAccessGrantRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the S3 Access Grants instance."];accessGrantsLocationId:AccessGrantsLocationId.t[@ocaml.doc"The ID of the registered location to which you are granting access. S3 Access Grants assigns this ID when you register the location. S3 Access Grants assigns the ID default to the default location s3:// and assigns an auto-generated ID to other locations that you register. If you are passing the default location, you cannot create an access grant for the entire default location. You must also specify a bucket or a bucket and prefix in the Subprefix field."];accessGrantsLocationConfiguration:AccessGrantsLocationConfiguration.toption[@ocaml.doc"The configuration options of the grant location. The grant location is the S3 path to the data to which you are granting access. It contains the S3SubPrefix field. The grant scope is the result of appending the subprefix to the location scope of the registered location."];grantee:Grantee.t[@ocaml.doc"The user, group, or role to which you are granting access. You can grant access to an IAM user or role. If you have added your corporate directory to Amazon Web Services IAM Identity Center and associated your Identity Center instance with your S3 Access Grants instance, the grantee can also be a corporate directory user or group."];permission:Permission.t[@ocaml.doc"The type of access that you are granting to your S3 data, which can be set to one of the following values: READ \226\128\147 Grant read-only access to the S3 data. WRITE \226\128\147 Grant write-only access to the S3 data. READWRITE \226\128\147 Grant both read and write access to the S3 data."];applicationArn:IdentityCenterApplicationArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of an Amazon Web Services IAM Identity Center application associated with your Identity Center instance. If an application ARN is included in the request to create an access grant, the grantee can only access the S3 data through this application."];s3PrefixType:S3PrefixType.toption[@ocaml.doc"The type of S3SubPrefix. The only possible value is Object. Pass this value if the access grant scope is an object. Do not pass this value if the access grant scope is a bucket or a bucket and a prefix."];tags:TagList.toption[@ocaml.doc"The Amazon Web Services resource tags that you are adding to the access grant. Each tag is a label consisting of a user-defined key and value. Tags can help you manage, identify, organize, search for, and filter resources."]}letcontext_="CreateAccessGrantRequest"letmake?accessGrantsLocationConfiguration=fun?applicationArn->fun?s3PrefixType->fun?tags->fun~accountId->fun~accessGrantsLocationId->fun~grantee->fun~permission->fun()->{accessGrantsLocationConfiguration;applicationArn;s3PrefixType;tags;accountId;accessGrantsLocationId;grantee;permission}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("AccessGrantsLocationId",(Some(AccessGrantsLocationId.to_valuex.accessGrantsLocationId)));("AccessGrantsLocationConfiguration",(Option.mapx.accessGrantsLocationConfiguration~f:AccessGrantsLocationConfiguration.to_value));("Grantee",(Some(Grantee.to_valuex.grantee)));("Permission",(Some(Permission.to_valuex.permission)));("ApplicationArn",(Option.mapx.applicationArn~f:IdentityCenterApplicationArn.to_value));("S3PrefixType",(Option.mapx.s3PrefixType~f:S3PrefixType.to_value));("Tags",(Option.mapx.tags~f:TagList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:TagList.of_xml)(Xml.childxml_arg0"Tags")inlets3PrefixType=(Option.map~f:S3PrefixType.of_xml)(Xml.childxml_arg0"S3PrefixType")inletapplicationArn=(Option.map~f:IdentityCenterApplicationArn.of_xml)(Xml.childxml_arg0"ApplicationArn")inletpermission=Permission.of_xml(Xml.child_exn~context:context_xml_arg0"Permission")inletgrantee=Grantee.of_xml(Xml.child_exn~context:context_xml_arg0"Grantee")inletaccessGrantsLocationConfiguration=(Option.map~f:AccessGrantsLocationConfiguration.of_xml)(Xml.childxml_arg0"AccessGrantsLocationConfiguration")inletaccessGrantsLocationId=AccessGrantsLocationId.of_xml(Xml.child_exn~context:context_xml_arg0"AccessGrantsLocationId")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake?tags?s3PrefixType?applicationArn~permission~grantee?accessGrantsLocationConfiguration~accessGrantsLocationId~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"Tags"TagList.of_jsoninlets3PrefixType=field_mapjson__"S3PrefixType"S3PrefixType.of_jsoninletapplicationArn=field_mapjson__"ApplicationArn"IdentityCenterApplicationArn.of_jsoninletpermission=field_map_exnjson__"Permission"Permission.of_jsoninletgrantee=field_map_exnjson__"Grantee"Grantee.of_jsoninletaccessGrantsLocationConfiguration=field_mapjson__"AccessGrantsLocationConfiguration"AccessGrantsLocationConfiguration.of_jsoninletaccessGrantsLocationId=field_map_exnjson__"AccessGrantsLocationId"AccessGrantsLocationId.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake?tags?s3PrefixType?applicationArn~permission~grantee?accessGrantsLocationConfiguration~accessGrantsLocationId~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates an access grant that gives a grantee access to your S3 data. The grantee can be an IAM user or role or a directory user, or group. Before you can create a grant, you must have an S3 Access Grants instance in the same Region as the S3 data. You can create an S3 Access Grants instance using the CreateAccessGrantsInstance. You must also have registered at least one S3 data location in your S3 Access Grants instance using CreateAccessGrantsLocation. Permissions You must have the s3:CreateAccessGrant permission to use this operation. Additional Permissions For any directory identity - sso:DescribeInstance and sso:DescribeApplication For directory users - identitystore:DescribeUser For directory groups - identitystore:DescribeGroup"]moduleAssociateAccessGrantsIdentityCenterRequest=structtypenonrect={accountId:AccountId.t[@ocaml.doc"The Amazon Web Services account ID of the S3 Access Grants instance."];identityCenterArn:IdentityCenterArn.t[@ocaml.doc"The Amazon Resource Name (ARN) of the Amazon Web Services IAM Identity Center instance that you are associating with your S3 Access Grants instance. An IAM Identity Center instance is your corporate identity directory that you added to the IAM Identity Center. You can use the ListInstances API operation to retrieve a list of your Identity Center instances and their ARNs."]}letcontext_="AssociateAccessGrantsIdentityCenterRequest"letmake~accountId=fun~identityCenterArn->fun()->{accountId;identityCenterArn}letto_valuex=structure_to_value[("x-amz-account-id",(Some(AccountId.to_valuex.accountId)));("IdentityCenterArn",(Some(IdentityCenterArn.to_valuex.identityCenterArn)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letidentityCenterArn=IdentityCenterArn.of_xml(Xml.child_exn~context:context_xml_arg0"IdentityCenterArn")inletaccountId=AccountId.of_xml(Xml.child_exn~context:context_xml_arg0"x-amz-account-id")inmake~identityCenterArn~accountId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letidentityCenterArn=field_map_exnjson__"IdentityCenterArn"IdentityCenterArn.of_jsoninletaccountId=field_map_exnjson__"AccountId"AccountId.of_jsoninmake~identityCenterArn~accountId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Associate your S3 Access Grants instance with an Amazon Web Services IAM Identity Center instance. Use this action if you want to create access grants for users or groups from your corporate identity directory. First, you must add your corporate identity directory to Amazon Web Services IAM Identity Center. Then, you can associate this IAM Identity Center instance with your S3 Access Grants instance. Permissions You must have the s3:AssociateAccessGrantsIdentityCenter permission to use this operation. Additional Permissions You must also have the following permissions: sso:CreateApplication, sso:PutApplicationGrant, and sso:PutApplicationAuthenticationMethod."]