123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071160721607316074160751607616077160781607916080160811608216083160841608516086160871608816089160901609116092160931609416095160961609716098160991610016101161021610316104161051610616107161081610916110161111611216113161141611516116161171611816119161201612116122161231612416125161261612716128161291613016131161321613316134161351613616137161381613916140161411614216143161441614516146161471614816149161501615116152161531615416155161561615716158161591616016161161621616316164161651616616167161681616916170161711617216173161741617516176161771617816179161801618116182161831618416185161861618716188161891619016191161921619316194161951619616197161981619916200162011620216203162041620516206162071620816209162101621116212162131621416215162161621716218162191622016221162221622316224162251622616227162281622916230162311623216233162341623516236162371623816239162401624116242162431624416245162461624716248162491625016251162521625316254162551625616257162581625916260162611626216263162641626516266162671626816269162701627116272162731627416275162761627716278162791628016281162821628316284162851628616287162881628916290162911629216293162941629516296162971629816299163001630116302163031630416305163061630716308163091631016311163121631316314163151631616317163181631916320163211632216323163241632516326163271632816329163301633116332163331633416335163361633716338163391634016341163421634316344163451634616347163481634916350163511635216353163541635516356163571635816359163601636116362163631636416365163661636716368163691637016371163721637316374163751637616377163781637916380163811638216383163841638516386163871638816389163901639116392163931639416395163961639716398163991640016401164021640316404164051640616407164081640916410164111641216413164141641516416164171641816419164201642116422164231642416425164261642716428164291643016431164321643316434164351643616437164381643916440164411644216443164441644516446164471644816449164501645116452164531645416455164561645716458164591646016461164621646316464164651646616467164681646916470164711647216473164741647516476164771647816479164801648116482164831648416485164861648716488164891649016491164921649316494164951649616497164981649916500165011650216503165041650516506165071650816509165101651116512165131651416515165161651716518165191652016521165221652316524165251652616527165281652916530165311653216533165341653516536165371653816539165401654116542165431654416545165461654716548165491655016551165521655316554165551655616557165581655916560165611656216563165641656516566165671656816569165701657116572165731657416575165761657716578165791658016581165821658316584165851658616587165881658916590165911659216593165941659516596165971659816599166001660116602166031660416605166061660716608166091661016611166121661316614166151661616617166181661916620166211662216623166241662516626166271662816629166301663116632166331663416635166361663716638166391664016641166421664316644166451664616647166481664916650166511665216653166541665516656166571665816659166601666116662166631666416665166661666716668166691667016671166721667316674166751667616677166781667916680166811668216683166841668516686166871668816689166901669116692166931669416695166961669716698166991670016701167021670316704167051670616707167081670916710167111671216713167141671516716167171671816719167201672116722167231672416725167261672716728167291673016731167321673316734167351673616737167381673916740167411674216743167441674516746167471674816749167501675116752167531675416755167561675716758167591676016761167621676316764167651676616767167681676916770167711677216773167741677516776167771677816779167801678116782167831678416785167861678716788167891679016791167921679316794167951679616797167981679916800168011680216803168041680516806168071680816809168101681116812168131681416815168161681716818168191682016821168221682316824168251682616827168281682916830168311683216833168341683516836168371683816839168401684116842168431684416845168461684716848168491685016851168521685316854168551685616857168581685916860168611686216863168641686516866168671686816869168701687116872168731687416875168761687716878168791688016881168821688316884168851688616887168881688916890168911689216893168941689516896168971689816899169001690116902169031690416905169061690716908169091691016911169121691316914169151691616917169181691916920169211692216923169241692516926169271692816929169301693116932169331693416935169361693716938169391694016941169421694316944169451694616947169481694916950169511695216953169541695516956169571695816959169601696116962169631696416965169661696716968169691697016971169721697316974169751697616977169781697916980169811698216983169841698516986169871698816989169901699116992169931699416995169961699716998169991700017001170021700317004170051700617007170081700917010170111701217013170141701517016170171701817019170201702117022170231702417025170261702717028170291703017031170321703317034170351703617037170381703917040170411704217043170441704517046170471704817049170501705117052170531705417055170561705717058170591706017061170621706317064170651706617067170681706917070170711707217073170741707517076170771707817079170801708117082170831708417085170861708717088170891709017091170921709317094170951709617097170981709917100171011710217103171041710517106171071710817109171101711117112171131711417115171161711717118171191712017121171221712317124171251712617127171281712917130171311713217133171341713517136171371713817139171401714117142171431714417145171461714717148171491715017151171521715317154171551715617157171581715917160171611716217163171641716517166171671716817169171701717117172171731717417175171761717717178171791718017181171821718317184171851718617187171881718917190171911719217193171941719517196171971719817199172001720117202172031720417205172061720717208172091721017211172121721317214172151721617217172181721917220172211722217223172241722517226172271722817229172301723117232172331723417235172361723717238172391724017241172421724317244172451724617247172481724917250172511725217253172541725517256172571725817259172601726117262172631726417265172661726717268172691727017271172721727317274172751727617277172781727917280172811728217283172841728517286172871728817289172901729117292172931729417295172961729717298172991730017301173021730317304173051730617307173081730917310173111731217313173141731517316173171731817319173201732117322173231732417325173261732717328173291733017331173321733317334173351733617337173381733917340173411734217343173441734517346173471734817349173501735117352173531735417355173561735717358173591736017361173621736317364173651736617367173681736917370173711737217373173741737517376173771737817379173801738117382173831738417385173861738717388173891739017391173921739317394173951739617397173981739917400174011740217403174041740517406174071740817409174101741117412174131741417415174161741717418174191742017421174221742317424174251742617427174281742917430174311743217433174341743517436174371743817439174401744117442174431744417445174461744717448174491745017451174521745317454174551745617457174581745917460174611746217463174641746517466174671746817469174701747117472174731747417475174761747717478174791748017481174821748317484174851748617487174881748917490174911749217493174941749517496174971749817499175001750117502175031750417505175061750717508175091751017511175121751317514175151751617517175181751917520175211752217523175241752517526175271752817529175301753117532175331753417535175361753717538175391754017541175421754317544175451754617547175481754917550175511755217553175541755517556175571755817559175601756117562175631756417565175661756717568175691757017571175721757317574175751757617577175781757917580175811758217583175841758517586175871758817589175901759117592175931759417595175961759717598175991760017601176021760317604176051760617607176081760917610176111761217613176141761517616176171761817619176201762117622176231762417625176261762717628176291763017631176321763317634176351763617637176381763917640176411764217643176441764517646176471764817649176501765117652176531765417655176561765717658176591766017661176621766317664176651766617667176681766917670176711767217673176741767517676176771767817679176801768117682176831768417685176861768717688176891769017691176921769317694176951769617697176981769917700177011770217703177041770517706177071770817709177101771117712177131771417715177161771717718177191772017721177221772317724177251772617727177281772917730177311773217733177341773517736177371773817739177401774117742177431774417745177461774717748177491775017751177521775317754177551775617757177581775917760177611776217763177641776517766177671776817769177701777117772177731777417775177761777717778177791778017781177821778317784177851778617787177881778917790177911779217793177941779517796177971779817799178001780117802178031780417805178061780717808178091781017811178121781317814178151781617817178181781917820178211782217823178241782517826178271782817829178301783117832178331783417835178361783717838178391784017841178421784317844178451784617847178481784917850178511785217853178541785517856178571785817859178601786117862178631786417865178661786717868178691787017871178721787317874178751787617877178781787917880178811788217883178841788517886178871788817889178901789117892178931789417895178961789717898178991790017901179021790317904179051790617907179081790917910179111791217913179141791517916179171791817919179201792117922179231792417925179261792717928179291793017931179321793317934179351793617937179381793917940179411794217943179441794517946179471794817949179501795117952179531795417955179561795717958179591796017961179621796317964179651796617967179681796917970179711797217973179741797517976179771797817979179801798117982179831798417985179861798717988179891799017991179921799317994179951799617997179981799918000180011800218003180041800518006180071800818009180101801118012180131801418015180161801718018180191802018021180221802318024180251802618027180281802918030180311803218033180341803518036180371803818039180401804118042180431804418045180461804718048180491805018051180521805318054180551805618057180581805918060180611806218063180641806518066180671806818069180701807118072180731807418075180761807718078180791808018081180821808318084180851808618087180881808918090180911809218093180941809518096180971809818099181001810118102181031810418105181061810718108181091811018111181121811318114181151811618117181181811918120181211812218123181241812518126181271812818129181301813118132181331813418135181361813718138181391814018141181421814318144181451814618147181481814918150181511815218153181541815518156181571815818159181601816118162181631816418165181661816718168181691817018171181721817318174181751817618177181781817918180181811818218183181841818518186(* 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.locationletapiVersion="2020-11-19"letendpointPrefix="geo"letserviceFullName="Amazon Location Service"letsignatureVersion="v4"letprotocol="rest_json"letglobalEndpoint=endpointPrefix^".amazonaws.com"letsimple_to_jsonto_valuex=Botodata.Json.value_to_json_scalar(to_valuex)letcomposed_to_jsonto_valuex=Botodata.Json.value_to_json(to_valuex)letto_queryto_valuex=Client.Query.of_value(to_valuex)letstructure_to_value_auxst~f=letfilter=function|(k,Somev)->Some(k,v)|_->Noneinletpairkv=(k,v)inletdefer_value(k,dv)=pairkdvin((List.filter_mapst~f:filter)|>(List.map~f:defer_value))|>(funx->`Structure(fx))letstructure_to_value=structure_to_value_aux~f:Fn.idletstructure_to_wrapped_value~wrapper~response=structure_to_value_aux~f:(funx->[(wrapper,(`Structurex));(response,(`Structure[]))])moduleDouble=structtypenonrect=floatletmakei=iletof_string=Float.of_stringletto_valuex=`Doublexletto_queryv=to_queryto_valuevletto_headerx=Stdlib.Float.to_stringxletof_xmlxml_arg0=Float.of_string(string_of_xml~kind:"a double"xml_arg0)letof_jsonj=float_of_json~kind:"a double"jletto_json=simple_to_jsonto_valueendmoduleEarfcn=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:262143)>>=(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 Earfcn"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleEutranCellId=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:268435455)>>=(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 EutranCellId"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmodulePci=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:503)>>=(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 Pci"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleRsrp=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:(-44))>>=(fun()->check_int_mini~min:(-140)));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 Rsrp"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleRsrq=structtypenonrect=floatletmakei=letopenResultinok_or_failwith((check_float_mini~min:(-3.))>>=(fun()->check_float_mini~min:(-19.5)));iletof_string=Float.of_stringletto_valuex=`Floatxletto_queryv=to_queryto_valuevletto_headerx=Stdlib.Float.to_stringxletof_xmlxml_arg0=Float.of_string(string_of_xml~kind:"a float"xml_arg0)letof_jsonj=float_of_json~kind:"a float"jletto_json=simple_to_jsonto_valueendmodulePosition=structtypenonrect=Double.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:2)>>=(fun()->check_list_mini~min:2));iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:Double.to_value))|>(funx->`Listx)letto_queryv=to_queryto_valuevletto_header_=failwithf"to_header is not implemented for List_shape objects"()letof_xmlx=make(List.map((Xml.all_childrenx)|>(List.filter~f:(function|`Datas->(matchStdlib.String.trimswith|""->false|_->true)|_->true)))~f:Double.of_xml)letof_jsonj=list_of_json~kind:"Position"~of_json:Double.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleLteNetworkMeasurements=structtypenonrect={earfcn:Earfcn.t[@ocaml.doc"E-UTRA (Evolved Universal Terrestrial Radio Access) absolute radio frequency channel number (EARFCN)."];cellId:EutranCellId.t[@ocaml.doc"E-UTRAN Cell Identifier (ECI)."];pci:Pci.t[@ocaml.doc"Physical Cell ID (PCI)."];rsrp:Rsrp.toption[@ocaml.doc"Signal power of the reference signal received, measured in dBm (decibel-milliwatts)."];rsrq:Rsrq.toption[@ocaml.doc"Signal quality of the reference Signal received, measured in decibels (dB)."]}letcontext_="LteNetworkMeasurements"letmake?rsrp=fun?rsrq->fun~earfcn->fun~cellId->fun~pci->fun()->{rsrp;rsrq;earfcn;cellId;pci}letto_valuex=structure_to_value[("Earfcn",(Some(Earfcn.to_valuex.earfcn)));("CellId",(Some(EutranCellId.to_valuex.cellId)));("Pci",(Some(Pci.to_valuex.pci)));("Rsrp",(Option.mapx.rsrp~f:Rsrp.to_value));("Rsrq",(Option.mapx.rsrq~f:Rsrq.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letrsrq=(Option.map~f:Rsrq.of_xml)(Xml.childxml_arg0"Rsrq")inletrsrp=(Option.map~f:Rsrp.of_xml)(Xml.childxml_arg0"Rsrp")inletpci=Pci.of_xml(Xml.child_exn~context:context_xml_arg0"Pci")inletcellId=EutranCellId.of_xml(Xml.child_exn~context:context_xml_arg0"CellId")inletearfcn=Earfcn.of_xml(Xml.child_exn~context:context_xml_arg0"Earfcn")inmake?rsrq?rsrp~pci~cellId~earfcn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letrsrq=field_mapjson__"Rsrq"Rsrq.of_jsoninletrsrp=field_mapjson__"Rsrp"Rsrp.of_jsoninletpci=field_map_exnjson__"Pci"Pci.of_jsoninletcellId=field_map_exnjson__"CellId"EutranCellId.of_jsoninletearfcn=field_map_exnjson__"Earfcn"Earfcn.of_jsoninmake?rsrq?rsrp~pci~cellId~earfcn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"LTE network measurements."]moduleAndroidPackageName=structtypenonrect=stringletcontext_="AndroidPackageName"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:255)>>=(fun()->check_patterni~pattern:"([A-Za-z][A-Za-z\\d_]*\\.)+[A-Za-z][A-Za-z\\d_]*")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"AndroidPackageName"jletto_json=simple_to_jsonto_valueendmoduleSha1CertificateFingerprint=structtypenonrect=stringletcontext_="Sha1CertificateFingerprint"letmakei=letopenResultinok_or_failwith((check_string_mini~min:59)>>=(fun()->(check_string_maxi~max:59)>>=(fun()->check_patterni~pattern:"([A-Fa-f0-9]{2}:){19}[A-Fa-f0-9]{2}")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"Sha1CertificateFingerprint"jletto_json=simple_to_jsonto_valueendmoduleAppleBundleId=structtypenonrect=stringletcontext_="AppleBundleId"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:155)>>=(fun()->check_patterni~pattern:"[A-Za-z0-9\\-]+(\\.[A-Za-z0-9\\-]+)+")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"AppleBundleId"jletto_json=simple_to_jsonto_valueendmoduleValidateAddressAdditionalFeature=structtypenonrect=|Position|CountrySpecificAttributes|Non_static_idofstringletmakei=iletto_string=function|Position->"Position"|CountrySpecificAttributes->"CountrySpecificAttributes"|Non_static_ids->sletof_string=function|"Position"->Position|"CountrySpecificAttributes"->CountrySpecificAttributes|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 ValidateAddressAdditionalFeature"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ValidateAddressAdditionalFeature"j)letto_json=simple_to_jsonto_valueendmoduleLinearRing=structtypenonrect=Position.tlistletmakei=letopenResultinok_or_failwith(check_list_mini~min:4);iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:Position.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:Position.of_xml)letof_jsonj=list_of_json~kind:"LinearRing"~of_json:Position.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleBoolean=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_valueendmoduleLteCellDetailsMccInteger=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:999)>>=(fun()->check_int_mini~min:200));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 LteCellDetailsMccInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleLteCellDetailsMncInteger=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:999)>>=(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 LteCellDetailsMncInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleLteCellDetailsNetworkMeasurementsList=structtypenonrect=LteNetworkMeasurements.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:32)>>=(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:LteNetworkMeasurements.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:LteNetworkMeasurements.of_xml)letof_jsonj=list_of_json~kind:"LteCellDetailsNetworkMeasurementsList"~of_json:LteNetworkMeasurements.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleLteCellDetailsTacInteger=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:65535)>>=(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 LteCellDetailsTacInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleLteCellDetailsTimingAdvanceInteger=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:1282)>>=(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 LteCellDetailsTimingAdvanceInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleLteLocalId=structtypenonrect={earfcn:Earfcn.t[@ocaml.doc"E-UTRA (Evolved Universal Terrestrial Radio Access) absolute radio frequency channel number (EARFCN)."];pci:Pci.t[@ocaml.doc"Physical Cell ID (PCI)."]}letcontext_="LteLocalId"letmake~earfcn=fun~pci->fun()->{earfcn;pci}letto_valuex=structure_to_value[("Earfcn",(Some(Earfcn.to_valuex.earfcn)));("Pci",(Some(Pci.to_valuex.pci)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letpci=Pci.of_xml(Xml.child_exn~context:context_xml_arg0"Pci")inletearfcn=Earfcn.of_xml(Xml.child_exn~context:context_xml_arg0"Earfcn")inmake~pci~earfcn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letpci=field_map_exnjson__"Pci"Pci.of_jsoninletearfcn=field_map_exnjson__"Earfcn"Earfcn.of_jsoninmake~pci~earfcn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"LTE local identification information (local ID)."]modulePlaceCategory=structtypenonrect=stringletcontext_="PlaceCategory"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:35)>>=(fun()->check_string_mini~min:0));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"PlaceCategory"jletto_json=simple_to_jsonto_valueendmodulePlaceSupplementalCategory=structtypenonrect=stringletcontext_="PlaceSupplementalCategory"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:35)>>=(fun()->check_string_mini~min:0));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"PlaceSupplementalCategory"jletto_json=simple_to_jsonto_valueendmoduleSensitiveInteger=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 SensitiveInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleSensitiveString=structtypenonrect=stringletcontext_="SensitiveString"letmakei=iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"SensitiveString"jletto_json=simple_to_jsonto_valueendmoduleApiKeyAction=structtypenonrect=stringletcontext_="ApiKeyAction"letmakei=letopenResultinok_or_failwith((check_string_mini~min:5)>>=(fun()->(check_string_maxi~max:200)>>=(fun()->check_patterni~pattern:"(geo|geo-routes|geo-places|geo-maps):\\w*\\*?")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"ApiKeyAction"jletto_json=simple_to_jsonto_valueendmoduleAndroidApp=structtypenonrect={package:AndroidPackageName.t[@ocaml.doc"Unique package name identifier for an Android app. Example: com.mydomain.appname"];certificateFingerprint:Sha1CertificateFingerprint.t[@ocaml.doc"20 byte SHA-1 certificate fingerprint associated with the Android app signing certificate. Example: BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:91:AF:A1:66:6E:44:5D:75"]}letcontext_="AndroidApp"letmake~package=fun~certificateFingerprint->fun()->{package;certificateFingerprint}letto_valuex=structure_to_value[("Package",(Some(AndroidPackageName.to_valuex.package)));("CertificateFingerprint",(Some(Sha1CertificateFingerprint.to_valuex.certificateFingerprint)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcertificateFingerprint=Sha1CertificateFingerprint.of_xml(Xml.child_exn~context:context_xml_arg0"CertificateFingerprint")inletpackage=AndroidPackageName.of_xml(Xml.child_exn~context:context_xml_arg0"Package")inmake~certificateFingerprint~package()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcertificateFingerprint=field_map_exnjson__"CertificateFingerprint"Sha1CertificateFingerprint.of_jsoninletpackage=field_map_exnjson__"Package"AndroidPackageName.of_jsoninmake~certificateFingerprint~package()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Unique identifying information for an Android app. Consists of a package name and a 20 byte SHA-1 certificate fingerprint."]moduleAppleApp=structtypenonrect={bundleId:AppleBundleId.t[@ocaml.doc"The unique identifier of the app across all Apple platforms (iOS, macOS, tvOS and watchOS). Example: com.mydomain.appname"]}letcontext_="AppleApp"letmake~bundleId=fun()->{bundleId}letto_valuex=structure_to_value[("BundleId",(Some(AppleBundleId.to_valuex.bundleId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letbundleId=AppleBundleId.of_xml(Xml.child_exn~context:context_xml_arg0"BundleId")inmake~bundleId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letbundleId=field_map_exnjson__"BundleId"AppleBundleId.of_jsoninmake~bundleId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Unique identifying information for an Apple app (iOS, macOS, tvOS and watchOS). Consists of an Apple Bundle ID."]moduleRefererPattern=structtypenonrect=stringletcontext_="RefererPattern"letmakei=letopenResultinok_or_failwith((check_string_mini~min:0)>>=(fun()->(check_string_maxi~max:253)>>=(fun()->check_patterni~pattern:"([\\w!$&()*+,./:;=?@\\x{60}-]|%([\\dA-Fa-f]{2}|[\\dA-Fa-f]?\\*))+")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"RefererPattern"jletto_json=simple_to_jsonto_valueendmoduleGeoArnV2=structtypenonrect=stringletcontext_="GeoArnV2"letmakei=letopenResultinok_or_failwith((check_string_mini~min:0)>>=(fun()->(check_string_maxi~max:1600)>>=(fun()->check_patterni~pattern:".*(^arn(:[a-z0-9]+([.-][a-z0-9]+)*):geo(:([a-z0-9]+([.-][a-z0-9]+)*))(:[0-9]+):((\\*)|([-a-z]+[/][*-._\\w]+))$)|(^arn(:[a-z0-9]+([.-][a-z0-9]+)*):(geo-routes|geo-places|geo-maps)(:((\\*)|([a-z0-9]+([.-][a-z0-9]+)*)))::((provider[\\/][*-._\\w]+))$).*")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"GeoArnV2"jletto_json=simple_to_jsonto_valueendmoduleValidateAddressAdditionalFeatureList=structtypenonrect=ValidateAddressAdditionalFeature.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:2)>>=(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:ValidateAddressAdditionalFeature.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:ValidateAddressAdditionalFeature.of_xml)letof_jsonj=list_of_json~kind:"ValidateAddressAdditionalFeatureList"~of_json:ValidateAddressAdditionalFeature.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleJobErrorMessage=structtypenonrect=stringletcontext_="JobErrorMessage"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:200)>>=(fun()->check_string_mini~min:1));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"JobErrorMessage"jletto_json=simple_to_jsonto_valueendmoduleSensitiveDouble=structtypenonrect=floatletmakei=iletof_string=Float.of_stringletto_valuex=`Doublexletto_queryv=to_queryto_valuevletto_headerx=Stdlib.Float.to_stringxletof_xmlxml_arg0=Float.of_string(string_of_xml~kind:"a double"xml_arg0)letof_jsonj=float_of_json~kind:"a double"jletto_json=simple_to_jsonto_valueendmoduleLinearRings=structtypenonrect=LinearRing.tlistletmakei=letopenResultinok_or_failwith(check_list_mini~min:1);iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:LinearRing.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:LinearRing.of_xml)letof_jsonj=list_of_json~kind:"LinearRings"~of_json:LinearRing.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleStepDistanceDouble=structtypenonrect=floatletmakei=letopenResultinok_or_failwith(check_float_mini~min:0.);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_valueendmoduleStepDurationSecondsDouble=structtypenonrect=floatletmakei=letopenResultinok_or_failwith(check_float_mini~min:0.);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_valueendmoduleStepGeometryOffsetInteger=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 StepGeometryOffsetInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleRouteMatrixErrorCode=structtypenonrect=|RouteNotFound|RouteTooLong|PositionsNotFound|DestinationPositionNotFound|DeparturePositionNotFound|OtherValidationError|Non_static_idofstringletmakei=iletto_string=function|RouteNotFound->"RouteNotFound"|RouteTooLong->"RouteTooLong"|PositionsNotFound->"PositionsNotFound"|DestinationPositionNotFound->"DestinationPositionNotFound"|DeparturePositionNotFound->"DeparturePositionNotFound"|OtherValidationError->"OtherValidationError"|Non_static_ids->sletof_string=function|"RouteNotFound"->RouteNotFound|"RouteTooLong"->RouteTooLong|"PositionsNotFound"->PositionsNotFound|"DestinationPositionNotFound"->DestinationPositionNotFound|"DeparturePositionNotFound"->DeparturePositionNotFound|"OtherValidationError"->OtherValidationError|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 RouteMatrixErrorCode"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"RouteMatrixErrorCode"j)letto_json=simple_to_jsonto_valueendmoduleString_=structtypenonrect=stringletcontext_="String"letmakei=iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"String"jletto_json=simple_to_jsonto_valueendmoduleLteCellDetails=structtypenonrect={cellId:EutranCellId.t[@ocaml.doc"The E-UTRAN Cell Identifier (ECI)."];mcc:LteCellDetailsMccInteger.t[@ocaml.doc"The Mobile Country Code (MCC)."];mnc:LteCellDetailsMncInteger.t[@ocaml.doc"The Mobile Network Code (MNC)"];localId:LteLocalId.toption[@ocaml.doc"The LTE local identification information (local ID)."];networkMeasurements:LteCellDetailsNetworkMeasurementsList.toption[@ocaml.doc"The network measurements."];timingAdvance:LteCellDetailsTimingAdvanceInteger.toption[@ocaml.doc"Timing Advance (TA)."];nrCapable:Boolean.toption[@ocaml.doc"Indicates whether the LTE object is capable of supporting NR (new radio)."];rsrp:Rsrp.toption[@ocaml.doc"Signal power of the reference signal received, measured in decibel-milliwatts (dBm)."];rsrq:Rsrq.toption[@ocaml.doc"Signal quality of the reference Signal received, measured in decibels (dB)."];tac:LteCellDetailsTacInteger.toption[@ocaml.doc"LTE Tracking Area Code (TAC)."]}letcontext_="LteCellDetails"letmake?localId=fun?networkMeasurements->fun?timingAdvance->fun?nrCapable->fun?rsrp->fun?rsrq->fun?tac->fun~cellId->fun~mcc->fun~mnc->fun()->{localId;networkMeasurements;timingAdvance;nrCapable;rsrp;rsrq;tac;cellId;mcc;mnc}letto_valuex=structure_to_value[("CellId",(Some(EutranCellId.to_valuex.cellId)));("Mcc",(Some(LteCellDetailsMccInteger.to_valuex.mcc)));("Mnc",(Some(LteCellDetailsMncInteger.to_valuex.mnc)));("LocalId",(Option.mapx.localId~f:LteLocalId.to_value));("NetworkMeasurements",(Option.mapx.networkMeasurements~f:LteCellDetailsNetworkMeasurementsList.to_value));("TimingAdvance",(Option.mapx.timingAdvance~f:LteCellDetailsTimingAdvanceInteger.to_value));("NrCapable",(Option.mapx.nrCapable~f:Boolean.to_value));("Rsrp",(Option.mapx.rsrp~f:Rsrp.to_value));("Rsrq",(Option.mapx.rsrq~f:Rsrq.to_value));("Tac",(Option.mapx.tac~f:LteCellDetailsTacInteger.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettac=(Option.map~f:LteCellDetailsTacInteger.of_xml)(Xml.childxml_arg0"Tac")inletrsrq=(Option.map~f:Rsrq.of_xml)(Xml.childxml_arg0"Rsrq")inletrsrp=(Option.map~f:Rsrp.of_xml)(Xml.childxml_arg0"Rsrp")inletnrCapable=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"NrCapable")inlettimingAdvance=(Option.map~f:LteCellDetailsTimingAdvanceInteger.of_xml)(Xml.childxml_arg0"TimingAdvance")inletnetworkMeasurements=(Option.map~f:LteCellDetailsNetworkMeasurementsList.of_xml)(Xml.childxml_arg0"NetworkMeasurements")inletlocalId=(Option.map~f:LteLocalId.of_xml)(Xml.childxml_arg0"LocalId")inletmnc=LteCellDetailsMncInteger.of_xml(Xml.child_exn~context:context_xml_arg0"Mnc")inletmcc=LteCellDetailsMccInteger.of_xml(Xml.child_exn~context:context_xml_arg0"Mcc")inletcellId=EutranCellId.of_xml(Xml.child_exn~context:context_xml_arg0"CellId")inmake?tac?rsrq?rsrp?nrCapable?timingAdvance?networkMeasurements?localId~mnc~mcc~cellId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettac=field_mapjson__"Tac"LteCellDetailsTacInteger.of_jsoninletrsrq=field_mapjson__"Rsrq"Rsrq.of_jsoninletrsrp=field_mapjson__"Rsrp"Rsrp.of_jsoninletnrCapable=field_mapjson__"NrCapable"Boolean.of_jsoninlettimingAdvance=field_mapjson__"TimingAdvance"LteCellDetailsTimingAdvanceInteger.of_jsoninletnetworkMeasurements=field_mapjson__"NetworkMeasurements"LteCellDetailsNetworkMeasurementsList.of_jsoninletlocalId=field_mapjson__"LocalId"LteLocalId.of_jsoninletmnc=field_map_exnjson__"Mnc"LteCellDetailsMncInteger.of_jsoninletmcc=field_map_exnjson__"Mcc"LteCellDetailsMccInteger.of_jsoninletcellId=field_map_exnjson__"CellId"EutranCellId.of_jsoninmake?tac?rsrq?rsrp?nrCapable?timingAdvance?networkMeasurements?localId~mnc~mcc~cellId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Details about the Long-Term Evolution (LTE) network."]moduleWiFiAccessPointMacAddressString=structtypenonrect=stringletcontext_="WiFiAccessPointMacAddressString"letmakei=letopenResultinok_or_failwith((check_string_mini~min:12)>>=(fun()->(check_string_maxi~max:17)>>=(fun()->check_patterni~pattern:"([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"WiFiAccessPointMacAddressString"jletto_json=simple_to_jsonto_valueendmoduleWiFiAccessPointRssInteger=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:0)>>=(fun()->check_int_mini~min:(-128)));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 WiFiAccessPointRssInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmodulePlaceCategoryList=structtypenonrect=PlaceCategory.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:10)>>=(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:PlaceCategory.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:PlaceCategory.of_xml)letof_jsonj=list_of_json~kind:"PlaceCategoryList"~of_json:PlaceCategory.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmodulePlaceGeometry=structtypenonrect={point:Position.toption[@ocaml.doc"A single point geometry specifies a location for a Place using WGS 84 coordinates: x \226\128\148 Specifies the x coordinate or longitude. y \226\128\148 Specifies the y coordinate or latitude."]}letmake?point=fun()->{point}letto_valuex=structure_to_value[("Point",(Option.mapx.point~f:Position.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letpoint=(Option.map~f:Position.of_xml)(Xml.childxml_arg0"Point")inmake?point()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letpoint=field_mapjson__"Point"Position.of_jsoninmake?point()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Places uses a point geometry to specify a location or a Place."]modulePlaceSupplementalCategoryList=structtypenonrect=PlaceSupplementalCategory.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:10)>>=(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:PlaceSupplementalCategory.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:PlaceSupplementalCategory.of_xml)letof_jsonj=list_of_json~kind:"PlaceSupplementalCategoryList"~of_json:PlaceSupplementalCategory.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleSensitiveBoolean=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_valueendmoduleTimeZone=structtypenonrect={name:SensitiveString.toption[@ocaml.doc"The name of the time zone, following the IANA time zone standard. For example, America/Los_Angeles."];offset:SensitiveInteger.toption[@ocaml.doc"The time zone's offset, in seconds, from UTC."]}letmake?name=fun?offset->fun()->{name;offset}letto_valuex=structure_to_value[("Name",(Option.mapx.name~f:SensitiveString.to_value));("Offset",(Option.mapx.offset~f:SensitiveInteger.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letoffset=(Option.map~f:SensitiveInteger.of_xml)(Xml.childxml_arg0"Offset")inletname=(Option.map~f:SensitiveString.of_xml)(Xml.childxml_arg0"Name")inmake?offset?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letoffset=field_mapjson__"Offset"SensitiveInteger.of_jsoninletname=field_mapjson__"Name"SensitiveString.of_jsoninmake?offset?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Information about a time zone. Includes the name of the time zone and the offset from UTC in seconds."]moduleApiKeyRestrictionsAllowActionsList=structtypenonrect=ApiKeyAction.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:24)>>=(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:ApiKeyAction.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:ApiKeyAction.of_xml)letof_jsonj=list_of_json~kind:"ApiKeyRestrictionsAllowActionsList"~of_json:ApiKeyAction.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleApiKeyRestrictionsAllowAndroidAppsList=structtypenonrect=AndroidApp.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:5)>>=(fun()->check_list_mini~min:0));iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:AndroidApp.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:AndroidApp.of_xml)letof_jsonj=list_of_json~kind:"ApiKeyRestrictionsAllowAndroidAppsList"~of_json:AndroidApp.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleApiKeyRestrictionsAllowAppleAppsList=structtypenonrect=AppleApp.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:5)>>=(fun()->check_list_mini~min:0));iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:AppleApp.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:AppleApp.of_xml)letof_jsonj=list_of_json~kind:"ApiKeyRestrictionsAllowAppleAppsList"~of_json:AppleApp.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleApiKeyRestrictionsAllowReferersList=structtypenonrect=RefererPattern.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:5)>>=(fun()->check_list_mini~min:0));iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:RefererPattern.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:RefererPattern.of_xml)letof_jsonj=list_of_json~kind:"ApiKeyRestrictionsAllowReferersList"~of_json:RefererPattern.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleApiKeyRestrictionsAllowResourcesList=structtypenonrect=GeoArnV2.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:8)>>=(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:GeoArnV2.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:GeoArnV2.of_xml)letof_jsonj=list_of_json~kind:"ApiKeyRestrictionsAllowResourcesList"~of_json:GeoArnV2.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleValidateAddressActionOptions=structtypenonrect={additionalFeatures:ValidateAddressAdditionalFeatureList.toption[@ocaml.doc"A list of optional additional parameters that can be requested for each result. Values: Position - Return the position coordinates of the address if available. CountrySpecificAttributes - Return additional information about the address specific to the country of origin."]}letmake?additionalFeatures=fun()->{additionalFeatures}letto_valuex=structure_to_value[("AdditionalFeatures",(Option.mapx.additionalFeatures~f:ValidateAddressAdditionalFeatureList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letadditionalFeatures=(Option.map~f:ValidateAddressAdditionalFeatureList.of_xml)(Xml.childxml_arg0"AdditionalFeatures")inmake?additionalFeatures()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letadditionalFeatures=field_mapjson__"AdditionalFeatures"ValidateAddressAdditionalFeatureList.of_jsoninmake?additionalFeatures()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Options specific to address validation jobs."]moduleJobErrorCode=structtypenonrect=|ValidationError|InternalServerError|Non_static_idofstringletmakei=iletto_string=function|ValidationError->"ValidationError"|InternalServerError->"InternalServerError"|Non_static_ids->sletof_string=function|"ValidationError"->ValidationError|"InternalServerError"->InternalServerError|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 JobErrorCode"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"JobErrorCode"j)letto_json=simple_to_jsonto_valueendmoduleJobErrorMessagesList=structtypenonrect=JobErrorMessage.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:4)>>=(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:JobErrorMessage.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:JobErrorMessage.of_xml)letof_jsonj=list_of_json~kind:"JobErrorMessagesList"~of_json:JobErrorMessage.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleJobInputFormat=structtypenonrect=|Parquet|Non_static_idofstringletmakei=iletto_string=function|Parquet->"Parquet"|Non_static_ids->sletof_string=function|"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 JobInputFormat"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"JobInputFormat"j)letto_json=simple_to_jsonto_valueendmoduleJobInputLocation=structtypenonrect=stringletcontext_="JobInputLocation"letmakei=letopenResultinok_or_failwith((check_string_mini~min:0)>>=(fun()->(check_string_maxi~max:300)>>=(fun()->check_patterni~pattern:"(arn:aws(-[a-z]+)*:[a-z0-9-]+:[a-z0-9-]*:(\\d{12})?:[\\w/+=,.-]+|s3://[a-z0-9][a-z0-9._-]{2,254}(/[^/]+)*/?)")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"JobInputLocation"jletto_json=simple_to_jsonto_valueendmoduleJobOutputFormat=structtypenonrect=|Parquet|Non_static_idofstringletmakei=iletto_string=function|Parquet->"Parquet"|Non_static_ids->sletof_string=function|"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 JobOutputFormat"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"JobOutputFormat"j)letto_json=simple_to_jsonto_valueendmoduleJobOutputLocation=structtypenonrect=stringletcontext_="JobOutputLocation"letmakei=letopenResultinok_or_failwith((check_string_mini~min:0)>>=(fun()->(check_string_maxi~max:300)>>=(fun()->check_patterni~pattern:"(arn:aws(-[a-z]+)*:[a-z0-9-]+:[a-z0-9-]*:(\\d{12})?:[\\w/+=,.-]+|s3://[a-z0-9][a-z0-9._-]{2,254}(/[^/]+)*/)")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"JobOutputLocation"jletto_json=simple_to_jsonto_valueendmoduleBase64EncodedGeobuf=structtypenonrect=stringletmakei=iletof_stringx=xletto_valuex=`Blobxletto_queryv=to_queryto_valuevletto_headerx=xletof_xmlxml_arg0=string_of_xml~kind:"a blob"xml_arg0letof_jsonj=string_of_json~kind:"a blob"jletto_json=simple_to_jsonto_valueendmoduleCircle=structtypenonrect={center:Position.t[@ocaml.doc"A single point geometry, specifying the center of the circle, using WGS 84 coordinates, in the form \\[longitude, latitude\\]."];radius:SensitiveDouble.t[@ocaml.doc"The radius of the circle in meters. Must be greater than zero and no larger than 100,000 (100 kilometers)."]}letcontext_="Circle"letmake~center=fun~radius->fun()->{center;radius}letto_valuex=structure_to_value[("Center",(Some(Position.to_valuex.center)));("Radius",(Some(SensitiveDouble.to_valuex.radius)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letradius=SensitiveDouble.of_xml(Xml.child_exn~context:context_xml_arg0"Radius")inletcenter=Position.of_xml(Xml.child_exn~context:context_xml_arg0"Center")inmake~radius~center()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letradius=field_map_exnjson__"Radius"SensitiveDouble.of_jsoninletcenter=field_map_exnjson__"Center"Position.of_jsoninmake~radius~center()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A circle on the earth, as defined by a center point and a radius."]moduleGeofenceGeometryMultiPolygonList=structtypenonrect=LinearRings.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:250)>>=(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:LinearRings.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:LinearRings.of_xml)letof_jsonj=list_of_json~kind:"GeofenceGeometryMultiPolygonList"~of_json:LinearRings.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleGeofenceGeometryPolygonList=structtypenonrect=LinearRing.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:250)>>=(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:LinearRing.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:LinearRing.of_xml)letof_jsonj=list_of_json~kind:"GeofenceGeometryPolygonList"~of_json:LinearRing.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmodulePropertyMapKeyString=structtypenonrect=stringletcontext_="PropertyMapKeyString"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:20)>>=(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:"PropertyMapKeyString"jletto_json=simple_to_jsonto_valueendmodulePropertyMapValueString=structtypenonrect=stringletcontext_="PropertyMapValueString"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:40)>>=(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:"PropertyMapValueString"jletto_json=simple_to_jsonto_valueendmodulePositionPropertyMapKeyString=structtypenonrect=stringletcontext_="PositionPropertyMapKeyString"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:20)>>=(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:"PositionPropertyMapKeyString"jletto_json=simple_to_jsonto_valueendmodulePositionPropertyMapValueString=structtypenonrect=stringletcontext_="PositionPropertyMapValueString"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:150)>>=(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:"PositionPropertyMapValueString"jletto_json=simple_to_jsonto_valueendmodulePositionalAccuracyHorizontalDouble=structtypenonrect=floatletmakei=letopenResultinok_or_failwith((check_float_mini~min:10000000.)>>=(fun()->check_float_mini~min:0.));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_valueendmoduleLineString=structtypenonrect=Position.tlistletmakei=letopenResultinok_or_failwith(check_list_mini~min:2);iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:Position.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:Position.of_xml)letof_jsonj=list_of_json~kind:"LineString"~of_json:Position.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleStep=structtypenonrect={startPosition:Position.toption[@ocaml.doc"The starting position of a step. If the position is the first step in the leg, this position is the same as the start position of the leg."];endPosition:Position.toption[@ocaml.doc"The end position of a step. If the position the last step in the leg, this position is the same as the end position of the leg."];distance:StepDistanceDouble.toption[@ocaml.doc"The travel distance between the step's StartPosition and EndPosition."];durationSeconds:StepDurationSecondsDouble.toption[@ocaml.doc"The estimated travel time, in seconds, from the step's StartPosition to the EndPosition. . The travel mode and departure time that you specify in the request determines the calculated time."];geometryOffset:StepGeometryOffsetInteger.toption[@ocaml.doc"Represents the start position, or index, in a sequence of steps within the leg's line string geometry. For example, the index of the first step in a leg geometry is 0. Included in the response for queries that set IncludeLegGeometry to True."]}letmake?startPosition=fun?endPosition->fun?distance->fun?durationSeconds->fun?geometryOffset->fun()->{startPosition;endPosition;distance;durationSeconds;geometryOffset}letto_valuex=structure_to_value[("StartPosition",(Option.mapx.startPosition~f:Position.to_value));("EndPosition",(Option.mapx.endPosition~f:Position.to_value));("Distance",(Option.mapx.distance~f:StepDistanceDouble.to_value));("DurationSeconds",(Option.mapx.durationSeconds~f:StepDurationSecondsDouble.to_value));("GeometryOffset",(Option.mapx.geometryOffset~f:StepGeometryOffsetInteger.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letgeometryOffset=(Option.map~f:StepGeometryOffsetInteger.of_xml)(Xml.childxml_arg0"GeometryOffset")inletdurationSeconds=(Option.map~f:StepDurationSecondsDouble.of_xml)(Xml.childxml_arg0"DurationSeconds")inletdistance=(Option.map~f:StepDistanceDouble.of_xml)(Xml.childxml_arg0"Distance")inletendPosition=(Option.map~f:Position.of_xml)(Xml.childxml_arg0"EndPosition")inletstartPosition=(Option.map~f:Position.of_xml)(Xml.childxml_arg0"StartPosition")inmake?geometryOffset?durationSeconds?distance?endPosition?startPosition()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letgeometryOffset=field_mapjson__"GeometryOffset"StepGeometryOffsetInteger.of_jsoninletdurationSeconds=field_mapjson__"DurationSeconds"StepDurationSecondsDouble.of_jsoninletdistance=field_mapjson__"Distance"StepDistanceDouble.of_jsoninletendPosition=field_mapjson__"EndPosition"Position.of_jsoninletstartPosition=field_mapjson__"StartPosition"Position.of_jsoninmake?geometryOffset?durationSeconds?distance?endPosition?startPosition()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Represents an element of a leg within a route. A step contains instructions for how to move to the next step in the leg."]moduleRouteMatrixEntryDistanceDouble=structtypenonrect=floatletmakei=letopenResultinok_or_failwith(check_float_mini~min:0.);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_valueendmoduleRouteMatrixEntryDurationSecondsDouble=structtypenonrect=floatletmakei=letopenResultinok_or_failwith(check_float_mini~min:0.);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_valueendmoduleRouteMatrixEntryError=structtypenonrect={code:RouteMatrixErrorCode.toption[@ocaml.doc"The type of error which occurred for the route calculation."];message:String_.toption[@ocaml.doc"A message about the error that occurred for the route calculation."]}letmake?code=fun?message->fun()->{code;message}letto_valuex=structure_to_value[("Code",(Option.mapx.code~f:RouteMatrixErrorCode.to_value));("Message",(Option.mapx.message~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmessage=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"Message")inletcode=(Option.map~f:RouteMatrixErrorCode.of_xml)(Xml.childxml_arg0"Code")inmake?message?code()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmessage=field_mapjson__"Message"String_.of_jsoninletcode=field_mapjson__"Code"RouteMatrixErrorCode.of_jsoninmake?message?code()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"An error corresponding to the calculation of a route between the DeparturePosition and DestinationPosition. The error code can be one of the following: RouteNotFound - Unable to find a valid route with the given parameters. RouteTooLong - Route calculation went beyond the maximum size of a route and was terminated before completion. PositionsNotFound - One or more of the input positions were not found on the route network. DestinationPositionNotFound - The destination position was not found on the route network. DeparturePositionNotFound - The departure position was not found on the route network. OtherValidationError - The given inputs were not valid or a route was not found. More information is given in the error Message"]moduleBatchItemErrorCode=structtypenonrect=|AccessDeniedError|ConflictError|InternalServerError|ResourceNotFoundError|ThrottlingError|ValidationError|Non_static_idofstringletmakei=iletto_string=function|AccessDeniedError->"AccessDeniedError"|ConflictError->"ConflictError"|InternalServerError->"InternalServerError"|ResourceNotFoundError->"ResourceNotFoundError"|ThrottlingError->"ThrottlingError"|ValidationError->"ValidationError"|Non_static_ids->sletof_string=function|"AccessDeniedError"->AccessDeniedError|"ConflictError"->ConflictError|"InternalServerError"->InternalServerError|"ResourceNotFoundError"->ResourceNotFoundError|"ThrottlingError"->ThrottlingError|"ValidationError"->ValidationError|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 BatchItemErrorCode"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"BatchItemErrorCode"j)letto_json=simple_to_jsonto_valueendmoduleValidationExceptionField=structtypenonrect={name:String_.toption[@ocaml.doc"The field name where the invalid entry was detected."];message:String_.toption[@ocaml.doc"A message with the reason for the validation exception error."]}letmake?name=fun?message->fun()->{name;message}letto_valuex=structure_to_value[("name",(Option.mapx.name~f:String_.to_value));("message",(Option.mapx.message~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmessage=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"message")inletname=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"name")inmake?message?name()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmessage=field_mapjson__"Message"String_.of_jsoninletname=field_mapjson__"Name"String_.of_jsoninmake?message?name()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The input failed to meet the constraints specified by the AWS service in a specified field."]moduleCellSignalsLteCellDetailsList=structtypenonrect=LteCellDetails.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:16)>>=(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:LteCellDetails.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:LteCellDetails.of_xml)letof_jsonj=list_of_json~kind:"CellSignalsLteCellDetailsList"~of_json:LteCellDetails.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleWiFiAccessPoint=structtypenonrect={macAddress:WiFiAccessPointMacAddressString.t[@ocaml.doc"Medium access control address (Mac)."];rss:WiFiAccessPointRssInteger.t[@ocaml.doc"Received signal strength (dBm) of the WLAN measurement data."]}letcontext_="WiFiAccessPoint"letmake~macAddress=fun~rss->fun()->{macAddress;rss}letto_valuex=structure_to_value[("MacAddress",(Some(WiFiAccessPointMacAddressString.to_valuex.macAddress)));("Rss",(Some(WiFiAccessPointRssInteger.to_valuex.rss)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letrss=WiFiAccessPointRssInteger.of_xml(Xml.child_exn~context:context_xml_arg0"Rss")inletmacAddress=WiFiAccessPointMacAddressString.of_xml(Xml.child_exn~context:context_xml_arg0"MacAddress")inmake~rss~macAddress()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letrss=field_map_exnjson__"Rss"WiFiAccessPointRssInteger.of_jsoninletmacAddress=field_map_exnjson__"MacAddress"WiFiAccessPointMacAddressString.of_jsoninmake~rss~macAddress()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Wi-Fi access point."]moduleCustomLayer=structtypenonrect=stringletcontext_="CustomLayer"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:100)>>=(fun()->check_patterni~pattern:"[-._\\w]+")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"CustomLayer"jletto_json=simple_to_jsonto_valueendmodulePlace=structtypenonrect={label:SensitiveString.toption[@ocaml.doc"The full name and address of the point of interest such as a city, region, or country. For example, 123 Any Street, Any Town, USA."];geometry:PlaceGeometry.toption;addressNumber:SensitiveString.toption[@ocaml.doc"The numerical portion of an address, such as a building number."];street:SensitiveString.toption[@ocaml.doc"The name for a street or a road to identify a location. For example, Main Street."];neighborhood:SensitiveString.toption[@ocaml.doc"The name of a community district. For example, Downtown."];municipality:SensitiveString.toption[@ocaml.doc"A name for a local area, such as a city or town name. For example, Toronto."];subRegion:SensitiveString.toption[@ocaml.doc"A county, or an area that's part of a larger region. For example, Metro Vancouver."];region:SensitiveString.toption[@ocaml.doc"A name for an area or geographical division, such as a province or state name. For example, British Columbia."];country:SensitiveString.toption[@ocaml.doc"A country/region specified using ISO 3166 3-digit country/region code. For example, CAN."];postalCode:SensitiveString.toption[@ocaml.doc"A group of numbers and letters in a country-specific format, which accompanies the address for the purpose of identifying a location."];interpolated:SensitiveBoolean.toption[@ocaml.doc"True if the result is interpolated from other known places. False if the Place is a known place. Not returned when the partner does not provide the information. For example, returns False for an address location that is found in the partner data, but returns True if an address does not exist in the partner data and its location is calculated by interpolating between other known addresses."];timeZone:TimeZone.toption[@ocaml.doc"The time zone in which the Place is located. Returned only when using HERE or Grab as the selected partner."];unitType:SensitiveString.toption[@ocaml.doc"For addresses with a UnitNumber, the type of unit. For example, Apartment. Returned only for a place index that uses Esri as a data provider."];unitNumber:SensitiveString.toption[@ocaml.doc"For addresses with multiple units, the unit identifier. Can include numbers and letters, for example 3B or Unit 123. Returned only for a place index that uses Esri or Grab as a data provider. Is not returned for SearchPlaceIndexForPosition."];categories:PlaceCategoryList.toption[@ocaml.doc"The Amazon Location categories that describe this Place. For more information about using categories, including a list of Amazon Location categories, see Categories and filtering, in the Amazon Location Service developer guide."];supplementalCategories:PlaceSupplementalCategoryList.toption[@ocaml.doc"Categories from the data provider that describe the Place that are not mapped to any Amazon Location categories."];subMunicipality:SensitiveString.toption[@ocaml.doc"An area that's part of a larger municipality. For example, Blissville is a submunicipality in the Queen County in New York. This property supported by Esri and OpenData. The Esri property is district, and the OpenData property is borough."]}letmake?label=fun?geometry->fun?addressNumber->fun?street->fun?neighborhood->fun?municipality->fun?subRegion->fun?region->fun?country->fun?postalCode->fun?interpolated->fun?timeZone->fun?unitType->fun?unitNumber->fun?categories->fun?supplementalCategories->fun?subMunicipality->fun()->{label;geometry;addressNumber;street;neighborhood;municipality;subRegion;region;country;postalCode;interpolated;timeZone;unitType;unitNumber;categories;supplementalCategories;subMunicipality}letto_valuex=structure_to_value[("Label",(Option.mapx.label~f:SensitiveString.to_value));("Geometry",(Option.mapx.geometry~f:PlaceGeometry.to_value));("AddressNumber",(Option.mapx.addressNumber~f:SensitiveString.to_value));("Street",(Option.mapx.street~f:SensitiveString.to_value));("Neighborhood",(Option.mapx.neighborhood~f:SensitiveString.to_value));("Municipality",(Option.mapx.municipality~f:SensitiveString.to_value));("SubRegion",(Option.mapx.subRegion~f:SensitiveString.to_value));("Region",(Option.mapx.region~f:SensitiveString.to_value));("Country",(Option.mapx.country~f:SensitiveString.to_value));("PostalCode",(Option.mapx.postalCode~f:SensitiveString.to_value));("Interpolated",(Option.mapx.interpolated~f:SensitiveBoolean.to_value));("TimeZone",(Option.mapx.timeZone~f:TimeZone.to_value));("UnitType",(Option.mapx.unitType~f:SensitiveString.to_value));("UnitNumber",(Option.mapx.unitNumber~f:SensitiveString.to_value));("Categories",(Option.mapx.categories~f:PlaceCategoryList.to_value));("SupplementalCategories",(Option.mapx.supplementalCategories~f:PlaceSupplementalCategoryList.to_value));("SubMunicipality",(Option.mapx.subMunicipality~f:SensitiveString.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letsubMunicipality=(Option.map~f:SensitiveString.of_xml)(Xml.childxml_arg0"SubMunicipality")inletsupplementalCategories=(Option.map~f:PlaceSupplementalCategoryList.of_xml)(Xml.childxml_arg0"SupplementalCategories")inletcategories=(Option.map~f:PlaceCategoryList.of_xml)(Xml.childxml_arg0"Categories")inletunitNumber=(Option.map~f:SensitiveString.of_xml)(Xml.childxml_arg0"UnitNumber")inletunitType=(Option.map~f:SensitiveString.of_xml)(Xml.childxml_arg0"UnitType")inlettimeZone=(Option.map~f:TimeZone.of_xml)(Xml.childxml_arg0"TimeZone")inletinterpolated=(Option.map~f:SensitiveBoolean.of_xml)(Xml.childxml_arg0"Interpolated")inletpostalCode=(Option.map~f:SensitiveString.of_xml)(Xml.childxml_arg0"PostalCode")inletcountry=(Option.map~f:SensitiveString.of_xml)(Xml.childxml_arg0"Country")inletregion=(Option.map~f:SensitiveString.of_xml)(Xml.childxml_arg0"Region")inletsubRegion=(Option.map~f:SensitiveString.of_xml)(Xml.childxml_arg0"SubRegion")inletmunicipality=(Option.map~f:SensitiveString.of_xml)(Xml.childxml_arg0"Municipality")inletneighborhood=(Option.map~f:SensitiveString.of_xml)(Xml.childxml_arg0"Neighborhood")inletstreet=(Option.map~f:SensitiveString.of_xml)(Xml.childxml_arg0"Street")inletaddressNumber=(Option.map~f:SensitiveString.of_xml)(Xml.childxml_arg0"AddressNumber")inletgeometry=(Option.map~f:PlaceGeometry.of_xml)(Xml.childxml_arg0"Geometry")inletlabel=(Option.map~f:SensitiveString.of_xml)(Xml.childxml_arg0"Label")inmake?subMunicipality?supplementalCategories?categories?unitNumber?unitType?timeZone?interpolated?postalCode?country?region?subRegion?municipality?neighborhood?street?addressNumber?geometry?label()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letsubMunicipality=field_mapjson__"SubMunicipality"SensitiveString.of_jsoninletsupplementalCategories=field_mapjson__"SupplementalCategories"PlaceSupplementalCategoryList.of_jsoninletcategories=field_mapjson__"Categories"PlaceCategoryList.of_jsoninletunitNumber=field_mapjson__"UnitNumber"SensitiveString.of_jsoninletunitType=field_mapjson__"UnitType"SensitiveString.of_jsoninlettimeZone=field_mapjson__"TimeZone"TimeZone.of_jsoninletinterpolated=field_mapjson__"Interpolated"SensitiveBoolean.of_jsoninletpostalCode=field_mapjson__"PostalCode"SensitiveString.of_jsoninletcountry=field_mapjson__"Country"SensitiveString.of_jsoninletregion=field_mapjson__"Region"SensitiveString.of_jsoninletsubRegion=field_mapjson__"SubRegion"SensitiveString.of_jsoninletmunicipality=field_mapjson__"Municipality"SensitiveString.of_jsoninletneighborhood=field_mapjson__"Neighborhood"SensitiveString.of_jsoninletstreet=field_mapjson__"Street"SensitiveString.of_jsoninletaddressNumber=field_mapjson__"AddressNumber"SensitiveString.of_jsoninletgeometry=field_mapjson__"Geometry"PlaceGeometry.of_jsoninletlabel=field_mapjson__"Label"SensitiveString.of_jsoninmake?subMunicipality?supplementalCategories?categories?unitNumber?unitType?timeZone?interpolated?postalCode?country?region?subRegion?municipality?neighborhood?street?addressNumber?geometry?label()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains details about addresses or points of interest that match the search criteria. Not all details are included with all responses. Some details may only be returned by specific data partners."]modulePlaceId=structtypenonrect=stringletcontext_="PlaceId"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:"PlaceId"jletto_json=simple_to_jsonto_valueendmoduleSearchForTextResultDistanceDouble=structtypenonrect=floatletmakei=letopenResultinok_or_failwith(check_float_mini~min:0.);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_valueendmoduleSearchForTextResultRelevanceDouble=structtypenonrect=floatletmakei=letopenResultinok_or_failwith((check_float_mini~min:1.)>>=(fun()->check_float_mini~min:0.));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_valueendmoduleCountryCode3=structtypenonrect=stringletcontext_="CountryCode3"letmakei=letopenResultinok_or_failwith((check_string_mini~min:3)>>=(fun()->(check_string_maxi~max:3)>>=(fun()->check_patterni~pattern:"[A-Z]{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:"CountryCode3"jletto_json=simple_to_jsonto_valueendmoduleSearchForPositionResultDistanceDouble=structtypenonrect=floatletmakei=letopenResultinok_or_failwith(check_float_mini~min:0.);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_valueendmodulePricingPlan=structtypenonrect=|RequestBasedUsage|MobileAssetTracking|MobileAssetManagement|Non_static_idofstringletmakei=iletto_string=function|RequestBasedUsage->"RequestBasedUsage"|MobileAssetTracking->"MobileAssetTracking"|MobileAssetManagement->"MobileAssetManagement"|Non_static_ids->sletof_string=function|"RequestBasedUsage"->RequestBasedUsage|"MobileAssetTracking"->MobileAssetTracking|"MobileAssetManagement"->MobileAssetManagement|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 PricingPlan"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"PricingPlan"j)letto_json=simple_to_jsonto_valueendmoduleResourceDescription=structtypenonrect=stringletcontext_="ResourceDescription"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:1000)>>=(fun()->check_string_mini~min:0));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"ResourceDescription"jletto_json=simple_to_jsonto_valueendmoduleResourceName=structtypenonrect=stringletcontext_="ResourceName"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:100)>>=(fun()->check_patterni~pattern:"[-._\\w]+")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"ResourceName"jletto_json=simple_to_jsonto_valueendmoduleTimestamp=structtypenonrect=stringletmakei=iletof_stringx=xletto_valuex=`Timestampxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=string_of_xml~kind:"a timestamp"letof_json=timestamp_of_jsonletto_json=simple_to_jsonto_valueendmoduleApiKeyRestrictions=structtypenonrect={allowActions:ApiKeyRestrictionsAllowActionsList.t[@ocaml.doc"A list of allowed actions that an API key resource grants permissions to perform. You must have at least one action for each type of resource. For example, if you have a place resource, you must include at least one place action. The following are valid values for the actions. Map actions geo:GetMap* - Allows all actions needed for map rendering. geo-maps:GetTile - Allows retrieving map tiles. geo-maps:GetStaticMap - Allows retrieving static map images. geo-maps:* - Allows all actions related to map functionalities. Place actions geo:SearchPlaceIndexForText - Allows geocoding. geo:SearchPlaceIndexForPosition - Allows reverse geocoding. geo:SearchPlaceIndexForSuggestions - Allows generating suggestions from text. GetPlace - Allows finding a place by place ID. geo-places:Geocode - Allows geocoding using place information. geo-places:ReverseGeocode - Allows reverse geocoding from location coordinates. geo-places:SearchNearby - Allows searching for places near a location. geo-places:SearchText - Allows searching for places based on text input. geo-places:Autocomplete - Allows auto-completion of place names based on text input. geo-places:Suggest - Allows generating suggestions for places based on partial input. geo-places:GetPlace - Allows finding a place by its ID. geo-places:* - Allows all actions related to place services. Route actions geo:CalculateRoute - Allows point to point routing. geo:CalculateRouteMatrix - Allows calculating a matrix of routes. geo-routes:CalculateRoutes - Allows calculating multiple routes between points. geo-routes:CalculateRouteMatrix - Allows calculating a matrix of routes between points. geo-routes:CalculateIsolines - Allows calculating isolines for a given area. geo-routes:OptimizeWaypoints - Allows optimizing the order of waypoints in a route. geo-routes:SnapToRoads - Allows snapping a route to the nearest roads. geo-routes:* - Allows all actions related to routing functionalities. You must use these strings exactly. For example, to provide access to map rendering, the only valid action is geo:GetMap* as an input to the list. \\[\"geo:GetMap*\"\\] is valid but \\[\"geo:GetMapTile\"\\] is not. Similarly, you cannot use \\[\"geo:SearchPlaceIndexFor*\"\\] - you must list each of the Place actions separately."];allowResources:ApiKeyRestrictionsAllowResourcesList.t[@ocaml.doc"A list of allowed resource ARNs that a API key bearer can perform actions on. The ARN must be the correct ARN for a map, place, or route ARN. You may include wildcards in the resource-id to match multiple resources of the same type. The resources must be in the same partition, region, and account-id as the key that is being created. Other than wildcards, you must include the full ARN, including the arn, partition, service, region, account-id and resource-id delimited by colons (:). No spaces allowed, even with wildcards. For example, arn:aws:geo:region:account-id:map/ExampleMap*. For more information about ARN format, see Amazon Resource Names (ARNs)."];allowReferers:ApiKeyRestrictionsAllowReferersList.toption[@ocaml.doc"An optional list of allowed HTTP referers for which requests must originate from. Requests using this API key from other domains will not be allowed. Requirements: Contain only alphanumeric characters (A\226\128\147Z, a\226\128\147z, 0\226\128\1479) or any symbols in this list $\\-._+!*`(),;/?:\\@=& May contain a percent (%) if followed by 2 hexadecimal digits (A-F, a-f, 0-9); this is used for URL encoding purposes. May contain wildcard characters question mark (?) and asterisk (*). Question mark (?) will replace any single character (including hexadecimal digits). Asterisk (*) will replace any multiple characters (including multiple hexadecimal digits). No spaces allowed. For example, https://example.com."];allowAndroidApps:ApiKeyRestrictionsAllowAndroidAppsList.toption[@ocaml.doc"An optional list of allowed Android applications for which requests must originate from. Requests using this API key from other sources will not be allowed."];allowAppleApps:ApiKeyRestrictionsAllowAppleAppsList.toption[@ocaml.doc"An optional list of allowed Apple applications for which requests must originate from. Requests using this API key from other sources will not be allowed."]}letcontext_="ApiKeyRestrictions"letmake?allowReferers=fun?allowAndroidApps->fun?allowAppleApps->fun~allowActions->fun~allowResources->fun()->{allowReferers;allowAndroidApps;allowAppleApps;allowActions;allowResources}letto_valuex=structure_to_value[("AllowActions",(Some(ApiKeyRestrictionsAllowActionsList.to_valuex.allowActions)));("AllowResources",(Some(ApiKeyRestrictionsAllowResourcesList.to_valuex.allowResources)));("AllowReferers",(Option.mapx.allowReferers~f:ApiKeyRestrictionsAllowReferersList.to_value));("AllowAndroidApps",(Option.mapx.allowAndroidApps~f:ApiKeyRestrictionsAllowAndroidAppsList.to_value));("AllowAppleApps",(Option.mapx.allowAppleApps~f:ApiKeyRestrictionsAllowAppleAppsList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letallowAppleApps=(Option.map~f:ApiKeyRestrictionsAllowAppleAppsList.of_xml)(Xml.childxml_arg0"AllowAppleApps")inletallowAndroidApps=(Option.map~f:ApiKeyRestrictionsAllowAndroidAppsList.of_xml)(Xml.childxml_arg0"AllowAndroidApps")inletallowReferers=(Option.map~f:ApiKeyRestrictionsAllowReferersList.of_xml)(Xml.childxml_arg0"AllowReferers")inletallowResources=ApiKeyRestrictionsAllowResourcesList.of_xml(Xml.child_exn~context:context_xml_arg0"AllowResources")inletallowActions=ApiKeyRestrictionsAllowActionsList.of_xml(Xml.child_exn~context:context_xml_arg0"AllowActions")inmake?allowAppleApps?allowAndroidApps?allowReferers~allowResources~allowActions()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letallowAppleApps=field_mapjson__"AllowAppleApps"ApiKeyRestrictionsAllowAppleAppsList.of_jsoninletallowAndroidApps=field_mapjson__"AllowAndroidApps"ApiKeyRestrictionsAllowAndroidAppsList.of_jsoninletallowReferers=field_mapjson__"AllowReferers"ApiKeyRestrictionsAllowReferersList.of_jsoninletallowResources=field_map_exnjson__"AllowResources"ApiKeyRestrictionsAllowResourcesList.of_jsoninletallowActions=field_map_exnjson__"AllowActions"ApiKeyRestrictionsAllowActionsList.of_jsoninmake?allowAppleApps?allowAndroidApps?allowReferers~allowResources~allowActions()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"API Restrictions on the allowed actions, resources, and referers for an API key resource."]moduleGeoArn=structtypenonrect=stringletcontext_="GeoArn"letmakei=letopenResultinok_or_failwith((check_string_mini~min:0)>>=(fun()->(check_string_maxi~max:1600)>>=(fun()->check_patterni~pattern:"arn(:[a-z0-9]+([.-][a-z0-9]+)*):geo(:([a-z0-9]+([.-][a-z0-9]+)*))(:[0-9]+):((\\*)|([-a-z]+[/][*-._\\w]+))")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"GeoArn"jletto_json=simple_to_jsonto_valueendmoduleIamRoleArn=structtypenonrect=stringletcontext_="IamRoleArn"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:"IamRoleArn"jletto_json=simple_to_jsonto_valueendmoduleJobAction=structtypenonrect=|ValidateAddress|Non_static_idofstringletmakei=iletto_string=function|ValidateAddress->"ValidateAddress"|Non_static_ids->sletof_string=function|"ValidateAddress"->ValidateAddress|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 JobAction"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"JobAction"j)letto_json=simple_to_jsonto_valueendmoduleJobActionOptions=structtypenonrect={validateAddress:ValidateAddressActionOptions.toption[@ocaml.doc"Options specific to address validation jobs."]}letmake?validateAddress=fun()->{validateAddress}letto_valuex=structure_to_value[("ValidateAddress",(Option.mapx.validateAddress~f:ValidateAddressActionOptions.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letvalidateAddress=(Option.map~f:ValidateAddressActionOptions.of_xml)(Xml.childxml_arg0"ValidateAddress")inmake?validateAddress()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letvalidateAddress=field_mapjson__"ValidateAddress"ValidateAddressActionOptions.of_jsoninmake?validateAddress()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Additional options for configuring job action parameters."]moduleJobError=structtypenonrect={code:JobErrorCode.toption[@ocaml.doc"Error code indicating the type of error that occurred."];messages:JobErrorMessagesList.toption[@ocaml.doc"Error messages providing details about the failure."]}letmake?code=fun?messages->fun()->{code;messages}letto_valuex=structure_to_value[("Code",(Option.mapx.code~f:JobErrorCode.to_value));("Messages",(Option.mapx.messages~f:JobErrorMessagesList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmessages=(Option.map~f:JobErrorMessagesList.of_xml)(Xml.childxml_arg0"Messages")inletcode=(Option.map~f:JobErrorCode.of_xml)(Xml.childxml_arg0"Code")inmake?messages?code()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmessages=field_mapjson__"Messages"JobErrorMessagesList.of_jsoninletcode=field_mapjson__"Code"JobErrorCode.of_jsoninmake?messages?code()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Error information for failed jobs."]moduleJobId=structtypenonrect=stringletcontext_="JobId"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:200)>>=(fun()->check_patterni~pattern:"[-._\\w]+")));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_valueendmoduleJobInputOptions=structtypenonrect={location:JobInputLocation.t[@ocaml.doc"S3 ARN or URI where input files are stored. The Amazon S3 bucket must be created in the same Amazon Web Services region where you plan to run your job."];format:JobInputFormat.t[@ocaml.doc"Input data format. Currently only Parquet is supported. Input files have a limitation of 10gb per file, and 1gb per Parquet row-group within the file."]}letcontext_="JobInputOptions"letmake~location=fun~format->fun()->{location;format}letto_valuex=structure_to_value[("Location",(Some(JobInputLocation.to_valuex.location)));("Format",(Some(JobInputFormat.to_valuex.format)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letformat=JobInputFormat.of_xml(Xml.child_exn~context:context_xml_arg0"Format")inletlocation=JobInputLocation.of_xml(Xml.child_exn~context:context_xml_arg0"Location")inmake~format~location()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letformat=field_map_exnjson__"Format"JobInputFormat.of_jsoninletlocation=field_map_exnjson__"Location"JobInputLocation.of_jsoninmake~format~location()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Configuration for input data location and format. Input files have a limitation of 10gb per file, and 1gb per Parquet row-group within the file."]moduleJobOutputOptions=structtypenonrect={format:JobOutputFormat.t[@ocaml.doc"Output data format. Currently only \"Parquet\" is supported."];location:JobOutputLocation.t[@ocaml.doc"S3 ARN or URI where output files will be written. The Amazon S3 bucket must exist in the same Amazon Web Services region where you plan to run your job."]}letcontext_="JobOutputOptions"letmake~format=fun~location->fun()->{format;location}letto_valuex=structure_to_value[("Format",(Some(JobOutputFormat.to_valuex.format)));("Location",(Some(JobOutputLocation.to_valuex.location)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letlocation=JobOutputLocation.of_xml(Xml.child_exn~context:context_xml_arg0"Location")inletformat=JobOutputFormat.of_xml(Xml.child_exn~context:context_xml_arg0"Format")inmake~location~format()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letlocation=field_map_exnjson__"Location"JobOutputLocation.of_jsoninletformat=field_map_exnjson__"Format"JobOutputFormat.of_jsoninmake~location~format()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Configuration for output data location and format."]moduleJobStatus=structtypenonrect=|Pending|Running|Completed|Failed|Cancelling|Cancelled|Non_static_idofstringletmakei=iletto_string=function|Pending->"Pending"|Running->"Running"|Completed->"Completed"|Failed->"Failed"|Cancelling->"Cancelling"|Cancelled->"Cancelled"|Non_static_ids->sletof_string=function|"Pending"->Pending|"Running"->Running|"Completed"->Completed|"Failed"->Failed|"Cancelling"->Cancelling|"Cancelled"->Cancelled|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_valueendmoduleGeofenceGeometry=structtypenonrect={polygon:GeofenceGeometryPolygonList.toption[@ocaml.doc"A Polygon is a list of up to 250 linear rings which represent the shape of a geofence. This list must include 1 exterior ring (representing the outer perimeter of the geofence), and can optionally include up to 249 interior rings (representing polygonal spaces within the perimeter, which are excluded from the geofence area). A linear ring is an array of 4 or more vertices, where the first and last vertex are the same (to form a closed boundary). Each vertex is a 2-dimensional point represented as an array of doubles of length 2: \\[longitude, latitude\\]. Each linear ring is represented as an array of arrays of doubles (\\[\\[longitude, latitude\\], \\[longitude, latitude\\], ...\\]). The vertices for the exterior ring must be listed in counter-clockwise sequence. Vertices for all interior rings must be listed in clockwise sequence. The list of linear rings that describe the entire Polygon is represented as an array of arrays of arrays of doubles (\\[\\[\\[longitude, latitude\\], \\[longitude, latitude\\], ...\\], \\[\\[longitude, latitude\\], \\[longitude, latitude\\], ...\\], ...\\]). The exterior ring must be listed first, before any interior rings. The following additional requirements and limitations apply to geometries defined using the Polygon parameter: The entire Polygon must consist of no more than 1,000 vertices, including all vertices from the exterior ring and all interior rings. Rings must not touch or cross each other. All interior rings must be fully contained within the exterior ring. Interior rings must not contain other interior rings. No ring is permitted to intersect itself."];circle:Circle.toption[@ocaml.doc"A circle on the earth, as defined by a center point and a radius."];geobuf:Base64EncodedGeobuf.toption[@ocaml.doc"Geobuf is a compact binary encoding for geographic data that provides lossless compression of GeoJSON polygons. The Geobuf must be Base64-encoded. This parameter can contain a Geobuf-encoded GeoJSON geometry object of type Polygon OR MultiPolygon. For more information and specific configuration requirements for these object types, see Polygon and MultiPolygon. The following limitations apply specifically to geometries defined using the Geobuf parameter, and supercede the corresponding limitations of the Polygon and MultiPolygon parameters: A Polygon in Geobuf format can have up to 25,000 rings and up to 100,000 total vertices, including all vertices from all component rings. A MultiPolygon in Geobuf format can contain up to 10,000 Polygons and up to 100,000 total vertices, including all vertices from all component Polygons."];multiPolygon:GeofenceGeometryMultiPolygonList.toption[@ocaml.doc"A MultiPolygon is a list of up to 250 Polygon elements which represent the shape of a geofence. The Polygon components of a MultiPolygon geometry can define separate geographical areas that are considered part of the same geofence, perimeters of larger exterior areas with smaller interior spaces that are excluded from the geofence, or some combination of these use cases to form complex geofence boundaries. For more information and specific configuration requirements for the Polygon components that form a MultiPolygon, see Polygon. The following additional requirements and limitations apply to geometries defined using the MultiPolygon parameter: The entire MultiPolygon must consist of no more than 1,000 vertices, including all vertices from all component Polygons. Each edge of a component Polygon must intersect no more than 5 edges from other Polygons. Parallel edges that are shared but do not cross are not counted toward this limit. The total number of intersecting edges of component Polygons must be no more than 100,000. Parallel edges that are shared but do not cross are not counted toward this limit."]}letmake?polygon=fun?circle->fun?geobuf->fun?multiPolygon->fun()->{polygon;circle;geobuf;multiPolygon}letto_valuex=structure_to_value[("Polygon",(Option.mapx.polygon~f:GeofenceGeometryPolygonList.to_value));("Circle",(Option.mapx.circle~f:Circle.to_value));("Geobuf",(Option.mapx.geobuf~f:Base64EncodedGeobuf.to_value));("MultiPolygon",(Option.mapx.multiPolygon~f:GeofenceGeometryMultiPolygonList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmultiPolygon=(Option.map~f:GeofenceGeometryMultiPolygonList.of_xml)(Xml.childxml_arg0"MultiPolygon")inletgeobuf=(Option.map~f:Base64EncodedGeobuf.of_xml)(Xml.childxml_arg0"Geobuf")inletcircle=(Option.map~f:Circle.of_xml)(Xml.childxml_arg0"Circle")inletpolygon=(Option.map~f:GeofenceGeometryPolygonList.of_xml)(Xml.childxml_arg0"Polygon")inmake?multiPolygon?geobuf?circle?polygon()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmultiPolygon=field_mapjson__"MultiPolygon"GeofenceGeometryMultiPolygonList.of_jsoninletgeobuf=field_mapjson__"Geobuf"Base64EncodedGeobuf.of_jsoninletcircle=field_mapjson__"Circle"Circle.of_jsoninletpolygon=field_mapjson__"Polygon"GeofenceGeometryPolygonList.of_jsoninmake?multiPolygon?geobuf?circle?polygon()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains the geofence geometry details. A geofence geometry can be a circle, a polygon, or a multipolygon. Polygon and MultiPolygon geometries can be defined using their respective parameters, or encoded in Geobuf format using the Geobuf parameter. Including multiple geometry types in the same request will return a validation error. Amazon Location doesn't currently support polygons that cross the antimeridian."]moduleId=structtypenonrect=stringletcontext_="Id"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:100)>>=(fun()->check_patterni~pattern:"[-._\\p{L}\\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:"Id"jletto_json=simple_to_jsonto_valueendmodulePropertyMap=structtypenonrect=(PropertyMapKeyString.t*PropertyMapValueString.t)listletmakei=letopenResultinok_or_failwith((check_list_maxi~max:3)>>=(fun()->check_list_mini~min:0));iletof_headerxs=make(List.filter_mapxs~f:(fun(k,v)->(Base.String.chop_prefixk~prefix:"x-amz-meta-")|>(Option.map~f:(funchopped->((PropertyMapKeyString.of_stringchopped),(PropertyMapValueString.of_stringv))))))letto_valuexs=(xs|>(List.map~f:(fun(x,y)->(PropertyMapKeyString.to_valuex)|>(funx->(PropertyMapValueString.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:PropertyMapKeyString.of_string~of_json:PropertyMapValueString.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmodulePositionPropertyMap=structtypenonrect=(PositionPropertyMapKeyString.t*PositionPropertyMapValueString.t)listletmakei=letopenResultinok_or_failwith((check_list_maxi~max:4)>>=(fun()->check_list_mini~min:0));iletof_headerxs=make(List.filter_mapxs~f:(fun(k,v)->(Base.String.chop_prefixk~prefix:"x-amz-meta-")|>(Option.map~f:(funchopped->((PositionPropertyMapKeyString.of_stringchopped),(PositionPropertyMapValueString.of_stringv))))))letto_valuexs=(xs|>(List.map~f:(fun(x,y)->(PositionPropertyMapKeyString.to_valuex)|>(funx->(PositionPropertyMapValueString.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:PositionPropertyMapKeyString.of_string~of_json:PositionPropertyMapValueString.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmodulePositionalAccuracy=structtypenonrect={horizontal:PositionalAccuracyHorizontalDouble.t[@ocaml.doc"Estimated maximum distance, in meters, between the measured position and the true position of a device, along the Earth's surface."]}letcontext_="PositionalAccuracy"letmake~horizontal=fun()->{horizontal}letto_valuex=structure_to_value[("Horizontal",(Some(PositionalAccuracyHorizontalDouble.to_valuex.horizontal)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lethorizontal=PositionalAccuracyHorizontalDouble.of_xml(Xml.child_exn~context:context_xml_arg0"Horizontal")inmake~horizontal()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lethorizontal=field_map_exnjson__"Horizontal"PositionalAccuracyHorizontalDouble.of_jsoninmake~horizontal()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Defines the level of certainty of the position."]moduleForecastedGeofenceEventType=structtypenonrect=|ENTER|EXIT|IDLE|Non_static_idofstringletmakei=iletto_string=function|ENTER->"ENTER"|EXIT->"EXIT"|IDLE->"IDLE"|Non_static_ids->sletof_string=function|"ENTER"->ENTER|"EXIT"->EXIT|"IDLE"->IDLE|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 ForecastedGeofenceEventType"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ForecastedGeofenceEventType"j)letto_json=simple_to_jsonto_valueendmoduleNearestDistance=structtypenonrect=floatletmakei=letopenResultinok_or_failwith(check_float_mini~min:0.);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_valueendmoduleUuid=structtypenonrect=stringletcontext_="Uuid"letmakei=letopenResultinok_or_failwith(check_patterni~pattern:"[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{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:"Uuid"jletto_json=simple_to_jsonto_valueendmoduleLegDistanceDouble=structtypenonrect=floatletmakei=letopenResultinok_or_failwith(check_float_mini~min:0.);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_valueendmoduleLegDurationSecondsDouble=structtypenonrect=floatletmakei=letopenResultinok_or_failwith(check_float_mini~min:0.);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_valueendmoduleLegGeometry=structtypenonrect={lineString:LineString.toption[@ocaml.doc"An ordered list of positions used to plot a route on a map. The first position is closest to the start position for the leg, and the last position is the closest to the end position for the leg. For example, \\[\\[-123.117, 49.284\\],\\[-123.115, 49.285\\],\\[-123.115, 49.285\\]\\]"]}letmake?lineString=fun()->{lineString}letto_valuex=structure_to_value[("LineString",(Option.mapx.lineString~f:LineString.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letlineString=(Option.map~f:LineString.of_xml)(Xml.childxml_arg0"LineString")inmake?lineString()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letlineString=field_mapjson__"LineString"LineString.of_jsoninmake?lineString()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains the geometry details for each path between a pair of positions. Used in plotting a route leg on a map."]moduleStepList=structtypenonrect=Step.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:Step.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:Step.of_xml)letof_jsonj=list_of_json~kind:"StepList"~of_json:Step.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleDimensionUnit=structtypenonrect=|Meters|Feet|Non_static_idofstringletmakei=iletto_string=function|Meters->"Meters"|Feet->"Feet"|Non_static_ids->sletof_string=function|"Meters"->Meters|"Feet"->Feet|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 DimensionUnit"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"DimensionUnit"j)letto_json=simple_to_jsonto_valueendmoduleTruckDimensionsHeightDouble=structtypenonrect=floatletmakei=letopenResultinok_or_failwith(check_float_mini~min:0.);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_valueendmoduleTruckDimensionsLengthDouble=structtypenonrect=floatletmakei=letopenResultinok_or_failwith(check_float_mini~min:0.);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_valueendmoduleTruckDimensionsWidthDouble=structtypenonrect=floatletmakei=letopenResultinok_or_failwith(check_float_mini~min:0.);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_valueendmoduleTruckWeightTotalDouble=structtypenonrect=floatletmakei=letopenResultinok_or_failwith(check_float_mini~min:0.);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_valueendmoduleVehicleWeightUnit=structtypenonrect=|Kilograms|Pounds|Non_static_idofstringletmakei=iletto_string=function|Kilograms->"Kilograms"|Pounds->"Pounds"|Non_static_ids->sletof_string=function|"Kilograms"->Kilograms|"Pounds"->Pounds|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 VehicleWeightUnit"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"VehicleWeightUnit"j)letto_json=simple_to_jsonto_valueendmoduleRouteMatrixEntry=structtypenonrect={distance:RouteMatrixEntryDistanceDouble.toption[@ocaml.doc"The total distance of travel for the route."];durationSeconds:RouteMatrixEntryDurationSecondsDouble.toption[@ocaml.doc"The expected duration of travel for the route."];error:RouteMatrixEntryError.toption[@ocaml.doc"An error corresponding to the calculation of a route between the DeparturePosition and DestinationPosition."]}letmake?distance=fun?durationSeconds->fun?error->fun()->{distance;durationSeconds;error}letto_valuex=structure_to_value[("Distance",(Option.mapx.distance~f:RouteMatrixEntryDistanceDouble.to_value));("DurationSeconds",(Option.mapx.durationSeconds~f:RouteMatrixEntryDurationSecondsDouble.to_value));("Error",(Option.mapx.error~f:RouteMatrixEntryError.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=leterror=(Option.map~f:RouteMatrixEntryError.of_xml)(Xml.childxml_arg0"Error")inletdurationSeconds=(Option.map~f:RouteMatrixEntryDurationSecondsDouble.of_xml)(Xml.childxml_arg0"DurationSeconds")inletdistance=(Option.map~f:RouteMatrixEntryDistanceDouble.of_xml)(Xml.childxml_arg0"Distance")inmake?error?durationSeconds?distance()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=leterror=field_mapjson__"Error"RouteMatrixEntryError.of_jsoninletdurationSeconds=field_mapjson__"DurationSeconds"RouteMatrixEntryDurationSecondsDouble.of_jsoninletdistance=field_mapjson__"Distance"RouteMatrixEntryDistanceDouble.of_jsoninmake?error?durationSeconds?distance()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The result for the calculated route of one DeparturePosition DestinationPosition pair."]moduleBatchItemError=structtypenonrect={code:BatchItemErrorCode.toption[@ocaml.doc"The error code associated with the batch request error."];message:String_.toption[@ocaml.doc"A message with the reason for the batch request error."]}letmake?code=fun?message->fun()->{code;message}letto_valuex=structure_to_value[("Code",(Option.mapx.code~f:BatchItemErrorCode.to_value));("Message",(Option.mapx.message~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmessage=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"Message")inletcode=(Option.map~f:BatchItemErrorCode.of_xml)(Xml.childxml_arg0"Code")inmake?message?code()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmessage=field_mapjson__"Message"String_.of_jsoninletcode=field_mapjson__"Code"BatchItemErrorCode.of_jsoninmake?message?code()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains the batch request error details associated with the request."]moduleValidationExceptionFieldList=structtypenonrect=ValidationExceptionField.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ValidationExceptionField.to_value))|>(funx->`Listx)letto_queryv=to_queryto_valuevletto_header_=failwithf"to_header is not implemented for List_shape objects"()letof_xmlx=make(List.map((Xml.all_childrenx)|>(List.filter~f:(function|`Datas->(matchStdlib.String.trimswith|""->false|_->true)|_->true)))~f:ValidationExceptionField.of_xml)letof_jsonj=list_of_json~kind:"ValidationExceptionFieldList"~of_json:ValidationExceptionField.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleValidationExceptionReason=structtypenonrect=|UnknownOperation|Missing|CannotParse|FieldValidationFailed|Other|UnknownField|Non_static_idofstringletmakei=iletto_string=function|UnknownOperation->"UnknownOperation"|Missing->"Missing"|CannotParse->"CannotParse"|FieldValidationFailed->"FieldValidationFailed"|Other->"Other"|UnknownField->"UnknownField"|Non_static_ids->sletof_string=function|"UnknownOperation"->UnknownOperation|"Missing"->Missing|"CannotParse"->CannotParse|"FieldValidationFailed"->FieldValidationFailed|"Other"->Other|"UnknownField"->UnknownField|x->Non_static_idxletto_valuex=`Enum(to_stringx)letto_queryv=to_queryto_valuevletto_headerx=to_stringxletof_xmlxml_arg0=of_string(string_of_xml~kind:"enumeration ValidationExceptionReason"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"ValidationExceptionReason"j)letto_json=simple_to_jsonto_valueendmoduleCellSignals=structtypenonrect={lteCellDetails:CellSignalsLteCellDetailsList.t[@ocaml.doc"Information about the Long-Term Evolution (LTE) network the device is connected to."]}letcontext_="CellSignals"letmake~lteCellDetails=fun()->{lteCellDetails}letto_valuex=structure_to_value[("LteCellDetails",(Some(CellSignalsLteCellDetailsList.to_valuex.lteCellDetails)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letlteCellDetails=CellSignalsLteCellDetailsList.of_xml(Xml.child_exn~context:context_xml_arg0"LteCellDetails")inmake~lteCellDetails()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letlteCellDetails=field_map_exnjson__"LteCellDetails"CellSignalsLteCellDetailsList.of_jsoninmake~lteCellDetails()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The cellular network communication infrastructure that the device uses."]moduleDeviceStateIpv4AddressString=structtypenonrect=stringletcontext_="DeviceStateIpv4AddressString"letmakei=letopenResultinok_or_failwith(check_patterni~pattern:"(?:(?:25[0-5]|(?:2[0-4]|1\\d|[0-9]|)\\d)\\.?\\b){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:"DeviceStateIpv4AddressString"jletto_json=simple_to_jsonto_valueendmoduleWiFiAccessPointList=structtypenonrect=WiFiAccessPoint.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:WiFiAccessPoint.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:WiFiAccessPoint.of_xml)letof_jsonj=list_of_json~kind:"WiFiAccessPointList"~of_json:WiFiAccessPoint.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleIntendedUse=structtypenonrect=|SingleUse|Storage|Non_static_idofstringletmakei=iletto_string=function|SingleUse->"SingleUse"|Storage->"Storage"|Non_static_ids->sletof_string=function|"SingleUse"->SingleUse|"Storage"->Storage|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 IntendedUse"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"IntendedUse"j)letto_json=simple_to_jsonto_valueendmoduleCountryCode3OrEmpty=structtypenonrect=stringletcontext_="CountryCode3OrEmpty"letmakei=letopenResultinok_or_failwith((check_string_mini~min:0)>>=(fun()->(check_string_maxi~max:3)>>=(fun()->check_patterni~pattern:"[A-Z]{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:"CountryCode3OrEmpty"jletto_json=simple_to_jsonto_valueendmoduleCustomLayerList=structtypenonrect=CustomLayer.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:10)>>=(fun()->check_list_mini~min:0));iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:CustomLayer.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:CustomLayer.of_xml)letof_jsonj=list_of_json~kind:"CustomLayerList"~of_json:CustomLayer.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleTagKey=structtypenonrect=stringletcontext_="TagKey"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:128)>>=(fun()->check_patterni~pattern:"([\\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:"TagKey"jletto_json=simple_to_jsonto_valueendmoduleTagValue=structtypenonrect=stringletcontext_="TagValue"letmakei=letopenResultinok_or_failwith((check_string_mini~min:0)>>=(fun()->(check_string_maxi~max:256)>>=(fun()->check_patterni~pattern:"([\\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:"TagValue"jletto_json=simple_to_jsonto_valueendmoduleSearchForTextResult=structtypenonrect={place:Place.toption[@ocaml.doc"Details about the search result, such as its address and position."];distance:SearchForTextResultDistanceDouble.toption[@ocaml.doc"The distance in meters of a great-circle arc between the bias position specified and the result. Distance will be returned only if a bias position was specified in the query. A great-circle arc is the shortest path on a sphere, in this case the Earth. This returns the shortest distance between two locations."];relevance:SearchForTextResultRelevanceDouble.toption[@ocaml.doc"The relative confidence in the match for a result among the results returned. For example, if more fields for an address match (including house number, street, city, country/region, and postal code), the relevance score is closer to 1. Returned only when the partner selected is Esri or Grab."];placeId:PlaceId.toption[@ocaml.doc"The unique identifier of the place. You can use this with the GetPlace operation to find the place again later. For SearchPlaceIndexForText operations, the PlaceId is returned only by place indexes that use HERE or Grab as a data provider."]}letmake?place=fun?distance->fun?relevance->fun?placeId->fun()->{place;distance;relevance;placeId}letto_valuex=structure_to_value[("Place",(Option.mapx.place~f:Place.to_value));("Distance",(Option.mapx.distance~f:SearchForTextResultDistanceDouble.to_value));("Relevance",(Option.mapx.relevance~f:SearchForTextResultRelevanceDouble.to_value));("PlaceId",(Option.mapx.placeId~f:PlaceId.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letplaceId=(Option.map~f:PlaceId.of_xml)(Xml.childxml_arg0"PlaceId")inletrelevance=(Option.map~f:SearchForTextResultRelevanceDouble.of_xml)(Xml.childxml_arg0"Relevance")inletdistance=(Option.map~f:SearchForTextResultDistanceDouble.of_xml)(Xml.childxml_arg0"Distance")inletplace=(Option.map~f:Place.of_xml)(Xml.childxml_arg0"Place")inmake?placeId?relevance?distance?place()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letplaceId=field_mapjson__"PlaceId"PlaceId.of_jsoninletrelevance=field_mapjson__"Relevance"SearchForTextResultRelevanceDouble.of_jsoninletdistance=field_mapjson__"Distance"SearchForTextResultDistanceDouble.of_jsoninletplace=field_mapjson__"Place"Place.of_jsoninmake?placeId?relevance?distance?place()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains a search result from a text search query that is run on a place index resource."]moduleBoundingBox=structtypenonrect=Double.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:4)>>=(fun()->check_list_mini~min:4));iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:Double.to_value))|>(funx->`Listx)letto_queryv=to_queryto_valuevletto_header_=failwithf"to_header is not implemented for List_shape objects"()letof_xmlx=make(List.map((Xml.all_childrenx)|>(List.filter~f:(function|`Datas->(matchStdlib.String.trimswith|""->false|_->true)|_->true)))~f:Double.of_xml)letof_jsonj=list_of_json~kind:"BoundingBox"~of_json:Double.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleCountryCodeList=structtypenonrect=CountryCode3.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:100)>>=(fun()->check_list_mini~min:1));iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:CountryCode3.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:CountryCode3.of_xml)letof_jsonj=list_of_json~kind:"CountryCodeList"~of_json:CountryCode3.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleFilterPlaceCategoryList=structtypenonrect=PlaceCategory.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:5)>>=(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:PlaceCategory.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:PlaceCategory.of_xml)letof_jsonj=list_of_json~kind:"FilterPlaceCategoryList"~of_json:PlaceCategory.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleLanguageTag=structtypenonrect=stringletcontext_="LanguageTag"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:35)>>=(fun()->check_string_mini~min:2));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"LanguageTag"jletto_json=simple_to_jsonto_valueendmodulePlaceIndexSearchResultLimit=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:50)>>=(fun()->check_int_mini~min:1));iletof_string=Int.of_stringletto_valuex=`Integerxletto_queryv=to_queryto_valuevletto_headerx=Int.to_stringxletof_xmlxml_arg0=Int.of_string(string_of_xml~kind:"an integer for PlaceIndexSearchResultLimit"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleSearchForSuggestionsResult=structtypenonrect={text:SensitiveString.toption[@ocaml.doc"The text of the place suggestion, typically formatted as an address string."];placeId:PlaceId.toption[@ocaml.doc"The unique identifier of the Place. You can use this with the GetPlace operation to find the place again later, or to get full information for the Place. The GetPlace request must use the same PlaceIndex resource as the SearchPlaceIndexForSuggestions that generated the Place ID. For SearchPlaceIndexForSuggestions operations, the PlaceId is returned by place indexes that use Esri, Grab, or HERE as data providers."];categories:PlaceCategoryList.toption[@ocaml.doc"The Amazon Location categories that describe the Place. For more information about using categories, including a list of Amazon Location categories, see Categories and filtering, in the Amazon Location Service developer guide."];supplementalCategories:PlaceSupplementalCategoryList.toption[@ocaml.doc"Categories from the data provider that describe the Place that are not mapped to any Amazon Location categories."]}letmake?text=fun?placeId->fun?categories->fun?supplementalCategories->fun()->{text;placeId;categories;supplementalCategories}letto_valuex=structure_to_value[("Text",(Option.mapx.text~f:SensitiveString.to_value));("PlaceId",(Option.mapx.placeId~f:PlaceId.to_value));("Categories",(Option.mapx.categories~f:PlaceCategoryList.to_value));("SupplementalCategories",(Option.mapx.supplementalCategories~f:PlaceSupplementalCategoryList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letsupplementalCategories=(Option.map~f:PlaceSupplementalCategoryList.of_xml)(Xml.childxml_arg0"SupplementalCategories")inletcategories=(Option.map~f:PlaceCategoryList.of_xml)(Xml.childxml_arg0"Categories")inletplaceId=(Option.map~f:PlaceId.of_xml)(Xml.childxml_arg0"PlaceId")inlettext=(Option.map~f:SensitiveString.of_xml)(Xml.childxml_arg0"Text")inmake?supplementalCategories?categories?placeId?text()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letsupplementalCategories=field_mapjson__"SupplementalCategories"PlaceSupplementalCategoryList.of_jsoninletcategories=field_mapjson__"Categories"PlaceCategoryList.of_jsoninletplaceId=field_mapjson__"PlaceId"PlaceId.of_jsoninlettext=field_mapjson__"Text"SensitiveString.of_jsoninmake?supplementalCategories?categories?placeId?text()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains a place suggestion resulting from a place suggestion query that is run on a place index resource."]moduleInteger=structtypenonrect=intletmakei=iletof_string=Int.of_stringletto_valuex=`Integerxletto_queryv=to_queryto_valuevletto_headerx=Int.to_stringxletof_xmlxml_arg0=Int.of_string(string_of_xml~kind:"an integer for Integer"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleSearchForPositionResult=structtypenonrect={place:Place.toption[@ocaml.doc"Details about the search result, such as its address and position."];distance:SearchForPositionResultDistanceDouble.toption[@ocaml.doc"The distance in meters of a great-circle arc between the query position and the result. A great-circle arc is the shortest path on a sphere, in this case the Earth. This returns the shortest distance between two locations."];placeId:PlaceId.toption[@ocaml.doc"The unique identifier of the place. You can use this with the GetPlace operation to find the place again later. For SearchPlaceIndexForPosition operations, the PlaceId is returned only by place indexes that use HERE or Grab as a data provider."]}letmake?place=fun?distance->fun?placeId->fun()->{place;distance;placeId}letto_valuex=structure_to_value[("Place",(Option.mapx.place~f:Place.to_value));("Distance",(Option.mapx.distance~f:SearchForPositionResultDistanceDouble.to_value));("PlaceId",(Option.mapx.placeId~f:PlaceId.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letplaceId=(Option.map~f:PlaceId.of_xml)(Xml.childxml_arg0"PlaceId")inletdistance=(Option.map~f:SearchForPositionResultDistanceDouble.of_xml)(Xml.childxml_arg0"Distance")inletplace=(Option.map~f:Place.of_xml)(Xml.childxml_arg0"Place")inmake?placeId?distance?place()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letplaceId=field_mapjson__"PlaceId"PlaceId.of_jsoninletdistance=field_mapjson__"Distance"SearchForPositionResultDistanceDouble.of_jsoninletplace=field_mapjson__"Place"Place.of_jsoninmake?placeId?distance?place()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains a search result from a position search query that is run on a place index resource."]moduleListTrackersResponseEntry=structtypenonrect={trackerName:ResourceName.toption[@ocaml.doc"The name of the tracker resource."];description:ResourceDescription.toption[@ocaml.doc"The description for the tracker resource."];pricingPlan:PricingPlan.toption[@ocaml.doc"Always returns RequestBasedUsage."];pricingPlanDataSource:String_.toption[@ocaml.doc"No longer used. Always returns an empty string."];createTime:Timestamp.toption[@ocaml.doc"The timestamp for when the tracker resource was created in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."];updateTime:Timestamp.toption[@ocaml.doc"The timestamp at which the device's position was determined. Uses ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."]}letmake?trackerName=fun?description->fun?pricingPlan->fun?pricingPlanDataSource->fun?createTime->fun?updateTime->fun()->{trackerName;description;pricingPlan;pricingPlanDataSource;createTime;updateTime}letto_valuex=structure_to_value[("TrackerName",(Option.mapx.trackerName~f:ResourceName.to_value));("Description",(Option.mapx.description~f:ResourceDescription.to_value));("PricingPlan",(Option.mapx.pricingPlan~f:PricingPlan.to_value));("PricingPlanDataSource",(Option.mapx.pricingPlanDataSource~f:String_.to_value));("CreateTime",(Option.mapx.createTime~f:Timestamp.to_value));("UpdateTime",(Option.mapx.updateTime~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letupdateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"UpdateTime")inletcreateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"CreateTime")inletpricingPlanDataSource=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"PricingPlanDataSource")inletpricingPlan=(Option.map~f:PricingPlan.of_xml)(Xml.childxml_arg0"PricingPlan")inletdescription=(Option.map~f:ResourceDescription.of_xml)(Xml.childxml_arg0"Description")inlettrackerName=(Option.map~f:ResourceName.of_xml)(Xml.childxml_arg0"TrackerName")inmake?updateTime?createTime?pricingPlanDataSource?pricingPlan?description?trackerName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letupdateTime=field_mapjson__"UpdateTime"Timestamp.of_jsoninletcreateTime=field_mapjson__"CreateTime"Timestamp.of_jsoninletpricingPlanDataSource=field_mapjson__"PricingPlanDataSource"String_.of_jsoninletpricingPlan=field_mapjson__"PricingPlan"PricingPlan.of_jsoninletdescription=field_mapjson__"Description"ResourceDescription.of_jsoninlettrackerName=field_mapjson__"TrackerName"ResourceName.of_jsoninmake?updateTime?createTime?pricingPlanDataSource?pricingPlan?description?trackerName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains the tracker resource details."]moduleArn=structtypenonrect=stringletcontext_="Arn"letmakei=letopenResultinok_or_failwith((check_string_mini~min:0)>>=(fun()->(check_string_maxi~max:1600)>>=(fun()->check_patterni~pattern:"arn(:[a-z0-9]+([.-][a-z0-9]+)*){2}(:([a-z0-9]+([.-][a-z0-9]+)*)?){2}:([^/].*)?")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"Arn"jletto_json=simple_to_jsonto_valueendmoduleListRouteCalculatorsResponseEntry=structtypenonrect={calculatorName:ResourceName.toption[@ocaml.doc"The name of the route calculator resource."];description:ResourceDescription.toption[@ocaml.doc"The optional description of the route calculator resource."];dataSource:String_.toption[@ocaml.doc"The data provider of traffic and road network data. Indicates one of the available providers: Esri Grab Here For more information about data providers, see Amazon Location Service data providers."];pricingPlan:PricingPlan.toption[@ocaml.doc"Always returns RequestBasedUsage."];createTime:Timestamp.toption[@ocaml.doc"The timestamp when the route calculator resource was created in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ. For example, 2020\226\128\14707-2T12:15:20.000Z+01:00"];updateTime:Timestamp.toption[@ocaml.doc"The timestamp when the route calculator resource was last updated in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ. For example, 2020\226\128\14707-2T12:15:20.000Z+01:00"]}letmake?calculatorName=fun?description->fun?dataSource->fun?pricingPlan->fun?createTime->fun?updateTime->fun()->{calculatorName;description;dataSource;pricingPlan;createTime;updateTime}letto_valuex=structure_to_value[("CalculatorName",(Option.mapx.calculatorName~f:ResourceName.to_value));("Description",(Option.mapx.description~f:ResourceDescription.to_value));("DataSource",(Option.mapx.dataSource~f:String_.to_value));("PricingPlan",(Option.mapx.pricingPlan~f:PricingPlan.to_value));("CreateTime",(Option.mapx.createTime~f:Timestamp.to_value));("UpdateTime",(Option.mapx.updateTime~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letupdateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"UpdateTime")inletcreateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"CreateTime")inletpricingPlan=(Option.map~f:PricingPlan.of_xml)(Xml.childxml_arg0"PricingPlan")inletdataSource=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"DataSource")inletdescription=(Option.map~f:ResourceDescription.of_xml)(Xml.childxml_arg0"Description")inletcalculatorName=(Option.map~f:ResourceName.of_xml)(Xml.childxml_arg0"CalculatorName")inmake?updateTime?createTime?pricingPlan?dataSource?description?calculatorName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letupdateTime=field_mapjson__"UpdateTime"Timestamp.of_jsoninletcreateTime=field_mapjson__"CreateTime"Timestamp.of_jsoninletpricingPlan=field_mapjson__"PricingPlan"PricingPlan.of_jsoninletdataSource=field_mapjson__"DataSource"String_.of_jsoninletdescription=field_mapjson__"Description"ResourceDescription.of_jsoninletcalculatorName=field_mapjson__"CalculatorName"ResourceName.of_jsoninmake?updateTime?createTime?pricingPlan?dataSource?description?calculatorName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A route calculator resource listed in your Amazon Web Services account."]moduleListPlaceIndexesResponseEntry=structtypenonrect={indexName:ResourceName.toption[@ocaml.doc"The name of the place index resource."];description:ResourceDescription.toption[@ocaml.doc"The optional description for the place index resource."];dataSource:String_.toption[@ocaml.doc"The data provider of geospatial data. Values can be one of the following: Esri Grab Here For more information about data providers, see Amazon Location Service data providers."];pricingPlan:PricingPlan.toption[@ocaml.doc"No longer used. Always returns RequestBasedUsage."];createTime:Timestamp.toption[@ocaml.doc"The timestamp for when the place index resource was created in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."];updateTime:Timestamp.toption[@ocaml.doc"The timestamp for when the place index resource was last updated in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."]}letmake?indexName=fun?description->fun?dataSource->fun?pricingPlan->fun?createTime->fun?updateTime->fun()->{indexName;description;dataSource;pricingPlan;createTime;updateTime}letto_valuex=structure_to_value[("IndexName",(Option.mapx.indexName~f:ResourceName.to_value));("Description",(Option.mapx.description~f:ResourceDescription.to_value));("DataSource",(Option.mapx.dataSource~f:String_.to_value));("PricingPlan",(Option.mapx.pricingPlan~f:PricingPlan.to_value));("CreateTime",(Option.mapx.createTime~f:Timestamp.to_value));("UpdateTime",(Option.mapx.updateTime~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letupdateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"UpdateTime")inletcreateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"CreateTime")inletpricingPlan=(Option.map~f:PricingPlan.of_xml)(Xml.childxml_arg0"PricingPlan")inletdataSource=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"DataSource")inletdescription=(Option.map~f:ResourceDescription.of_xml)(Xml.childxml_arg0"Description")inletindexName=(Option.map~f:ResourceName.of_xml)(Xml.childxml_arg0"IndexName")inmake?updateTime?createTime?pricingPlan?dataSource?description?indexName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letupdateTime=field_mapjson__"UpdateTime"Timestamp.of_jsoninletcreateTime=field_mapjson__"CreateTime"Timestamp.of_jsoninletpricingPlan=field_mapjson__"PricingPlan"PricingPlan.of_jsoninletdataSource=field_mapjson__"DataSource"String_.of_jsoninletdescription=field_mapjson__"Description"ResourceDescription.of_jsoninletindexName=field_mapjson__"IndexName"ResourceName.of_jsoninmake?updateTime?createTime?pricingPlan?dataSource?description?indexName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A place index resource listed in your Amazon Web Services account."]moduleListMapsResponseEntry=structtypenonrect={mapName:ResourceName.toption[@ocaml.doc"The name of the associated map resource."];description:ResourceDescription.toption[@ocaml.doc"The description for the map resource."];dataSource:String_.toption[@ocaml.doc"Specifies the data provider for the associated map tiles."];pricingPlan:PricingPlan.toption[@ocaml.doc"No longer used. Always returns RequestBasedUsage."];createTime:Timestamp.toption[@ocaml.doc"The timestamp for when the map resource was created in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."];updateTime:Timestamp.toption[@ocaml.doc"The timestamp for when the map resource was last updated in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."]}letmake?mapName=fun?description->fun?dataSource->fun?pricingPlan->fun?createTime->fun?updateTime->fun()->{mapName;description;dataSource;pricingPlan;createTime;updateTime}letto_valuex=structure_to_value[("MapName",(Option.mapx.mapName~f:ResourceName.to_value));("Description",(Option.mapx.description~f:ResourceDescription.to_value));("DataSource",(Option.mapx.dataSource~f:String_.to_value));("PricingPlan",(Option.mapx.pricingPlan~f:PricingPlan.to_value));("CreateTime",(Option.mapx.createTime~f:Timestamp.to_value));("UpdateTime",(Option.mapx.updateTime~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letupdateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"UpdateTime")inletcreateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"CreateTime")inletpricingPlan=(Option.map~f:PricingPlan.of_xml)(Xml.childxml_arg0"PricingPlan")inletdataSource=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"DataSource")inletdescription=(Option.map~f:ResourceDescription.of_xml)(Xml.childxml_arg0"Description")inletmapName=(Option.map~f:ResourceName.of_xml)(Xml.childxml_arg0"MapName")inmake?updateTime?createTime?pricingPlan?dataSource?description?mapName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letupdateTime=field_mapjson__"UpdateTime"Timestamp.of_jsoninletcreateTime=field_mapjson__"CreateTime"Timestamp.of_jsoninletpricingPlan=field_mapjson__"PricingPlan"PricingPlan.of_jsoninletdataSource=field_mapjson__"DataSource"String_.of_jsoninletdescription=field_mapjson__"Description"ResourceDescription.of_jsoninletmapName=field_mapjson__"MapName"ResourceName.of_jsoninmake?updateTime?createTime?pricingPlan?dataSource?description?mapName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains details of an existing map resource in your Amazon Web Services account."]moduleListKeysResponseEntry=structtypenonrect={keyName:ResourceName.toption[@ocaml.doc"The name of the API key resource."];expireTime:Timestamp.toption[@ocaml.doc"The timestamp for when the API key resource will expire, in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."];description:ResourceDescription.toption[@ocaml.doc"The optional description for the API key resource."];restrictions:ApiKeyRestrictions.toption;createTime:Timestamp.toption[@ocaml.doc"The timestamp of when the API key was created, in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."];updateTime:Timestamp.toption[@ocaml.doc"The timestamp of when the API key was last updated, in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."]}letmake?keyName=fun?expireTime->fun?description->fun?restrictions->fun?createTime->fun?updateTime->fun()->{keyName;expireTime;description;restrictions;createTime;updateTime}letto_valuex=structure_to_value[("KeyName",(Option.mapx.keyName~f:ResourceName.to_value));("ExpireTime",(Option.mapx.expireTime~f:Timestamp.to_value));("Description",(Option.mapx.description~f:ResourceDescription.to_value));("Restrictions",(Option.mapx.restrictions~f:ApiKeyRestrictions.to_value));("CreateTime",(Option.mapx.createTime~f:Timestamp.to_value));("UpdateTime",(Option.mapx.updateTime~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letupdateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"UpdateTime")inletcreateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"CreateTime")inletrestrictions=(Option.map~f:ApiKeyRestrictions.of_xml)(Xml.childxml_arg0"Restrictions")inletdescription=(Option.map~f:ResourceDescription.of_xml)(Xml.childxml_arg0"Description")inletexpireTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"ExpireTime")inletkeyName=(Option.map~f:ResourceName.of_xml)(Xml.childxml_arg0"KeyName")inmake?updateTime?createTime?restrictions?description?expireTime?keyName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letupdateTime=field_mapjson__"UpdateTime"Timestamp.of_jsoninletcreateTime=field_mapjson__"CreateTime"Timestamp.of_jsoninletrestrictions=field_mapjson__"Restrictions"ApiKeyRestrictions.of_jsoninletdescription=field_mapjson__"Description"ResourceDescription.of_jsoninletexpireTime=field_mapjson__"ExpireTime"Timestamp.of_jsoninletkeyName=field_mapjson__"KeyName"ResourceName.of_jsoninmake?updateTime?createTime?restrictions?description?expireTime?keyName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"An API key resource listed in your Amazon Web Services account."]moduleStatus=structtypenonrect=|Active|Expired|Non_static_idofstringletmakei=iletto_string=function|Active->"Active"|Expired->"Expired"|Non_static_ids->sletof_string=function|"Active"->Active|"Expired"->Expired|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 Status"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"Status"j)letto_json=simple_to_jsonto_valueendmoduleListJobsResponseEntry=structtypenonrect={action:JobAction.toption[@ocaml.doc"Action performed by the job."];actionOptions:JobActionOptions.toption[@ocaml.doc"Additional options for configuring job action parameters."];createdAt:Timestamp.toption[@ocaml.doc"Job creation time in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sss."];executionRoleArn:IamRoleArn.toption[@ocaml.doc"IAM role used for job execution."];endedAt:Timestamp.toption[@ocaml.doc"Job completion time in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sss. Only returned for jobs in a terminal status: Completed | Failed | Cancelled."];error:JobError.toption[@ocaml.doc"Error information if the job failed."];inputOptions:JobInputOptions.toption[@ocaml.doc"Input configuration."];jobId:JobId.toption[@ocaml.doc"Unique job identifier."];jobArn:GeoArn.toption[@ocaml.doc"Amazon Resource Name (ARN) of the job."];name:ResourceName.toption[@ocaml.doc"Job name (if provided during creation)."];outputOptions:JobOutputOptions.toption[@ocaml.doc"Output configuration."];status:JobStatus.toption[@ocaml.doc"Current job status."];updatedAt:Timestamp.toption[@ocaml.doc"Last update time in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sss."]}letmake?action=fun?actionOptions->fun?createdAt->fun?executionRoleArn->fun?endedAt->fun?error->fun?inputOptions->fun?jobId->fun?jobArn->fun?name->fun?outputOptions->fun?status->fun?updatedAt->fun()->{action;actionOptions;createdAt;executionRoleArn;endedAt;error;inputOptions;jobId;jobArn;name;outputOptions;status;updatedAt}letto_valuex=structure_to_value[("Action",(Option.mapx.action~f:JobAction.to_value));("ActionOptions",(Option.mapx.actionOptions~f:JobActionOptions.to_value));("CreatedAt",(Option.mapx.createdAt~f:Timestamp.to_value));("ExecutionRoleArn",(Option.mapx.executionRoleArn~f:IamRoleArn.to_value));("EndedAt",(Option.mapx.endedAt~f:Timestamp.to_value));("Error",(Option.mapx.error~f:JobError.to_value));("InputOptions",(Option.mapx.inputOptions~f:JobInputOptions.to_value));("JobId",(Option.mapx.jobId~f:JobId.to_value));("JobArn",(Option.mapx.jobArn~f:GeoArn.to_value));("Name",(Option.mapx.name~f:ResourceName.to_value));("OutputOptions",(Option.mapx.outputOptions~f:JobOutputOptions.to_value));("Status",(Option.mapx.status~f:JobStatus.to_value));("UpdatedAt",(Option.mapx.updatedAt~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letupdatedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"UpdatedAt")inletstatus=(Option.map~f:JobStatus.of_xml)(Xml.childxml_arg0"Status")inletoutputOptions=(Option.map~f:JobOutputOptions.of_xml)(Xml.childxml_arg0"OutputOptions")inletname=(Option.map~f:ResourceName.of_xml)(Xml.childxml_arg0"Name")inletjobArn=(Option.map~f:GeoArn.of_xml)(Xml.childxml_arg0"JobArn")inletjobId=(Option.map~f:JobId.of_xml)(Xml.childxml_arg0"JobId")inletinputOptions=(Option.map~f:JobInputOptions.of_xml)(Xml.childxml_arg0"InputOptions")inleterror=(Option.map~f:JobError.of_xml)(Xml.childxml_arg0"Error")inletendedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"EndedAt")inletexecutionRoleArn=(Option.map~f:IamRoleArn.of_xml)(Xml.childxml_arg0"ExecutionRoleArn")inletcreatedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"CreatedAt")inletactionOptions=(Option.map~f:JobActionOptions.of_xml)(Xml.childxml_arg0"ActionOptions")inletaction=(Option.map~f:JobAction.of_xml)(Xml.childxml_arg0"Action")inmake?updatedAt?status?outputOptions?name?jobArn?jobId?inputOptions?error?endedAt?executionRoleArn?createdAt?actionOptions?action()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letupdatedAt=field_mapjson__"UpdatedAt"Timestamp.of_jsoninletstatus=field_mapjson__"Status"JobStatus.of_jsoninletoutputOptions=field_mapjson__"OutputOptions"JobOutputOptions.of_jsoninletname=field_mapjson__"Name"ResourceName.of_jsoninletjobArn=field_mapjson__"JobArn"GeoArn.of_jsoninletjobId=field_mapjson__"JobId"JobId.of_jsoninletinputOptions=field_mapjson__"InputOptions"JobInputOptions.of_jsoninleterror=field_mapjson__"Error"JobError.of_jsoninletendedAt=field_mapjson__"EndedAt"Timestamp.of_jsoninletexecutionRoleArn=field_mapjson__"ExecutionRoleArn"IamRoleArn.of_jsoninletcreatedAt=field_mapjson__"CreatedAt"Timestamp.of_jsoninletactionOptions=field_mapjson__"ActionOptions"JobActionOptions.of_jsoninletaction=field_mapjson__"Action"JobAction.of_jsoninmake?updatedAt?status?outputOptions?name?jobArn?jobId?inputOptions?error?endedAt?executionRoleArn?createdAt?actionOptions?action()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Job summary information returned in list operations."]moduleListGeofenceResponseEntry=structtypenonrect={geofenceId:Id.toption[@ocaml.doc"The geofence identifier."];geometry:GeofenceGeometry.toption[@ocaml.doc"Contains the geofence geometry details describing the position of the geofence. Can be a circle, a polygon, or a multipolygon."];status:String_.toption[@ocaml.doc"Identifies the state of the geofence. A geofence will hold one of the following states: ACTIVE \226\128\148 The geofence has been indexed by the system. PENDING \226\128\148 The geofence is being processed by the system. FAILED \226\128\148 The geofence failed to be indexed by the system. DELETED \226\128\148 The geofence has been deleted from the system index. DELETING \226\128\148 The geofence is being deleted from the system index."];createTime:Timestamp.toption[@ocaml.doc"The timestamp for when the geofence was stored in a geofence collection in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ"];updateTime:Timestamp.toption[@ocaml.doc"The timestamp for when the geofence was last updated in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ"];geofenceProperties:PropertyMap.toption[@ocaml.doc"User defined properties of the geofence. A property is a key-value pair stored with the geofence and added to any geofence event triggered with that geofence. Format: \"key\" : \"value\""]}letmake?geofenceId=fun?geometry->fun?status->fun?createTime->fun?updateTime->fun?geofenceProperties->fun()->{geofenceId;geometry;status;createTime;updateTime;geofenceProperties}letto_valuex=structure_to_value[("GeofenceId",(Option.mapx.geofenceId~f:Id.to_value));("Geometry",(Option.mapx.geometry~f:GeofenceGeometry.to_value));("Status",(Option.mapx.status~f:String_.to_value));("CreateTime",(Option.mapx.createTime~f:Timestamp.to_value));("UpdateTime",(Option.mapx.updateTime~f:Timestamp.to_value));("GeofenceProperties",(Option.mapx.geofenceProperties~f:PropertyMap.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letgeofenceProperties=(Option.map~f:PropertyMap.of_xml)(Xml.childxml_arg0"GeofenceProperties")inletupdateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"UpdateTime")inletcreateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"CreateTime")inletstatus=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"Status")inletgeometry=(Option.map~f:GeofenceGeometry.of_xml)(Xml.childxml_arg0"Geometry")inletgeofenceId=(Option.map~f:Id.of_xml)(Xml.childxml_arg0"GeofenceId")inmake?geofenceProperties?updateTime?createTime?status?geometry?geofenceId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letgeofenceProperties=field_mapjson__"GeofenceProperties"PropertyMap.of_jsoninletupdateTime=field_mapjson__"UpdateTime"Timestamp.of_jsoninletcreateTime=field_mapjson__"CreateTime"Timestamp.of_jsoninletstatus=field_mapjson__"Status"String_.of_jsoninletgeometry=field_mapjson__"Geometry"GeofenceGeometry.of_jsoninletgeofenceId=field_mapjson__"GeofenceId"Id.of_jsoninmake?geofenceProperties?updateTime?createTime?status?geometry?geofenceId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains a list of geofences stored in a given geofence collection. The returned geometry will always match the geometry format used when the geofence was created."]moduleListGeofenceCollectionsResponseEntry=structtypenonrect={collectionName:ResourceName.toption[@ocaml.doc"The name of the geofence collection."];description:ResourceDescription.toption[@ocaml.doc"The description for the geofence collection"];pricingPlan:PricingPlan.toption[@ocaml.doc"No longer used. Always returns RequestBasedUsage."];pricingPlanDataSource:String_.toption[@ocaml.doc"No longer used. Always returns an empty string."];createTime:Timestamp.toption[@ocaml.doc"The timestamp for when the geofence collection was created in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ"];updateTime:Timestamp.toption[@ocaml.doc"Specifies a timestamp for when the resource was last updated in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ"]}letmake?collectionName=fun?description->fun?pricingPlan->fun?pricingPlanDataSource->fun?createTime->fun?updateTime->fun()->{collectionName;description;pricingPlan;pricingPlanDataSource;createTime;updateTime}letto_valuex=structure_to_value[("CollectionName",(Option.mapx.collectionName~f:ResourceName.to_value));("Description",(Option.mapx.description~f:ResourceDescription.to_value));("PricingPlan",(Option.mapx.pricingPlan~f:PricingPlan.to_value));("PricingPlanDataSource",(Option.mapx.pricingPlanDataSource~f:String_.to_value));("CreateTime",(Option.mapx.createTime~f:Timestamp.to_value));("UpdateTime",(Option.mapx.updateTime~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letupdateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"UpdateTime")inletcreateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"CreateTime")inletpricingPlanDataSource=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"PricingPlanDataSource")inletpricingPlan=(Option.map~f:PricingPlan.of_xml)(Xml.childxml_arg0"PricingPlan")inletdescription=(Option.map~f:ResourceDescription.of_xml)(Xml.childxml_arg0"Description")inletcollectionName=(Option.map~f:ResourceName.of_xml)(Xml.childxml_arg0"CollectionName")inmake?updateTime?createTime?pricingPlanDataSource?pricingPlan?description?collectionName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letupdateTime=field_mapjson__"UpdateTime"Timestamp.of_jsoninletcreateTime=field_mapjson__"CreateTime"Timestamp.of_jsoninletpricingPlanDataSource=field_mapjson__"PricingPlanDataSource"String_.of_jsoninletpricingPlan=field_mapjson__"PricingPlan"PricingPlan.of_jsoninletdescription=field_mapjson__"Description"ResourceDescription.of_jsoninletcollectionName=field_mapjson__"CollectionName"ResourceName.of_jsoninmake?updateTime?createTime?pricingPlanDataSource?pricingPlan?description?collectionName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains the geofence collection details. The returned geometry will always match the geometry format used when the geofence was created."]moduleListDevicePositionsResponseEntry=structtypenonrect={deviceId:Id.toption[@ocaml.doc"The ID of the device for this position."];sampleTime:Timestamp.toption[@ocaml.doc"The timestamp at which the device position was determined. Uses ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."];position:Position.toption[@ocaml.doc"The last known device position. Empty if no positions currently stored."];accuracy:PositionalAccuracy.toption[@ocaml.doc"The accuracy of the device position."];positionProperties:PositionPropertyMap.toption[@ocaml.doc"The properties associated with the position."]}letmake?deviceId=fun?sampleTime->fun?position->fun?accuracy->fun?positionProperties->fun()->{deviceId;sampleTime;position;accuracy;positionProperties}letto_valuex=structure_to_value[("DeviceId",(Option.mapx.deviceId~f:Id.to_value));("SampleTime",(Option.mapx.sampleTime~f:Timestamp.to_value));("Position",(Option.mapx.position~f:Position.to_value));("Accuracy",(Option.mapx.accuracy~f:PositionalAccuracy.to_value));("PositionProperties",(Option.mapx.positionProperties~f:PositionPropertyMap.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letpositionProperties=(Option.map~f:PositionPropertyMap.of_xml)(Xml.childxml_arg0"PositionProperties")inletaccuracy=(Option.map~f:PositionalAccuracy.of_xml)(Xml.childxml_arg0"Accuracy")inletposition=(Option.map~f:Position.of_xml)(Xml.childxml_arg0"Position")inletsampleTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"SampleTime")inletdeviceId=(Option.map~f:Id.of_xml)(Xml.childxml_arg0"DeviceId")inmake?positionProperties?accuracy?position?sampleTime?deviceId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letpositionProperties=field_mapjson__"PositionProperties"PositionPropertyMap.of_jsoninletaccuracy=field_mapjson__"Accuracy"PositionalAccuracy.of_jsoninletposition=field_mapjson__"Position"Position.of_jsoninletsampleTime=field_mapjson__"SampleTime"Timestamp.of_jsoninletdeviceId=field_mapjson__"DeviceId"Id.of_jsoninmake?positionProperties?accuracy?position?sampleTime?deviceId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains the tracker resource details."]moduleDevicePosition=structtypenonrect={deviceId:Id.toption[@ocaml.doc"The device whose position you retrieved."];sampleTime:Timestamp.toption[@ocaml.doc"The timestamp at which the device's position was determined. Uses ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."];receivedTime:Timestamp.toption[@ocaml.doc"The timestamp for when the tracker resource received the device position in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."];position:Position.toption[@ocaml.doc"The last known device position."];accuracy:PositionalAccuracy.toption[@ocaml.doc"The accuracy of the device position."];positionProperties:PositionPropertyMap.toption[@ocaml.doc"The properties associated with the position."]}letmake?deviceId=fun?sampleTime->fun?receivedTime->fun?position->fun?accuracy->fun?positionProperties->fun()->{deviceId;sampleTime;receivedTime;position;accuracy;positionProperties}letto_valuex=structure_to_value[("DeviceId",(Option.mapx.deviceId~f:Id.to_value));("SampleTime",(Option.mapx.sampleTime~f:Timestamp.to_value));("ReceivedTime",(Option.mapx.receivedTime~f:Timestamp.to_value));("Position",(Option.mapx.position~f:Position.to_value));("Accuracy",(Option.mapx.accuracy~f:PositionalAccuracy.to_value));("PositionProperties",(Option.mapx.positionProperties~f:PositionPropertyMap.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letpositionProperties=(Option.map~f:PositionPropertyMap.of_xml)(Xml.childxml_arg0"PositionProperties")inletaccuracy=(Option.map~f:PositionalAccuracy.of_xml)(Xml.childxml_arg0"Accuracy")inletposition=(Option.map~f:Position.of_xml)(Xml.childxml_arg0"Position")inletreceivedTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"ReceivedTime")inletsampleTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"SampleTime")inletdeviceId=(Option.map~f:Id.of_xml)(Xml.childxml_arg0"DeviceId")inmake?positionProperties?accuracy?position?receivedTime?sampleTime?deviceId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letpositionProperties=field_mapjson__"PositionProperties"PositionPropertyMap.of_jsoninletaccuracy=field_mapjson__"Accuracy"PositionalAccuracy.of_jsoninletposition=field_mapjson__"Position"Position.of_jsoninletreceivedTime=field_mapjson__"ReceivedTime"Timestamp.of_jsoninletsampleTime=field_mapjson__"SampleTime"Timestamp.of_jsoninletdeviceId=field_mapjson__"DeviceId"Id.of_jsoninmake?positionProperties?accuracy?position?receivedTime?sampleTime?deviceId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains the device position details."]moduleForecastedEvent=structtypenonrect={eventId:Uuid.toption[@ocaml.doc"The forecasted event identifier."];geofenceId:Id.toption[@ocaml.doc"The geofence identifier pertaining to the forecasted event."];isDeviceInGeofence:Boolean.toption[@ocaml.doc"Indicates if the device is located within the geofence."];nearestDistance:NearestDistance.toption[@ocaml.doc"The closest distance from the device's position to the geofence."];eventType:ForecastedGeofenceEventType.toption[@ocaml.doc"The event type, forecasting three states for which a device can be in relative to a geofence: ENTER: If a device is outside of a geofence, but would breach the fence if the device is moving at its current speed within time horizon window. EXIT: If a device is inside of a geofence, but would breach the fence if the device is moving at its current speed within time horizon window. IDLE: If a device is inside of a geofence, and the device is not moving."];forecastedBreachTime:Timestamp.toption[@ocaml.doc"The forecasted time the device will breach the geofence in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ"];geofenceProperties:PropertyMap.toption[@ocaml.doc"The geofence properties."]}letmake?eventId=fun?geofenceId->fun?isDeviceInGeofence->fun?nearestDistance->fun?eventType->fun?forecastedBreachTime->fun?geofenceProperties->fun()->{eventId;geofenceId;isDeviceInGeofence;nearestDistance;eventType;forecastedBreachTime;geofenceProperties}letto_valuex=structure_to_value[("EventId",(Option.mapx.eventId~f:Uuid.to_value));("GeofenceId",(Option.mapx.geofenceId~f:Id.to_value));("IsDeviceInGeofence",(Option.mapx.isDeviceInGeofence~f:Boolean.to_value));("NearestDistance",(Option.mapx.nearestDistance~f:NearestDistance.to_value));("EventType",(Option.mapx.eventType~f:ForecastedGeofenceEventType.to_value));("ForecastedBreachTime",(Option.mapx.forecastedBreachTime~f:Timestamp.to_value));("GeofenceProperties",(Option.mapx.geofenceProperties~f:PropertyMap.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letgeofenceProperties=(Option.map~f:PropertyMap.of_xml)(Xml.childxml_arg0"GeofenceProperties")inletforecastedBreachTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"ForecastedBreachTime")inleteventType=(Option.map~f:ForecastedGeofenceEventType.of_xml)(Xml.childxml_arg0"EventType")inletnearestDistance=(Option.map~f:NearestDistance.of_xml)(Xml.childxml_arg0"NearestDistance")inletisDeviceInGeofence=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"IsDeviceInGeofence")inletgeofenceId=(Option.map~f:Id.of_xml)(Xml.childxml_arg0"GeofenceId")inleteventId=(Option.map~f:Uuid.of_xml)(Xml.childxml_arg0"EventId")inmake?geofenceProperties?forecastedBreachTime?eventType?nearestDistance?isDeviceInGeofence?geofenceId?eventId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letgeofenceProperties=field_mapjson__"GeofenceProperties"PropertyMap.of_jsoninletforecastedBreachTime=field_mapjson__"ForecastedBreachTime"Timestamp.of_jsoninleteventType=field_mapjson__"EventType"ForecastedGeofenceEventType.of_jsoninletnearestDistance=field_mapjson__"NearestDistance"NearestDistance.of_jsoninletisDeviceInGeofence=field_mapjson__"IsDeviceInGeofence"Boolean.of_jsoninletgeofenceId=field_mapjson__"GeofenceId"Id.of_jsoninleteventId=field_mapjson__"EventId"Uuid.of_jsoninmake?geofenceProperties?forecastedBreachTime?eventType?nearestDistance?isDeviceInGeofence?geofenceId?eventId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A forecasted event represents a geofence event in relation to the requested device state, that may occur given the provided device state and time horizon."]moduleForecastGeofenceEventsDeviceStateSpeedDouble=structtypenonrect=floatletmakei=letopenResultinok_or_failwith(check_float_mini~min:0.);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_valueendmoduleMapStyle=structtypenonrect=stringletcontext_="MapStyle"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:100)>>=(fun()->check_patterni~pattern:"[-._\\w]+")));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"MapStyle"jletto_json=simple_to_jsonto_valueendmoduleCalculateRouteSummaryDistanceDouble=structtypenonrect=floatletmakei=letopenResultinok_or_failwith(check_float_mini~min:0.);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_valueendmoduleCalculateRouteSummaryDurationSecondsDouble=structtypenonrect=floatletmakei=letopenResultinok_or_failwith(check_float_mini~min:0.);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_valueendmoduleDistanceUnit=structtypenonrect=|Kilometers|Miles|Non_static_idofstringletmakei=iletto_string=function|Kilometers->"Kilometers"|Miles->"Miles"|Non_static_ids->sletof_string=function|"Kilometers"->Kilometers|"Miles"->Miles|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 DistanceUnit"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"DistanceUnit"j)letto_json=simple_to_jsonto_valueendmoduleLeg=structtypenonrect={startPosition:Position.toption[@ocaml.doc"The starting position of the leg. Follows the format \\[longitude,latitude\\]. If the StartPosition isn't located on a road, it's snapped to a nearby road."];endPosition:Position.toption[@ocaml.doc"The terminating position of the leg. Follows the format \\[longitude,latitude\\]. If the EndPosition isn't located on a road, it's snapped to a nearby road."];distance:LegDistanceDouble.toption[@ocaml.doc"The distance between the leg's StartPosition and EndPosition along a calculated route. The default measurement is Kilometers unless the request specifies a DistanceUnit of Miles."];durationSeconds:LegDurationSecondsDouble.toption[@ocaml.doc"The estimated travel time between the leg's StartPosition and EndPosition. The travel mode and departure time that you specify in the request determines the calculated time."];geometry:LegGeometry.toption[@ocaml.doc"Contains the calculated route's path as a linestring geometry."];steps:StepList.toption[@ocaml.doc"Contains a list of steps, which represent subsections of a leg. Each step provides instructions for how to move to the next step in the leg such as the step's start position, end position, travel distance, travel duration, and geometry offset."]}letmake?startPosition=fun?endPosition->fun?distance->fun?durationSeconds->fun?geometry->fun?steps->fun()->{startPosition;endPosition;distance;durationSeconds;geometry;steps}letto_valuex=structure_to_value[("StartPosition",(Option.mapx.startPosition~f:Position.to_value));("EndPosition",(Option.mapx.endPosition~f:Position.to_value));("Distance",(Option.mapx.distance~f:LegDistanceDouble.to_value));("DurationSeconds",(Option.mapx.durationSeconds~f:LegDurationSecondsDouble.to_value));("Geometry",(Option.mapx.geometry~f:LegGeometry.to_value));("Steps",(Option.mapx.steps~f:StepList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letsteps=(Option.map~f:StepList.of_xml)(Xml.childxml_arg0"Steps")inletgeometry=(Option.map~f:LegGeometry.of_xml)(Xml.childxml_arg0"Geometry")inletdurationSeconds=(Option.map~f:LegDurationSecondsDouble.of_xml)(Xml.childxml_arg0"DurationSeconds")inletdistance=(Option.map~f:LegDistanceDouble.of_xml)(Xml.childxml_arg0"Distance")inletendPosition=(Option.map~f:Position.of_xml)(Xml.childxml_arg0"EndPosition")inletstartPosition=(Option.map~f:Position.of_xml)(Xml.childxml_arg0"StartPosition")inmake?steps?geometry?durationSeconds?distance?endPosition?startPosition()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letsteps=field_mapjson__"Steps"StepList.of_jsoninletgeometry=field_mapjson__"Geometry"LegGeometry.of_jsoninletdurationSeconds=field_mapjson__"DurationSeconds"LegDurationSecondsDouble.of_jsoninletdistance=field_mapjson__"Distance"LegDistanceDouble.of_jsoninletendPosition=field_mapjson__"EndPosition"Position.of_jsoninletstartPosition=field_mapjson__"StartPosition"Position.of_jsoninmake?steps?geometry?durationSeconds?distance?endPosition?startPosition()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains the calculated route's details for each path between a pair of positions. The number of legs returned corresponds to one fewer than the total number of positions in the request. For example, a route with a departure position and destination position returns one leg with the positions snapped to a nearby road: The StartPosition is the departure position. The EndPosition is the destination position. A route with a waypoint between the departure and destination position returns two legs with the positions snapped to a nearby road: Leg 1: The StartPosition is the departure position . The EndPosition is the waypoint positon. Leg 2: The StartPosition is the waypoint position. The EndPosition is the destination position."]moduleTruckDimensions=structtypenonrect={length:TruckDimensionsLengthDouble.toption[@ocaml.doc"The length of the truck. For example, 15.5. For routes calculated with a HERE resource, this value must be between 0 and 300 meters."];height:TruckDimensionsHeightDouble.toption[@ocaml.doc"The height of the truck. For example, 4.5. For routes calculated with a HERE resource, this value must be between 0 and 50 meters."];width:TruckDimensionsWidthDouble.toption[@ocaml.doc"The width of the truck. For example, 4.5. For routes calculated with a HERE resource, this value must be between 0 and 50 meters."];unit:DimensionUnit.toption[@ocaml.doc"Specifies the unit of measurement for the truck dimensions. Default Value: Meters"]}letmake?length=fun?height->fun?width->fun?unit->fun()->{length;height;width;unit}letto_valuex=structure_to_value[("Length",(Option.mapx.length~f:TruckDimensionsLengthDouble.to_value));("Height",(Option.mapx.height~f:TruckDimensionsHeightDouble.to_value));("Width",(Option.mapx.width~f:TruckDimensionsWidthDouble.to_value));("Unit",(Option.mapx.unit~f:DimensionUnit.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letunit=(Option.map~f:DimensionUnit.of_xml)(Xml.childxml_arg0"Unit")inletwidth=(Option.map~f:TruckDimensionsWidthDouble.of_xml)(Xml.childxml_arg0"Width")inletheight=(Option.map~f:TruckDimensionsHeightDouble.of_xml)(Xml.childxml_arg0"Height")inletlength=(Option.map~f:TruckDimensionsLengthDouble.of_xml)(Xml.childxml_arg0"Length")inmake?unit?width?height?length()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letunit=field_mapjson__"Unit"DimensionUnit.of_jsoninletwidth=field_mapjson__"Width"TruckDimensionsWidthDouble.of_jsoninletheight=field_mapjson__"Height"TruckDimensionsHeightDouble.of_jsoninletlength=field_mapjson__"Length"TruckDimensionsLengthDouble.of_jsoninmake?unit?width?height?length()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains details about the truck dimensions in the unit of measurement that you specify. Used to filter out roads that can't support or allow the specified dimensions for requests that specify TravelMode as Truck."]moduleTruckWeight=structtypenonrect={total:TruckWeightTotalDouble.toption[@ocaml.doc"The total weight of the truck. For example, 3500."];unit:VehicleWeightUnit.toption[@ocaml.doc"The unit of measurement to use for the truck weight. Default Value: Kilograms"]}letmake?total=fun?unit->fun()->{total;unit}letto_valuex=structure_to_value[("Total",(Option.mapx.total~f:TruckWeightTotalDouble.to_value));("Unit",(Option.mapx.unit~f:VehicleWeightUnit.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letunit=(Option.map~f:VehicleWeightUnit.of_xml)(Xml.childxml_arg0"Unit")inlettotal=(Option.map~f:TruckWeightTotalDouble.of_xml)(Xml.childxml_arg0"Total")inmake?unit?total()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letunit=field_mapjson__"Unit"VehicleWeightUnit.of_jsoninlettotal=field_mapjson__"Total"TruckWeightTotalDouble.of_jsoninmake?unit?total()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains details about the truck's weight specifications. Used to avoid roads that can't support or allow the total weight for requests that specify TravelMode as Truck."]moduleCalculateRouteMatrixSummaryErrorCountInteger=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:160000)>>=(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 CalculateRouteMatrixSummaryErrorCountInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleCalculateRouteMatrixSummaryRouteCountInteger=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:160000)>>=(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 CalculateRouteMatrixSummaryRouteCountInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleRouteMatrixRow=structtypenonrect=RouteMatrixEntry.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:RouteMatrixEntry.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:RouteMatrixEntry.of_xml)letof_jsonj=list_of_json~kind:"RouteMatrixRow"~of_json:RouteMatrixEntry.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleBatchUpdateDevicePositionError=structtypenonrect={deviceId:Id.toption[@ocaml.doc"The device associated with the failed location update."];sampleTime:Timestamp.toption[@ocaml.doc"The timestamp at which the device position was determined. Uses ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."];error:BatchItemError.toption[@ocaml.doc"Contains details related to the error code such as the error code and error message."]}letmake?deviceId=fun?sampleTime->fun?error->fun()->{deviceId;sampleTime;error}letto_valuex=structure_to_value[("DeviceId",(Option.mapx.deviceId~f:Id.to_value));("SampleTime",(Option.mapx.sampleTime~f:Timestamp.to_value));("Error",(Option.mapx.error~f:BatchItemError.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=leterror=(Option.map~f:BatchItemError.of_xml)(Xml.childxml_arg0"Error")inletsampleTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"SampleTime")inletdeviceId=(Option.map~f:Id.of_xml)(Xml.childxml_arg0"DeviceId")inmake?error?sampleTime?deviceId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=leterror=field_mapjson__"Error"BatchItemError.of_jsoninletsampleTime=field_mapjson__"SampleTime"Timestamp.of_jsoninletdeviceId=field_mapjson__"DeviceId"Id.of_jsoninmake?error?sampleTime?deviceId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains error details for each device that failed to update its position."]moduleDevicePositionUpdate=structtypenonrect={deviceId:Id.t[@ocaml.doc"The device associated to the position update."];sampleTime:Timestamp.t[@ocaml.doc"The timestamp at which the device's position was determined. Uses ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ"];position:Position.t[@ocaml.doc"The latest device position defined in WGS 84 format: \\[X or longitude, Y or latitude\\]."];accuracy:PositionalAccuracy.toption[@ocaml.doc"The accuracy of the device position."];positionProperties:PositionPropertyMap.toption[@ocaml.doc"Associates one of more properties with the position update. A property is a key-value pair stored with the position update and added to any geofence event the update may trigger. Format: \"key\" : \"value\""]}letcontext_="DevicePositionUpdate"letmake?accuracy=fun?positionProperties->fun~deviceId->fun~sampleTime->fun~position->fun()->{accuracy;positionProperties;deviceId;sampleTime;position}letto_valuex=structure_to_value[("DeviceId",(Some(Id.to_valuex.deviceId)));("SampleTime",(Some(Timestamp.to_valuex.sampleTime)));("Position",(Some(Position.to_valuex.position)));("Accuracy",(Option.mapx.accuracy~f:PositionalAccuracy.to_value));("PositionProperties",(Option.mapx.positionProperties~f:PositionPropertyMap.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letpositionProperties=(Option.map~f:PositionPropertyMap.of_xml)(Xml.childxml_arg0"PositionProperties")inletaccuracy=(Option.map~f:PositionalAccuracy.of_xml)(Xml.childxml_arg0"Accuracy")inletposition=Position.of_xml(Xml.child_exn~context:context_xml_arg0"Position")inletsampleTime=Timestamp.of_xml(Xml.child_exn~context:context_xml_arg0"SampleTime")inletdeviceId=Id.of_xml(Xml.child_exn~context:context_xml_arg0"DeviceId")inmake?positionProperties?accuracy~position~sampleTime~deviceId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letpositionProperties=field_mapjson__"PositionProperties"PositionPropertyMap.of_jsoninletaccuracy=field_mapjson__"Accuracy"PositionalAccuracy.of_jsoninletposition=field_map_exnjson__"Position"Position.of_jsoninletsampleTime=field_map_exnjson__"SampleTime"Timestamp.of_jsoninletdeviceId=field_map_exnjson__"DeviceId"Id.of_jsoninmake?positionProperties?accuracy~position~sampleTime~deviceId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains the position update details for a device."]moduleBatchPutGeofenceError=structtypenonrect={geofenceId:Id.toption[@ocaml.doc"The geofence associated with the error message."];error:BatchItemError.toption[@ocaml.doc"Contains details associated to the batch error."]}letmake?geofenceId=fun?error->fun()->{geofenceId;error}letto_valuex=structure_to_value[("GeofenceId",(Option.mapx.geofenceId~f:Id.to_value));("Error",(Option.mapx.error~f:BatchItemError.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=leterror=(Option.map~f:BatchItemError.of_xml)(Xml.childxml_arg0"Error")inletgeofenceId=(Option.map~f:Id.of_xml)(Xml.childxml_arg0"GeofenceId")inmake?error?geofenceId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=leterror=field_mapjson__"Error"BatchItemError.of_jsoninletgeofenceId=field_mapjson__"GeofenceId"Id.of_jsoninmake?error?geofenceId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains error details for each geofence that failed to be stored in a given geofence collection."]moduleBatchPutGeofenceSuccess=structtypenonrect={geofenceId:Id.toption[@ocaml.doc"The geofence successfully stored in a geofence collection."];createTime:Timestamp.toption[@ocaml.doc"The timestamp for when the geofence was stored in a geofence collection in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ"];updateTime:Timestamp.toption[@ocaml.doc"The timestamp for when the geofence was last updated in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ"]}letmake?geofenceId=fun?createTime->fun?updateTime->fun()->{geofenceId;createTime;updateTime}letto_valuex=structure_to_value[("GeofenceId",(Option.mapx.geofenceId~f:Id.to_value));("CreateTime",(Option.mapx.createTime~f:Timestamp.to_value));("UpdateTime",(Option.mapx.updateTime~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letupdateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"UpdateTime")inletcreateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"CreateTime")inletgeofenceId=(Option.map~f:Id.of_xml)(Xml.childxml_arg0"GeofenceId")inmake?updateTime?createTime?geofenceId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letupdateTime=field_mapjson__"UpdateTime"Timestamp.of_jsoninletcreateTime=field_mapjson__"CreateTime"Timestamp.of_jsoninletgeofenceId=field_mapjson__"GeofenceId"Id.of_jsoninmake?updateTime?createTime?geofenceId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains a summary of each geofence that was successfully stored in a given geofence collection."]moduleBatchPutGeofenceRequestEntry=structtypenonrect={geofenceId:Id.t[@ocaml.doc"The identifier for the geofence to be stored in a given geofence collection."];geometry:GeofenceGeometry.t[@ocaml.doc"Contains the details to specify the position of the geofence. Can be a circle, a polygon, or a multipolygon. Polygon and MultiPolygon geometries can be defined using their respective parameters, or encoded in Geobuf format using the Geobuf parameter. Including multiple geometry types in the same request will return a validation error. The geofence Polygon and MultiPolygon formats support a maximum of 1,000 total vertices. The Geobuf format supports a maximum of 100,000 vertices."];geofenceProperties:PropertyMap.toption[@ocaml.doc"Associates one of more properties with the geofence. A property is a key-value pair stored with the geofence and added to any geofence event triggered with that geofence. Format: \"key\" : \"value\""]}letcontext_="BatchPutGeofenceRequestEntry"letmake?geofenceProperties=fun~geofenceId->fun~geometry->fun()->{geofenceProperties;geofenceId;geometry}letto_valuex=structure_to_value[("GeofenceId",(Some(Id.to_valuex.geofenceId)));("Geometry",(Some(GeofenceGeometry.to_valuex.geometry)));("GeofenceProperties",(Option.mapx.geofenceProperties~f:PropertyMap.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letgeofenceProperties=(Option.map~f:PropertyMap.of_xml)(Xml.childxml_arg0"GeofenceProperties")inletgeometry=GeofenceGeometry.of_xml(Xml.child_exn~context:context_xml_arg0"Geometry")inletgeofenceId=Id.of_xml(Xml.child_exn~context:context_xml_arg0"GeofenceId")inmake?geofenceProperties~geometry~geofenceId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letgeofenceProperties=field_mapjson__"GeofenceProperties"PropertyMap.of_jsoninletgeometry=field_map_exnjson__"Geometry"GeofenceGeometry.of_jsoninletgeofenceId=field_map_exnjson__"GeofenceId"Id.of_jsoninmake?geofenceProperties~geometry~geofenceId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains geofence geometry details."]moduleBatchGetDevicePositionError=structtypenonrect={deviceId:Id.toption[@ocaml.doc"The ID of the device that didn't return a position."];error:BatchItemError.toption[@ocaml.doc"Contains details related to the error code."]}letmake?deviceId=fun?error->fun()->{deviceId;error}letto_valuex=structure_to_value[("DeviceId",(Option.mapx.deviceId~f:Id.to_value));("Error",(Option.mapx.error~f:BatchItemError.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=leterror=(Option.map~f:BatchItemError.of_xml)(Xml.childxml_arg0"Error")inletdeviceId=(Option.map~f:Id.of_xml)(Xml.childxml_arg0"DeviceId")inmake?error?deviceId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=leterror=field_mapjson__"Error"BatchItemError.of_jsoninletdeviceId=field_mapjson__"DeviceId"Id.of_jsoninmake?error?deviceId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains error details for each device that didn't return a position."]moduleBatchEvaluateGeofencesError=structtypenonrect={deviceId:Id.toption[@ocaml.doc"The device associated with the position evaluation error."];sampleTime:Timestamp.toption[@ocaml.doc"Specifies a timestamp for when the error occurred in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ"];error:BatchItemError.toption[@ocaml.doc"Contains details associated to the batch error."]}letmake?deviceId=fun?sampleTime->fun?error->fun()->{deviceId;sampleTime;error}letto_valuex=structure_to_value[("DeviceId",(Option.mapx.deviceId~f:Id.to_value));("SampleTime",(Option.mapx.sampleTime~f:Timestamp.to_value));("Error",(Option.mapx.error~f:BatchItemError.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=leterror=(Option.map~f:BatchItemError.of_xml)(Xml.childxml_arg0"Error")inletsampleTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"SampleTime")inletdeviceId=(Option.map~f:Id.of_xml)(Xml.childxml_arg0"DeviceId")inmake?error?sampleTime?deviceId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=leterror=field_mapjson__"Error"BatchItemError.of_jsoninletsampleTime=field_mapjson__"SampleTime"Timestamp.of_jsoninletdeviceId=field_mapjson__"DeviceId"Id.of_jsoninmake?error?sampleTime?deviceId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains error details for each device that failed to evaluate its position against the geofences in a given geofence collection."]moduleBatchDeleteGeofenceError=structtypenonrect={geofenceId:Id.toption[@ocaml.doc"The geofence associated with the error message."];error:BatchItemError.toption[@ocaml.doc"Contains details associated to the batch error."]}letmake?geofenceId=fun?error->fun()->{geofenceId;error}letto_valuex=structure_to_value[("GeofenceId",(Option.mapx.geofenceId~f:Id.to_value));("Error",(Option.mapx.error~f:BatchItemError.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=leterror=(Option.map~f:BatchItemError.of_xml)(Xml.childxml_arg0"Error")inletgeofenceId=(Option.map~f:Id.of_xml)(Xml.childxml_arg0"GeofenceId")inmake?error?geofenceId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=leterror=field_mapjson__"Error"BatchItemError.of_jsoninletgeofenceId=field_mapjson__"GeofenceId"Id.of_jsoninmake?error?geofenceId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains error details for each geofence that failed to delete from the geofence collection."]moduleBatchDeleteDevicePositionHistoryError=structtypenonrect={deviceId:Id.toption[@ocaml.doc"The ID of the device for this position."];error:BatchItemError.toption}letmake?deviceId=fun?error->fun()->{deviceId;error}letto_valuex=structure_to_value[("DeviceId",(Option.mapx.deviceId~f:Id.to_value));("Error",(Option.mapx.error~f:BatchItemError.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=leterror=(Option.map~f:BatchItemError.of_xml)(Xml.childxml_arg0"Error")inletdeviceId=(Option.map~f:Id.of_xml)(Xml.childxml_arg0"DeviceId")inmake?error?deviceId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=leterror=field_mapjson__"Error"BatchItemError.of_jsoninletdeviceId=field_mapjson__"DeviceId"Id.of_jsoninmake?error?deviceId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains the tracker resource details."]moduleAccessDeniedException=structtypenonrect={message:String_.toption}letmake?message=fun()->{message}letto_valuex=structure_to_value[("message",(Option.mapx.message~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmessage=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"message")inmake?message()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmessage=field_mapjson__"Message"String_.of_jsoninmake?message()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The request was denied because of insufficient access or permissions. Check with an administrator to verify your permissions."]moduleInferredState=structtypenonrect={position:Position.toption[@ocaml.doc"The device position inferred by the provided position, IP address, cellular signals, and Wi-Fi- access points."];accuracy:PositionalAccuracy.toption[@ocaml.doc"The level of certainty of the inferred position."];deviationDistance:Double.toption[@ocaml.doc"The distance between the inferred position and the device's self-reported position."];proxyDetected:Boolean.toption[@ocaml.doc"Indicates if a proxy was used."]}letmake?position=fun?accuracy->fun?deviationDistance->fun?proxyDetected->fun()->{position;accuracy;deviationDistance;proxyDetected}letto_valuex=structure_to_value[("Position",(Option.mapx.position~f:Position.to_value));("Accuracy",(Option.mapx.accuracy~f:PositionalAccuracy.to_value));("DeviationDistance",(Option.mapx.deviationDistance~f:Double.to_value));("ProxyDetected",(Option.mapx.proxyDetected~f:Boolean.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letproxyDetected=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"ProxyDetected")inletdeviationDistance=(Option.map~f:Double.of_xml)(Xml.childxml_arg0"DeviationDistance")inletaccuracy=(Option.map~f:PositionalAccuracy.of_xml)(Xml.childxml_arg0"Accuracy")inletposition=(Option.map~f:Position.of_xml)(Xml.childxml_arg0"Position")inmake?proxyDetected?deviationDistance?accuracy?position()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letproxyDetected=field_mapjson__"ProxyDetected"Boolean.of_jsoninletdeviationDistance=field_mapjson__"DeviationDistance"Double.of_jsoninletaccuracy=field_mapjson__"Accuracy"PositionalAccuracy.of_jsoninletposition=field_mapjson__"Position"Position.of_jsoninmake?proxyDetected?deviationDistance?accuracy?position()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The inferred state of the device, given the provided position, IP address, cellular signals, and Wi-Fi- access points."]moduleInternalServerException=structtypenonrect={message:String_.toption}letmake?message=fun()->{message}letto_valuex=structure_to_value[("message",(Option.mapx.message~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmessage=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"message")inmake?message()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmessage=field_mapjson__"Message"String_.of_jsoninmake?message()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The request has failed to process because of an unknown server error, exception, or failure."]moduleResourceNotFoundException=structtypenonrect={message:String_.toption}letmake?message=fun()->{message}letto_valuex=structure_to_value[("message",(Option.mapx.message~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmessage=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"message")inmake?message()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmessage=field_mapjson__"Message"String_.of_jsoninmake?message()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The resource that you've entered was not found in your AWS account."]moduleThrottlingException=structtypenonrect={message:String_.toption}letmake?message=fun()->{message}letto_valuex=structure_to_value[("message",(Option.mapx.message~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmessage=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"message")inmake?message()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmessage=field_mapjson__"Message"String_.of_jsoninmake?message()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The request was denied because of request throttling."]moduleValidationException=structtypenonrect={message:String_.toption;reason:ValidationExceptionReason.toption[@ocaml.doc"A message with the reason for the validation exception error."];fieldList:ValidationExceptionFieldList.toption[@ocaml.doc"The field where the invalid entry was detected."]}letmake?message=fun?reason->fun?fieldList->fun()->{message;reason;fieldList}letto_valuex=structure_to_value[("message",(Option.mapx.message~f:String_.to_value));("reason",(Option.mapx.reason~f:ValidationExceptionReason.to_value));("fieldList",(Option.mapx.fieldList~f:ValidationExceptionFieldList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letfieldList=(Option.map~f:ValidationExceptionFieldList.of_xml)(Xml.childxml_arg0"fieldList")inletreason=(Option.map~f:ValidationExceptionReason.of_xml)(Xml.childxml_arg0"reason")inletmessage=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"message")inmake?fieldList?reason?message()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letfieldList=field_mapjson__"FieldList"ValidationExceptionFieldList.of_jsoninletreason=field_mapjson__"Reason"ValidationExceptionReason.of_jsoninletmessage=field_mapjson__"Message"String_.of_jsoninmake?fieldList?reason?message()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The input failed to meet the constraints specified by the AWS service."]moduleDeviceState=structtypenonrect={deviceId:Id.t[@ocaml.doc"The device identifier."];sampleTime:Timestamp.t[@ocaml.doc"The timestamp at which the device's position was determined. Uses ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."];position:Position.t[@ocaml.doc"The last known device position."];accuracy:PositionalAccuracy.toption;ipv4Address:DeviceStateIpv4AddressString.toption[@ocaml.doc"The device's Ipv4 address."];wiFiAccessPoints:WiFiAccessPointList.toption[@ocaml.doc"The Wi-Fi access points the device is using."];cellSignals:CellSignals.toption[@ocaml.doc"The cellular network infrastructure that the device is connected to."]}letcontext_="DeviceState"letmake?accuracy=fun?ipv4Address->fun?wiFiAccessPoints->fun?cellSignals->fun~deviceId->fun~sampleTime->fun~position->fun()->{accuracy;ipv4Address;wiFiAccessPoints;cellSignals;deviceId;sampleTime;position}letto_valuex=structure_to_value[("DeviceId",(Some(Id.to_valuex.deviceId)));("SampleTime",(Some(Timestamp.to_valuex.sampleTime)));("Position",(Some(Position.to_valuex.position)));("Accuracy",(Option.mapx.accuracy~f:PositionalAccuracy.to_value));("Ipv4Address",(Option.mapx.ipv4Address~f:DeviceStateIpv4AddressString.to_value));("WiFiAccessPoints",(Option.mapx.wiFiAccessPoints~f:WiFiAccessPointList.to_value));("CellSignals",(Option.mapx.cellSignals~f:CellSignals.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcellSignals=(Option.map~f:CellSignals.of_xml)(Xml.childxml_arg0"CellSignals")inletwiFiAccessPoints=(Option.map~f:WiFiAccessPointList.of_xml)(Xml.childxml_arg0"WiFiAccessPoints")inletipv4Address=(Option.map~f:DeviceStateIpv4AddressString.of_xml)(Xml.childxml_arg0"Ipv4Address")inletaccuracy=(Option.map~f:PositionalAccuracy.of_xml)(Xml.childxml_arg0"Accuracy")inletposition=Position.of_xml(Xml.child_exn~context:context_xml_arg0"Position")inletsampleTime=Timestamp.of_xml(Xml.child_exn~context:context_xml_arg0"SampleTime")inletdeviceId=Id.of_xml(Xml.child_exn~context:context_xml_arg0"DeviceId")inmake?cellSignals?wiFiAccessPoints?ipv4Address?accuracy~position~sampleTime~deviceId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcellSignals=field_mapjson__"CellSignals"CellSignals.of_jsoninletwiFiAccessPoints=field_mapjson__"WiFiAccessPoints"WiFiAccessPointList.of_jsoninletipv4Address=field_mapjson__"Ipv4Address"DeviceStateIpv4AddressString.of_jsoninletaccuracy=field_mapjson__"Accuracy"PositionalAccuracy.of_jsoninletposition=field_map_exnjson__"Position"Position.of_jsoninletsampleTime=field_map_exnjson__"SampleTime"Timestamp.of_jsoninletdeviceId=field_map_exnjson__"DeviceId"Id.of_jsoninmake?cellSignals?wiFiAccessPoints?ipv4Address?accuracy~position~sampleTime~deviceId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The device's position, IP address, and Wi-Fi access points."]modulePositionFiltering=structtypenonrect=|TimeBased|DistanceBased|AccuracyBased|Non_static_idofstringletmakei=iletto_string=function|TimeBased->"TimeBased"|DistanceBased->"DistanceBased"|AccuracyBased->"AccuracyBased"|Non_static_ids->sletof_string=function|"TimeBased"->TimeBased|"DistanceBased"->DistanceBased|"AccuracyBased"->AccuracyBased|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 PositionFiltering"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"PositionFiltering"j)letto_json=simple_to_jsonto_valueendmoduleDataSourceConfiguration=structtypenonrect={intendedUse:IntendedUse.toption[@ocaml.doc"Specifies how the results of an operation will be stored by the caller. Valid values include: SingleUse specifies that the results won't be stored. Storage specifies that the result can be cached or stored in a database. Default value: SingleUse"]}letmake?intendedUse=fun()->{intendedUse}letto_valuex=structure_to_value[("IntendedUse",(Option.mapx.intendedUse~f:IntendedUse.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letintendedUse=(Option.map~f:IntendedUse.of_xml)(Xml.childxml_arg0"IntendedUse")inmake?intendedUse()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letintendedUse=field_mapjson__"IntendedUse"IntendedUse.of_jsoninmake?intendedUse()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Specifies the data storage option chosen for requesting Places. When using Amazon Location Places: If using HERE Technologies as a data provider, you can't store results for locations in Japan by setting IntendedUse to Storage. parameter. Under the MobileAssetTracking or MobilAssetManagement pricing plan, you can't store results from your place index resources by setting IntendedUse to Storage. This returns a validation exception error. For more information, see the AWS Service Terms for Amazon Location Service."]moduleMapConfigurationUpdate=structtypenonrect={politicalView:CountryCode3OrEmpty.toption[@ocaml.doc"Specifies the political view for the style. Set to an empty string to not use a political view, or, for styles that support specific political views, you can choose a view, such as IND for the Indian view. Not all map resources or styles support political view styles. See Political views for more information."];customLayers:CustomLayerList.toption[@ocaml.doc"Specifies the custom layers for the style. Leave unset to not enable any custom layer, or, for styles that support custom layers, you can enable layer(s), such as POI layer for the VectorEsriNavigation style. Default is unset. Not all map resources or styles support custom layers. See Custom Layers for more information."]}letmake?politicalView=fun?customLayers->fun()->{politicalView;customLayers}letto_valuex=structure_to_value[("PoliticalView",(Option.mapx.politicalView~f:CountryCode3OrEmpty.to_value));("CustomLayers",(Option.mapx.customLayers~f:CustomLayerList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcustomLayers=(Option.map~f:CustomLayerList.of_xml)(Xml.childxml_arg0"CustomLayers")inletpoliticalView=(Option.map~f:CountryCode3OrEmpty.of_xml)(Xml.childxml_arg0"PoliticalView")inmake?customLayers?politicalView()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcustomLayers=field_mapjson__"CustomLayers"CustomLayerList.of_jsoninletpoliticalView=field_mapjson__"PoliticalView"CountryCode3OrEmpty.of_jsoninmake?customLayers?politicalView()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Specifies the political view for the style."]moduleTagKeys=structtypenonrect=String_.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:50)>>=(fun()->check_list_mini~min:1));iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:String_.to_value))|>(funx->`Listx)letto_queryv=to_queryto_valuevletto_header_=failwithf"to_header is not implemented for List_shape objects"()letof_xmlx=make(List.map((Xml.all_childrenx)|>(List.filter~f:(function|`Datas->(matchStdlib.String.trimswith|""->false|_->true)|_->true)))~f:String_.of_xml)letof_jsonj=list_of_json~kind:"TagKeys"~of_json:String_.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleTagMap=structtypenonrect=(TagKey.t*TagValue.t)listletmakei=letopenResultinok_or_failwith((check_list_maxi~max:50)>>=(fun()->check_list_mini~min:0));iletof_headerxs=make(List.filter_mapxs~f:(fun(k,v)->(Base.String.chop_prefixk~prefix:"x-amz-meta-")|>(Option.map~f:(funchopped->((TagKey.of_stringchopped),(TagValue.of_stringv))))))letto_valuexs=(xs|>(List.map~f:(fun(x,y)->(TagKey.to_valuex)|>(funx->(TagValue.to_valuey)|>(funy->(x,y))))))|>(funx->`Mapx)letto_queryv=to_queryto_valuevletto_header_=failwithf"to_header is not implemented for Map_shape objects"()letof_xml_=failwith"of_xml_converter_of_shape: Map_shape case not implemented"letof_jsonj=object_of_json~key_of_string:TagKey.of_string~of_json:TagValue.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleClientToken=structtypenonrect=stringletcontext_="ClientToken"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->(check_string_maxi~max:64)>>=(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:"ClientToken"jletto_json=simple_to_jsonto_valueendmoduleSearchForTextResultList=structtypenonrect=SearchForTextResult.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:SearchForTextResult.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:SearchForTextResult.of_xml)letof_jsonj=list_of_json~kind:"SearchForTextResultList"~of_json:SearchForTextResult.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleSearchPlaceIndexForTextSummary=structtypenonrect={text:SensitiveString.toption[@ocaml.doc"The search text specified in the request."];biasPosition:Position.toption[@ocaml.doc"Contains the coordinates for the optional bias position specified in the request. This parameter contains a pair of numbers. The first number represents the X coordinate, or longitude; the second number represents the Y coordinate, or latitude. For example, \\[-123.1174, 49.2847\\] represents the position with longitude -123.1174 and latitude 49.2847."];filterBBox:BoundingBox.toption[@ocaml.doc"Contains the coordinates for the optional bounding box specified in the request."];filterCountries:CountryCodeList.toption[@ocaml.doc"Contains the optional country filter specified in the request."];maxResults:PlaceIndexSearchResultLimit.toption[@ocaml.doc"Contains the optional result count limit specified in the request."];resultBBox:BoundingBox.toption[@ocaml.doc"The bounding box that fully contains all search results. If you specified the optional FilterBBox parameter in the request, ResultBBox is contained within FilterBBox."];dataSource:String_.toption[@ocaml.doc"The geospatial data provider attached to the place index resource specified in the request. Values can be one of the following: Esri Grab Here For more information about data providers, see Amazon Location Service data providers."];language:LanguageTag.toption[@ocaml.doc"The preferred language used to return results. Matches the language in the request. The value is a valid BCP 47 language tag, for example, en for English."];filterCategories:FilterPlaceCategoryList.toption[@ocaml.doc"The optional category filter specified in the request."]}letmake?text=fun?biasPosition->fun?filterBBox->fun?filterCountries->fun?maxResults->fun?resultBBox->fun?dataSource->fun?language->fun?filterCategories->fun()->{text;biasPosition;filterBBox;filterCountries;maxResults;resultBBox;dataSource;language;filterCategories}letto_valuex=structure_to_value[("Text",(Option.mapx.text~f:SensitiveString.to_value));("BiasPosition",(Option.mapx.biasPosition~f:Position.to_value));("FilterBBox",(Option.mapx.filterBBox~f:BoundingBox.to_value));("FilterCountries",(Option.mapx.filterCountries~f:CountryCodeList.to_value));("MaxResults",(Option.mapx.maxResults~f:PlaceIndexSearchResultLimit.to_value));("ResultBBox",(Option.mapx.resultBBox~f:BoundingBox.to_value));("DataSource",(Option.mapx.dataSource~f:String_.to_value));("Language",(Option.mapx.language~f:LanguageTag.to_value));("FilterCategories",(Option.mapx.filterCategories~f:FilterPlaceCategoryList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letfilterCategories=(Option.map~f:FilterPlaceCategoryList.of_xml)(Xml.childxml_arg0"FilterCategories")inletlanguage=(Option.map~f:LanguageTag.of_xml)(Xml.childxml_arg0"Language")inletdataSource=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"DataSource")inletresultBBox=(Option.map~f:BoundingBox.of_xml)(Xml.childxml_arg0"ResultBBox")inletmaxResults=(Option.map~f:PlaceIndexSearchResultLimit.of_xml)(Xml.childxml_arg0"MaxResults")inletfilterCountries=(Option.map~f:CountryCodeList.of_xml)(Xml.childxml_arg0"FilterCountries")inletfilterBBox=(Option.map~f:BoundingBox.of_xml)(Xml.childxml_arg0"FilterBBox")inletbiasPosition=(Option.map~f:Position.of_xml)(Xml.childxml_arg0"BiasPosition")inlettext=(Option.map~f:SensitiveString.of_xml)(Xml.childxml_arg0"Text")inmake?filterCategories?language?dataSource?resultBBox?maxResults?filterCountries?filterBBox?biasPosition?text()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letfilterCategories=field_mapjson__"FilterCategories"FilterPlaceCategoryList.of_jsoninletlanguage=field_mapjson__"Language"LanguageTag.of_jsoninletdataSource=field_mapjson__"DataSource"String_.of_jsoninletresultBBox=field_mapjson__"ResultBBox"BoundingBox.of_jsoninletmaxResults=field_mapjson__"MaxResults"PlaceIndexSearchResultLimit.of_jsoninletfilterCountries=field_mapjson__"FilterCountries"CountryCodeList.of_jsoninletfilterBBox=field_mapjson__"FilterBBox"BoundingBox.of_jsoninletbiasPosition=field_mapjson__"BiasPosition"Position.of_jsoninlettext=field_mapjson__"Text"SensitiveString.of_jsoninmake?filterCategories?language?dataSource?resultBBox?maxResults?filterCountries?filterBBox?biasPosition?text()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A summary of the request sent by using SearchPlaceIndexForText."]moduleApiKey=structtypenonrect=stringletcontext_="ApiKey"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:1000)>>=(fun()->check_string_mini~min:0));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"ApiKey"jletto_json=simple_to_jsonto_valueendmoduleSearchPlaceIndexForTextRequestTextString=structtypenonrect=stringletcontext_="SearchPlaceIndexForTextRequestTextString"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:200)>>=(fun()->check_string_mini~min:1));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"SearchPlaceIndexForTextRequestTextString"jletto_json=simple_to_jsonto_valueendmoduleSearchForSuggestionsResultList=structtypenonrect=SearchForSuggestionsResult.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:SearchForSuggestionsResult.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:SearchForSuggestionsResult.of_xml)letof_jsonj=list_of_json~kind:"SearchForSuggestionsResultList"~of_json:SearchForSuggestionsResult.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleSearchPlaceIndexForSuggestionsSummary=structtypenonrect={text:SensitiveString.toption[@ocaml.doc"The free-form partial text input specified in the request."];biasPosition:Position.toption[@ocaml.doc"Contains the coordinates for the optional bias position specified in the request. This parameter contains a pair of numbers. The first number represents the X coordinate, or longitude; the second number represents the Y coordinate, or latitude. For example, \\[-123.1174, 49.2847\\] represents the position with longitude -123.1174 and latitude 49.2847."];filterBBox:BoundingBox.toption[@ocaml.doc"Contains the coordinates for the optional bounding box specified in the request."];filterCountries:CountryCodeList.toption[@ocaml.doc"Contains the optional country filter specified in the request."];maxResults:Integer.toption[@ocaml.doc"Contains the optional result count limit specified in the request."];dataSource:String_.toption[@ocaml.doc"The geospatial data provider attached to the place index resource specified in the request. Values can be one of the following: Esri Grab Here For more information about data providers, see Amazon Location Service data providers."];language:LanguageTag.toption[@ocaml.doc"The preferred language used to return results. Matches the language in the request. The value is a valid BCP 47 language tag, for example, en for English."];filterCategories:FilterPlaceCategoryList.toption[@ocaml.doc"The optional category filter specified in the request."]}letmake?text=fun?biasPosition->fun?filterBBox->fun?filterCountries->fun?maxResults->fun?dataSource->fun?language->fun?filterCategories->fun()->{text;biasPosition;filterBBox;filterCountries;maxResults;dataSource;language;filterCategories}letto_valuex=structure_to_value[("Text",(Option.mapx.text~f:SensitiveString.to_value));("BiasPosition",(Option.mapx.biasPosition~f:Position.to_value));("FilterBBox",(Option.mapx.filterBBox~f:BoundingBox.to_value));("FilterCountries",(Option.mapx.filterCountries~f:CountryCodeList.to_value));("MaxResults",(Option.mapx.maxResults~f:Integer.to_value));("DataSource",(Option.mapx.dataSource~f:String_.to_value));("Language",(Option.mapx.language~f:LanguageTag.to_value));("FilterCategories",(Option.mapx.filterCategories~f:FilterPlaceCategoryList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letfilterCategories=(Option.map~f:FilterPlaceCategoryList.of_xml)(Xml.childxml_arg0"FilterCategories")inletlanguage=(Option.map~f:LanguageTag.of_xml)(Xml.childxml_arg0"Language")inletdataSource=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"DataSource")inletmaxResults=(Option.map~f:Integer.of_xml)(Xml.childxml_arg0"MaxResults")inletfilterCountries=(Option.map~f:CountryCodeList.of_xml)(Xml.childxml_arg0"FilterCountries")inletfilterBBox=(Option.map~f:BoundingBox.of_xml)(Xml.childxml_arg0"FilterBBox")inletbiasPosition=(Option.map~f:Position.of_xml)(Xml.childxml_arg0"BiasPosition")inlettext=(Option.map~f:SensitiveString.of_xml)(Xml.childxml_arg0"Text")inmake?filterCategories?language?dataSource?maxResults?filterCountries?filterBBox?biasPosition?text()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letfilterCategories=field_mapjson__"FilterCategories"FilterPlaceCategoryList.of_jsoninletlanguage=field_mapjson__"Language"LanguageTag.of_jsoninletdataSource=field_mapjson__"DataSource"String_.of_jsoninletmaxResults=field_mapjson__"MaxResults"Integer.of_jsoninletfilterCountries=field_mapjson__"FilterCountries"CountryCodeList.of_jsoninletfilterBBox=field_mapjson__"FilterBBox"BoundingBox.of_jsoninletbiasPosition=field_mapjson__"BiasPosition"Position.of_jsoninlettext=field_mapjson__"Text"SensitiveString.of_jsoninmake?filterCategories?language?dataSource?maxResults?filterCountries?filterBBox?biasPosition?text()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A summary of the request sent by using SearchPlaceIndexForSuggestions."]moduleSearchPlaceIndexForSuggestionsRequestMaxResultsInteger=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:15)>>=(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 SearchPlaceIndexForSuggestionsRequestMaxResultsInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleSearchPlaceIndexForSuggestionsRequestTextString=structtypenonrect=stringletcontext_="SearchPlaceIndexForSuggestionsRequestTextString"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:200)>>=(fun()->check_string_mini~min:1));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"SearchPlaceIndexForSuggestionsRequestTextString"jletto_json=simple_to_jsonto_valueendmoduleSearchForPositionResultList=structtypenonrect=SearchForPositionResult.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:SearchForPositionResult.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:SearchForPositionResult.of_xml)letof_jsonj=list_of_json~kind:"SearchForPositionResultList"~of_json:SearchForPositionResult.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleSearchPlaceIndexForPositionSummary=structtypenonrect={position:Position.toption[@ocaml.doc"The position specified in the request."];maxResults:PlaceIndexSearchResultLimit.toption[@ocaml.doc"Contains the optional result count limit that is specified in the request. Default value: 50"];dataSource:String_.toption[@ocaml.doc"The geospatial data provider attached to the place index resource specified in the request. Values can be one of the following: Esri Grab Here For more information about data providers, see Amazon Location Service data providers."];language:LanguageTag.toption[@ocaml.doc"The preferred language used to return results. Matches the language in the request. The value is a valid BCP 47 language tag, for example, en for English."]}letmake?position=fun?maxResults->fun?dataSource->fun?language->fun()->{position;maxResults;dataSource;language}letto_valuex=structure_to_value[("Position",(Option.mapx.position~f:Position.to_value));("MaxResults",(Option.mapx.maxResults~f:PlaceIndexSearchResultLimit.to_value));("DataSource",(Option.mapx.dataSource~f:String_.to_value));("Language",(Option.mapx.language~f:LanguageTag.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letlanguage=(Option.map~f:LanguageTag.of_xml)(Xml.childxml_arg0"Language")inletdataSource=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"DataSource")inletmaxResults=(Option.map~f:PlaceIndexSearchResultLimit.of_xml)(Xml.childxml_arg0"MaxResults")inletposition=(Option.map~f:Position.of_xml)(Xml.childxml_arg0"Position")inmake?language?dataSource?maxResults?position()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letlanguage=field_mapjson__"Language"LanguageTag.of_jsoninletdataSource=field_mapjson__"DataSource"String_.of_jsoninletmaxResults=field_mapjson__"MaxResults"PlaceIndexSearchResultLimit.of_jsoninletposition=field_mapjson__"Position"Position.of_jsoninmake?language?dataSource?maxResults?position()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A summary of the request sent by using SearchPlaceIndexForPosition."]moduleConflictException=structtypenonrect={message:String_.toption}letmake?message=fun()->{message}letto_valuex=structure_to_value[("message",(Option.mapx.message~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmessage=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"message")inmake?message()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmessage=field_mapjson__"Message"String_.of_jsoninmake?message()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The request was unsuccessful because of a conflict."]moduleListTrackersResponseEntryList=structtypenonrect=ListTrackersResponseEntry.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ListTrackersResponseEntry.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:ListTrackersResponseEntry.of_xml)letof_jsonj=list_of_json~kind:"ListTrackersResponseEntryList"~of_json:ListTrackersResponseEntry.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleToken=structtypenonrect=stringletcontext_="Token"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:"Token"jletto_json=simple_to_jsonto_valueendmoduleListTrackersRequestMaxResultsInteger=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:100)>>=(fun()->check_int_mini~min:1));iletof_string=Int.of_stringletto_valuex=`Integerxletto_queryv=to_queryto_valuevletto_headerx=Int.to_stringxletof_xmlxml_arg0=Int.of_string(string_of_xml~kind:"an integer for ListTrackersRequestMaxResultsInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleArnList=structtypenonrect=Arn.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:Arn.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:Arn.of_xml)letof_jsonj=list_of_json~kind:"ArnList"~of_json:Arn.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleListTrackerConsumersRequestMaxResultsInteger=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:100)>>=(fun()->check_int_mini~min:1));iletof_string=Int.of_stringletto_valuex=`Integerxletto_queryv=to_queryto_valuevletto_headerx=Int.to_stringxletof_xmlxml_arg0=Int.of_string(string_of_xml~kind:"an integer for ListTrackerConsumersRequestMaxResultsInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleListRouteCalculatorsResponseEntryList=structtypenonrect=ListRouteCalculatorsResponseEntry.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ListRouteCalculatorsResponseEntry.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:ListRouteCalculatorsResponseEntry.of_xml)letof_jsonj=list_of_json~kind:"ListRouteCalculatorsResponseEntryList"~of_json:ListRouteCalculatorsResponseEntry.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleListRouteCalculatorsRequestMaxResultsInteger=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:100)>>=(fun()->check_int_mini~min:1));iletof_string=Int.of_stringletto_valuex=`Integerxletto_queryv=to_queryto_valuevletto_headerx=Int.to_stringxletof_xmlxml_arg0=Int.of_string(string_of_xml~kind:"an integer for ListRouteCalculatorsRequestMaxResultsInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleListPlaceIndexesResponseEntryList=structtypenonrect=ListPlaceIndexesResponseEntry.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ListPlaceIndexesResponseEntry.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:ListPlaceIndexesResponseEntry.of_xml)letof_jsonj=list_of_json~kind:"ListPlaceIndexesResponseEntryList"~of_json:ListPlaceIndexesResponseEntry.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleListPlaceIndexesRequestMaxResultsInteger=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:100)>>=(fun()->check_int_mini~min:1));iletof_string=Int.of_stringletto_valuex=`Integerxletto_queryv=to_queryto_valuevletto_headerx=Int.to_stringxletof_xmlxml_arg0=Int.of_string(string_of_xml~kind:"an integer for ListPlaceIndexesRequestMaxResultsInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleListMapsResponseEntryList=structtypenonrect=ListMapsResponseEntry.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ListMapsResponseEntry.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:ListMapsResponseEntry.of_xml)letof_jsonj=list_of_json~kind:"ListMapsResponseEntryList"~of_json:ListMapsResponseEntry.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleListMapsRequestMaxResultsInteger=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:100)>>=(fun()->check_int_mini~min:1));iletof_string=Int.of_stringletto_valuex=`Integerxletto_queryv=to_queryto_valuevletto_headerx=Int.to_stringxletof_xmlxml_arg0=Int.of_string(string_of_xml~kind:"an integer for ListMapsRequestMaxResultsInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleListKeysResponseEntryList=structtypenonrect=ListKeysResponseEntry.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ListKeysResponseEntry.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:ListKeysResponseEntry.of_xml)letof_jsonj=list_of_json~kind:"ListKeysResponseEntryList"~of_json:ListKeysResponseEntry.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleApiKeyFilter=structtypenonrect={keyStatus:Status.toption[@ocaml.doc"Filter on Active or Expired API keys."]}letmake?keyStatus=fun()->{keyStatus}letto_valuex=structure_to_value[("KeyStatus",(Option.mapx.keyStatus~f:Status.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letkeyStatus=(Option.map~f:Status.of_xml)(Xml.childxml_arg0"KeyStatus")inmake?keyStatus()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letkeyStatus=field_mapjson__"KeyStatus"Status.of_jsoninmake?keyStatus()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Options for filtering API keys."]moduleListKeysRequestMaxResultsInteger=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:100)>>=(fun()->check_int_mini~min:1));iletof_string=Int.of_stringletto_valuex=`Integerxletto_queryv=to_queryto_valuevletto_headerx=Int.to_stringxletof_xmlxml_arg0=Int.of_string(string_of_xml~kind:"an integer for ListKeysRequestMaxResultsInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleLargeToken=structtypenonrect=stringletcontext_="LargeToken"letmakei=letopenResultinok_or_failwith((check_string_maxi~max:60000)>>=(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:"LargeToken"jletto_json=simple_to_jsonto_valueendmoduleListJobsResponseEntryList=structtypenonrect=ListJobsResponseEntry.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ListJobsResponseEntry.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:ListJobsResponseEntry.of_xml)letof_jsonj=list_of_json~kind:"ListJobsResponseEntryList"~of_json:ListJobsResponseEntry.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleJobsFilter=structtypenonrect={jobStatus:JobStatus.toption[@ocaml.doc"Filter by job status."]}letmake?jobStatus=fun()->{jobStatus}letto_valuex=structure_to_value[("JobStatus",(Option.mapx.jobStatus~f:JobStatus.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letjobStatus=(Option.map~f:JobStatus.of_xml)(Xml.childxml_arg0"JobStatus")inmake?jobStatus()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letjobStatus=field_mapjson__"JobStatus"JobStatus.of_jsoninmake?jobStatus()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Criteria for filtering jobs."]moduleListJobsRequestMaxResultsInteger=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:100)>>=(fun()->check_int_mini~min:1));iletof_string=Int.of_stringletto_valuex=`Integerxletto_queryv=to_queryto_valuevletto_headerx=Int.to_stringxletof_xmlxml_arg0=Int.of_string(string_of_xml~kind:"an integer for ListJobsRequestMaxResultsInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleListGeofenceResponseEntryList=structtypenonrect=ListGeofenceResponseEntry.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ListGeofenceResponseEntry.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:ListGeofenceResponseEntry.of_xml)letof_jsonj=list_of_json~kind:"ListGeofenceResponseEntryList"~of_json:ListGeofenceResponseEntry.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleListGeofencesRequestMaxResultsInteger=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:100)>>=(fun()->check_int_mini~min:1));iletof_string=Int.of_stringletto_valuex=`Integerxletto_queryv=to_queryto_valuevletto_headerx=Int.to_stringxletof_xmlxml_arg0=Int.of_string(string_of_xml~kind:"an integer for ListGeofencesRequestMaxResultsInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleListGeofenceCollectionsResponseEntryList=structtypenonrect=ListGeofenceCollectionsResponseEntry.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ListGeofenceCollectionsResponseEntry.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:ListGeofenceCollectionsResponseEntry.of_xml)letof_jsonj=list_of_json~kind:"ListGeofenceCollectionsResponseEntryList"~of_json:ListGeofenceCollectionsResponseEntry.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleListGeofenceCollectionsRequestMaxResultsInteger=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:100)>>=(fun()->check_int_mini~min:1));iletof_string=Int.of_stringletto_valuex=`Integerxletto_queryv=to_queryto_valuevletto_headerx=Int.to_stringxletof_xmlxml_arg0=Int.of_string(string_of_xml~kind:"an integer for ListGeofenceCollectionsRequestMaxResultsInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleListDevicePositionsResponseEntryList=structtypenonrect=ListDevicePositionsResponseEntry.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ListDevicePositionsResponseEntry.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:ListDevicePositionsResponseEntry.of_xml)letof_jsonj=list_of_json~kind:"ListDevicePositionsResponseEntryList"~of_json:ListDevicePositionsResponseEntry.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleListDevicePositionsRequestMaxResultsInteger=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:100)>>=(fun()->check_int_mini~min:1));iletof_string=Int.of_stringletto_valuex=`Integerxletto_queryv=to_queryto_valuevletto_headerx=Int.to_stringxletof_xmlxml_arg0=Int.of_string(string_of_xml~kind:"an integer for ListDevicePositionsRequestMaxResultsInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleTrackingFilterGeometry=structtypenonrect={polygon:LinearRings.toption[@ocaml.doc"The set of arrays which define the polygon. A polygon can have between 4 and 1000 vertices."]}letmake?polygon=fun()->{polygon}letto_valuex=structure_to_value[("Polygon",(Option.mapx.polygon~f:LinearRings.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letpolygon=(Option.map~f:LinearRings.of_xml)(Xml.childxml_arg0"Polygon")inmake?polygon()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letpolygon=field_mapjson__"Polygon"LinearRings.of_jsoninmake?polygon()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The geomerty used to filter device positions."]moduleBlob=structtypenonrect=stringletmakei=iletof_stringx=xletto_valuex=`Blobxletto_queryv=to_queryto_valuevletto_headerx=xletof_xmlxml_arg0=string_of_xml~kind:"a blob"xml_arg0letof_jsonj=string_of_json~kind:"a blob"jletto_json=simple_to_jsonto_valueendmoduleGetMapTileRequestXString=structtypenonrect=stringletcontext_="GetMapTileRequestXString"letmakei=letopenResultinok_or_failwith(check_patterni~pattern:".*\\d+.*");iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"GetMapTileRequestXString"jletto_json=simple_to_jsonto_valueendmoduleGetMapTileRequestYString=structtypenonrect=stringletcontext_="GetMapTileRequestYString"letmakei=letopenResultinok_or_failwith(check_patterni~pattern:".*\\d+.*");iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"GetMapTileRequestYString"jletto_json=simple_to_jsonto_valueendmoduleGetMapTileRequestZString=structtypenonrect=stringletcontext_="GetMapTileRequestZString"letmakei=letopenResultinok_or_failwith(check_patterni~pattern:".*\\d+.*");iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"GetMapTileRequestZString"jletto_json=simple_to_jsonto_valueendmoduleGetMapSpritesRequestFileNameString=structtypenonrect=stringletcontext_="GetMapSpritesRequestFileNameString"letmakei=letopenResultinok_or_failwith(check_patterni~pattern:"sprites(@2x)?\\.(png|json)");iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"GetMapSpritesRequestFileNameString"jletto_json=simple_to_jsonto_valueendmoduleGetMapGlyphsRequestFontUnicodeRangeString=structtypenonrect=stringletcontext_="GetMapGlyphsRequestFontUnicodeRangeString"letmakei=letopenResultinok_or_failwith(check_patterni~pattern:"[0-9]+-[0-9]+\\.pbf");iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"GetMapGlyphsRequestFontUnicodeRangeString"jletto_json=simple_to_jsonto_valueendmoduleDevicePositionList=structtypenonrect=DevicePosition.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:DevicePosition.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:DevicePosition.of_xml)letof_jsonj=list_of_json~kind:"DevicePositionList"~of_json:DevicePosition.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleGetDevicePositionHistoryRequestMaxResultsInteger=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:100)>>=(fun()->check_int_mini~min:1));iletof_string=Int.of_stringletto_valuex=`Integerxletto_queryv=to_queryto_valuevletto_headerx=Int.to_stringxletof_xmlxml_arg0=Int.of_string(string_of_xml~kind:"an integer for GetDevicePositionHistoryRequestMaxResultsInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleForecastedEventsList=structtypenonrect=ForecastedEvent.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:ForecastedEvent.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:ForecastedEvent.of_xml)letof_jsonj=list_of_json~kind:"ForecastedEventsList"~of_json:ForecastedEvent.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleSpeedUnit=structtypenonrect=|KilometersPerHour|MilesPerHour|Non_static_idofstringletmakei=iletto_string=function|KilometersPerHour->"KilometersPerHour"|MilesPerHour->"MilesPerHour"|Non_static_ids->sletof_string=function|"KilometersPerHour"->KilometersPerHour|"MilesPerHour"->MilesPerHour|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 SpeedUnit"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"SpeedUnit"j)letto_json=simple_to_jsonto_valueendmoduleForecastGeofenceEventsDeviceState=structtypenonrect={position:Position.t[@ocaml.doc"The device's position."];speed:ForecastGeofenceEventsDeviceStateSpeedDouble.toption[@ocaml.doc"The device's speed."]}letcontext_="ForecastGeofenceEventsDeviceState"letmake?speed=fun~position->fun()->{speed;position}letto_valuex=structure_to_value[("Position",(Some(Position.to_valuex.position)));("Speed",(Option.mapx.speed~f:ForecastGeofenceEventsDeviceStateSpeedDouble.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letspeed=(Option.map~f:ForecastGeofenceEventsDeviceStateSpeedDouble.of_xml)(Xml.childxml_arg0"Speed")inletposition=Position.of_xml(Xml.child_exn~context:context_xml_arg0"Position")inmake?speed~position()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letspeed=field_mapjson__"Speed"ForecastGeofenceEventsDeviceStateSpeedDouble.of_jsoninletposition=field_map_exnjson__"Position"Position.of_jsoninmake?speed~position()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The device's position and speed."]moduleForecastGeofenceEventsRequestMaxResultsInteger=structtypenonrect=intletmakei=letopenResultinok_or_failwith((check_int_maxi~max:20)>>=(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 ForecastGeofenceEventsRequestMaxResultsInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleForecastGeofenceEventsRequestTimeHorizonMinutesDouble=structtypenonrect=floatletmakei=letopenResultinok_or_failwith(check_float_mini~min:0.);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_valueendmoduleKmsKeyId=structtypenonrect=stringletcontext_="KmsKeyId"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:"KmsKeyId"jletto_json=simple_to_jsonto_valueendmoduleMapConfiguration=structtypenonrect={style:MapStyle.t[@ocaml.doc"Specifies the map style selected from an available data provider. Valid Esri map styles: VectorEsriDarkGrayCanvas \226\128\147 The Esri Dark Gray Canvas map style. A vector basemap with a dark gray, neutral background with minimal colors, labels, and features that's designed to draw attention to your thematic content. RasterEsriImagery \226\128\147 The Esri Imagery map style. A raster basemap that provides one meter or better satellite and aerial imagery in many parts of the world and lower resolution satellite imagery worldwide. VectorEsriLightGrayCanvas \226\128\147 The Esri Light Gray Canvas map style, which provides a detailed vector basemap with a light gray, neutral background style with minimal colors, labels, and features that's designed to draw attention to your thematic content. VectorEsriTopographic \226\128\147 The Esri Light map style, which provides a detailed vector basemap with a classic Esri map style. VectorEsriStreets \226\128\147 The Esri Street Map style, which provides a detailed vector basemap for the world symbolized with a classic Esri street map style. The vector tile layer is similar in content and style to the World Street Map raster map. VectorEsriNavigation \226\128\147 The Esri Navigation map style, which provides a detailed basemap for the world symbolized with a custom navigation map style that's designed for use during the day in mobile devices. Valid HERE Technologies map styles: VectorHereContrast \226\128\147 The HERE Contrast (Berlin) map style is a high contrast detailed base map of the world that blends 3D and 2D rendering. The VectorHereContrast style has been renamed from VectorHereBerlin. VectorHereBerlin has been deprecated, but will continue to work in applications that use it. VectorHereExplore \226\128\147 A default HERE map style containing a neutral, global map and its features including roads, buildings, landmarks, and water features. It also now includes a fully designed map of Japan. VectorHereExploreTruck \226\128\147 A global map containing truck restrictions and attributes (e.g. width / height / HAZMAT) symbolized with highlighted segments and icons on top of HERE Explore to support use cases within transport and logistics. RasterHereExploreSatellite \226\128\147 A global map containing high resolution satellite imagery. HybridHereExploreSatellite \226\128\147 A global map displaying the road network, street names, and city labels over satellite imagery. This style will automatically retrieve both raster and vector tiles, and your charges will be based on total tiles retrieved. Hybrid styles use both vector and raster tiles when rendering the map that you see. This means that more tiles are retrieved than when using either vector or raster tiles alone. Your charges will include all tiles retrieved. Valid GrabMaps map styles: VectorGrabStandardLight \226\128\147 The Grab Standard Light map style provides a basemap with detailed land use coloring, area names, roads, landmarks, and points of interest covering Southeast Asia. VectorGrabStandardDark \226\128\147 The Grab Standard Dark map style provides a dark variation of the standard basemap covering Southeast Asia. Grab provides maps only for countries in Southeast Asia, and is only available in the Asia Pacific (Singapore) Region (ap-southeast-1). For more information, see GrabMaps countries and area covered. Valid Open Data map styles: VectorOpenDataStandardLight \226\128\147 The Open Data Standard Light map style provides a detailed basemap for the world suitable for website and mobile application use. The map includes highways major roads, minor roads, railways, water features, cities, parks, landmarks, building footprints, and administrative boundaries. VectorOpenDataStandardDark \226\128\147 Open Data Standard Dark is a dark-themed map style that provides a detailed basemap for the world suitable for website and mobile application use. The map includes highways major roads, minor roads, railways, water features, cities, parks, landmarks, building footprints, and administrative boundaries. VectorOpenDataVisualizationLight \226\128\147 The Open Data Visualization Light map style is a light-themed style with muted colors and fewer features that aids in understanding overlaid data. VectorOpenDataVisualizationDark \226\128\147 The Open Data Visualization Dark map style is a dark-themed style with muted colors and fewer features that aids in understanding overlaid data."];politicalView:CountryCode3.toption[@ocaml.doc"Specifies the political view for the style. Leave unset to not use a political view, or, for styles that support specific political views, you can choose a view, such as IND for the Indian view. Default is unset. Not all map resources or styles support political view styles. See Political views for more information."];customLayers:CustomLayerList.toption[@ocaml.doc"Specifies the custom layers for the style. Leave unset to not enable any custom layer, or, for styles that support custom layers, you can enable layer(s), such as POI layer for the VectorEsriNavigation style. Default is unset. Not all map resources or styles support custom layers. See Custom Layers for more information."]}letcontext_="MapConfiguration"letmake?politicalView=fun?customLayers->fun~style->fun()->{politicalView;customLayers;style}letto_valuex=structure_to_value[("Style",(Some(MapStyle.to_valuex.style)));("PoliticalView",(Option.mapx.politicalView~f:CountryCode3.to_value));("CustomLayers",(Option.mapx.customLayers~f:CustomLayerList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcustomLayers=(Option.map~f:CustomLayerList.of_xml)(Xml.childxml_arg0"CustomLayers")inletpoliticalView=(Option.map~f:CountryCode3.of_xml)(Xml.childxml_arg0"PoliticalView")inletstyle=MapStyle.of_xml(Xml.child_exn~context:context_xml_arg0"Style")inmake?customLayers?politicalView~style()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcustomLayers=field_mapjson__"CustomLayers"CustomLayerList.of_jsoninletpoliticalView=field_mapjson__"PoliticalView"CountryCode3.of_jsoninletstyle=field_map_exnjson__"Style"MapStyle.of_jsoninmake?customLayers?politicalView~style()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Specifies the map tile style selected from an available provider."]moduleDescribeGeofenceCollectionResponseGeofenceCountInteger=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 DescribeGeofenceCollectionResponseGeofenceCountInteger"xml_arg0)letof_jsonj=Int.of_float(float_of_json~kind:"an integer"j)letto_json=simple_to_jsonto_valueendmoduleServiceQuotaExceededException=structtypenonrect={message:String_.toption[@ocaml.doc"A message with the reason for the service quota exceeded exception error."]}letmake?message=fun()->{message}letto_valuex=structure_to_value[("message",(Option.mapx.message~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmessage=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"message")inmake?message()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmessage=field_mapjson__"Message"String_.of_jsoninmake?message()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"The operation was denied because the request would exceed the maximum quota set for Amazon Location Service."]moduleCalculateRouteSummary=structtypenonrect={routeBBox:BoundingBox.toption[@ocaml.doc"Specifies a geographical box surrounding a route. Used to zoom into a route when displaying it in a map. For example, \\[min x, min y, max x, max y\\]. The first 2 bbox parameters describe the lower southwest corner: The first bbox position is the X coordinate or longitude of the lower southwest corner. The second bbox position is the Y coordinate or latitude of the lower southwest corner. The next 2 bbox parameters describe the upper northeast corner: The third bbox position is the X coordinate, or longitude of the upper northeast corner. The fourth bbox position is the Y coordinate, or latitude of the upper northeast corner."];dataSource:String_.toption[@ocaml.doc"The data provider of traffic and road network data used to calculate the route. Indicates one of the available providers: Esri Grab Here For more information about data providers, see Amazon Location Service data providers."];distance:CalculateRouteSummaryDistanceDouble.toption[@ocaml.doc"The total distance covered by the route. The sum of the distance travelled between every stop on the route. If Esri is the data source for the route calculator, the route distance can\226\128\153t be greater than 400 km. If the route exceeds 400 km, the response is a 400 RoutesValidationException error."];durationSeconds:CalculateRouteSummaryDurationSecondsDouble.toption[@ocaml.doc"The total travel time for the route measured in seconds. The sum of the travel time between every stop on the route."];distanceUnit:DistanceUnit.toption[@ocaml.doc"The unit of measurement for route distances."]}letmake?routeBBox=fun?dataSource->fun?distance->fun?durationSeconds->fun?distanceUnit->fun()->{routeBBox;dataSource;distance;durationSeconds;distanceUnit}letto_valuex=structure_to_value[("RouteBBox",(Option.mapx.routeBBox~f:BoundingBox.to_value));("DataSource",(Option.mapx.dataSource~f:String_.to_value));("Distance",(Option.mapx.distance~f:CalculateRouteSummaryDistanceDouble.to_value));("DurationSeconds",(Option.mapx.durationSeconds~f:CalculateRouteSummaryDurationSecondsDouble.to_value));("DistanceUnit",(Option.mapx.distanceUnit~f:DistanceUnit.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdistanceUnit=(Option.map~f:DistanceUnit.of_xml)(Xml.childxml_arg0"DistanceUnit")inletdurationSeconds=(Option.map~f:CalculateRouteSummaryDurationSecondsDouble.of_xml)(Xml.childxml_arg0"DurationSeconds")inletdistance=(Option.map~f:CalculateRouteSummaryDistanceDouble.of_xml)(Xml.childxml_arg0"Distance")inletdataSource=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"DataSource")inletrouteBBox=(Option.map~f:BoundingBox.of_xml)(Xml.childxml_arg0"RouteBBox")inmake?distanceUnit?durationSeconds?distance?dataSource?routeBBox()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdistanceUnit=field_mapjson__"DistanceUnit"DistanceUnit.of_jsoninletdurationSeconds=field_mapjson__"DurationSeconds"CalculateRouteSummaryDurationSecondsDouble.of_jsoninletdistance=field_mapjson__"Distance"CalculateRouteSummaryDistanceDouble.of_jsoninletdataSource=field_mapjson__"DataSource"String_.of_jsoninletrouteBBox=field_mapjson__"RouteBBox"BoundingBox.of_jsoninmake?distanceUnit?durationSeconds?distance?dataSource?routeBBox()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A summary of the calculated route."]moduleLegList=structtypenonrect=Leg.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:Leg.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:Leg.of_xml)letof_jsonj=list_of_json~kind:"LegList"~of_json:Leg.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleCalculateRouteCarModeOptions=structtypenonrect={avoidFerries:SensitiveBoolean.toption[@ocaml.doc"Avoids ferries when calculating routes. Default Value: false Valid Values: false | true"];avoidTolls:SensitiveBoolean.toption[@ocaml.doc"Avoids tolls when calculating routes. Default Value: false Valid Values: false | true"]}letmake?avoidFerries=fun?avoidTolls->fun()->{avoidFerries;avoidTolls}letto_valuex=structure_to_value[("AvoidFerries",(Option.mapx.avoidFerries~f:SensitiveBoolean.to_value));("AvoidTolls",(Option.mapx.avoidTolls~f:SensitiveBoolean.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letavoidTolls=(Option.map~f:SensitiveBoolean.of_xml)(Xml.childxml_arg0"AvoidTolls")inletavoidFerries=(Option.map~f:SensitiveBoolean.of_xml)(Xml.childxml_arg0"AvoidFerries")inmake?avoidTolls?avoidFerries()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letavoidTolls=field_mapjson__"AvoidTolls"SensitiveBoolean.of_jsoninletavoidFerries=field_mapjson__"AvoidFerries"SensitiveBoolean.of_jsoninmake?avoidTolls?avoidFerries()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains details about additional route preferences for requests that specify TravelMode as Car."]moduleCalculateRouteRequestWaypointPositionsList=structtypenonrect=Position.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:23)>>=(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:Position.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:Position.of_xml)letof_jsonj=list_of_json~kind:"CalculateRouteRequestWaypointPositionsList"~of_json:Position.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleCalculateRouteTruckModeOptions=structtypenonrect={avoidFerries:SensitiveBoolean.toption[@ocaml.doc"Avoids ferries when calculating routes. Default Value: false Valid Values: false | true"];avoidTolls:SensitiveBoolean.toption[@ocaml.doc"Avoids tolls when calculating routes. Default Value: false Valid Values: false | true"];dimensions:TruckDimensions.toption[@ocaml.doc"Specifies the truck's dimension specifications including length, height, width, and unit of measurement. Used to avoid roads that can't support the truck's dimensions."];weight:TruckWeight.toption[@ocaml.doc"Specifies the truck's weight specifications including total weight and unit of measurement. Used to avoid roads that can't support the truck's weight."]}letmake?avoidFerries=fun?avoidTolls->fun?dimensions->fun?weight->fun()->{avoidFerries;avoidTolls;dimensions;weight}letto_valuex=structure_to_value[("AvoidFerries",(Option.mapx.avoidFerries~f:SensitiveBoolean.to_value));("AvoidTolls",(Option.mapx.avoidTolls~f:SensitiveBoolean.to_value));("Dimensions",(Option.mapx.dimensions~f:TruckDimensions.to_value));("Weight",(Option.mapx.weight~f:TruckWeight.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letweight=(Option.map~f:TruckWeight.of_xml)(Xml.childxml_arg0"Weight")inletdimensions=(Option.map~f:TruckDimensions.of_xml)(Xml.childxml_arg0"Dimensions")inletavoidTolls=(Option.map~f:SensitiveBoolean.of_xml)(Xml.childxml_arg0"AvoidTolls")inletavoidFerries=(Option.map~f:SensitiveBoolean.of_xml)(Xml.childxml_arg0"AvoidFerries")inmake?weight?dimensions?avoidTolls?avoidFerries()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letweight=field_mapjson__"Weight"TruckWeight.of_jsoninletdimensions=field_mapjson__"Dimensions"TruckDimensions.of_jsoninletavoidTolls=field_mapjson__"AvoidTolls"SensitiveBoolean.of_jsoninletavoidFerries=field_mapjson__"AvoidFerries"SensitiveBoolean.of_jsoninmake?weight?dimensions?avoidTolls?avoidFerries()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Contains details about additional route preferences for requests that specify TravelMode as Truck."]moduleOptimizationMode=structtypenonrect=|FastestRoute|ShortestRoute|Non_static_idofstringletmakei=iletto_string=function|FastestRoute->"FastestRoute"|ShortestRoute->"ShortestRoute"|Non_static_ids->sletof_string=function|"FastestRoute"->FastestRoute|"ShortestRoute"->ShortestRoute|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 OptimizationMode"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"OptimizationMode"j)letto_json=simple_to_jsonto_valueendmoduleTravelMode=structtypenonrect=|Car|Truck|Walking|Bicycle|Motorcycle|Non_static_idofstringletmakei=iletto_string=function|Car->"Car"|Truck->"Truck"|Walking->"Walking"|Bicycle->"Bicycle"|Motorcycle->"Motorcycle"|Non_static_ids->sletof_string=function|"Car"->Car|"Truck"->Truck|"Walking"->Walking|"Bicycle"->Bicycle|"Motorcycle"->Motorcycle|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 TravelMode"xml_arg0)letof_jsonj=of_string(string_of_json~kind:"TravelMode"j)letto_json=simple_to_jsonto_valueendmoduleCalculateRouteMatrixResponseSnappedDeparturePositionsList=structtypenonrect=Position.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:350)>>=(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:Position.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:Position.of_xml)letof_jsonj=list_of_json~kind:"CalculateRouteMatrixResponseSnappedDeparturePositionsList"~of_json:Position.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleCalculateRouteMatrixResponseSnappedDestinationPositionsList=structtypenonrect=Position.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:350)>>=(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:Position.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:Position.of_xml)letof_jsonj=list_of_json~kind:"CalculateRouteMatrixResponseSnappedDestinationPositionsList"~of_json:Position.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleCalculateRouteMatrixSummary=structtypenonrect={dataSource:String_.toption[@ocaml.doc"The data provider of traffic and road network data used to calculate the routes. Indicates one of the available providers: Esri Grab Here For more information about data providers, see Amazon Location Service data providers."];routeCount:CalculateRouteMatrixSummaryRouteCountInteger.toption[@ocaml.doc"The count of cells in the route matrix. Equal to the number of DeparturePositions multiplied by the number of DestinationPositions."];errorCount:CalculateRouteMatrixSummaryErrorCountInteger.toption[@ocaml.doc"The count of error results in the route matrix. If this number is 0, all routes were calculated successfully."];distanceUnit:DistanceUnit.toption[@ocaml.doc"The unit of measurement for route distances."]}letmake?dataSource=fun?routeCount->fun?errorCount->fun?distanceUnit->fun()->{dataSource;routeCount;errorCount;distanceUnit}letto_valuex=structure_to_value[("DataSource",(Option.mapx.dataSource~f:String_.to_value));("RouteCount",(Option.mapx.routeCount~f:CalculateRouteMatrixSummaryRouteCountInteger.to_value));("ErrorCount",(Option.mapx.errorCount~f:CalculateRouteMatrixSummaryErrorCountInteger.to_value));("DistanceUnit",(Option.mapx.distanceUnit~f:DistanceUnit.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdistanceUnit=(Option.map~f:DistanceUnit.of_xml)(Xml.childxml_arg0"DistanceUnit")inleterrorCount=(Option.map~f:CalculateRouteMatrixSummaryErrorCountInteger.of_xml)(Xml.childxml_arg0"ErrorCount")inletrouteCount=(Option.map~f:CalculateRouteMatrixSummaryRouteCountInteger.of_xml)(Xml.childxml_arg0"RouteCount")inletdataSource=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"DataSource")inmake?distanceUnit?errorCount?routeCount?dataSource()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdistanceUnit=field_mapjson__"DistanceUnit"DistanceUnit.of_jsoninleterrorCount=field_mapjson__"ErrorCount"CalculateRouteMatrixSummaryErrorCountInteger.of_jsoninletrouteCount=field_mapjson__"RouteCount"CalculateRouteMatrixSummaryRouteCountInteger.of_jsoninletdataSource=field_mapjson__"DataSource"String_.of_jsoninmake?distanceUnit?errorCount?routeCount?dataSource()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A summary of the calculated route matrix."]moduleRouteMatrix=structtypenonrect=RouteMatrixRow.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:RouteMatrixRow.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:RouteMatrixRow.of_xml)letof_jsonj=list_of_json~kind:"RouteMatrix"~of_json:RouteMatrixRow.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleCalculateRouteMatrixRequestDeparturePositionsList=structtypenonrect=Position.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:350)>>=(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:Position.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:Position.of_xml)letof_jsonj=list_of_json~kind:"CalculateRouteMatrixRequestDeparturePositionsList"~of_json:Position.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleCalculateRouteMatrixRequestDestinationPositionsList=structtypenonrect=Position.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:350)>>=(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:Position.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:Position.of_xml)letof_jsonj=list_of_json~kind:"CalculateRouteMatrixRequestDestinationPositionsList"~of_json:Position.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleBatchUpdateDevicePositionErrorList=structtypenonrect=BatchUpdateDevicePositionError.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:BatchUpdateDevicePositionError.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:BatchUpdateDevicePositionError.of_xml)letof_jsonj=list_of_json~kind:"BatchUpdateDevicePositionErrorList"~of_json:BatchUpdateDevicePositionError.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleBatchUpdateDevicePositionRequestUpdatesList=structtypenonrect=DevicePositionUpdate.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:10)>>=(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:DevicePositionUpdate.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:DevicePositionUpdate.of_xml)letof_jsonj=list_of_json~kind:"BatchUpdateDevicePositionRequestUpdatesList"~of_json:DevicePositionUpdate.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleBatchPutGeofenceErrorList=structtypenonrect=BatchPutGeofenceError.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:BatchPutGeofenceError.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:BatchPutGeofenceError.of_xml)letof_jsonj=list_of_json~kind:"BatchPutGeofenceErrorList"~of_json:BatchPutGeofenceError.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleBatchPutGeofenceSuccessList=structtypenonrect=BatchPutGeofenceSuccess.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:BatchPutGeofenceSuccess.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:BatchPutGeofenceSuccess.of_xml)letof_jsonj=list_of_json~kind:"BatchPutGeofenceSuccessList"~of_json:BatchPutGeofenceSuccess.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleBatchPutGeofenceRequestEntriesList=structtypenonrect=BatchPutGeofenceRequestEntry.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:10)>>=(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:BatchPutGeofenceRequestEntry.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:BatchPutGeofenceRequestEntry.of_xml)letof_jsonj=list_of_json~kind:"BatchPutGeofenceRequestEntriesList"~of_json:BatchPutGeofenceRequestEntry.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleBatchGetDevicePositionErrorList=structtypenonrect=BatchGetDevicePositionError.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:BatchGetDevicePositionError.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:BatchGetDevicePositionError.of_xml)letof_jsonj=list_of_json~kind:"BatchGetDevicePositionErrorList"~of_json:BatchGetDevicePositionError.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleBatchGetDevicePositionRequestDeviceIdsList=structtypenonrect=Id.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:10)>>=(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:Id.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:Id.of_xml)letof_jsonj=list_of_json~kind:"BatchGetDevicePositionRequestDeviceIdsList"~of_json:Id.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleBatchGetDevicePositionRequestTrackerNameString=structtypenonrect=stringletcontext_="BatchGetDevicePositionRequestTrackerNameString"letmakei=letopenResultinok_or_failwith((check_string_mini~min:1)>>=(fun()->check_patterni~pattern:"[-._\\w]+"));iletof_stringx=xletto_valuex=`Stringxletto_queryv=to_queryto_valuevletto_headerx=xletof_xml=Xml.string_data_exn~context:context_letof_jsonj=string_of_json~kind:"BatchGetDevicePositionRequestTrackerNameString"jletto_json=simple_to_jsonto_valueendmoduleBatchEvaluateGeofencesErrorList=structtypenonrect=BatchEvaluateGeofencesError.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:BatchEvaluateGeofencesError.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:BatchEvaluateGeofencesError.of_xml)letof_jsonj=list_of_json~kind:"BatchEvaluateGeofencesErrorList"~of_json:BatchEvaluateGeofencesError.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleBatchEvaluateGeofencesRequestDevicePositionUpdatesList=structtypenonrect=DevicePositionUpdate.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:10)>>=(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:DevicePositionUpdate.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:DevicePositionUpdate.of_xml)letof_jsonj=list_of_json~kind:"BatchEvaluateGeofencesRequestDevicePositionUpdatesList"~of_json:DevicePositionUpdate.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleBatchDeleteGeofenceErrorList=structtypenonrect=BatchDeleteGeofenceError.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:BatchDeleteGeofenceError.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:BatchDeleteGeofenceError.of_xml)letof_jsonj=list_of_json~kind:"BatchDeleteGeofenceErrorList"~of_json:BatchDeleteGeofenceError.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleBatchDeleteGeofenceRequestGeofenceIdsList=structtypenonrect=Id.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:10)>>=(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:Id.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:Id.of_xml)letof_jsonj=list_of_json~kind:"BatchDeleteGeofenceRequestGeofenceIdsList"~of_json:Id.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleBatchDeleteDevicePositionHistoryErrorList=structtypenonrect=BatchDeleteDevicePositionHistoryError.tlistletmakei=iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:BatchDeleteDevicePositionHistoryError.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:BatchDeleteDevicePositionHistoryError.of_xml)letof_jsonj=list_of_json~kind:"BatchDeleteDevicePositionHistoryErrorList"~of_json:BatchDeleteDevicePositionHistoryError.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleBatchDeleteDevicePositionHistoryRequestDeviceIdsList=structtypenonrect=Id.tlistletmakei=letopenResultinok_or_failwith((check_list_maxi~max:100)>>=(fun()->check_list_mini~min:1));iletof_string_=failwithf"of_string is not implemented for List_shape objects"()[@@warning"-32"]letto_valuexs=(xs|>(List.map~f:Id.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:Id.of_xml)letof_jsonj=list_of_json~kind:"BatchDeleteDevicePositionHistoryRequestDeviceIdsList"~of_json:Id.of_jsonjletto_jsonv=composed_to_jsonto_valuevendmoduleVerifyDevicePositionResponse=structtypenonrect={inferredState:InferredState.toption[@ocaml.doc"The inferred state of the device, given the provided position, IP address, cellular signals, and Wi-Fi- access points."];deviceId:Id.toption[@ocaml.doc"The device identifier."];sampleTime:Timestamp.toption[@ocaml.doc"The timestamp at which the device's position was determined. Uses ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."];receivedTime:Timestamp.toption[@ocaml.doc"The timestamp for when the tracker resource received the device position in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."];distanceUnit:DistanceUnit.toption[@ocaml.doc"The distance unit for the verification response."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?inferredState=fun?deviceId->fun?sampleTime->fun?receivedTime->fun?distanceUnit->fun()->{inferredState;deviceId;sampleTime;receivedTime;distanceUnit}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("InferredState",(Option.mapx.inferredState~f:InferredState.to_value));("DeviceId",(Option.mapx.deviceId~f:Id.to_value));("SampleTime",(Option.mapx.sampleTime~f:Timestamp.to_value));("ReceivedTime",(Option.mapx.receivedTime~f:Timestamp.to_value));("DistanceUnit",(Option.mapx.distanceUnit~f:DistanceUnit.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdistanceUnit=(Option.map~f:DistanceUnit.of_xml)(Xml.childxml_arg0"DistanceUnit")inletreceivedTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"ReceivedTime")inletsampleTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"SampleTime")inletdeviceId=(Option.map~f:Id.of_xml)(Xml.childxml_arg0"DeviceId")inletinferredState=(Option.map~f:InferredState.of_xml)(Xml.childxml_arg0"InferredState")inmake?distanceUnit?receivedTime?sampleTime?deviceId?inferredState()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdistanceUnit=field_mapjson__"DistanceUnit"DistanceUnit.of_jsoninletreceivedTime=field_mapjson__"ReceivedTime"Timestamp.of_jsoninletsampleTime=field_mapjson__"SampleTime"Timestamp.of_jsoninletdeviceId=field_mapjson__"DeviceId"Id.of_jsoninletinferredState=field_mapjson__"InferredState"InferredState.of_jsoninmake?distanceUnit?receivedTime?sampleTime?deviceId?inferredState()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Verifies the integrity of the device's position by determining if it was reported behind a proxy, and by comparing it to an inferred position estimated based on the device's state. The Location Integrity SDK provides enhanced features related to device verification, and it is available for use by request. To get access to the SDK, contact Sales Support."]moduleVerifyDevicePositionRequest=structtypenonrect={trackerName:ResourceName.t[@ocaml.doc"The name of the tracker resource to be associated with verification request."];deviceState:DeviceState.t[@ocaml.doc"The device's state, including position, IP address, cell signals and Wi-Fi access points."];distanceUnit:DistanceUnit.toption[@ocaml.doc"The distance unit for the verification request. Default Value: Kilometers"]}letcontext_="VerifyDevicePositionRequest"letmake?distanceUnit=fun~trackerName->fun~deviceState->fun()->{distanceUnit;trackerName;deviceState}letto_valuex=structure_to_value[("TrackerName",(Some(ResourceName.to_valuex.trackerName)));("DeviceState",(Some(DeviceState.to_valuex.deviceState)));("DistanceUnit",(Option.mapx.distanceUnit~f:DistanceUnit.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdistanceUnit=(Option.map~f:DistanceUnit.of_xml)(Xml.childxml_arg0"DistanceUnit")inletdeviceState=DeviceState.of_xml(Xml.child_exn~context:context_xml_arg0"DeviceState")inlettrackerName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"TrackerName")inmake?distanceUnit~deviceState~trackerName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdistanceUnit=field_mapjson__"DistanceUnit"DistanceUnit.of_jsoninletdeviceState=field_map_exnjson__"DeviceState"DeviceState.of_jsoninlettrackerName=field_map_exnjson__"TrackerName"ResourceName.of_jsoninmake?distanceUnit~deviceState~trackerName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Verifies the integrity of the device's position by determining if it was reported behind a proxy, and by comparing it to an inferred position estimated based on the device's state. The Location Integrity SDK provides enhanced features related to device verification, and it is available for use by request. To get access to the SDK, contact Sales Support."]moduleUpdateTrackerResponse=structtypenonrect={trackerName:ResourceName.toption[@ocaml.doc"The name of the updated tracker resource."];trackerArn:Arn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the updated tracker resource. Used to specify a resource across AWS. Format example: arn:aws:geo:region:account-id:tracker/ExampleTracker"];updateTime:Timestamp.toption[@ocaml.doc"The timestamp for when the tracker resource was last updated in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?trackerName=fun?trackerArn->fun?updateTime->fun()->{trackerName;trackerArn;updateTime}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("TrackerName",(Option.mapx.trackerName~f:ResourceName.to_value));("TrackerArn",(Option.mapx.trackerArn~f:Arn.to_value));("UpdateTime",(Option.mapx.updateTime~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letupdateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"UpdateTime")inlettrackerArn=(Option.map~f:Arn.of_xml)(Xml.childxml_arg0"TrackerArn")inlettrackerName=(Option.map~f:ResourceName.of_xml)(Xml.childxml_arg0"TrackerName")inmake?updateTime?trackerArn?trackerName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letupdateTime=field_mapjson__"UpdateTime"Timestamp.of_jsoninlettrackerArn=field_mapjson__"TrackerArn"Arn.of_jsoninlettrackerName=field_mapjson__"TrackerName"ResourceName.of_jsoninmake?updateTime?trackerArn?trackerName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Updates the specified properties of a given tracker resource."]moduleUpdateTrackerRequest=structtypenonrect={trackerName:ResourceName.t[@ocaml.doc"The name of the tracker resource to update."];pricingPlan:PricingPlan.toption[@ocaml.doc"No longer used. If included, the only allowed value is RequestBasedUsage."];pricingPlanDataSource:String_.toption[@ocaml.doc"This parameter is no longer used."];description:ResourceDescription.toption[@ocaml.doc"Updates the description for the tracker resource."];positionFiltering:PositionFiltering.toption[@ocaml.doc"Updates the position filtering for the tracker resource. Valid values: TimeBased - Location updates are evaluated against linked geofence collections, but not every location update is stored. If your update frequency is more often than 30 seconds, only one update per 30 seconds is stored for each unique device ID. DistanceBased - If the device has moved less than 30 m (98.4 ft), location updates are ignored. Location updates within this distance are neither evaluated against linked geofence collections, nor stored. This helps control costs by reducing the number of geofence evaluations and historical device positions to paginate through. Distance-based filtering can also reduce the effects of GPS noise when displaying device trajectories on a map. AccuracyBased - If the device has moved less than the measured accuracy, location updates are ignored. For example, if two consecutive updates from a device have a horizontal accuracy of 5 m and 10 m, the second update is ignored if the device has moved less than 15 m. Ignored location updates are neither evaluated against linked geofence collections, nor stored. This helps educe the effects of GPS noise when displaying device trajectories on a map, and can help control costs by reducing the number of geofence evaluations."];eventBridgeEnabled:Boolean.toption[@ocaml.doc"Whether to enable position UPDATE events from this tracker to be sent to EventBridge. You do not need enable this feature to get ENTER and EXIT events for geofences with this tracker. Those events are always sent to EventBridge."];kmsKeyEnableGeospatialQueries:Boolean.toption[@ocaml.doc"Enables GeospatialQueries for a tracker that uses a Amazon Web Services KMS customer managed key. This parameter is only used if you are using a KMS customer managed key."]}letcontext_="UpdateTrackerRequest"letmake?pricingPlan=fun?pricingPlanDataSource->fun?description->fun?positionFiltering->fun?eventBridgeEnabled->fun?kmsKeyEnableGeospatialQueries->fun~trackerName->fun()->{pricingPlan;pricingPlanDataSource;description;positionFiltering;eventBridgeEnabled;kmsKeyEnableGeospatialQueries;trackerName}letto_valuex=structure_to_value[("TrackerName",(Some(ResourceName.to_valuex.trackerName)));("PricingPlan",(Option.mapx.pricingPlan~f:PricingPlan.to_value));("PricingPlanDataSource",(Option.mapx.pricingPlanDataSource~f:String_.to_value));("Description",(Option.mapx.description~f:ResourceDescription.to_value));("PositionFiltering",(Option.mapx.positionFiltering~f:PositionFiltering.to_value));("EventBridgeEnabled",(Option.mapx.eventBridgeEnabled~f:Boolean.to_value));("KmsKeyEnableGeospatialQueries",(Option.mapx.kmsKeyEnableGeospatialQueries~f:Boolean.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letkmsKeyEnableGeospatialQueries=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"KmsKeyEnableGeospatialQueries")inleteventBridgeEnabled=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"EventBridgeEnabled")inletpositionFiltering=(Option.map~f:PositionFiltering.of_xml)(Xml.childxml_arg0"PositionFiltering")inletdescription=(Option.map~f:ResourceDescription.of_xml)(Xml.childxml_arg0"Description")inletpricingPlanDataSource=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"PricingPlanDataSource")inletpricingPlan=(Option.map~f:PricingPlan.of_xml)(Xml.childxml_arg0"PricingPlan")inlettrackerName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"TrackerName")inmake?kmsKeyEnableGeospatialQueries?eventBridgeEnabled?positionFiltering?description?pricingPlanDataSource?pricingPlan~trackerName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letkmsKeyEnableGeospatialQueries=field_mapjson__"KmsKeyEnableGeospatialQueries"Boolean.of_jsoninleteventBridgeEnabled=field_mapjson__"EventBridgeEnabled"Boolean.of_jsoninletpositionFiltering=field_mapjson__"PositionFiltering"PositionFiltering.of_jsoninletdescription=field_mapjson__"Description"ResourceDescription.of_jsoninletpricingPlanDataSource=field_mapjson__"PricingPlanDataSource"String_.of_jsoninletpricingPlan=field_mapjson__"PricingPlan"PricingPlan.of_jsoninlettrackerName=field_map_exnjson__"TrackerName"ResourceName.of_jsoninmake?kmsKeyEnableGeospatialQueries?eventBridgeEnabled?positionFiltering?description?pricingPlanDataSource?pricingPlan~trackerName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Updates the specified properties of a given tracker resource."]moduleUpdateRouteCalculatorResponse=structtypenonrect={calculatorName:ResourceName.toption[@ocaml.doc"The name of the updated route calculator resource."];calculatorArn:GeoArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the updated route calculator resource. Used to specify a resource across AWS. Format example: arn:aws:geo:region:account-id:route- calculator/ExampleCalculator"];updateTime:Timestamp.toption[@ocaml.doc"The timestamp for when the route calculator was last updated in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?calculatorName=fun?calculatorArn->fun?updateTime->fun()->{calculatorName;calculatorArn;updateTime}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("CalculatorName",(Option.mapx.calculatorName~f:ResourceName.to_value));("CalculatorArn",(Option.mapx.calculatorArn~f:GeoArn.to_value));("UpdateTime",(Option.mapx.updateTime~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letupdateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"UpdateTime")inletcalculatorArn=(Option.map~f:GeoArn.of_xml)(Xml.childxml_arg0"CalculatorArn")inletcalculatorName=(Option.map~f:ResourceName.of_xml)(Xml.childxml_arg0"CalculatorName")inmake?updateTime?calculatorArn?calculatorName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letupdateTime=field_mapjson__"UpdateTime"Timestamp.of_jsoninletcalculatorArn=field_mapjson__"CalculatorArn"GeoArn.of_jsoninletcalculatorName=field_mapjson__"CalculatorName"ResourceName.of_jsoninmake?updateTime?calculatorArn?calculatorName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend you upgrade to the Routes API V2 unless you require Grab data. UpdateRouteCalculator is part of a previous Amazon Location Service Routes API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The Routes API version 2 has a simplified interface that can be used without creating or managing route calculator resources. If you are using an Amazon Web Services SDK or the Amazon Web Services CLI, note that the Routes API version 2 is found under geo-routes or geo_routes, not under location. Since Grab is not yet fully supported in Routes API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Routes V2 API Reference or the Developer Guide. Updates the specified properties for a given route calculator resource."]moduleUpdateRouteCalculatorRequest=structtypenonrect={calculatorName:ResourceName.t[@ocaml.doc"The name of the route calculator resource to update."];pricingPlan:PricingPlan.toption[@ocaml.doc"No longer used. If included, the only allowed value is RequestBasedUsage."];description:ResourceDescription.toption[@ocaml.doc"Updates the description for the route calculator resource."]}letcontext_="UpdateRouteCalculatorRequest"letmake?pricingPlan=fun?description->fun~calculatorName->fun()->{pricingPlan;description;calculatorName}letto_valuex=structure_to_value[("CalculatorName",(Some(ResourceName.to_valuex.calculatorName)));("PricingPlan",(Option.mapx.pricingPlan~f:PricingPlan.to_value));("Description",(Option.mapx.description~f:ResourceDescription.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdescription=(Option.map~f:ResourceDescription.of_xml)(Xml.childxml_arg0"Description")inletpricingPlan=(Option.map~f:PricingPlan.of_xml)(Xml.childxml_arg0"PricingPlan")inletcalculatorName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"CalculatorName")inmake?description?pricingPlan~calculatorName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdescription=field_mapjson__"Description"ResourceDescription.of_jsoninletpricingPlan=field_mapjson__"PricingPlan"PricingPlan.of_jsoninletcalculatorName=field_map_exnjson__"CalculatorName"ResourceName.of_jsoninmake?description?pricingPlan~calculatorName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend you upgrade to the Routes API V2 unless you require Grab data. UpdateRouteCalculator is part of a previous Amazon Location Service Routes API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The Routes API version 2 has a simplified interface that can be used without creating or managing route calculator resources. If you are using an Amazon Web Services SDK or the Amazon Web Services CLI, note that the Routes API version 2 is found under geo-routes or geo_routes, not under location. Since Grab is not yet fully supported in Routes API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Routes V2 API Reference or the Developer Guide. Updates the specified properties for a given route calculator resource."]moduleUpdatePlaceIndexResponse=structtypenonrect={indexName:ResourceName.toption[@ocaml.doc"The name of the updated place index resource."];indexArn:GeoArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the upated place index resource. Used to specify a resource across Amazon Web Services. Format example: arn:aws:geo:region:account-id:place- index/ExamplePlaceIndex"];updateTime:Timestamp.toption[@ocaml.doc"The timestamp for when the place index resource was last updated in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?indexName=fun?indexArn->fun?updateTime->fun()->{indexName;indexArn;updateTime}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("IndexName",(Option.mapx.indexName~f:ResourceName.to_value));("IndexArn",(Option.mapx.indexArn~f:GeoArn.to_value));("UpdateTime",(Option.mapx.updateTime~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letupdateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"UpdateTime")inletindexArn=(Option.map~f:GeoArn.of_xml)(Xml.childxml_arg0"IndexArn")inletindexName=(Option.map~f:ResourceName.of_xml)(Xml.childxml_arg0"IndexName")inmake?updateTime?indexArn?indexName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letupdateTime=field_mapjson__"UpdateTime"Timestamp.of_jsoninletindexArn=field_mapjson__"IndexArn"GeoArn.of_jsoninletindexName=field_mapjson__"IndexName"ResourceName.of_jsoninmake?updateTime?indexArn?indexName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend you upgrade to the Places API V2 unless you require Grab data. UpdatePlaceIndex is part of a previous Amazon Location Service Places API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The Places API version 2 has a simplified interface that can be used without creating or managing place index resources. If you are using an Amazon Web Services SDK or the Amazon Web Services CLI, note that the Places API version 2 is found under geo-places or geo_places, not under location. Since Grab is not yet fully supported in Places API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Places V2 API Reference or the Developer Guide. Updates the specified properties of a given place index resource."]moduleUpdatePlaceIndexRequest=structtypenonrect={indexName:ResourceName.t[@ocaml.doc"The name of the place index resource to update."];pricingPlan:PricingPlan.toption[@ocaml.doc"No longer used. If included, the only allowed value is RequestBasedUsage."];description:ResourceDescription.toption[@ocaml.doc"Updates the description for the place index resource."];dataSourceConfiguration:DataSourceConfiguration.toption[@ocaml.doc"Updates the data storage option for the place index resource."]}letcontext_="UpdatePlaceIndexRequest"letmake?pricingPlan=fun?description->fun?dataSourceConfiguration->fun~indexName->fun()->{pricingPlan;description;dataSourceConfiguration;indexName}letto_valuex=structure_to_value[("IndexName",(Some(ResourceName.to_valuex.indexName)));("PricingPlan",(Option.mapx.pricingPlan~f:PricingPlan.to_value));("Description",(Option.mapx.description~f:ResourceDescription.to_value));("DataSourceConfiguration",(Option.mapx.dataSourceConfiguration~f:DataSourceConfiguration.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdataSourceConfiguration=(Option.map~f:DataSourceConfiguration.of_xml)(Xml.childxml_arg0"DataSourceConfiguration")inletdescription=(Option.map~f:ResourceDescription.of_xml)(Xml.childxml_arg0"Description")inletpricingPlan=(Option.map~f:PricingPlan.of_xml)(Xml.childxml_arg0"PricingPlan")inletindexName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"IndexName")inmake?dataSourceConfiguration?description?pricingPlan~indexName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdataSourceConfiguration=field_mapjson__"DataSourceConfiguration"DataSourceConfiguration.of_jsoninletdescription=field_mapjson__"Description"ResourceDescription.of_jsoninletpricingPlan=field_mapjson__"PricingPlan"PricingPlan.of_jsoninletindexName=field_map_exnjson__"IndexName"ResourceName.of_jsoninmake?dataSourceConfiguration?description?pricingPlan~indexName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend you upgrade to the Places API V2 unless you require Grab data. UpdatePlaceIndex is part of a previous Amazon Location Service Places API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The Places API version 2 has a simplified interface that can be used without creating or managing place index resources. If you are using an Amazon Web Services SDK or the Amazon Web Services CLI, note that the Places API version 2 is found under geo-places or geo_places, not under location. Since Grab is not yet fully supported in Places API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Places V2 API Reference or the Developer Guide. Updates the specified properties of a given place index resource."]moduleUpdateMapResponse=structtypenonrect={mapName:ResourceName.toption[@ocaml.doc"The name of the updated map resource."];mapArn:GeoArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the updated map resource. Used to specify a resource across AWS. Format example: arn:aws:geo:region:account-id:map/ExampleMap"];updateTime:Timestamp.toption[@ocaml.doc"The timestamp for when the map resource was last updated in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?mapName=fun?mapArn->fun?updateTime->fun()->{mapName;mapArn;updateTime}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("MapName",(Option.mapx.mapName~f:ResourceName.to_value));("MapArn",(Option.mapx.mapArn~f:GeoArn.to_value));("UpdateTime",(Option.mapx.updateTime~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letupdateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"UpdateTime")inletmapArn=(Option.map~f:GeoArn.of_xml)(Xml.childxml_arg0"MapArn")inletmapName=(Option.map~f:ResourceName.of_xml)(Xml.childxml_arg0"MapName")inmake?updateTime?mapArn?mapName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letupdateTime=field_mapjson__"UpdateTime"Timestamp.of_jsoninletmapArn=field_mapjson__"MapArn"GeoArn.of_jsoninletmapName=field_mapjson__"MapName"ResourceName.of_jsoninmake?updateTime?mapArn?mapName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend upgrading to the Maps API V2 unless you require Grab data. UpdateMap is part of a previous Amazon Location Service Maps API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The Maps API version 2 has a simplified interface that can be used without creating or managing map resources. If you are using an AWS SDK or the AWS CLI, note that the Maps API version 2 is found under geo-maps or geo_maps, not under location. Since Grab is not yet fully supported in Maps API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Maps V2 API Reference or the Developer Guide. Updates the specified properties of a given map resource."]moduleUpdateMapRequest=structtypenonrect={mapName:ResourceName.t[@ocaml.doc"The name of the map resource to update."];pricingPlan:PricingPlan.toption[@ocaml.doc"No longer used. If included, the only allowed value is RequestBasedUsage."];description:ResourceDescription.toption[@ocaml.doc"Updates the description for the map resource."];configurationUpdate:MapConfigurationUpdate.toption[@ocaml.doc"Updates the parts of the map configuration that can be updated, including the political view."]}letcontext_="UpdateMapRequest"letmake?pricingPlan=fun?description->fun?configurationUpdate->fun~mapName->fun()->{pricingPlan;description;configurationUpdate;mapName}letto_valuex=structure_to_value[("MapName",(Some(ResourceName.to_valuex.mapName)));("PricingPlan",(Option.mapx.pricingPlan~f:PricingPlan.to_value));("Description",(Option.mapx.description~f:ResourceDescription.to_value));("ConfigurationUpdate",(Option.mapx.configurationUpdate~f:MapConfigurationUpdate.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letconfigurationUpdate=(Option.map~f:MapConfigurationUpdate.of_xml)(Xml.childxml_arg0"ConfigurationUpdate")inletdescription=(Option.map~f:ResourceDescription.of_xml)(Xml.childxml_arg0"Description")inletpricingPlan=(Option.map~f:PricingPlan.of_xml)(Xml.childxml_arg0"PricingPlan")inletmapName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"MapName")inmake?configurationUpdate?description?pricingPlan~mapName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letconfigurationUpdate=field_mapjson__"ConfigurationUpdate"MapConfigurationUpdate.of_jsoninletdescription=field_mapjson__"Description"ResourceDescription.of_jsoninletpricingPlan=field_mapjson__"PricingPlan"PricingPlan.of_jsoninletmapName=field_map_exnjson__"MapName"ResourceName.of_jsoninmake?configurationUpdate?description?pricingPlan~mapName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend upgrading to the Maps API V2 unless you require Grab data. UpdateMap is part of a previous Amazon Location Service Maps API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The Maps API version 2 has a simplified interface that can be used without creating or managing map resources. If you are using an AWS SDK or the AWS CLI, note that the Maps API version 2 is found under geo-maps or geo_maps, not under location. Since Grab is not yet fully supported in Maps API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Maps V2 API Reference or the Developer Guide. Updates the specified properties of a given map resource."]moduleUpdateKeyResponse=structtypenonrect={keyArn:Arn.toption[@ocaml.doc"The Amazon Resource Name (ARN) for the API key resource. Used when you need to specify a resource across all Amazon Web Services. Format example: arn:aws:geo:region:account-id:key/ExampleKey"];keyName:ResourceName.toption[@ocaml.doc"The name of the API key resource."];updateTime:Timestamp.toption[@ocaml.doc"The timestamp for when the API key resource was last updated in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?keyArn=fun?keyName->fun?updateTime->fun()->{keyArn;keyName;updateTime}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("KeyArn",(Option.mapx.keyArn~f:Arn.to_value));("KeyName",(Option.mapx.keyName~f:ResourceName.to_value));("UpdateTime",(Option.mapx.updateTime~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letupdateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"UpdateTime")inletkeyName=(Option.map~f:ResourceName.of_xml)(Xml.childxml_arg0"KeyName")inletkeyArn=(Option.map~f:Arn.of_xml)(Xml.childxml_arg0"KeyArn")inmake?updateTime?keyName?keyArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letupdateTime=field_mapjson__"UpdateTime"Timestamp.of_jsoninletkeyName=field_mapjson__"KeyName"ResourceName.of_jsoninletkeyArn=field_mapjson__"KeyArn"Arn.of_jsoninmake?updateTime?keyName?keyArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Updates the specified properties of a given API key resource."]moduleUpdateKeyRequest=structtypenonrect={keyName:ResourceName.t[@ocaml.doc"The name of the API key resource to update."];description:ResourceDescription.toption[@ocaml.doc"Updates the description for the API key resource."];expireTime:Timestamp.toption[@ocaml.doc"Updates the timestamp for when the API key resource will expire in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."];noExpiry:Boolean.toption[@ocaml.doc"Whether the API key should expire. Set to true to set the API key to have no expiration time."];forceUpdate:Boolean.toption[@ocaml.doc"The boolean flag to be included for updating ExpireTime or Restrictions details. Must be set to true to update an API key resource that has been used in the past 7 days. False if force update is not preferred Default value: False"];restrictions:ApiKeyRestrictions.toption[@ocaml.doc"Updates the API key restrictions for the API key resource."]}letcontext_="UpdateKeyRequest"letmake?description=fun?expireTime->fun?noExpiry->fun?forceUpdate->fun?restrictions->fun~keyName->fun()->{description;expireTime;noExpiry;forceUpdate;restrictions;keyName}letto_valuex=structure_to_value[("KeyName",(Some(ResourceName.to_valuex.keyName)));("Description",(Option.mapx.description~f:ResourceDescription.to_value));("ExpireTime",(Option.mapx.expireTime~f:Timestamp.to_value));("NoExpiry",(Option.mapx.noExpiry~f:Boolean.to_value));("ForceUpdate",(Option.mapx.forceUpdate~f:Boolean.to_value));("Restrictions",(Option.mapx.restrictions~f:ApiKeyRestrictions.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letrestrictions=(Option.map~f:ApiKeyRestrictions.of_xml)(Xml.childxml_arg0"Restrictions")inletforceUpdate=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"ForceUpdate")inletnoExpiry=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"NoExpiry")inletexpireTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"ExpireTime")inletdescription=(Option.map~f:ResourceDescription.of_xml)(Xml.childxml_arg0"Description")inletkeyName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"KeyName")inmake?restrictions?forceUpdate?noExpiry?expireTime?description~keyName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letrestrictions=field_mapjson__"Restrictions"ApiKeyRestrictions.of_jsoninletforceUpdate=field_mapjson__"ForceUpdate"Boolean.of_jsoninletnoExpiry=field_mapjson__"NoExpiry"Boolean.of_jsoninletexpireTime=field_mapjson__"ExpireTime"Timestamp.of_jsoninletdescription=field_mapjson__"Description"ResourceDescription.of_jsoninletkeyName=field_map_exnjson__"KeyName"ResourceName.of_jsoninmake?restrictions?forceUpdate?noExpiry?expireTime?description~keyName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Updates the specified properties of a given API key resource."]moduleUpdateGeofenceCollectionResponse=structtypenonrect={collectionName:ResourceName.toption[@ocaml.doc"The name of the updated geofence collection."];collectionArn:Arn.toption[@ocaml.doc"The Amazon Resource Name (ARN) of the updated geofence collection. Used to specify a resource across Amazon Web Services. Format example: arn:aws:geo:region:account-id:geofence-collection/ExampleGeofenceCollection"];updateTime:Timestamp.toption[@ocaml.doc"The time when the geofence collection was last updated in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ"]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?collectionName=fun?collectionArn->fun?updateTime->fun()->{collectionName;collectionArn;updateTime}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("CollectionName",(Option.mapx.collectionName~f:ResourceName.to_value));("CollectionArn",(Option.mapx.collectionArn~f:Arn.to_value));("UpdateTime",(Option.mapx.updateTime~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letupdateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"UpdateTime")inletcollectionArn=(Option.map~f:Arn.of_xml)(Xml.childxml_arg0"CollectionArn")inletcollectionName=(Option.map~f:ResourceName.of_xml)(Xml.childxml_arg0"CollectionName")inmake?updateTime?collectionArn?collectionName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letupdateTime=field_mapjson__"UpdateTime"Timestamp.of_jsoninletcollectionArn=field_mapjson__"CollectionArn"Arn.of_jsoninletcollectionName=field_mapjson__"CollectionName"ResourceName.of_jsoninmake?updateTime?collectionArn?collectionName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Updates the specified properties of a given geofence collection."]moduleUpdateGeofenceCollectionRequest=structtypenonrect={collectionName:ResourceName.t[@ocaml.doc"The name of the geofence collection to update."];pricingPlan:PricingPlan.toption[@ocaml.doc"No longer used. If included, the only allowed value is RequestBasedUsage."];pricingPlanDataSource:String_.toption[@ocaml.doc"This parameter is no longer used."];description:ResourceDescription.toption[@ocaml.doc"Updates the description for the geofence collection."]}letcontext_="UpdateGeofenceCollectionRequest"letmake?pricingPlan=fun?pricingPlanDataSource->fun?description->fun~collectionName->fun()->{pricingPlan;pricingPlanDataSource;description;collectionName}letto_valuex=structure_to_value[("CollectionName",(Some(ResourceName.to_valuex.collectionName)));("PricingPlan",(Option.mapx.pricingPlan~f:PricingPlan.to_value));("PricingPlanDataSource",(Option.mapx.pricingPlanDataSource~f:String_.to_value));("Description",(Option.mapx.description~f:ResourceDescription.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdescription=(Option.map~f:ResourceDescription.of_xml)(Xml.childxml_arg0"Description")inletpricingPlanDataSource=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"PricingPlanDataSource")inletpricingPlan=(Option.map~f:PricingPlan.of_xml)(Xml.childxml_arg0"PricingPlan")inletcollectionName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"CollectionName")inmake?description?pricingPlanDataSource?pricingPlan~collectionName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdescription=field_mapjson__"Description"ResourceDescription.of_jsoninletpricingPlanDataSource=field_mapjson__"PricingPlanDataSource"String_.of_jsoninletpricingPlan=field_mapjson__"PricingPlan"PricingPlan.of_jsoninletcollectionName=field_map_exnjson__"CollectionName"ResourceName.of_jsoninmake?description?pricingPlanDataSource?pricingPlan~collectionName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Updates the specified properties of a given geofence collection."]moduleUntagResourceResponse=structtypenonrect=unittypenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))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 one or more tags from the specified Amazon Location resource."]moduleUntagResourceRequest=structtypenonrect={resourceArn:Arn.t[@ocaml.doc"The Amazon Resource Name (ARN) of the resource from which you want to remove tags. Format example: arn:aws:geo:region:account-id:resourcetype/ExampleResource"];tagKeys:TagKeys.t[@ocaml.doc"The list of tag keys to remove from the specified resource."]}letcontext_="UntagResourceRequest"letmake~resourceArn=fun~tagKeys->fun()->{resourceArn;tagKeys}letto_valuex=structure_to_value[("ResourceArn",(Some(Arn.to_valuex.resourceArn)));("tagKeys",(Some(TagKeys.to_valuex.tagKeys)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettagKeys=TagKeys.of_xml(Xml.child_exn~context:context_xml_arg0"tagKeys")inletresourceArn=Arn.of_xml(Xml.child_exn~context:context_xml_arg0"ResourceArn")inmake~tagKeys~resourceArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettagKeys=field_map_exnjson__"TagKeys"TagKeys.of_jsoninletresourceArn=field_map_exnjson__"ResourceArn"Arn.of_jsoninmake~tagKeys~resourceArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Removes one or more tags from the specified Amazon Location resource."]moduleTagResourceResponse=structtypenonrect=unittypenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))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"Assigns one or more tags (key-value pairs) to the specified Amazon Location Service resource. Tags can help you organize and categorize your resources. You can also use them to scope user permissions, by granting a user permission to access or change only resources with certain tag values. You can use the TagResource operation with an Amazon Location Service resource that already has tags. If you specify a new tag key for the resource, this tag is appended to the tags already associated with the resource. If you specify a tag key that's already associated with the resource, the new tag value that you specify replaces the previous value for that tag. You can associate up to 50 tags with a resource."]moduleTagResourceRequest=structtypenonrect={resourceArn:Arn.t[@ocaml.doc"The Amazon Resource Name (ARN) of the resource whose tags you want to update. Format example: arn:aws:geo:region:account-id:resourcetype/ExampleResource"];tags:TagMap.t[@ocaml.doc"Applies one or more tags to specific resource. A tag is a key-value pair that helps you manage, identify, search, and filter your resources. Format: \"key\" : \"value\" Restrictions: Maximum 50 tags per resource. Each tag key must be unique and must have exactly one associated value. Maximum key length: 128 Unicode characters in UTF-8. Maximum value length: 256 Unicode characters in UTF-8. Can use alphanumeric characters (A\226\128\147Z, a\226\128\147z, 0\226\128\1479), and the following characters: + - = . _ : / \\@ Cannot use \"aws:\" as a prefix for a key."]}letcontext_="TagResourceRequest"letmake~resourceArn=fun~tags->fun()->{resourceArn;tags}letto_valuex=structure_to_value[("ResourceArn",(Some(Arn.to_valuex.resourceArn)));("Tags",(Some(TagMap.to_valuex.tags)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=TagMap.of_xml(Xml.child_exn~context:context_xml_arg0"Tags")inletresourceArn=Arn.of_xml(Xml.child_exn~context:context_xml_arg0"ResourceArn")inmake~tags~resourceArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_map_exnjson__"Tags"TagMap.of_jsoninletresourceArn=field_map_exnjson__"ResourceArn"Arn.of_jsoninmake~tags~resourceArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Assigns one or more tags (key-value pairs) to the specified Amazon Location Service resource. Tags can help you organize and categorize your resources. You can also use them to scope user permissions, by granting a user permission to access or change only resources with certain tag values. You can use the TagResource operation with an Amazon Location Service resource that already has tags. If you specify a new tag key for the resource, this tag is appended to the tags already associated with the resource. If you specify a tag key that's already associated with the resource, the new tag value that you specify replaces the previous value for that tag. You can associate up to 50 tags with a resource."]moduleStartJobResponse=structtypenonrect={createdAt:Timestamp.toption[@ocaml.doc"Job creation time in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sss."];jobArn:GeoArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) for the job resource. Used when you need to specify a resource across all Amazon Web Services. Format example: arn:aws:geo:region:account-id:job/ExampleJob"];jobId:JobId.toption[@ocaml.doc"Unique job identifier."];status:JobStatus.toption[@ocaml.doc"Initial job status (always \"Pending\" for new jobs)."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?createdAt=fun?jobArn->fun?jobId->fun?status->fun()->{createdAt;jobArn;jobId;status}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("CreatedAt",(Option.mapx.createdAt~f:Timestamp.to_value));("JobArn",(Option.mapx.jobArn~f:GeoArn.to_value));("JobId",(Option.mapx.jobId~f:JobId.to_value));("Status",(Option.mapx.status~f:JobStatus.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstatus=(Option.map~f:JobStatus.of_xml)(Xml.childxml_arg0"Status")inletjobId=(Option.map~f:JobId.of_xml)(Xml.childxml_arg0"JobId")inletjobArn=(Option.map~f:GeoArn.of_xml)(Xml.childxml_arg0"JobArn")inletcreatedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"CreatedAt")inmake?status?jobId?jobArn?createdAt()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstatus=field_mapjson__"Status"JobStatus.of_jsoninletjobId=field_mapjson__"JobId"JobId.of_jsoninletjobArn=field_mapjson__"JobArn"GeoArn.of_jsoninletcreatedAt=field_mapjson__"CreatedAt"Timestamp.of_jsoninmake?status?jobId?jobArn?createdAt()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"StartJob starts a new asynchronous bulk processing job. You specify the input data location in Amazon S3, the action to perform, and the output location where results are written. For more information, see Job concepts in the Amazon Location Service Developer Guide."]moduleStartJobRequest=structtypenonrect={clientToken:ClientToken.toption[@ocaml.doc"A unique identifier for this request to ensure idempotency."];action:JobAction.t[@ocaml.doc"The action to perform on the input data."];actionOptions:JobActionOptions.toption[@ocaml.doc"Additional parameters that can be requested for each result."];executionRoleArn:IamRoleArn.t[@ocaml.doc"The Amazon Resource Name (ARN) of the IAM role that Amazon Location Service assumes during job processing. Amazon Location Service uses this role to access the input and output locations specified for the job. The IAM role must be created in the same Amazon Web Services account where you plan to run your job. For more information about configuring IAM roles for Amazon Location jobs, see Configure IAM permissions in the Amazon Location Service Developer Guide."];inputOptions:JobInputOptions.t[@ocaml.doc"Configuration for input data location and format. Input files have a limitation of 10gb per file, and 1gb per Parquet row-group within the file."];name:ResourceName.toption[@ocaml.doc"An optional name for the job resource."];outputOptions:JobOutputOptions.t[@ocaml.doc"Configuration for output data location and format."];tags:TagMap.toption[@ocaml.doc"Tags and corresponding values to be associated with the job."]}letcontext_="StartJobRequest"letmake?clientToken=fun?actionOptions->fun?name->fun?tags->fun~action->fun~executionRoleArn->fun~inputOptions->fun~outputOptions->fun()->{clientToken;actionOptions;name;tags;action;executionRoleArn;inputOptions;outputOptions}letto_valuex=structure_to_value[("ClientToken",(Option.mapx.clientToken~f:ClientToken.to_value));("Action",(Some(JobAction.to_valuex.action)));("ActionOptions",(Option.mapx.actionOptions~f:JobActionOptions.to_value));("ExecutionRoleArn",(Some(IamRoleArn.to_valuex.executionRoleArn)));("InputOptions",(Some(JobInputOptions.to_valuex.inputOptions)));("Name",(Option.mapx.name~f:ResourceName.to_value));("OutputOptions",(Some(JobOutputOptions.to_valuex.outputOptions)));("Tags",(Option.mapx.tags~f:TagMap.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:TagMap.of_xml)(Xml.childxml_arg0"Tags")inletoutputOptions=JobOutputOptions.of_xml(Xml.child_exn~context:context_xml_arg0"OutputOptions")inletname=(Option.map~f:ResourceName.of_xml)(Xml.childxml_arg0"Name")inletinputOptions=JobInputOptions.of_xml(Xml.child_exn~context:context_xml_arg0"InputOptions")inletexecutionRoleArn=IamRoleArn.of_xml(Xml.child_exn~context:context_xml_arg0"ExecutionRoleArn")inletactionOptions=(Option.map~f:JobActionOptions.of_xml)(Xml.childxml_arg0"ActionOptions")inletaction=JobAction.of_xml(Xml.child_exn~context:context_xml_arg0"Action")inletclientToken=(Option.map~f:ClientToken.of_xml)(Xml.childxml_arg0"ClientToken")inmake?tags~outputOptions?name~inputOptions~executionRoleArn?actionOptions~action?clientToken()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"Tags"TagMap.of_jsoninletoutputOptions=field_map_exnjson__"OutputOptions"JobOutputOptions.of_jsoninletname=field_mapjson__"Name"ResourceName.of_jsoninletinputOptions=field_map_exnjson__"InputOptions"JobInputOptions.of_jsoninletexecutionRoleArn=field_map_exnjson__"ExecutionRoleArn"IamRoleArn.of_jsoninletactionOptions=field_mapjson__"ActionOptions"JobActionOptions.of_jsoninletaction=field_map_exnjson__"Action"JobAction.of_jsoninletclientToken=field_mapjson__"ClientToken"ClientToken.of_jsoninmake?tags~outputOptions?name~inputOptions~executionRoleArn?actionOptions~action?clientToken()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"StartJob starts a new asynchronous bulk processing job. You specify the input data location in Amazon S3, the action to perform, and the output location where results are written. For more information, see Job concepts in the Amazon Location Service Developer Guide."]moduleSearchPlaceIndexForTextResponse=structtypenonrect={summary:SearchPlaceIndexForTextSummary.toption[@ocaml.doc"Contains a summary of the request. Echoes the input values for BiasPosition, FilterBBox, FilterCountries, Language, MaxResults, and Text. Also includes the DataSource of the place index and the bounding box, ResultBBox, which surrounds the search results."];results:SearchForTextResultList.toption[@ocaml.doc"A list of Places matching the input text. Each result contains additional information about the specific point of interest. Not all response properties are included with all responses. Some properties may only be returned by specific data partners."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?summary=fun?results->fun()->{summary;results}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Summary",(Option.mapx.summary~f:SearchPlaceIndexForTextSummary.to_value));("Results",(Option.mapx.results~f:SearchForTextResultList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letresults=(Option.map~f:SearchForTextResultList.of_xml)(Xml.childxml_arg0"Results")inletsummary=(Option.map~f:SearchPlaceIndexForTextSummary.of_xml)(Xml.childxml_arg0"Summary")inmake?results?summary()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letresults=field_mapjson__"Results"SearchForTextResultList.of_jsoninletsummary=field_mapjson__"Summary"SearchPlaceIndexForTextSummary.of_jsoninmake?results?summary()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend you upgrade to Geocode or SearchText unless you require Grab data. SearchPlaceIndexForText is part of a previous Amazon Location Service Places API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The version 2 Geocode operation gives better results in the address geocoding use case, while the version 2 SearchText operation gives better results when searching for businesses and points of interest. If you are using an Amazon Web Services SDK or the Amazon Web Services CLI, note that the Places API version 2 is found under geo-places or geo_places, not under location. Since Grab is not yet fully supported in Places API version 2, we recommend you continue using API version 1 when using Grab. Geocodes free-form text, such as an address, name, city, or region to allow you to search for Places or points of interest. Optional parameters let you narrow your search results by bounding box or country, or bias your search toward a specific position on the globe. You can search for places near a given position using BiasPosition, or filter results within a bounding box using FilterBBox. Providing both parameters simultaneously returns an error. Search results are returned in order of highest to lowest relevance."]moduleSearchPlaceIndexForTextRequest=structtypenonrect={indexName:ResourceName.t[@ocaml.doc"The name of the place index resource you want to use for the search."];text:SearchPlaceIndexForTextRequestTextString.t[@ocaml.doc"The address, name, city, or region to be used in the search in free-form text format. For example, 123 Any Street."];biasPosition:Position.toption[@ocaml.doc"An optional parameter that indicates a preference for places that are closer to a specified position. If provided, this parameter must contain a pair of numbers. The first number represents the X coordinate, or longitude; the second number represents the Y coordinate, or latitude. For example, \\[-123.1174, 49.2847\\] represents the position with longitude -123.1174 and latitude 49.2847. BiasPosition and FilterBBox are mutually exclusive. Specifying both options results in an error."];filterBBox:BoundingBox.toption[@ocaml.doc"An optional parameter that limits the search results by returning only places that are within the provided bounding box. If provided, this parameter must contain a total of four consecutive numbers in two pairs. The first pair of numbers represents the X and Y coordinates (longitude and latitude, respectively) of the southwest corner of the bounding box; the second pair of numbers represents the X and Y coordinates (longitude and latitude, respectively) of the northeast corner of the bounding box. For example, \\[-12.7935, -37.4835, -12.0684, -36.9542\\] represents a bounding box where the southwest corner has longitude -12.7935 and latitude -37.4835, and the northeast corner has longitude -12.0684 and latitude -36.9542. FilterBBox and BiasPosition are mutually exclusive. Specifying both options results in an error."];filterCountries:CountryCodeList.toption[@ocaml.doc"An optional parameter that limits the search results by returning only places that are in a specified list of countries. Valid values include ISO 3166 3-digit country codes. For example, Australia uses three upper-case characters: AUS."];maxResults:PlaceIndexSearchResultLimit.toption[@ocaml.doc"An optional parameter. The maximum number of results returned per request. The default: 50"];language:LanguageTag.toption[@ocaml.doc"The preferred language used to return results. The value must be a valid BCP 47 language tag, for example, en for English. This setting affects the languages used in the results, but not the results themselves. If no language is specified, or not supported for a particular result, the partner automatically chooses a language for the result. For an example, we'll use the Greek language. You search for Athens, Greece, with the language parameter set to en. The result found will most likely be returned as Athens. If you set the language parameter to el, for Greek, then the result found will more likely be returned as \206\145\206\184\206\174\206\189\206\177. If the data provider does not have a value for Greek, the result will be in a language that the provider does support."];filterCategories:FilterPlaceCategoryList.toption[@ocaml.doc"A list of one or more Amazon Location categories to filter the returned places. If you include more than one category, the results will include results that match any of the categories listed. For more information about using categories, including a list of Amazon Location categories, see Categories and filtering, in the Amazon Location Service developer guide."];key:ApiKey.toption[@ocaml.doc"The optional API key to authorize the request."]}letcontext_="SearchPlaceIndexForTextRequest"letmake?biasPosition=fun?filterBBox->fun?filterCountries->fun?maxResults->fun?language->fun?filterCategories->fun?key->fun~indexName->fun~text->fun()->{biasPosition;filterBBox;filterCountries;maxResults;language;filterCategories;key;indexName;text}letto_valuex=structure_to_value[("IndexName",(Some(ResourceName.to_valuex.indexName)));("Text",(Some(SearchPlaceIndexForTextRequestTextString.to_valuex.text)));("BiasPosition",(Option.mapx.biasPosition~f:Position.to_value));("FilterBBox",(Option.mapx.filterBBox~f:BoundingBox.to_value));("FilterCountries",(Option.mapx.filterCountries~f:CountryCodeList.to_value));("MaxResults",(Option.mapx.maxResults~f:PlaceIndexSearchResultLimit.to_value));("Language",(Option.mapx.language~f:LanguageTag.to_value));("FilterCategories",(Option.mapx.filterCategories~f:FilterPlaceCategoryList.to_value));("key",(Option.mapx.key~f:ApiKey.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letkey=(Option.map~f:ApiKey.of_xml)(Xml.childxml_arg0"key")inletfilterCategories=(Option.map~f:FilterPlaceCategoryList.of_xml)(Xml.childxml_arg0"FilterCategories")inletlanguage=(Option.map~f:LanguageTag.of_xml)(Xml.childxml_arg0"Language")inletmaxResults=(Option.map~f:PlaceIndexSearchResultLimit.of_xml)(Xml.childxml_arg0"MaxResults")inletfilterCountries=(Option.map~f:CountryCodeList.of_xml)(Xml.childxml_arg0"FilterCountries")inletfilterBBox=(Option.map~f:BoundingBox.of_xml)(Xml.childxml_arg0"FilterBBox")inletbiasPosition=(Option.map~f:Position.of_xml)(Xml.childxml_arg0"BiasPosition")inlettext=SearchPlaceIndexForTextRequestTextString.of_xml(Xml.child_exn~context:context_xml_arg0"Text")inletindexName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"IndexName")inmake?key?filterCategories?language?maxResults?filterCountries?filterBBox?biasPosition~text~indexName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letkey=field_mapjson__"Key"ApiKey.of_jsoninletfilterCategories=field_mapjson__"FilterCategories"FilterPlaceCategoryList.of_jsoninletlanguage=field_mapjson__"Language"LanguageTag.of_jsoninletmaxResults=field_mapjson__"MaxResults"PlaceIndexSearchResultLimit.of_jsoninletfilterCountries=field_mapjson__"FilterCountries"CountryCodeList.of_jsoninletfilterBBox=field_mapjson__"FilterBBox"BoundingBox.of_jsoninletbiasPosition=field_mapjson__"BiasPosition"Position.of_jsoninlettext=field_map_exnjson__"Text"SearchPlaceIndexForTextRequestTextString.of_jsoninletindexName=field_map_exnjson__"IndexName"ResourceName.of_jsoninmake?key?filterCategories?language?maxResults?filterCountries?filterBBox?biasPosition~text~indexName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend you upgrade to Geocode or SearchText unless you require Grab data. SearchPlaceIndexForText is part of a previous Amazon Location Service Places API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The version 2 Geocode operation gives better results in the address geocoding use case, while the version 2 SearchText operation gives better results when searching for businesses and points of interest. If you are using an Amazon Web Services SDK or the Amazon Web Services CLI, note that the Places API version 2 is found under geo-places or geo_places, not under location. Since Grab is not yet fully supported in Places API version 2, we recommend you continue using API version 1 when using Grab. Geocodes free-form text, such as an address, name, city, or region to allow you to search for Places or points of interest. Optional parameters let you narrow your search results by bounding box or country, or bias your search toward a specific position on the globe. You can search for places near a given position using BiasPosition, or filter results within a bounding box using FilterBBox. Providing both parameters simultaneously returns an error. Search results are returned in order of highest to lowest relevance."]moduleSearchPlaceIndexForSuggestionsResponse=structtypenonrect={summary:SearchPlaceIndexForSuggestionsSummary.toption[@ocaml.doc"Contains a summary of the request. Echoes the input values for BiasPosition, FilterBBox, FilterCountries, Language, MaxResults, and Text. Also includes the DataSource of the place index."];results:SearchForSuggestionsResultList.toption[@ocaml.doc"A list of place suggestions that best match the search text."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?summary=fun?results->fun()->{summary;results}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Summary",(Option.mapx.summary~f:SearchPlaceIndexForSuggestionsSummary.to_value));("Results",(Option.mapx.results~f:SearchForSuggestionsResultList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letresults=(Option.map~f:SearchForSuggestionsResultList.of_xml)(Xml.childxml_arg0"Results")inletsummary=(Option.map~f:SearchPlaceIndexForSuggestionsSummary.of_xml)(Xml.childxml_arg0"Summary")inmake?results?summary()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letresults=field_mapjson__"Results"SearchForSuggestionsResultList.of_jsoninletsummary=field_mapjson__"Summary"SearchPlaceIndexForSuggestionsSummary.of_jsoninmake?results?summary()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend you upgrade to Suggest or Autocomplete unless you require Grab data. SearchPlaceIndexForSuggestions is part of a previous Amazon Location Service Places API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The version 2 Suggest operation gives better results for typeahead place search suggestions with fuzzy matching, while the version 2 Autocomplete operation gives better results for address completion based on partial input. If you are using an Amazon Web Services SDK or the Amazon Web Services CLI, note that the Places API version 2 is found under geo-places or geo_places, not under location. Since Grab is not yet fully supported in Places API version 2, we recommend you continue using API version 1 when using Grab. Generates suggestions for addresses and points of interest based on partial or misspelled free-form text. This operation is also known as autocomplete, autosuggest, or fuzzy matching. Optional parameters let you narrow your search results by bounding box or country, or bias your search toward a specific position on the globe. You can search for suggested place names near a specified position by using BiasPosition, or filter results within a bounding box by using FilterBBox. These parameters are mutually exclusive; using both BiasPosition and FilterBBox in the same command returns an error."]moduleSearchPlaceIndexForSuggestionsRequest=structtypenonrect={indexName:ResourceName.t[@ocaml.doc"The name of the place index resource you want to use for the search."];text:SearchPlaceIndexForSuggestionsRequestTextString.t[@ocaml.doc"The free-form partial text to use to generate place suggestions. For example, eiffel tow."];biasPosition:Position.toption[@ocaml.doc"An optional parameter that indicates a preference for place suggestions that are closer to a specified position. If provided, this parameter must contain a pair of numbers. The first number represents the X coordinate, or longitude; the second number represents the Y coordinate, or latitude. For example, \\[-123.1174, 49.2847\\] represents the position with longitude -123.1174 and latitude 49.2847. BiasPosition and FilterBBox are mutually exclusive. Specifying both options results in an error."];filterBBox:BoundingBox.toption[@ocaml.doc"An optional parameter that limits the search results by returning only suggestions within a specified bounding box. If provided, this parameter must contain a total of four consecutive numbers in two pairs. The first pair of numbers represents the X and Y coordinates (longitude and latitude, respectively) of the southwest corner of the bounding box; the second pair of numbers represents the X and Y coordinates (longitude and latitude, respectively) of the northeast corner of the bounding box. For example, \\[-12.7935, -37.4835, -12.0684, -36.9542\\] represents a bounding box where the southwest corner has longitude -12.7935 and latitude -37.4835, and the northeast corner has longitude -12.0684 and latitude -36.9542. FilterBBox and BiasPosition are mutually exclusive. Specifying both options results in an error."];filterCountries:CountryCodeList.toption[@ocaml.doc"An optional parameter that limits the search results by returning only suggestions within the provided list of countries. Use the ISO 3166 3-digit country code. For example, Australia uses three upper-case characters: AUS."];maxResults:SearchPlaceIndexForSuggestionsRequestMaxResultsInteger.toption[@ocaml.doc"An optional parameter. The maximum number of results returned per request. The default: 5"];language:LanguageTag.toption[@ocaml.doc"The preferred language used to return results. The value must be a valid BCP 47 language tag, for example, en for English. This setting affects the languages used in the results. If no language is specified, or not supported for a particular result, the partner automatically chooses a language for the result. For an example, we'll use the Greek language. You search for Athens, Gr to get suggestions with the language parameter set to en. The results found will most likely be returned as Athens, Greece. If you set the language parameter to el, for Greek, then the result found will more likely be returned as \206\145\206\184\206\174\206\189\206\177, \206\149\206\187\206\187\206\172\206\180\206\177. If the data provider does not have a value for Greek, the result will be in a language that the provider does support."];filterCategories:FilterPlaceCategoryList.toption[@ocaml.doc"A list of one or more Amazon Location categories to filter the returned places. If you include more than one category, the results will include results that match any of the categories listed. For more information about using categories, including a list of Amazon Location categories, see Categories and filtering, in the Amazon Location Service developer guide."];key:ApiKey.toption[@ocaml.doc"The optional API key to authorize the request."]}letcontext_="SearchPlaceIndexForSuggestionsRequest"letmake?biasPosition=fun?filterBBox->fun?filterCountries->fun?maxResults->fun?language->fun?filterCategories->fun?key->fun~indexName->fun~text->fun()->{biasPosition;filterBBox;filterCountries;maxResults;language;filterCategories;key;indexName;text}letto_valuex=structure_to_value[("IndexName",(Some(ResourceName.to_valuex.indexName)));("Text",(Some(SearchPlaceIndexForSuggestionsRequestTextString.to_valuex.text)));("BiasPosition",(Option.mapx.biasPosition~f:Position.to_value));("FilterBBox",(Option.mapx.filterBBox~f:BoundingBox.to_value));("FilterCountries",(Option.mapx.filterCountries~f:CountryCodeList.to_value));("MaxResults",(Option.mapx.maxResults~f:SearchPlaceIndexForSuggestionsRequestMaxResultsInteger.to_value));("Language",(Option.mapx.language~f:LanguageTag.to_value));("FilterCategories",(Option.mapx.filterCategories~f:FilterPlaceCategoryList.to_value));("key",(Option.mapx.key~f:ApiKey.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letkey=(Option.map~f:ApiKey.of_xml)(Xml.childxml_arg0"key")inletfilterCategories=(Option.map~f:FilterPlaceCategoryList.of_xml)(Xml.childxml_arg0"FilterCategories")inletlanguage=(Option.map~f:LanguageTag.of_xml)(Xml.childxml_arg0"Language")inletmaxResults=(Option.map~f:SearchPlaceIndexForSuggestionsRequestMaxResultsInteger.of_xml)(Xml.childxml_arg0"MaxResults")inletfilterCountries=(Option.map~f:CountryCodeList.of_xml)(Xml.childxml_arg0"FilterCountries")inletfilterBBox=(Option.map~f:BoundingBox.of_xml)(Xml.childxml_arg0"FilterBBox")inletbiasPosition=(Option.map~f:Position.of_xml)(Xml.childxml_arg0"BiasPosition")inlettext=SearchPlaceIndexForSuggestionsRequestTextString.of_xml(Xml.child_exn~context:context_xml_arg0"Text")inletindexName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"IndexName")inmake?key?filterCategories?language?maxResults?filterCountries?filterBBox?biasPosition~text~indexName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letkey=field_mapjson__"Key"ApiKey.of_jsoninletfilterCategories=field_mapjson__"FilterCategories"FilterPlaceCategoryList.of_jsoninletlanguage=field_mapjson__"Language"LanguageTag.of_jsoninletmaxResults=field_mapjson__"MaxResults"SearchPlaceIndexForSuggestionsRequestMaxResultsInteger.of_jsoninletfilterCountries=field_mapjson__"FilterCountries"CountryCodeList.of_jsoninletfilterBBox=field_mapjson__"FilterBBox"BoundingBox.of_jsoninletbiasPosition=field_mapjson__"BiasPosition"Position.of_jsoninlettext=field_map_exnjson__"Text"SearchPlaceIndexForSuggestionsRequestTextString.of_jsoninletindexName=field_map_exnjson__"IndexName"ResourceName.of_jsoninmake?key?filterCategories?language?maxResults?filterCountries?filterBBox?biasPosition~text~indexName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend you upgrade to Suggest or Autocomplete unless you require Grab data. SearchPlaceIndexForSuggestions is part of a previous Amazon Location Service Places API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The version 2 Suggest operation gives better results for typeahead place search suggestions with fuzzy matching, while the version 2 Autocomplete operation gives better results for address completion based on partial input. If you are using an Amazon Web Services SDK or the Amazon Web Services CLI, note that the Places API version 2 is found under geo-places or geo_places, not under location. Since Grab is not yet fully supported in Places API version 2, we recommend you continue using API version 1 when using Grab. Generates suggestions for addresses and points of interest based on partial or misspelled free-form text. This operation is also known as autocomplete, autosuggest, or fuzzy matching. Optional parameters let you narrow your search results by bounding box or country, or bias your search toward a specific position on the globe. You can search for suggested place names near a specified position by using BiasPosition, or filter results within a bounding box by using FilterBBox. These parameters are mutually exclusive; using both BiasPosition and FilterBBox in the same command returns an error."]moduleSearchPlaceIndexForPositionResponse=structtypenonrect={summary:SearchPlaceIndexForPositionSummary.toption[@ocaml.doc"Contains a summary of the request. Echoes the input values for Position, Language, MaxResults, and the DataSource of the place index."];results:SearchForPositionResultList.toption[@ocaml.doc"Returns a list of Places closest to the specified position. Each result contains additional information about the Places returned."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?summary=fun?results->fun()->{summary;results}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Summary",(Option.mapx.summary~f:SearchPlaceIndexForPositionSummary.to_value));("Results",(Option.mapx.results~f:SearchForPositionResultList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letresults=(Option.map~f:SearchForPositionResultList.of_xml)(Xml.childxml_arg0"Results")inletsummary=(Option.map~f:SearchPlaceIndexForPositionSummary.of_xml)(Xml.childxml_arg0"Summary")inmake?results?summary()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letresults=field_mapjson__"Results"SearchForPositionResultList.of_jsoninletsummary=field_mapjson__"Summary"SearchPlaceIndexForPositionSummary.of_jsoninmake?results?summary()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend you upgrade to ReverseGeocode or SearchNearby unless you require Grab data. SearchPlaceIndexForPosition is part of a previous Amazon Location Service Places API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The version 2 ReverseGeocode operation gives better results in the address reverse-geocoding use case, while the version 2 SearchNearby operation gives better results when searching for businesses and points of interest near a specific location. If you are using an Amazon Web Services SDK or the Amazon Web Services CLI, note that the Places API version 2 is found under geo-places or geo_places, not under location. Since Grab is not yet fully supported in Places API version 2, we recommend you continue using API version 1 when using Grab. Reverse geocodes a given coordinate and returns a legible address. Allows you to search for Places or points of interest near a given position."]moduleSearchPlaceIndexForPositionRequest=structtypenonrect={indexName:ResourceName.t[@ocaml.doc"The name of the place index resource you want to use for the search."];position:Position.t[@ocaml.doc"Specifies the longitude and latitude of the position to query. This parameter must contain a pair of numbers. The first number represents the X coordinate, or longitude; the second number represents the Y coordinate, or latitude. For example, \\[-123.1174, 49.2847\\] represents a position with longitude -123.1174 and latitude 49.2847."];maxResults:PlaceIndexSearchResultLimit.toption[@ocaml.doc"An optional parameter. The maximum number of results returned per request. Default value: 50"];language:LanguageTag.toption[@ocaml.doc"The preferred language used to return results. The value must be a valid BCP 47 language tag, for example, en for English. This setting affects the languages used in the results, but not the results themselves. If no language is specified, or not supported for a particular result, the partner automatically chooses a language for the result. For an example, we'll use the Greek language. You search for a location around Athens, Greece, with the language parameter set to en. The city in the results will most likely be returned as Athens. If you set the language parameter to el, for Greek, then the city in the results will more likely be returned as \206\145\206\184\206\174\206\189\206\177. If the data provider does not have a value for Greek, the result will be in a language that the provider does support."];key:ApiKey.toption[@ocaml.doc"The optional API key to authorize the request."]}letcontext_="SearchPlaceIndexForPositionRequest"letmake?maxResults=fun?language->fun?key->fun~indexName->fun~position->fun()->{maxResults;language;key;indexName;position}letto_valuex=structure_to_value[("IndexName",(Some(ResourceName.to_valuex.indexName)));("Position",(Some(Position.to_valuex.position)));("MaxResults",(Option.mapx.maxResults~f:PlaceIndexSearchResultLimit.to_value));("Language",(Option.mapx.language~f:LanguageTag.to_value));("key",(Option.mapx.key~f:ApiKey.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letkey=(Option.map~f:ApiKey.of_xml)(Xml.childxml_arg0"key")inletlanguage=(Option.map~f:LanguageTag.of_xml)(Xml.childxml_arg0"Language")inletmaxResults=(Option.map~f:PlaceIndexSearchResultLimit.of_xml)(Xml.childxml_arg0"MaxResults")inletposition=Position.of_xml(Xml.child_exn~context:context_xml_arg0"Position")inletindexName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"IndexName")inmake?key?language?maxResults~position~indexName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letkey=field_mapjson__"Key"ApiKey.of_jsoninletlanguage=field_mapjson__"Language"LanguageTag.of_jsoninletmaxResults=field_mapjson__"MaxResults"PlaceIndexSearchResultLimit.of_jsoninletposition=field_map_exnjson__"Position"Position.of_jsoninletindexName=field_map_exnjson__"IndexName"ResourceName.of_jsoninmake?key?language?maxResults~position~indexName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend you upgrade to ReverseGeocode or SearchNearby unless you require Grab data. SearchPlaceIndexForPosition is part of a previous Amazon Location Service Places API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The version 2 ReverseGeocode operation gives better results in the address reverse-geocoding use case, while the version 2 SearchNearby operation gives better results when searching for businesses and points of interest near a specific location. If you are using an Amazon Web Services SDK or the Amazon Web Services CLI, note that the Places API version 2 is found under geo-places or geo_places, not under location. Since Grab is not yet fully supported in Places API version 2, we recommend you continue using API version 1 when using Grab. Reverse geocodes a given coordinate and returns a legible address. Allows you to search for Places or points of interest near a given position."]modulePutGeofenceResponse=structtypenonrect={geofenceId:Id.toption[@ocaml.doc"The geofence identifier entered in the request."];createTime:Timestamp.toption[@ocaml.doc"The timestamp for when the geofence was created in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ"];updateTime:Timestamp.toption[@ocaml.doc"The timestamp for when the geofence was last updated in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ"]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`ConflictExceptionofConflictException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?geofenceId=fun?createTime->fun?updateTime->fun()->{geofenceId;createTime;updateTime}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"ConflictException"->`ConflictException(ConflictException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"ConflictException"->`ConflictException(ConflictException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`ConflictExceptione->`Assoc[("error",(`String"ConflictException"));("details",(ConflictException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("GeofenceId",(Option.mapx.geofenceId~f:Id.to_value));("CreateTime",(Option.mapx.createTime~f:Timestamp.to_value));("UpdateTime",(Option.mapx.updateTime~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letupdateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"UpdateTime")inletcreateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"CreateTime")inletgeofenceId=(Option.map~f:Id.of_xml)(Xml.childxml_arg0"GeofenceId")inmake?updateTime?createTime?geofenceId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letupdateTime=field_mapjson__"UpdateTime"Timestamp.of_jsoninletcreateTime=field_mapjson__"CreateTime"Timestamp.of_jsoninletgeofenceId=field_mapjson__"GeofenceId"Id.of_jsoninmake?updateTime?createTime?geofenceId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Stores a geofence geometry in a given geofence collection, or updates the geometry of an existing geofence if a geofence ID is included in the request."]modulePutGeofenceRequest=structtypenonrect={collectionName:ResourceName.t[@ocaml.doc"The geofence collection to store the geofence in."];geofenceId:Id.t[@ocaml.doc"An identifier for the geofence. For example, ExampleGeofence-1."];geometry:GeofenceGeometry.t[@ocaml.doc"Contains the details to specify the position of the geofence. Can be a circle, a polygon, or a multipolygon. Polygon and MultiPolygon geometries can be defined using their respective parameters, or encoded in Geobuf format using the Geobuf parameter. Including multiple geometry types in the same request will return a validation error. The geofence Polygon and MultiPolygon formats support a maximum of 1,000 total vertices. The Geobuf format supports a maximum of 100,000 vertices."];geofenceProperties:PropertyMap.toption[@ocaml.doc"Associates one of more properties with the geofence. A property is a key-value pair stored with the geofence and added to any geofence event triggered with that geofence. Format: \"key\" : \"value\""]}letcontext_="PutGeofenceRequest"letmake?geofenceProperties=fun~collectionName->fun~geofenceId->fun~geometry->fun()->{geofenceProperties;collectionName;geofenceId;geometry}letto_valuex=structure_to_value[("CollectionName",(Some(ResourceName.to_valuex.collectionName)));("GeofenceId",(Some(Id.to_valuex.geofenceId)));("Geometry",(Some(GeofenceGeometry.to_valuex.geometry)));("GeofenceProperties",(Option.mapx.geofenceProperties~f:PropertyMap.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letgeofenceProperties=(Option.map~f:PropertyMap.of_xml)(Xml.childxml_arg0"GeofenceProperties")inletgeometry=GeofenceGeometry.of_xml(Xml.child_exn~context:context_xml_arg0"Geometry")inletgeofenceId=Id.of_xml(Xml.child_exn~context:context_xml_arg0"GeofenceId")inletcollectionName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"CollectionName")inmake?geofenceProperties~geometry~geofenceId~collectionName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letgeofenceProperties=field_mapjson__"GeofenceProperties"PropertyMap.of_jsoninletgeometry=field_map_exnjson__"Geometry"GeofenceGeometry.of_jsoninletgeofenceId=field_map_exnjson__"GeofenceId"Id.of_jsoninletcollectionName=field_map_exnjson__"CollectionName"ResourceName.of_jsoninmake?geofenceProperties~geometry~geofenceId~collectionName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Stores a geofence geometry in a given geofence collection, or updates the geometry of an existing geofence if a geofence ID is included in the request."]moduleListTrackersResponse=structtypenonrect={entries:ListTrackersResponseEntryList.toption[@ocaml.doc"Contains tracker resources in your Amazon Web Services account. Details include tracker name, description and timestamps for when the tracker was created and last updated."];nextToken:Token.toption[@ocaml.doc"A pagination token indicating there are additional pages available. You can use the token in a following request to fetch the next set of results."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?entries=fun?nextToken->fun()->{entries;nextToken}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Entries",(Option.mapx.entries~f:ListTrackersResponseEntryList.to_value));("NextToken",(Option.mapx.nextToken~f:Token.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:Token.of_xml)(Xml.childxml_arg0"NextToken")inletentries=(Option.map~f:ListTrackersResponseEntryList.of_xml)(Xml.childxml_arg0"Entries")inmake?nextToken?entries()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"Token.of_jsoninletentries=field_mapjson__"Entries"ListTrackersResponseEntryList.of_jsoninmake?nextToken?entries()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists tracker resources in your Amazon Web Services account."]moduleListTrackersRequest=structtypenonrect={maxResults:ListTrackersRequestMaxResultsInteger.toption[@ocaml.doc"An optional limit for the number of resources returned in a single call. Default value: 100"];nextToken:Token.toption[@ocaml.doc"The pagination token specifying which page of results to return in the response. If no token is provided, the default page is the first page. Default value: null"]}letmake?maxResults=fun?nextToken->fun()->{maxResults;nextToken}letto_valuex=structure_to_value[("MaxResults",(Option.mapx.maxResults~f:ListTrackersRequestMaxResultsInteger.to_value));("NextToken",(Option.mapx.nextToken~f:Token.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:Token.of_xml)(Xml.childxml_arg0"NextToken")inletmaxResults=(Option.map~f:ListTrackersRequestMaxResultsInteger.of_xml)(Xml.childxml_arg0"MaxResults")inmake?nextToken?maxResults()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"Token.of_jsoninletmaxResults=field_mapjson__"MaxResults"ListTrackersRequestMaxResultsInteger.of_jsoninmake?nextToken?maxResults()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists tracker resources in your Amazon Web Services account."]moduleListTrackerConsumersResponse=structtypenonrect={consumerArns:ArnList.toption[@ocaml.doc"Contains the list of geofence collection ARNs associated to the tracker resource."];nextToken:Token.toption[@ocaml.doc"A pagination token indicating there are additional pages available. You can use the token in a following request to fetch the next set of results."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?consumerArns=fun?nextToken->fun()->{consumerArns;nextToken}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("ConsumerArns",(Option.mapx.consumerArns~f:ArnList.to_value));("NextToken",(Option.mapx.nextToken~f:Token.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:Token.of_xml)(Xml.childxml_arg0"NextToken")inletconsumerArns=(Option.map~f:ArnList.of_xml)(Xml.childxml_arg0"ConsumerArns")inmake?nextToken?consumerArns()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"Token.of_jsoninletconsumerArns=field_mapjson__"ConsumerArns"ArnList.of_jsoninmake?nextToken?consumerArns()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists geofence collections currently associated to the given tracker resource."]moduleListTrackerConsumersRequest=structtypenonrect={trackerName:ResourceName.t[@ocaml.doc"The tracker resource whose associated geofence collections you want to list."];maxResults:ListTrackerConsumersRequestMaxResultsInteger.toption[@ocaml.doc"An optional limit for the number of resources returned in a single call. Default value: 100"];nextToken:Token.toption[@ocaml.doc"The pagination token specifying which page of results to return in the response. If no token is provided, the default page is the first page. Default value: null"]}letcontext_="ListTrackerConsumersRequest"letmake?maxResults=fun?nextToken->fun~trackerName->fun()->{maxResults;nextToken;trackerName}letto_valuex=structure_to_value[("TrackerName",(Some(ResourceName.to_valuex.trackerName)));("MaxResults",(Option.mapx.maxResults~f:ListTrackerConsumersRequestMaxResultsInteger.to_value));("NextToken",(Option.mapx.nextToken~f:Token.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:Token.of_xml)(Xml.childxml_arg0"NextToken")inletmaxResults=(Option.map~f:ListTrackerConsumersRequestMaxResultsInteger.of_xml)(Xml.childxml_arg0"MaxResults")inlettrackerName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"TrackerName")inmake?nextToken?maxResults~trackerName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"Token.of_jsoninletmaxResults=field_mapjson__"MaxResults"ListTrackerConsumersRequestMaxResultsInteger.of_jsoninlettrackerName=field_map_exnjson__"TrackerName"ResourceName.of_jsoninmake?nextToken?maxResults~trackerName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists geofence collections currently associated to the given tracker resource."]moduleListTagsForResourceResponse=structtypenonrect={tags:TagMap.toption[@ocaml.doc"Tags that have been applied to the specified resource. Tags are mapped from the tag key to the tag value: \"TagKey\" : \"TagValue\". Format example: \\{\"tag1\" : \"value1\", \"tag2\" : \"value2\"\\}"]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?tags=fun()->{tags}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Tags",(Option.mapx.tags~f:TagMap.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:TagMap.of_xml)(Xml.childxml_arg0"Tags")inmake?tags()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"Tags"TagMap.of_jsoninmake?tags()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns a list of tags that are applied to the specified Amazon Location resource."]moduleListTagsForResourceRequest=structtypenonrect={resourceArn:Arn.t[@ocaml.doc"The Amazon Resource Name (ARN) of the resource whose tags you want to retrieve. Format example: arn:aws:geo:region:account-id:resourcetype/ExampleResource"]}letcontext_="ListTagsForResourceRequest"letmake~resourceArn=fun()->{resourceArn}letto_valuex=structure_to_value[("ResourceArn",(Some(Arn.to_valuex.resourceArn)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letresourceArn=Arn.of_xml(Xml.child_exn~context:context_xml_arg0"ResourceArn")inmake~resourceArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letresourceArn=field_map_exnjson__"ResourceArn"Arn.of_jsoninmake~resourceArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns a list of tags that are applied to the specified Amazon Location resource."]moduleListRouteCalculatorsResponse=structtypenonrect={entries:ListRouteCalculatorsResponseEntryList.toption[@ocaml.doc"Lists the route calculator resources that exist in your Amazon Web Services account"];nextToken:Token.toption[@ocaml.doc"A pagination token indicating there are additional pages available. You can use the token in a subsequent request to fetch the next set of results."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?entries=fun?nextToken->fun()->{entries;nextToken}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Entries",(Option.mapx.entries~f:ListRouteCalculatorsResponseEntryList.to_value));("NextToken",(Option.mapx.nextToken~f:Token.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:Token.of_xml)(Xml.childxml_arg0"NextToken")inletentries=(Option.map~f:ListRouteCalculatorsResponseEntryList.of_xml)(Xml.childxml_arg0"Entries")inmake?nextToken?entries()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"Token.of_jsoninletentries=field_mapjson__"Entries"ListRouteCalculatorsResponseEntryList.of_jsoninmake?nextToken?entries()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend you upgrade to the Routes API V2 unless you require Grab data. ListRouteCalculators is part of a previous Amazon Location Service Routes API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The Routes API version 2 has a simplified interface that can be used without creating or managing route calculator resources. If you are using an Amazon Web Services SDK or the Amazon Web Services CLI, note that the Routes API version 2 is found under geo-routes or geo_routes, not under location. Since Grab is not yet fully supported in Routes API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Routes V2 API Reference or the Developer Guide. Lists route calculator resources in your Amazon Web Services account."]moduleListRouteCalculatorsRequest=structtypenonrect={maxResults:ListRouteCalculatorsRequestMaxResultsInteger.toption[@ocaml.doc"An optional maximum number of results returned in a single call. Default Value: 100"];nextToken:Token.toption[@ocaml.doc"The pagination token specifying which page of results to return in the response. If no token is provided, the default page is the first page. Default Value: null"]}letmake?maxResults=fun?nextToken->fun()->{maxResults;nextToken}letto_valuex=structure_to_value[("MaxResults",(Option.mapx.maxResults~f:ListRouteCalculatorsRequestMaxResultsInteger.to_value));("NextToken",(Option.mapx.nextToken~f:Token.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:Token.of_xml)(Xml.childxml_arg0"NextToken")inletmaxResults=(Option.map~f:ListRouteCalculatorsRequestMaxResultsInteger.of_xml)(Xml.childxml_arg0"MaxResults")inmake?nextToken?maxResults()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"Token.of_jsoninletmaxResults=field_mapjson__"MaxResults"ListRouteCalculatorsRequestMaxResultsInteger.of_jsoninmake?nextToken?maxResults()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend you upgrade to the Routes API V2 unless you require Grab data. ListRouteCalculators is part of a previous Amazon Location Service Routes API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The Routes API version 2 has a simplified interface that can be used without creating or managing route calculator resources. If you are using an Amazon Web Services SDK or the Amazon Web Services CLI, note that the Routes API version 2 is found under geo-routes or geo_routes, not under location. Since Grab is not yet fully supported in Routes API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Routes V2 API Reference or the Developer Guide. Lists route calculator resources in your Amazon Web Services account."]moduleListPlaceIndexesResponse=structtypenonrect={entries:ListPlaceIndexesResponseEntryList.toption[@ocaml.doc"Lists the place index resources that exist in your Amazon Web Services account"];nextToken:Token.toption[@ocaml.doc"A pagination token indicating that there are additional pages available. You can use the token in a new request to fetch the next page of results."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?entries=fun?nextToken->fun()->{entries;nextToken}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Entries",(Option.mapx.entries~f:ListPlaceIndexesResponseEntryList.to_value));("NextToken",(Option.mapx.nextToken~f:Token.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:Token.of_xml)(Xml.childxml_arg0"NextToken")inletentries=(Option.map~f:ListPlaceIndexesResponseEntryList.of_xml)(Xml.childxml_arg0"Entries")inmake?nextToken?entries()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"Token.of_jsoninletentries=field_mapjson__"Entries"ListPlaceIndexesResponseEntryList.of_jsoninmake?nextToken?entries()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend you upgrade to the Places API V2 unless you require Grab data. ListPlaceIndexes is part of a previous Amazon Location Service Places API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The Places API version 2 has a simplified interface that can be used without creating or managing place index resources. If you are using an Amazon Web Services SDK or the Amazon Web Services CLI, note that the Places API version 2 is found under geo-places or geo_places, not under location. Since Grab is not yet fully supported in Places API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Places V2 API Reference or the Developer Guide. Lists place index resources in your Amazon Web Services account."]moduleListPlaceIndexesRequest=structtypenonrect={maxResults:ListPlaceIndexesRequestMaxResultsInteger.toption[@ocaml.doc"An optional limit for the maximum number of results returned in a single call. Default value: 100"];nextToken:Token.toption[@ocaml.doc"The pagination token specifying which page of results to return in the response. If no token is provided, the default page is the first page. Default value: null"]}letmake?maxResults=fun?nextToken->fun()->{maxResults;nextToken}letto_valuex=structure_to_value[("MaxResults",(Option.mapx.maxResults~f:ListPlaceIndexesRequestMaxResultsInteger.to_value));("NextToken",(Option.mapx.nextToken~f:Token.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:Token.of_xml)(Xml.childxml_arg0"NextToken")inletmaxResults=(Option.map~f:ListPlaceIndexesRequestMaxResultsInteger.of_xml)(Xml.childxml_arg0"MaxResults")inmake?nextToken?maxResults()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"Token.of_jsoninletmaxResults=field_mapjson__"MaxResults"ListPlaceIndexesRequestMaxResultsInteger.of_jsoninmake?nextToken?maxResults()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend you upgrade to the Places API V2 unless you require Grab data. ListPlaceIndexes is part of a previous Amazon Location Service Places API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The Places API version 2 has a simplified interface that can be used without creating or managing place index resources. If you are using an Amazon Web Services SDK or the Amazon Web Services CLI, note that the Places API version 2 is found under geo-places or geo_places, not under location. Since Grab is not yet fully supported in Places API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Places V2 API Reference or the Developer Guide. Lists place index resources in your Amazon Web Services account."]moduleListMapsResponse=structtypenonrect={entries:ListMapsResponseEntryList.toption[@ocaml.doc"Contains a list of maps in your Amazon Web Services account"];nextToken:Token.toption[@ocaml.doc"A pagination token indicating there are additional pages available. You can use the token in a following request to fetch the next set of results."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?entries=fun?nextToken->fun()->{entries;nextToken}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Entries",(Option.mapx.entries~f:ListMapsResponseEntryList.to_value));("NextToken",(Option.mapx.nextToken~f:Token.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:Token.of_xml)(Xml.childxml_arg0"NextToken")inletentries=(Option.map~f:ListMapsResponseEntryList.of_xml)(Xml.childxml_arg0"Entries")inmake?nextToken?entries()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"Token.of_jsoninletentries=field_mapjson__"Entries"ListMapsResponseEntryList.of_jsoninmake?nextToken?entries()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend upgrading to the Maps API V2 unless you require Grab data. ListMaps is part of a previous Amazon Location Service Maps API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The Maps API version 2 has a simplified interface that can be used without creating or managing map resources. If you are using an AWS SDK or the AWS CLI, note that the Maps API version 2 is found under geo-maps or geo_maps, not under location. Since Grab is not yet fully supported in Maps API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Maps V2 API Reference or the Developer Guide. Lists map resources in your Amazon Web Services account."]moduleListMapsRequest=structtypenonrect={maxResults:ListMapsRequestMaxResultsInteger.toption[@ocaml.doc"An optional limit for the number of resources returned in a single call. Default value: 100"];nextToken:Token.toption[@ocaml.doc"The pagination token specifying which page of results to return in the response. If no token is provided, the default page is the first page. Default value: null"]}letmake?maxResults=fun?nextToken->fun()->{maxResults;nextToken}letto_valuex=structure_to_value[("MaxResults",(Option.mapx.maxResults~f:ListMapsRequestMaxResultsInteger.to_value));("NextToken",(Option.mapx.nextToken~f:Token.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:Token.of_xml)(Xml.childxml_arg0"NextToken")inletmaxResults=(Option.map~f:ListMapsRequestMaxResultsInteger.of_xml)(Xml.childxml_arg0"MaxResults")inmake?nextToken?maxResults()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"Token.of_jsoninletmaxResults=field_mapjson__"MaxResults"ListMapsRequestMaxResultsInteger.of_jsoninmake?nextToken?maxResults()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend upgrading to the Maps API V2 unless you require Grab data. ListMaps is part of a previous Amazon Location Service Maps API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The Maps API version 2 has a simplified interface that can be used without creating or managing map resources. If you are using an AWS SDK or the AWS CLI, note that the Maps API version 2 is found under geo-maps or geo_maps, not under location. Since Grab is not yet fully supported in Maps API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Maps V2 API Reference or the Developer Guide. Lists map resources in your Amazon Web Services account."]moduleListKeysResponse=structtypenonrect={entries:ListKeysResponseEntryList.toption[@ocaml.doc"Contains API key resources in your Amazon Web Services account. Details include API key name, allowed referers and timestamp for when the API key will expire."];nextToken:Token.toption[@ocaml.doc"A pagination token indicating there are additional pages available. You can use the token in a following request to fetch the next set of results."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?entries=fun?nextToken->fun()->{entries;nextToken}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Entries",(Option.mapx.entries~f:ListKeysResponseEntryList.to_value));("NextToken",(Option.mapx.nextToken~f:Token.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:Token.of_xml)(Xml.childxml_arg0"NextToken")inletentries=(Option.map~f:ListKeysResponseEntryList.of_xml)(Xml.childxml_arg0"Entries")inmake?nextToken?entries()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"Token.of_jsoninletentries=field_mapjson__"Entries"ListKeysResponseEntryList.of_jsoninmake?nextToken?entries()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists API key resources in your Amazon Web Services account. For more information, see Use API keys to authenticate in the Amazon Location Service Developer Guide."]moduleListKeysRequest=structtypenonrect={maxResults:ListKeysRequestMaxResultsInteger.toption[@ocaml.doc"An optional limit for the number of resources returned in a single call. Default value: 100"];nextToken:Token.toption[@ocaml.doc"The pagination token specifying which page of results to return in the response. If no token is provided, the default page is the first page. Default value: null"];filter:ApiKeyFilter.toption[@ocaml.doc"Optionally filter the list to only Active or Expired API keys."]}letmake?maxResults=fun?nextToken->fun?filter->fun()->{maxResults;nextToken;filter}letto_valuex=structure_to_value[("MaxResults",(Option.mapx.maxResults~f:ListKeysRequestMaxResultsInteger.to_value));("NextToken",(Option.mapx.nextToken~f:Token.to_value));("Filter",(Option.mapx.filter~f:ApiKeyFilter.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letfilter=(Option.map~f:ApiKeyFilter.of_xml)(Xml.childxml_arg0"Filter")inletnextToken=(Option.map~f:Token.of_xml)(Xml.childxml_arg0"NextToken")inletmaxResults=(Option.map~f:ListKeysRequestMaxResultsInteger.of_xml)(Xml.childxml_arg0"MaxResults")inmake?filter?nextToken?maxResults()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letfilter=field_mapjson__"Filter"ApiKeyFilter.of_jsoninletnextToken=field_mapjson__"NextToken"Token.of_jsoninletmaxResults=field_mapjson__"MaxResults"ListKeysRequestMaxResultsInteger.of_jsoninmake?filter?nextToken?maxResults()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists API key resources in your Amazon Web Services account. For more information, see Use API keys to authenticate in the Amazon Location Service Developer Guide."]moduleListJobsResponse=structtypenonrect={entries:ListJobsResponseEntryList.toption[@ocaml.doc"List of jobs in your Amazon Web Services account."];nextToken:LargeToken.toption[@ocaml.doc"Token for retrieving the next page (present if more results available)."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?entries=fun?nextToken->fun()->{entries;nextToken}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Entries",(Option.mapx.entries~f:ListJobsResponseEntryList.to_value));("NextToken",(Option.mapx.nextToken~f:LargeToken.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:LargeToken.of_xml)(Xml.childxml_arg0"NextToken")inletentries=(Option.map~f:ListJobsResponseEntryList.of_xml)(Xml.childxml_arg0"Entries")inmake?nextToken?entries()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"LargeToken.of_jsoninletentries=field_mapjson__"Entries"ListJobsResponseEntryList.of_jsoninmake?nextToken?entries()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"ListJobs retrieves a list of jobs with optional filtering and pagination support. For more information, see Job concepts in the Amazon Location Service Developer Guide."]moduleListJobsRequest=structtypenonrect={filter:JobsFilter.toption[@ocaml.doc"An optional structure containing criteria by which to filter job results."];maxResults:ListJobsRequestMaxResultsInteger.toption[@ocaml.doc"Maximum number of jobs to return."];nextToken:LargeToken.toption[@ocaml.doc"The pagination token specifying which page of results to return in the response. If no token is provided, the default page is the first page."]}letmake?filter=fun?maxResults->fun?nextToken->fun()->{filter;maxResults;nextToken}letto_valuex=structure_to_value[("Filter",(Option.mapx.filter~f:JobsFilter.to_value));("MaxResults",(Option.mapx.maxResults~f:ListJobsRequestMaxResultsInteger.to_value));("NextToken",(Option.mapx.nextToken~f:LargeToken.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:LargeToken.of_xml)(Xml.childxml_arg0"NextToken")inletmaxResults=(Option.map~f:ListJobsRequestMaxResultsInteger.of_xml)(Xml.childxml_arg0"MaxResults")inletfilter=(Option.map~f:JobsFilter.of_xml)(Xml.childxml_arg0"Filter")inmake?nextToken?maxResults?filter()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"LargeToken.of_jsoninletmaxResults=field_mapjson__"MaxResults"ListJobsRequestMaxResultsInteger.of_jsoninletfilter=field_mapjson__"Filter"JobsFilter.of_jsoninmake?nextToken?maxResults?filter()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"ListJobs retrieves a list of jobs with optional filtering and pagination support. For more information, see Job concepts in the Amazon Location Service Developer Guide."]moduleListGeofencesResponse=structtypenonrect={entries:ListGeofenceResponseEntryList.toption[@ocaml.doc"Contains a list of geofences stored in the geofence collection."];nextToken:LargeToken.toption[@ocaml.doc"A pagination token indicating there are additional pages available. You can use the token in a following request to fetch the next set of results."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?entries=fun?nextToken->fun()->{entries;nextToken}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Entries",(Option.mapx.entries~f:ListGeofenceResponseEntryList.to_value));("NextToken",(Option.mapx.nextToken~f:LargeToken.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:LargeToken.of_xml)(Xml.childxml_arg0"NextToken")inletentries=(Option.map~f:ListGeofenceResponseEntryList.of_xml)(Xml.childxml_arg0"Entries")inmake?nextToken?entries()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"LargeToken.of_jsoninletentries=field_mapjson__"Entries"ListGeofenceResponseEntryList.of_jsoninmake?nextToken?entries()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists geofences stored in a given geofence collection."]moduleListGeofencesRequest=structtypenonrect={collectionName:ResourceName.t[@ocaml.doc"The name of the geofence collection storing the list of geofences."];nextToken:LargeToken.toption[@ocaml.doc"The pagination token specifying which page of results to return in the response. If no token is provided, the default page is the first page. Default value: null"];maxResults:ListGeofencesRequestMaxResultsInteger.toption[@ocaml.doc"An optional limit for the number of geofences returned in a single call. Default value: 100"]}letcontext_="ListGeofencesRequest"letmake?nextToken=fun?maxResults->fun~collectionName->fun()->{nextToken;maxResults;collectionName}letto_valuex=structure_to_value[("CollectionName",(Some(ResourceName.to_valuex.collectionName)));("NextToken",(Option.mapx.nextToken~f:LargeToken.to_value));("MaxResults",(Option.mapx.maxResults~f:ListGeofencesRequestMaxResultsInteger.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmaxResults=(Option.map~f:ListGeofencesRequestMaxResultsInteger.of_xml)(Xml.childxml_arg0"MaxResults")inletnextToken=(Option.map~f:LargeToken.of_xml)(Xml.childxml_arg0"NextToken")inletcollectionName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"CollectionName")inmake?maxResults?nextToken~collectionName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmaxResults=field_mapjson__"MaxResults"ListGeofencesRequestMaxResultsInteger.of_jsoninletnextToken=field_mapjson__"NextToken"LargeToken.of_jsoninletcollectionName=field_map_exnjson__"CollectionName"ResourceName.of_jsoninmake?maxResults?nextToken~collectionName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists geofences stored in a given geofence collection."]moduleListGeofenceCollectionsResponse=structtypenonrect={entries:ListGeofenceCollectionsResponseEntryList.toption[@ocaml.doc"Lists the geofence collections that exist in your Amazon Web Services account."];nextToken:Token.toption[@ocaml.doc"A pagination token indicating there are additional pages available. You can use the token in a following request to fetch the next set of results."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?entries=fun?nextToken->fun()->{entries;nextToken}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Entries",(Option.mapx.entries~f:ListGeofenceCollectionsResponseEntryList.to_value));("NextToken",(Option.mapx.nextToken~f:Token.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:Token.of_xml)(Xml.childxml_arg0"NextToken")inletentries=(Option.map~f:ListGeofenceCollectionsResponseEntryList.of_xml)(Xml.childxml_arg0"Entries")inmake?nextToken?entries()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"Token.of_jsoninletentries=field_mapjson__"Entries"ListGeofenceCollectionsResponseEntryList.of_jsoninmake?nextToken?entries()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists geofence collections in your Amazon Web Services account."]moduleListGeofenceCollectionsRequest=structtypenonrect={maxResults:ListGeofenceCollectionsRequestMaxResultsInteger.toption[@ocaml.doc"An optional limit for the number of resources returned in a single call. Default value: 100"];nextToken:Token.toption[@ocaml.doc"The pagination token specifying which page of results to return in the response. If no token is provided, the default page is the first page. Default value: null"]}letmake?maxResults=fun?nextToken->fun()->{maxResults;nextToken}letto_valuex=structure_to_value[("MaxResults",(Option.mapx.maxResults~f:ListGeofenceCollectionsRequestMaxResultsInteger.to_value));("NextToken",(Option.mapx.nextToken~f:Token.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:Token.of_xml)(Xml.childxml_arg0"NextToken")inletmaxResults=(Option.map~f:ListGeofenceCollectionsRequestMaxResultsInteger.of_xml)(Xml.childxml_arg0"MaxResults")inmake?nextToken?maxResults()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"Token.of_jsoninletmaxResults=field_mapjson__"MaxResults"ListGeofenceCollectionsRequestMaxResultsInteger.of_jsoninmake?nextToken?maxResults()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists geofence collections in your Amazon Web Services account."]moduleListDevicePositionsResponse=structtypenonrect={entries:ListDevicePositionsResponseEntryList.toption[@ocaml.doc"Contains details about each device's last known position."];nextToken:Token.toption[@ocaml.doc"A pagination token indicating there are additional pages available. You can use the token in a following request to fetch the next set of results."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?entries=fun?nextToken->fun()->{entries;nextToken}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Entries",(Option.mapx.entries~f:ListDevicePositionsResponseEntryList.to_value));("NextToken",(Option.mapx.nextToken~f:Token.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:Token.of_xml)(Xml.childxml_arg0"NextToken")inletentries=(Option.map~f:ListDevicePositionsResponseEntryList.of_xml)(Xml.childxml_arg0"Entries")inmake?nextToken?entries()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"Token.of_jsoninletentries=field_mapjson__"Entries"ListDevicePositionsResponseEntryList.of_jsoninmake?nextToken?entries()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A batch request to retrieve all device positions."]moduleListDevicePositionsRequest=structtypenonrect={trackerName:ResourceName.t[@ocaml.doc"The tracker resource containing the requested devices."];maxResults:ListDevicePositionsRequestMaxResultsInteger.toption[@ocaml.doc"An optional limit for the number of entries returned in a single call. Default value: 100"];nextToken:Token.toption[@ocaml.doc"The pagination token specifying which page of results to return in the response. If no token is provided, the default page is the first page. Default value: null"];filterGeometry:TrackingFilterGeometry.toption[@ocaml.doc"The geometry used to filter device positions."]}letcontext_="ListDevicePositionsRequest"letmake?maxResults=fun?nextToken->fun?filterGeometry->fun~trackerName->fun()->{maxResults;nextToken;filterGeometry;trackerName}letto_valuex=structure_to_value[("TrackerName",(Some(ResourceName.to_valuex.trackerName)));("MaxResults",(Option.mapx.maxResults~f:ListDevicePositionsRequestMaxResultsInteger.to_value));("NextToken",(Option.mapx.nextToken~f:Token.to_value));("FilterGeometry",(Option.mapx.filterGeometry~f:TrackingFilterGeometry.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letfilterGeometry=(Option.map~f:TrackingFilterGeometry.of_xml)(Xml.childxml_arg0"FilterGeometry")inletnextToken=(Option.map~f:Token.of_xml)(Xml.childxml_arg0"NextToken")inletmaxResults=(Option.map~f:ListDevicePositionsRequestMaxResultsInteger.of_xml)(Xml.childxml_arg0"MaxResults")inlettrackerName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"TrackerName")inmake?filterGeometry?nextToken?maxResults~trackerName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letfilterGeometry=field_mapjson__"FilterGeometry"TrackingFilterGeometry.of_jsoninletnextToken=field_mapjson__"NextToken"Token.of_jsoninletmaxResults=field_mapjson__"MaxResults"ListDevicePositionsRequestMaxResultsInteger.of_jsoninlettrackerName=field_map_exnjson__"TrackerName"ResourceName.of_jsoninmake?filterGeometry?nextToken?maxResults~trackerName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A batch request to retrieve all device positions."]moduleGetPlaceResponse=structtypenonrect={place:Place.toption[@ocaml.doc"Details about the result, such as its address and position."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?place=fun()->{place}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Place",(Option.mapx.place~f:Place.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letplace=(Option.map~f:Place.of_xml)(Xml.childxml_arg0"Place")inmake?place()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letplace=field_mapjson__"Place"Place.of_jsoninmake?place()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend you upgrade to the V2 GetPlace operation unless you require Grab data. This version of GetPlace is part of a previous Amazon Location Service Places API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). Version 2 of the GetPlace operation interoperates with the rest of the Places V2 API, while this version does not. If you are using an Amazon Web Services SDK or the Amazon Web Services CLI, note that the Places API version 2 is found under geo-places or geo_places, not under location. Since Grab is not yet fully supported in Places API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Places V2 API Reference or the Developer Guide. Finds a place by its unique ID. A PlaceId is returned by other search operations. A PlaceId is valid only if all of the following are the same in the original search request and the call to GetPlace. Customer Amazon Web Services account Amazon Web Services Region Data provider specified in the place index resource If your Place index resource is configured with Grab as your geolocation provider and Storage as Intended use, the GetPlace operation is unavailable. For more information, see AWS service terms."]moduleGetPlaceRequest=structtypenonrect={indexName:ResourceName.t[@ocaml.doc"The name of the place index resource that you want to use for the search."];placeId:PlaceId.t[@ocaml.doc"The identifier of the place to find."];language:LanguageTag.toption[@ocaml.doc"The preferred language used to return results. The value must be a valid BCP 47 language tag, for example, en for English. This setting affects the languages used in the results, but not the results themselves. If no language is specified, or not supported for a particular result, the partner automatically chooses a language for the result. For an example, we'll use the Greek language. You search for a location around Athens, Greece, with the language parameter set to en. The city in the results will most likely be returned as Athens. If you set the language parameter to el, for Greek, then the city in the results will more likely be returned as \206\145\206\184\206\174\206\189\206\177. If the data provider does not have a value for Greek, the result will be in a language that the provider does support."];key:ApiKey.toption[@ocaml.doc"The optional API key to authorize the request."]}letcontext_="GetPlaceRequest"letmake?language=fun?key->fun~indexName->fun~placeId->fun()->{language;key;indexName;placeId}letto_valuex=structure_to_value[("IndexName",(Some(ResourceName.to_valuex.indexName)));("PlaceId",(Some(PlaceId.to_valuex.placeId)));("language",(Option.mapx.language~f:LanguageTag.to_value));("key",(Option.mapx.key~f:ApiKey.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letkey=(Option.map~f:ApiKey.of_xml)(Xml.childxml_arg0"key")inletlanguage=(Option.map~f:LanguageTag.of_xml)(Xml.childxml_arg0"language")inletplaceId=PlaceId.of_xml(Xml.child_exn~context:context_xml_arg0"PlaceId")inletindexName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"IndexName")inmake?key?language~placeId~indexName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letkey=field_mapjson__"Key"ApiKey.of_jsoninletlanguage=field_mapjson__"Language"LanguageTag.of_jsoninletplaceId=field_map_exnjson__"PlaceId"PlaceId.of_jsoninletindexName=field_map_exnjson__"IndexName"ResourceName.of_jsoninmake?key?language~placeId~indexName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend you upgrade to the V2 GetPlace operation unless you require Grab data. This version of GetPlace is part of a previous Amazon Location Service Places API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). Version 2 of the GetPlace operation interoperates with the rest of the Places V2 API, while this version does not. If you are using an Amazon Web Services SDK or the Amazon Web Services CLI, note that the Places API version 2 is found under geo-places or geo_places, not under location. Since Grab is not yet fully supported in Places API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Places V2 API Reference or the Developer Guide. Finds a place by its unique ID. A PlaceId is returned by other search operations. A PlaceId is valid only if all of the following are the same in the original search request and the call to GetPlace. Customer Amazon Web Services account Amazon Web Services Region Data provider specified in the place index resource If your Place index resource is configured with Grab as your geolocation provider and Storage as Intended use, the GetPlace operation is unavailable. For more information, see AWS service terms."]moduleGetMapTileResponse=structtypenonrect={blob:Blob.toption[@ocaml.doc"Contains Mapbox Vector Tile (MVT) data."];contentType:String_.toption[@ocaml.doc"The map tile's content type. For example, application/vnd.mapbox-vector-tile."];cacheControl:String_.toption[@ocaml.doc"The HTTP Cache-Control directive for the value."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?blob=fun?contentType->fun?cacheControl->fun()->{blob;contentType;cacheControl}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letof_header_and_body=((fun(xs,pipe)->make?blob:(Somepipe)?contentType:(Option.map((List.Assoc.find~equal:String.Caseless.equal)xs"Content-Type")~f:String_.of_string)?cacheControl:(Option.map((List.Assoc.find~equal:String.Caseless.equal)xs"Cache-Control")~f:String_.of_string)())[@warning"-27"])letto_valuex=structure_to_value[("Blob",(Option.mapx.blob~f:Blob.to_value));("Content-Type",(Option.mapx.contentType~f:String_.to_value));("Cache-Control",(Option.mapx.cacheControl~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcacheControl=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"Cache-Control")inletcontentType=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"Content-Type")inletblob=(Option.map~f:Blob.of_xml)(Xml.childxml_arg0"Blob")inmake?cacheControl?contentType?blob()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcacheControl=field_mapjson__"CacheControl"String_.of_jsoninletcontentType=field_mapjson__"ContentType"String_.of_jsoninletblob=field_mapjson__"Blob"Blob.of_jsoninmake?cacheControl?contentType?blob()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend upgrading to GetTile unless you require Grab data. GetMapTile is part of a previous Amazon Location Service Maps API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The version 2 GetTile operation gives a better user experience and is compatible with the remainder of the V2 Maps API. If you are using an AWS SDK or the AWS CLI, note that the Maps API version 2 is found under geo-maps or geo_maps, not under location. Since Grab is not yet fully supported in Maps API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Maps V2 API Reference or the Developer Guide. Retrieves a vector data tile from the map resource. Map tiles are used by clients to render a map. they're addressed using a grid arrangement with an X coordinate, Y coordinate, and Z (zoom) level. The origin (0, 0) is the top left of the map. Increasing the zoom level by 1 doubles both the X and Y dimensions, so a tile containing data for the entire world at (0/0/0) will be split into 4 tiles at zoom 1 (1/0/0, 1/0/1, 1/1/0, 1/1/1)."]moduleGetMapTileRequest=structtypenonrect={mapName:ResourceName.t[@ocaml.doc"The map resource to retrieve the map tiles from."];z:GetMapTileRequestZString.t[@ocaml.doc"The zoom value for the map tile."];x:GetMapTileRequestXString.t[@ocaml.doc"The X axis value for the map tile."];y:GetMapTileRequestYString.t[@ocaml.doc"The Y axis value for the map tile."];key:ApiKey.toption[@ocaml.doc"The optional API key to authorize the request."]}letcontext_="GetMapTileRequest"letmake?key=fun~mapName->fun~z->fun~x->fun~y->fun()->{key;mapName;z;x;y}letto_valuex=structure_to_value[("MapName",(Some(ResourceName.to_valuex.mapName)));("Z",(Some(GetMapTileRequestZString.to_valuex.z)));("X",(Some(GetMapTileRequestXString.to_valuex.x)));("Y",(Some(GetMapTileRequestYString.to_valuex.y)));("key",(Option.mapx.key~f:ApiKey.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letkey=(Option.map~f:ApiKey.of_xml)(Xml.childxml_arg0"key")inlety=GetMapTileRequestYString.of_xml(Xml.child_exn~context:context_xml_arg0"Y")inletx=GetMapTileRequestXString.of_xml(Xml.child_exn~context:context_xml_arg0"X")inletz=GetMapTileRequestZString.of_xml(Xml.child_exn~context:context_xml_arg0"Z")inletmapName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"MapName")inmake?key~y~x~z~mapName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letkey=field_mapjson__"Key"ApiKey.of_jsoninlety=field_map_exnjson__"Y"GetMapTileRequestYString.of_jsoninletx=field_map_exnjson__"X"GetMapTileRequestXString.of_jsoninletz=field_map_exnjson__"Z"GetMapTileRequestZString.of_jsoninletmapName=field_map_exnjson__"MapName"ResourceName.of_jsoninmake?key~y~x~z~mapName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend upgrading to GetTile unless you require Grab data. GetMapTile is part of a previous Amazon Location Service Maps API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The version 2 GetTile operation gives a better user experience and is compatible with the remainder of the V2 Maps API. If you are using an AWS SDK or the AWS CLI, note that the Maps API version 2 is found under geo-maps or geo_maps, not under location. Since Grab is not yet fully supported in Maps API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Maps V2 API Reference or the Developer Guide. Retrieves a vector data tile from the map resource. Map tiles are used by clients to render a map. they're addressed using a grid arrangement with an X coordinate, Y coordinate, and Z (zoom) level. The origin (0, 0) is the top left of the map. Increasing the zoom level by 1 doubles both the X and Y dimensions, so a tile containing data for the entire world at (0/0/0) will be split into 4 tiles at zoom 1 (1/0/0, 1/0/1, 1/1/0, 1/1/1)."]moduleGetMapStyleDescriptorResponse=structtypenonrect={blob:Blob.toption[@ocaml.doc"Contains the body of the style descriptor."];contentType:String_.toption[@ocaml.doc"The style descriptor's content type. For example, application/json."];cacheControl:String_.toption[@ocaml.doc"The HTTP Cache-Control directive for the value."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?blob=fun?contentType->fun?cacheControl->fun()->{blob;contentType;cacheControl}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letof_header_and_body=((fun(xs,pipe)->make?blob:(Somepipe)?contentType:(Option.map((List.Assoc.find~equal:String.Caseless.equal)xs"Content-Type")~f:String_.of_string)?cacheControl:(Option.map((List.Assoc.find~equal:String.Caseless.equal)xs"Cache-Control")~f:String_.of_string)())[@warning"-27"])letto_valuex=structure_to_value[("Blob",(Option.mapx.blob~f:Blob.to_value));("Content-Type",(Option.mapx.contentType~f:String_.to_value));("Cache-Control",(Option.mapx.cacheControl~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcacheControl=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"Cache-Control")inletcontentType=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"Content-Type")inletblob=(Option.map~f:Blob.of_xml)(Xml.childxml_arg0"Blob")inmake?cacheControl?contentType?blob()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcacheControl=field_mapjson__"CacheControl"String_.of_jsoninletcontentType=field_mapjson__"ContentType"String_.of_jsoninletblob=field_mapjson__"Blob"Blob.of_jsoninmake?cacheControl?contentType?blob()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend upgrading to GetStyleDescriptor unless you require Grab data. GetMapStyleDescriptor is part of a previous Amazon Location Service Maps API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The version 2 GetStyleDescriptor operation gives a better user experience and is compatible with the remainder of the V2 Maps API. If you are using an AWS SDK or the AWS CLI, note that the Maps API version 2 is found under geo-maps or geo_maps, not under location. Since Grab is not yet fully supported in Maps API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Maps V2 API Reference or the Developer Guide. Retrieves the map style descriptor from a map resource. The style descriptor contains speci\239\172\129cations on how features render on a map. For example, what data to display, what order to display the data in, and the style for the data. Style descriptors follow the Mapbox Style Specification."]moduleGetMapStyleDescriptorRequest=structtypenonrect={mapName:ResourceName.t[@ocaml.doc"The map resource to retrieve the style descriptor from."];key:ApiKey.toption[@ocaml.doc"The optional API key to authorize the request."]}letcontext_="GetMapStyleDescriptorRequest"letmake?key=fun~mapName->fun()->{key;mapName}letto_valuex=structure_to_value[("MapName",(Some(ResourceName.to_valuex.mapName)));("key",(Option.mapx.key~f:ApiKey.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letkey=(Option.map~f:ApiKey.of_xml)(Xml.childxml_arg0"key")inletmapName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"MapName")inmake?key~mapName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letkey=field_mapjson__"Key"ApiKey.of_jsoninletmapName=field_map_exnjson__"MapName"ResourceName.of_jsoninmake?key~mapName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend upgrading to GetStyleDescriptor unless you require Grab data. GetMapStyleDescriptor is part of a previous Amazon Location Service Maps API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The version 2 GetStyleDescriptor operation gives a better user experience and is compatible with the remainder of the V2 Maps API. If you are using an AWS SDK or the AWS CLI, note that the Maps API version 2 is found under geo-maps or geo_maps, not under location. Since Grab is not yet fully supported in Maps API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Maps V2 API Reference or the Developer Guide. Retrieves the map style descriptor from a map resource. The style descriptor contains speci\239\172\129cations on how features render on a map. For example, what data to display, what order to display the data in, and the style for the data. Style descriptors follow the Mapbox Style Specification."]moduleGetMapSpritesResponse=structtypenonrect={blob:Blob.toption[@ocaml.doc"Contains the body of the sprite sheet or JSON offset \239\172\129le."];contentType:String_.toption[@ocaml.doc"The content type of the sprite sheet and offsets. For example, the sprite sheet content type is image/png, and the sprite offset JSON document is application/json."];cacheControl:String_.toption[@ocaml.doc"The HTTP Cache-Control directive for the value."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?blob=fun?contentType->fun?cacheControl->fun()->{blob;contentType;cacheControl}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letof_header_and_body=((fun(xs,pipe)->make?blob:(Somepipe)?contentType:(Option.map((List.Assoc.find~equal:String.Caseless.equal)xs"Content-Type")~f:String_.of_string)?cacheControl:(Option.map((List.Assoc.find~equal:String.Caseless.equal)xs"Cache-Control")~f:String_.of_string)())[@warning"-27"])letto_valuex=structure_to_value[("Blob",(Option.mapx.blob~f:Blob.to_value));("Content-Type",(Option.mapx.contentType~f:String_.to_value));("Cache-Control",(Option.mapx.cacheControl~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcacheControl=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"Cache-Control")inletcontentType=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"Content-Type")inletblob=(Option.map~f:Blob.of_xml)(Xml.childxml_arg0"Blob")inmake?cacheControl?contentType?blob()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcacheControl=field_mapjson__"CacheControl"String_.of_jsoninletcontentType=field_mapjson__"ContentType"String_.of_jsoninletblob=field_mapjson__"Blob"Blob.of_jsoninmake?cacheControl?contentType?blob()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend upgrading to GetSprites unless you require Grab data. GetMapSprites is part of a previous Amazon Location Service Maps API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The version 2 GetSprites operation gives a better user experience and is compatible with the remainder of the V2 Maps API. If you are using an AWS SDK or the AWS CLI, note that the Maps API version 2 is found under geo-maps or geo_maps, not under location. Since Grab is not yet fully supported in Maps API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Maps V2 API Reference or the Developer Guide. Retrieves the sprite sheet corresponding to a map resource. The sprite sheet is a PNG image paired with a JSON document describing the offsets of individual icons that will be displayed on a rendered map."]moduleGetMapSpritesRequest=structtypenonrect={mapName:ResourceName.t[@ocaml.doc"The map resource associated with the sprite \239\172\129le."];fileName:GetMapSpritesRequestFileNameString.t[@ocaml.doc"The name of the sprite \239\172\129le. Use the following \239\172\129le names for the sprite sheet: sprites.png sprites\\@2x.png for high pixel density displays For the JSON document containing image offsets. Use the following \239\172\129le names: sprites.json sprites\\@2x.json for high pixel density displays"];key:ApiKey.toption[@ocaml.doc"The optional API key to authorize the request."]}letcontext_="GetMapSpritesRequest"letmake?key=fun~mapName->fun~fileName->fun()->{key;mapName;fileName}letto_valuex=structure_to_value[("MapName",(Some(ResourceName.to_valuex.mapName)));("FileName",(Some(GetMapSpritesRequestFileNameString.to_valuex.fileName)));("key",(Option.mapx.key~f:ApiKey.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letkey=(Option.map~f:ApiKey.of_xml)(Xml.childxml_arg0"key")inletfileName=GetMapSpritesRequestFileNameString.of_xml(Xml.child_exn~context:context_xml_arg0"FileName")inletmapName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"MapName")inmake?key~fileName~mapName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letkey=field_mapjson__"Key"ApiKey.of_jsoninletfileName=field_map_exnjson__"FileName"GetMapSpritesRequestFileNameString.of_jsoninletmapName=field_map_exnjson__"MapName"ResourceName.of_jsoninmake?key~fileName~mapName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend upgrading to GetSprites unless you require Grab data. GetMapSprites is part of a previous Amazon Location Service Maps API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The version 2 GetSprites operation gives a better user experience and is compatible with the remainder of the V2 Maps API. If you are using an AWS SDK or the AWS CLI, note that the Maps API version 2 is found under geo-maps or geo_maps, not under location. Since Grab is not yet fully supported in Maps API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Maps V2 API Reference or the Developer Guide. Retrieves the sprite sheet corresponding to a map resource. The sprite sheet is a PNG image paired with a JSON document describing the offsets of individual icons that will be displayed on a rendered map."]moduleGetMapGlyphsResponse=structtypenonrect={blob:Blob.toption[@ocaml.doc"The glyph, as binary blob."];contentType:String_.toption[@ocaml.doc"The map glyph content type. For example, application/octet-stream."];cacheControl:String_.toption[@ocaml.doc"The HTTP Cache-Control directive for the value."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?blob=fun?contentType->fun?cacheControl->fun()->{blob;contentType;cacheControl}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letof_header_and_body=((fun(xs,pipe)->make?blob:(Somepipe)?contentType:(Option.map((List.Assoc.find~equal:String.Caseless.equal)xs"Content-Type")~f:String_.of_string)?cacheControl:(Option.map((List.Assoc.find~equal:String.Caseless.equal)xs"Cache-Control")~f:String_.of_string)())[@warning"-27"])letto_valuex=structure_to_value[("Blob",(Option.mapx.blob~f:Blob.to_value));("Content-Type",(Option.mapx.contentType~f:String_.to_value));("Cache-Control",(Option.mapx.cacheControl~f:String_.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcacheControl=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"Cache-Control")inletcontentType=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"Content-Type")inletblob=(Option.map~f:Blob.of_xml)(Xml.childxml_arg0"Blob")inmake?cacheControl?contentType?blob()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcacheControl=field_mapjson__"CacheControl"String_.of_jsoninletcontentType=field_mapjson__"ContentType"String_.of_jsoninletblob=field_mapjson__"Blob"Blob.of_jsoninmake?cacheControl?contentType?blob()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend upgrading to GetGlyphs unless you require Grab data. GetMapGlyphs is part of a previous Amazon Location Service Maps API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The version 2 GetGlyphs operation gives a better user experience and is compatible with the remainder of the V2 Maps API. If you are using an AWS SDK or the AWS CLI, note that the Maps API version 2 is found under geo-maps or geo_maps, not under location. Since Grab is not yet fully supported in Maps API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Maps V2 API Reference or the Developer Guide. Retrieves glyphs used to display labels on a map."]moduleGetMapGlyphsRequest=structtypenonrect={mapName:ResourceName.t[@ocaml.doc"The map resource associated with the glyph \239\172\129le."];fontStack:String_.t[@ocaml.doc"A comma-separated list of fonts to load glyphs from in order of preference. For example, Noto Sans Regular, Arial Unicode. Valid font stacks for Esri styles: VectorEsriDarkGrayCanvas \226\128\147 Ubuntu Medium Italic | Ubuntu Medium | Ubuntu Italic | Ubuntu Regular | Ubuntu Bold VectorEsriLightGrayCanvas \226\128\147 Ubuntu Italic | Ubuntu Regular | Ubuntu Light | Ubuntu Bold VectorEsriTopographic \226\128\147 Noto Sans Italic | Noto Sans Regular | Noto Sans Bold | Noto Serif Regular | Roboto Condensed Light Italic VectorEsriStreets \226\128\147 Arial Regular | Arial Italic | Arial Bold VectorEsriNavigation \226\128\147 Arial Regular | Arial Italic | Arial Bold Valid font stacks for HERE Technologies styles: VectorHereContrast \226\128\147 Fira GO Regular | Fira GO Bold VectorHereExplore, VectorHereExploreTruck, HybridHereExploreSatellite \226\128\147 Fira GO Italic | Fira GO Map | Fira GO Map Bold | Noto Sans CJK JP Bold | Noto Sans CJK JP Light | Noto Sans CJK JP Regular Valid font stacks for GrabMaps styles: VectorGrabStandardLight, VectorGrabStandardDark \226\128\147 Noto Sans Regular | Noto Sans Medium | Noto Sans Bold Valid font stacks for Open Data styles: VectorOpenDataStandardLight, VectorOpenDataStandardDark, VectorOpenDataVisualizationLight, VectorOpenDataVisualizationDark \226\128\147 Amazon Ember Regular,Noto Sans Regular | Amazon Ember Bold,Noto Sans Bold | Amazon Ember Medium,Noto Sans Medium | Amazon Ember Regular Italic,Noto Sans Italic | Amazon Ember Condensed RC Regular,Noto Sans Regular | Amazon Ember Condensed RC Bold,Noto Sans Bold | Amazon Ember Regular,Noto Sans Regular,Noto Sans Arabic Regular | Amazon Ember Condensed RC Bold,Noto Sans Bold,Noto Sans Arabic Condensed Bold | Amazon Ember Bold,Noto Sans Bold,Noto Sans Arabic Bold | Amazon Ember Regular Italic,Noto Sans Italic,Noto Sans Arabic Regular | Amazon Ember Condensed RC Regular,Noto Sans Regular,Noto Sans Arabic Condensed Regular | Amazon Ember Medium,Noto Sans Medium,Noto Sans Arabic Medium The fonts used by the Open Data map styles are combined fonts that use Amazon Ember for most glyphs but Noto Sans for glyphs unsupported by Amazon Ember."];fontUnicodeRange:GetMapGlyphsRequestFontUnicodeRangeString.t[@ocaml.doc"A Unicode range of characters to download glyphs for. Each response will contain 256 characters. For example, 0\226\128\147255 includes all characters from range U+0000 to 00FF. Must be aligned to multiples of 256."];key:ApiKey.toption[@ocaml.doc"The optional API key to authorize the request."]}letcontext_="GetMapGlyphsRequest"letmake?key=fun~mapName->fun~fontStack->fun~fontUnicodeRange->fun()->{key;mapName;fontStack;fontUnicodeRange}letto_valuex=structure_to_value[("MapName",(Some(ResourceName.to_valuex.mapName)));("FontStack",(Some(String_.to_valuex.fontStack)));("FontUnicodeRange",(Some(GetMapGlyphsRequestFontUnicodeRangeString.to_valuex.fontUnicodeRange)));("key",(Option.mapx.key~f:ApiKey.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letkey=(Option.map~f:ApiKey.of_xml)(Xml.childxml_arg0"key")inletfontUnicodeRange=GetMapGlyphsRequestFontUnicodeRangeString.of_xml(Xml.child_exn~context:context_xml_arg0"FontUnicodeRange")inletfontStack=String_.of_xml(Xml.child_exn~context:context_xml_arg0"FontStack")inletmapName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"MapName")inmake?key~fontUnicodeRange~fontStack~mapName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letkey=field_mapjson__"Key"ApiKey.of_jsoninletfontUnicodeRange=field_map_exnjson__"FontUnicodeRange"GetMapGlyphsRequestFontUnicodeRangeString.of_jsoninletfontStack=field_map_exnjson__"FontStack"String_.of_jsoninletmapName=field_map_exnjson__"MapName"ResourceName.of_jsoninmake?key~fontUnicodeRange~fontStack~mapName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend upgrading to GetGlyphs unless you require Grab data. GetMapGlyphs is part of a previous Amazon Location Service Maps API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The version 2 GetGlyphs operation gives a better user experience and is compatible with the remainder of the V2 Maps API. If you are using an AWS SDK or the AWS CLI, note that the Maps API version 2 is found under geo-maps or geo_maps, not under location. Since Grab is not yet fully supported in Maps API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Maps V2 API Reference or the Developer Guide. Retrieves glyphs used to display labels on a map."]moduleGetJobResponse=structtypenonrect={action:JobAction.toption[@ocaml.doc"Action performed by the job."];actionOptions:JobActionOptions.toption[@ocaml.doc"Additional options for configuring job action parameters."];createdAt:Timestamp.toption[@ocaml.doc"Job creation time in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sss."];endedAt:Timestamp.toption[@ocaml.doc"Job completion time in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sss. Only returned for jobs in a terminal status: Completed | Failed | Cancelled."];error:JobError.toption[@ocaml.doc"Error information if the job failed."];executionRoleArn:IamRoleArn.toption[@ocaml.doc"IAM role used for permissions when running the job."];inputOptions:JobInputOptions.toption[@ocaml.doc"Input configuration."];jobArn:GeoArn.toption[@ocaml.doc"Amazon Resource Name (ARN) of the specified job."];jobId:JobId.toption[@ocaml.doc"Unique job identifier."];name:ResourceName.toption[@ocaml.doc"Job name (if provided during creation)."];outputOptions:JobOutputOptions.toption[@ocaml.doc"Output configuration."];status:JobStatus.toption[@ocaml.doc"Current job status."];updatedAt:Timestamp.toption[@ocaml.doc"Last update time in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sss."];tags:TagMap.toption[@ocaml.doc"Tags and corresponding values associated with the specified job."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?action=fun?actionOptions->fun?createdAt->fun?endedAt->fun?error->fun?executionRoleArn->fun?inputOptions->fun?jobArn->fun?jobId->fun?name->fun?outputOptions->fun?status->fun?updatedAt->fun?tags->fun()->{action;actionOptions;createdAt;endedAt;error;executionRoleArn;inputOptions;jobArn;jobId;name;outputOptions;status;updatedAt;tags}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Action",(Option.mapx.action~f:JobAction.to_value));("ActionOptions",(Option.mapx.actionOptions~f:JobActionOptions.to_value));("CreatedAt",(Option.mapx.createdAt~f:Timestamp.to_value));("EndedAt",(Option.mapx.endedAt~f:Timestamp.to_value));("Error",(Option.mapx.error~f:JobError.to_value));("ExecutionRoleArn",(Option.mapx.executionRoleArn~f:IamRoleArn.to_value));("InputOptions",(Option.mapx.inputOptions~f:JobInputOptions.to_value));("JobArn",(Option.mapx.jobArn~f:GeoArn.to_value));("JobId",(Option.mapx.jobId~f:JobId.to_value));("Name",(Option.mapx.name~f:ResourceName.to_value));("OutputOptions",(Option.mapx.outputOptions~f:JobOutputOptions.to_value));("Status",(Option.mapx.status~f:JobStatus.to_value));("UpdatedAt",(Option.mapx.updatedAt~f:Timestamp.to_value));("Tags",(Option.mapx.tags~f:TagMap.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:TagMap.of_xml)(Xml.childxml_arg0"Tags")inletupdatedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"UpdatedAt")inletstatus=(Option.map~f:JobStatus.of_xml)(Xml.childxml_arg0"Status")inletoutputOptions=(Option.map~f:JobOutputOptions.of_xml)(Xml.childxml_arg0"OutputOptions")inletname=(Option.map~f:ResourceName.of_xml)(Xml.childxml_arg0"Name")inletjobId=(Option.map~f:JobId.of_xml)(Xml.childxml_arg0"JobId")inletjobArn=(Option.map~f:GeoArn.of_xml)(Xml.childxml_arg0"JobArn")inletinputOptions=(Option.map~f:JobInputOptions.of_xml)(Xml.childxml_arg0"InputOptions")inletexecutionRoleArn=(Option.map~f:IamRoleArn.of_xml)(Xml.childxml_arg0"ExecutionRoleArn")inleterror=(Option.map~f:JobError.of_xml)(Xml.childxml_arg0"Error")inletendedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"EndedAt")inletcreatedAt=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"CreatedAt")inletactionOptions=(Option.map~f:JobActionOptions.of_xml)(Xml.childxml_arg0"ActionOptions")inletaction=(Option.map~f:JobAction.of_xml)(Xml.childxml_arg0"Action")inmake?tags?updatedAt?status?outputOptions?name?jobId?jobArn?inputOptions?executionRoleArn?error?endedAt?createdAt?actionOptions?action()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"Tags"TagMap.of_jsoninletupdatedAt=field_mapjson__"UpdatedAt"Timestamp.of_jsoninletstatus=field_mapjson__"Status"JobStatus.of_jsoninletoutputOptions=field_mapjson__"OutputOptions"JobOutputOptions.of_jsoninletname=field_mapjson__"Name"ResourceName.of_jsoninletjobId=field_mapjson__"JobId"JobId.of_jsoninletjobArn=field_mapjson__"JobArn"GeoArn.of_jsoninletinputOptions=field_mapjson__"InputOptions"JobInputOptions.of_jsoninletexecutionRoleArn=field_mapjson__"ExecutionRoleArn"IamRoleArn.of_jsoninleterror=field_mapjson__"Error"JobError.of_jsoninletendedAt=field_mapjson__"EndedAt"Timestamp.of_jsoninletcreatedAt=field_mapjson__"CreatedAt"Timestamp.of_jsoninletactionOptions=field_mapjson__"ActionOptions"JobActionOptions.of_jsoninletaction=field_mapjson__"Action"JobAction.of_jsoninmake?tags?updatedAt?status?outputOptions?name?jobId?jobArn?inputOptions?executionRoleArn?error?endedAt?createdAt?actionOptions?action()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"GetJob retrieves detailed information about a specific job, including its current status, configuration, and error information if the job failed. For more information, see Job concepts in the Amazon Location Service Developer Guide."]moduleGetJobRequest=structtypenonrect={jobId:JobId.t[@ocaml.doc"The unique identifier of the job to retrieve."]}letcontext_="GetJobRequest"letmake~jobId=fun()->{jobId}letto_valuex=structure_to_value[("JobId",(Some(JobId.to_valuex.jobId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letjobId=JobId.of_xml(Xml.child_exn~context:context_xml_arg0"JobId")inmake~jobId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letjobId=field_map_exnjson__"JobId"JobId.of_jsoninmake~jobId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"GetJob retrieves detailed information about a specific job, including its current status, configuration, and error information if the job failed. For more information, see Job concepts in the Amazon Location Service Developer Guide."]moduleGetGeofenceResponse=structtypenonrect={geofenceId:Id.toption[@ocaml.doc"The geofence identifier."];geometry:GeofenceGeometry.toption[@ocaml.doc"Contains the geofence geometry details describing the position of the geofence. Can be a circle, a polygon, or a multipolygon."];status:String_.toption[@ocaml.doc"Identifies the state of the geofence. A geofence will hold one of the following states: ACTIVE \226\128\148 The geofence has been indexed by the system. PENDING \226\128\148 The geofence is being processed by the system. FAILED \226\128\148 The geofence failed to be indexed by the system. DELETED \226\128\148 The geofence has been deleted from the system index. DELETING \226\128\148 The geofence is being deleted from the system index."];createTime:Timestamp.toption[@ocaml.doc"The timestamp for when the geofence collection was created in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ"];updateTime:Timestamp.toption[@ocaml.doc"The timestamp for when the geofence collection was last updated in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ"];geofenceProperties:PropertyMap.toption[@ocaml.doc"User defined properties of the geofence. A property is a key-value pair stored with the geofence and added to any geofence event triggered with that geofence. Format: \"key\" : \"value\""]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?geofenceId=fun?geometry->fun?status->fun?createTime->fun?updateTime->fun?geofenceProperties->fun()->{geofenceId;geometry;status;createTime;updateTime;geofenceProperties}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("GeofenceId",(Option.mapx.geofenceId~f:Id.to_value));("Geometry",(Option.mapx.geometry~f:GeofenceGeometry.to_value));("Status",(Option.mapx.status~f:String_.to_value));("CreateTime",(Option.mapx.createTime~f:Timestamp.to_value));("UpdateTime",(Option.mapx.updateTime~f:Timestamp.to_value));("GeofenceProperties",(Option.mapx.geofenceProperties~f:PropertyMap.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letgeofenceProperties=(Option.map~f:PropertyMap.of_xml)(Xml.childxml_arg0"GeofenceProperties")inletupdateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"UpdateTime")inletcreateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"CreateTime")inletstatus=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"Status")inletgeometry=(Option.map~f:GeofenceGeometry.of_xml)(Xml.childxml_arg0"Geometry")inletgeofenceId=(Option.map~f:Id.of_xml)(Xml.childxml_arg0"GeofenceId")inmake?geofenceProperties?updateTime?createTime?status?geometry?geofenceId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letgeofenceProperties=field_mapjson__"GeofenceProperties"PropertyMap.of_jsoninletupdateTime=field_mapjson__"UpdateTime"Timestamp.of_jsoninletcreateTime=field_mapjson__"CreateTime"Timestamp.of_jsoninletstatus=field_mapjson__"Status"String_.of_jsoninletgeometry=field_mapjson__"Geometry"GeofenceGeometry.of_jsoninletgeofenceId=field_mapjson__"GeofenceId"Id.of_jsoninmake?geofenceProperties?updateTime?createTime?status?geometry?geofenceId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves the geofence details from a geofence collection. The returned geometry will always match the geometry format used when the geofence was created."]moduleGetGeofenceRequest=structtypenonrect={collectionName:ResourceName.t[@ocaml.doc"The geofence collection storing the target geofence."];geofenceId:Id.t[@ocaml.doc"The geofence you're retrieving details for."]}letcontext_="GetGeofenceRequest"letmake~collectionName=fun~geofenceId->fun()->{collectionName;geofenceId}letto_valuex=structure_to_value[("CollectionName",(Some(ResourceName.to_valuex.collectionName)));("GeofenceId",(Some(Id.to_valuex.geofenceId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letgeofenceId=Id.of_xml(Xml.child_exn~context:context_xml_arg0"GeofenceId")inletcollectionName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"CollectionName")inmake~geofenceId~collectionName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letgeofenceId=field_map_exnjson__"GeofenceId"Id.of_jsoninletcollectionName=field_map_exnjson__"CollectionName"ResourceName.of_jsoninmake~geofenceId~collectionName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves the geofence details from a geofence collection. The returned geometry will always match the geometry format used when the geofence was created."]moduleGetDevicePositionResponse=structtypenonrect={deviceId:Id.toption[@ocaml.doc"The device whose position you retrieved."];sampleTime:Timestamp.toption[@ocaml.doc"The timestamp at which the device's position was determined. Uses ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."];receivedTime:Timestamp.toption[@ocaml.doc"The timestamp for when the tracker resource received the device position. Uses ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."];position:Position.toption[@ocaml.doc"The last known device position."];accuracy:PositionalAccuracy.toption[@ocaml.doc"The accuracy of the device position."];positionProperties:PositionPropertyMap.toption[@ocaml.doc"The properties associated with the position."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?deviceId=fun?sampleTime->fun?receivedTime->fun?position->fun?accuracy->fun?positionProperties->fun()->{deviceId;sampleTime;receivedTime;position;accuracy;positionProperties}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("DeviceId",(Option.mapx.deviceId~f:Id.to_value));("SampleTime",(Option.mapx.sampleTime~f:Timestamp.to_value));("ReceivedTime",(Option.mapx.receivedTime~f:Timestamp.to_value));("Position",(Option.mapx.position~f:Position.to_value));("Accuracy",(Option.mapx.accuracy~f:PositionalAccuracy.to_value));("PositionProperties",(Option.mapx.positionProperties~f:PositionPropertyMap.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letpositionProperties=(Option.map~f:PositionPropertyMap.of_xml)(Xml.childxml_arg0"PositionProperties")inletaccuracy=(Option.map~f:PositionalAccuracy.of_xml)(Xml.childxml_arg0"Accuracy")inletposition=(Option.map~f:Position.of_xml)(Xml.childxml_arg0"Position")inletreceivedTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"ReceivedTime")inletsampleTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"SampleTime")inletdeviceId=(Option.map~f:Id.of_xml)(Xml.childxml_arg0"DeviceId")inmake?positionProperties?accuracy?position?receivedTime?sampleTime?deviceId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letpositionProperties=field_mapjson__"PositionProperties"PositionPropertyMap.of_jsoninletaccuracy=field_mapjson__"Accuracy"PositionalAccuracy.of_jsoninletposition=field_mapjson__"Position"Position.of_jsoninletreceivedTime=field_mapjson__"ReceivedTime"Timestamp.of_jsoninletsampleTime=field_mapjson__"SampleTime"Timestamp.of_jsoninletdeviceId=field_mapjson__"DeviceId"Id.of_jsoninmake?positionProperties?accuracy?position?receivedTime?sampleTime?deviceId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves a device's most recent position according to its sample time. Device positions are deleted after 30 days."]moduleGetDevicePositionRequest=structtypenonrect={trackerName:ResourceName.t[@ocaml.doc"The tracker resource receiving the position update."];deviceId:Id.t[@ocaml.doc"The device whose position you want to retrieve."]}letcontext_="GetDevicePositionRequest"letmake~trackerName=fun~deviceId->fun()->{trackerName;deviceId}letto_valuex=structure_to_value[("TrackerName",(Some(ResourceName.to_valuex.trackerName)));("DeviceId",(Some(Id.to_valuex.deviceId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdeviceId=Id.of_xml(Xml.child_exn~context:context_xml_arg0"DeviceId")inlettrackerName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"TrackerName")inmake~deviceId~trackerName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdeviceId=field_map_exnjson__"DeviceId"Id.of_jsoninlettrackerName=field_map_exnjson__"TrackerName"ResourceName.of_jsoninmake~deviceId~trackerName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves a device's most recent position according to its sample time. Device positions are deleted after 30 days."]moduleGetDevicePositionHistoryResponse=structtypenonrect={devicePositions:DevicePositionList.toption[@ocaml.doc"Contains the position history details for the requested device."];nextToken:Token.toption[@ocaml.doc"A pagination token indicating there are additional pages available. You can use the token in a following request to fetch the next set of results."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?devicePositions=fun?nextToken->fun()->{devicePositions;nextToken}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("DevicePositions",(Option.mapx.devicePositions~f:DevicePositionList.to_value));("NextToken",(Option.mapx.nextToken~f:Token.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letnextToken=(Option.map~f:Token.of_xml)(Xml.childxml_arg0"NextToken")inletdevicePositions=(Option.map~f:DevicePositionList.of_xml)(Xml.childxml_arg0"DevicePositions")inmake?nextToken?devicePositions()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letnextToken=field_mapjson__"NextToken"Token.of_jsoninletdevicePositions=field_mapjson__"DevicePositions"DevicePositionList.of_jsoninmake?nextToken?devicePositions()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves the device position history from a tracker resource within a specified range of time. Device positions are deleted after 30 days."]moduleGetDevicePositionHistoryRequest=structtypenonrect={trackerName:ResourceName.t[@ocaml.doc"The tracker resource receiving the request for the device position history."];deviceId:Id.t[@ocaml.doc"The device whose position history you want to retrieve."];nextToken:Token.toption[@ocaml.doc"The pagination token specifying which page of results to return in the response. If no token is provided, the default page is the first page. Default value: null"];startTimeInclusive:Timestamp.toption[@ocaml.doc"Specify the start time for the position history in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ. By default, the value will be 24 hours prior to the time that the request is made. Requirement: The time specified for StartTimeInclusive must be before EndTimeExclusive."];endTimeExclusive:Timestamp.toption[@ocaml.doc"Specify the end time for the position history in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ. By default, the value will be the time that the request is made. Requirement: The time specified for EndTimeExclusive must be after the time for StartTimeInclusive."];maxResults:GetDevicePositionHistoryRequestMaxResultsInteger.toption[@ocaml.doc"An optional limit for the number of device positions returned in a single call. Default value: 100"]}letcontext_="GetDevicePositionHistoryRequest"letmake?nextToken=fun?startTimeInclusive->fun?endTimeExclusive->fun?maxResults->fun~trackerName->fun~deviceId->fun()->{nextToken;startTimeInclusive;endTimeExclusive;maxResults;trackerName;deviceId}letto_valuex=structure_to_value[("TrackerName",(Some(ResourceName.to_valuex.trackerName)));("DeviceId",(Some(Id.to_valuex.deviceId)));("NextToken",(Option.mapx.nextToken~f:Token.to_value));("StartTimeInclusive",(Option.mapx.startTimeInclusive~f:Timestamp.to_value));("EndTimeExclusive",(Option.mapx.endTimeExclusive~f:Timestamp.to_value));("MaxResults",(Option.mapx.maxResults~f:GetDevicePositionHistoryRequestMaxResultsInteger.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmaxResults=(Option.map~f:GetDevicePositionHistoryRequestMaxResultsInteger.of_xml)(Xml.childxml_arg0"MaxResults")inletendTimeExclusive=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"EndTimeExclusive")inletstartTimeInclusive=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"StartTimeInclusive")inletnextToken=(Option.map~f:Token.of_xml)(Xml.childxml_arg0"NextToken")inletdeviceId=Id.of_xml(Xml.child_exn~context:context_xml_arg0"DeviceId")inlettrackerName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"TrackerName")inmake?maxResults?endTimeExclusive?startTimeInclusive?nextToken~deviceId~trackerName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmaxResults=field_mapjson__"MaxResults"GetDevicePositionHistoryRequestMaxResultsInteger.of_jsoninletendTimeExclusive=field_mapjson__"EndTimeExclusive"Timestamp.of_jsoninletstartTimeInclusive=field_mapjson__"StartTimeInclusive"Timestamp.of_jsoninletnextToken=field_mapjson__"NextToken"Token.of_jsoninletdeviceId=field_map_exnjson__"DeviceId"Id.of_jsoninlettrackerName=field_map_exnjson__"TrackerName"ResourceName.of_jsoninmake?maxResults?endTimeExclusive?startTimeInclusive?nextToken~deviceId~trackerName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves the device position history from a tracker resource within a specified range of time. Device positions are deleted after 30 days."]moduleForecastGeofenceEventsResponse=structtypenonrect={forecastedEvents:ForecastedEventsList.toption[@ocaml.doc"The list of forecasted events."];nextToken:LargeToken.toption[@ocaml.doc"The pagination token specifying which page of results to return in the response. If no token is provided, the default page is the first page."];distanceUnit:DistanceUnit.toption[@ocaml.doc"The distance unit for the forecasted events."];speedUnit:SpeedUnit.toption[@ocaml.doc"The speed unit for the forecasted events."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?forecastedEvents=fun?nextToken->fun?distanceUnit->fun?speedUnit->fun()->{forecastedEvents;nextToken;distanceUnit;speedUnit}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("ForecastedEvents",(Option.mapx.forecastedEvents~f:ForecastedEventsList.to_value));("NextToken",(Option.mapx.nextToken~f:LargeToken.to_value));("DistanceUnit",(Option.mapx.distanceUnit~f:DistanceUnit.to_value));("SpeedUnit",(Option.mapx.speedUnit~f:SpeedUnit.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letspeedUnit=(Option.map~f:SpeedUnit.of_xml)(Xml.childxml_arg0"SpeedUnit")inletdistanceUnit=(Option.map~f:DistanceUnit.of_xml)(Xml.childxml_arg0"DistanceUnit")inletnextToken=(Option.map~f:LargeToken.of_xml)(Xml.childxml_arg0"NextToken")inletforecastedEvents=(Option.map~f:ForecastedEventsList.of_xml)(Xml.childxml_arg0"ForecastedEvents")inmake?speedUnit?distanceUnit?nextToken?forecastedEvents()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letspeedUnit=field_mapjson__"SpeedUnit"SpeedUnit.of_jsoninletdistanceUnit=field_mapjson__"DistanceUnit"DistanceUnit.of_jsoninletnextToken=field_mapjson__"NextToken"LargeToken.of_jsoninletforecastedEvents=field_mapjson__"ForecastedEvents"ForecastedEventsList.of_jsoninmake?speedUnit?distanceUnit?nextToken?forecastedEvents()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This action forecasts future geofence events that are likely to occur within a specified time horizon if a device continues moving at its current speed. Each forecasted event is associated with a geofence from a provided geofence collection. A forecast event can have one of the following states: ENTER: The device position is outside the referenced geofence, but the device may cross into the geofence during the forecasting time horizon if it maintains its current speed. EXIT: The device position is inside the referenced geofence, but the device may leave the geofence during the forecasted time horizon if the device maintains it's current speed. IDLE:The device is inside the geofence, and it will remain inside the geofence through the end of the time horizon if the device maintains it's current speed. Heading direction is not considered in the current version. The API takes a conservative approach and includes events that can occur for any heading."]moduleForecastGeofenceEventsRequest=structtypenonrect={collectionName:ResourceName.t[@ocaml.doc"The name of the geofence collection."];deviceState:ForecastGeofenceEventsDeviceState.t[@ocaml.doc"Represents the device's state, including its current position and speed. When speed is omitted, this API performs a containment check. The containment check operation returns IDLE events for geofences where the device is currently inside of, but no other events."];timeHorizonMinutes:ForecastGeofenceEventsRequestTimeHorizonMinutesDouble.toption[@ocaml.doc"The forward-looking time window for forecasting, specified in minutes. The API only returns events that are predicted to occur within this time horizon. When no value is specified, this API performs a containment check. The containment check operation returns IDLE events for geofences where the device is currently inside of, but no other events."];distanceUnit:DistanceUnit.toption[@ocaml.doc"The distance unit used for the NearestDistance property returned in a forecasted event. The measurement system must match for DistanceUnit and SpeedUnit; if Kilometers is specified for DistanceUnit, then SpeedUnit must be KilometersPerHour. Default Value: Kilometers"];speedUnit:SpeedUnit.toption[@ocaml.doc"The speed unit for the device captured by the device state. The measurement system must match for DistanceUnit and SpeedUnit; if Kilometers is specified for DistanceUnit, then SpeedUnit must be KilometersPerHour. Default Value: KilometersPerHour."];nextToken:LargeToken.toption[@ocaml.doc"The pagination token specifying which page of results to return in the response. If no token is provided, the default page is the first page. Default value: null"];maxResults:ForecastGeofenceEventsRequestMaxResultsInteger.toption[@ocaml.doc"An optional limit for the number of resources returned in a single call. Default value: 20"]}letcontext_="ForecastGeofenceEventsRequest"letmake?timeHorizonMinutes=fun?distanceUnit->fun?speedUnit->fun?nextToken->fun?maxResults->fun~collectionName->fun~deviceState->fun()->{timeHorizonMinutes;distanceUnit;speedUnit;nextToken;maxResults;collectionName;deviceState}letto_valuex=structure_to_value[("CollectionName",(Some(ResourceName.to_valuex.collectionName)));("DeviceState",(Some(ForecastGeofenceEventsDeviceState.to_valuex.deviceState)));("TimeHorizonMinutes",(Option.mapx.timeHorizonMinutes~f:ForecastGeofenceEventsRequestTimeHorizonMinutesDouble.to_value));("DistanceUnit",(Option.mapx.distanceUnit~f:DistanceUnit.to_value));("SpeedUnit",(Option.mapx.speedUnit~f:SpeedUnit.to_value));("NextToken",(Option.mapx.nextToken~f:LargeToken.to_value));("MaxResults",(Option.mapx.maxResults~f:ForecastGeofenceEventsRequestMaxResultsInteger.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmaxResults=(Option.map~f:ForecastGeofenceEventsRequestMaxResultsInteger.of_xml)(Xml.childxml_arg0"MaxResults")inletnextToken=(Option.map~f:LargeToken.of_xml)(Xml.childxml_arg0"NextToken")inletspeedUnit=(Option.map~f:SpeedUnit.of_xml)(Xml.childxml_arg0"SpeedUnit")inletdistanceUnit=(Option.map~f:DistanceUnit.of_xml)(Xml.childxml_arg0"DistanceUnit")inlettimeHorizonMinutes=(Option.map~f:ForecastGeofenceEventsRequestTimeHorizonMinutesDouble.of_xml)(Xml.childxml_arg0"TimeHorizonMinutes")inletdeviceState=ForecastGeofenceEventsDeviceState.of_xml(Xml.child_exn~context:context_xml_arg0"DeviceState")inletcollectionName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"CollectionName")inmake?maxResults?nextToken?speedUnit?distanceUnit?timeHorizonMinutes~deviceState~collectionName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmaxResults=field_mapjson__"MaxResults"ForecastGeofenceEventsRequestMaxResultsInteger.of_jsoninletnextToken=field_mapjson__"NextToken"LargeToken.of_jsoninletspeedUnit=field_mapjson__"SpeedUnit"SpeedUnit.of_jsoninletdistanceUnit=field_mapjson__"DistanceUnit"DistanceUnit.of_jsoninlettimeHorizonMinutes=field_mapjson__"TimeHorizonMinutes"ForecastGeofenceEventsRequestTimeHorizonMinutesDouble.of_jsoninletdeviceState=field_map_exnjson__"DeviceState"ForecastGeofenceEventsDeviceState.of_jsoninletcollectionName=field_map_exnjson__"CollectionName"ResourceName.of_jsoninmake?maxResults?nextToken?speedUnit?distanceUnit?timeHorizonMinutes~deviceState~collectionName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This action forecasts future geofence events that are likely to occur within a specified time horizon if a device continues moving at its current speed. Each forecasted event is associated with a geofence from a provided geofence collection. A forecast event can have one of the following states: ENTER: The device position is outside the referenced geofence, but the device may cross into the geofence during the forecasting time horizon if it maintains its current speed. EXIT: The device position is inside the referenced geofence, but the device may leave the geofence during the forecasted time horizon if the device maintains it's current speed. IDLE:The device is inside the geofence, and it will remain inside the geofence through the end of the time horizon if the device maintains it's current speed. Heading direction is not considered in the current version. The API takes a conservative approach and includes events that can occur for any heading."]moduleDisassociateTrackerConsumerResponse=structtypenonrect=unittypenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))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 association between a tracker resource and a geofence collection. Once you unlink a tracker resource from a geofence collection, the tracker positions will no longer be automatically evaluated against geofences."]moduleDisassociateTrackerConsumerRequest=structtypenonrect={trackerName:ResourceName.t[@ocaml.doc"The name of the tracker resource to be dissociated from the consumer."];consumerArn:Arn.t[@ocaml.doc"The Amazon Resource Name (ARN) for the geofence collection to be disassociated from the tracker resource. Used when you need to specify a resource across all Amazon Web Services. Format example: arn:aws:geo:region:account-id:geofence-collection/ExampleGeofenceCollectionConsumer"]}letcontext_="DisassociateTrackerConsumerRequest"letmake~trackerName=fun~consumerArn->fun()->{trackerName;consumerArn}letto_valuex=structure_to_value[("TrackerName",(Some(ResourceName.to_valuex.trackerName)));("ConsumerArn",(Some(Arn.to_valuex.consumerArn)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letconsumerArn=Arn.of_xml(Xml.child_exn~context:context_xml_arg0"ConsumerArn")inlettrackerName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"TrackerName")inmake~consumerArn~trackerName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letconsumerArn=field_map_exnjson__"ConsumerArn"Arn.of_jsoninlettrackerName=field_map_exnjson__"TrackerName"ResourceName.of_jsoninmake~consumerArn~trackerName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Removes the association between a tracker resource and a geofence collection. Once you unlink a tracker resource from a geofence collection, the tracker positions will no longer be automatically evaluated against geofences."]moduleDescribeTrackerResponse=structtypenonrect={trackerName:ResourceName.toption[@ocaml.doc"The name of the tracker resource."];trackerArn:Arn.toption[@ocaml.doc"The Amazon Resource Name (ARN) for the tracker resource. Used when you need to specify a resource across all Amazon Web Services. Format example: arn:aws:geo:region:account-id:tracker/ExampleTracker"];description:ResourceDescription.toption[@ocaml.doc"The optional description for the tracker resource."];pricingPlan:PricingPlan.toption[@ocaml.doc"Always returns RequestBasedUsage."];pricingPlanDataSource:String_.toption[@ocaml.doc"No longer used. Always returns an empty string."];tags:TagMap.toption[@ocaml.doc"The tags associated with the tracker resource."];createTime:Timestamp.toption[@ocaml.doc"The timestamp for when the tracker resource was created in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."];updateTime:Timestamp.toption[@ocaml.doc"The timestamp for when the tracker resource was last updated in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."];kmsKeyId:KmsKeyId.toption[@ocaml.doc"A key identifier for an Amazon Web Services KMS customer managed key assigned to the Amazon Location resource."];positionFiltering:PositionFiltering.toption[@ocaml.doc"The position filtering method of the tracker resource."];eventBridgeEnabled:Boolean.toption[@ocaml.doc"Whether UPDATE events from this tracker in EventBridge are enabled. If set to true these events will be sent to EventBridge."];kmsKeyEnableGeospatialQueries:Boolean.toption[@ocaml.doc"Enables GeospatialQueries for a tracker that uses a Amazon Web Services KMS customer managed key. This parameter is only used if you are using a KMS customer managed key. If you wish to encrypt your data using your own KMS customer managed key, then the Bounding Polygon Queries feature will be disabled by default. This is because by using this feature, a representation of your device positions will not be encrypted using the your KMS managed key. The exact device position, however; is still encrypted using your managed key. You can choose to opt-in to the Bounding Polygon Quseries feature. This is done by setting the KmsKeyEnableGeospatialQueries parameter to true when creating or updating a Tracker."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?trackerName=fun?trackerArn->fun?description->fun?pricingPlan->fun?pricingPlanDataSource->fun?tags->fun?createTime->fun?updateTime->fun?kmsKeyId->fun?positionFiltering->fun?eventBridgeEnabled->fun?kmsKeyEnableGeospatialQueries->fun()->{trackerName;trackerArn;description;pricingPlan;pricingPlanDataSource;tags;createTime;updateTime;kmsKeyId;positionFiltering;eventBridgeEnabled;kmsKeyEnableGeospatialQueries}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("TrackerName",(Option.mapx.trackerName~f:ResourceName.to_value));("TrackerArn",(Option.mapx.trackerArn~f:Arn.to_value));("Description",(Option.mapx.description~f:ResourceDescription.to_value));("PricingPlan",(Option.mapx.pricingPlan~f:PricingPlan.to_value));("PricingPlanDataSource",(Option.mapx.pricingPlanDataSource~f:String_.to_value));("Tags",(Option.mapx.tags~f:TagMap.to_value));("CreateTime",(Option.mapx.createTime~f:Timestamp.to_value));("UpdateTime",(Option.mapx.updateTime~f:Timestamp.to_value));("KmsKeyId",(Option.mapx.kmsKeyId~f:KmsKeyId.to_value));("PositionFiltering",(Option.mapx.positionFiltering~f:PositionFiltering.to_value));("EventBridgeEnabled",(Option.mapx.eventBridgeEnabled~f:Boolean.to_value));("KmsKeyEnableGeospatialQueries",(Option.mapx.kmsKeyEnableGeospatialQueries~f:Boolean.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letkmsKeyEnableGeospatialQueries=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"KmsKeyEnableGeospatialQueries")inleteventBridgeEnabled=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"EventBridgeEnabled")inletpositionFiltering=(Option.map~f:PositionFiltering.of_xml)(Xml.childxml_arg0"PositionFiltering")inletkmsKeyId=(Option.map~f:KmsKeyId.of_xml)(Xml.childxml_arg0"KmsKeyId")inletupdateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"UpdateTime")inletcreateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"CreateTime")inlettags=(Option.map~f:TagMap.of_xml)(Xml.childxml_arg0"Tags")inletpricingPlanDataSource=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"PricingPlanDataSource")inletpricingPlan=(Option.map~f:PricingPlan.of_xml)(Xml.childxml_arg0"PricingPlan")inletdescription=(Option.map~f:ResourceDescription.of_xml)(Xml.childxml_arg0"Description")inlettrackerArn=(Option.map~f:Arn.of_xml)(Xml.childxml_arg0"TrackerArn")inlettrackerName=(Option.map~f:ResourceName.of_xml)(Xml.childxml_arg0"TrackerName")inmake?kmsKeyEnableGeospatialQueries?eventBridgeEnabled?positionFiltering?kmsKeyId?updateTime?createTime?tags?pricingPlanDataSource?pricingPlan?description?trackerArn?trackerName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letkmsKeyEnableGeospatialQueries=field_mapjson__"KmsKeyEnableGeospatialQueries"Boolean.of_jsoninleteventBridgeEnabled=field_mapjson__"EventBridgeEnabled"Boolean.of_jsoninletpositionFiltering=field_mapjson__"PositionFiltering"PositionFiltering.of_jsoninletkmsKeyId=field_mapjson__"KmsKeyId"KmsKeyId.of_jsoninletupdateTime=field_mapjson__"UpdateTime"Timestamp.of_jsoninletcreateTime=field_mapjson__"CreateTime"Timestamp.of_jsoninlettags=field_mapjson__"Tags"TagMap.of_jsoninletpricingPlanDataSource=field_mapjson__"PricingPlanDataSource"String_.of_jsoninletpricingPlan=field_mapjson__"PricingPlan"PricingPlan.of_jsoninletdescription=field_mapjson__"Description"ResourceDescription.of_jsoninlettrackerArn=field_mapjson__"TrackerArn"Arn.of_jsoninlettrackerName=field_mapjson__"TrackerName"ResourceName.of_jsoninmake?kmsKeyEnableGeospatialQueries?eventBridgeEnabled?positionFiltering?kmsKeyId?updateTime?createTime?tags?pricingPlanDataSource?pricingPlan?description?trackerArn?trackerName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves the tracker resource details."]moduleDescribeTrackerRequest=structtypenonrect={trackerName:ResourceName.t[@ocaml.doc"The name of the tracker resource."]}letcontext_="DescribeTrackerRequest"letmake~trackerName=fun()->{trackerName}letto_valuex=structure_to_value[("TrackerName",(Some(ResourceName.to_valuex.trackerName)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettrackerName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"TrackerName")inmake~trackerName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettrackerName=field_map_exnjson__"TrackerName"ResourceName.of_jsoninmake~trackerName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves the tracker resource details."]moduleDescribeRouteCalculatorResponse=structtypenonrect={calculatorName:ResourceName.toption[@ocaml.doc"The name of the route calculator resource being described."];calculatorArn:GeoArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) for the Route calculator resource. Use the ARN when you specify a resource across Amazon Web Services. Format example: arn:aws:geo:region:account-id:route-calculator/ExampleCalculator"];pricingPlan:PricingPlan.toption[@ocaml.doc"Always returns RequestBasedUsage."];description:ResourceDescription.toption[@ocaml.doc"The optional description of the route calculator resource."];createTime:Timestamp.toption[@ocaml.doc"The timestamp when the route calculator resource was created in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ. For example, 2020\226\128\14707-2T12:15:20.000Z+01:00"];updateTime:Timestamp.toption[@ocaml.doc"The timestamp when the route calculator resource was last updated in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ. For example, 2020\226\128\14707-2T12:15:20.000Z+01:00"];dataSource:String_.toption[@ocaml.doc"The data provider of traffic and road network data. Indicates one of the available providers: Esri Grab Here For more information about data providers, see Amazon Location Service data providers."];tags:TagMap.toption[@ocaml.doc"Tags associated with route calculator resource."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?calculatorName=fun?calculatorArn->fun?pricingPlan->fun?description->fun?createTime->fun?updateTime->fun?dataSource->fun?tags->fun()->{calculatorName;calculatorArn;pricingPlan;description;createTime;updateTime;dataSource;tags}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("CalculatorName",(Option.mapx.calculatorName~f:ResourceName.to_value));("CalculatorArn",(Option.mapx.calculatorArn~f:GeoArn.to_value));("PricingPlan",(Option.mapx.pricingPlan~f:PricingPlan.to_value));("Description",(Option.mapx.description~f:ResourceDescription.to_value));("CreateTime",(Option.mapx.createTime~f:Timestamp.to_value));("UpdateTime",(Option.mapx.updateTime~f:Timestamp.to_value));("DataSource",(Option.mapx.dataSource~f:String_.to_value));("Tags",(Option.mapx.tags~f:TagMap.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:TagMap.of_xml)(Xml.childxml_arg0"Tags")inletdataSource=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"DataSource")inletupdateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"UpdateTime")inletcreateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"CreateTime")inletdescription=(Option.map~f:ResourceDescription.of_xml)(Xml.childxml_arg0"Description")inletpricingPlan=(Option.map~f:PricingPlan.of_xml)(Xml.childxml_arg0"PricingPlan")inletcalculatorArn=(Option.map~f:GeoArn.of_xml)(Xml.childxml_arg0"CalculatorArn")inletcalculatorName=(Option.map~f:ResourceName.of_xml)(Xml.childxml_arg0"CalculatorName")inmake?tags?dataSource?updateTime?createTime?description?pricingPlan?calculatorArn?calculatorName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"Tags"TagMap.of_jsoninletdataSource=field_mapjson__"DataSource"String_.of_jsoninletupdateTime=field_mapjson__"UpdateTime"Timestamp.of_jsoninletcreateTime=field_mapjson__"CreateTime"Timestamp.of_jsoninletdescription=field_mapjson__"Description"ResourceDescription.of_jsoninletpricingPlan=field_mapjson__"PricingPlan"PricingPlan.of_jsoninletcalculatorArn=field_mapjson__"CalculatorArn"GeoArn.of_jsoninletcalculatorName=field_mapjson__"CalculatorName"ResourceName.of_jsoninmake?tags?dataSource?updateTime?createTime?description?pricingPlan?calculatorArn?calculatorName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend you upgrade to the Routes API V2 unless you require Grab data. DescribeRouteCalculator is part of a previous Amazon Location Service Routes API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The Routes API version 2 has a simplified interface that can be used without creating or managing route calculator resources. If you are using an Amazon Web Services SDK or the Amazon Web Services CLI, note that the Routes API version 2 is found under geo-routes or geo_routes, not under location. Since Grab is not yet fully supported in Routes API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Routes V2 API Reference or the Developer Guide. Retrieves the route calculator resource details."]moduleDescribeRouteCalculatorRequest=structtypenonrect={calculatorName:ResourceName.t[@ocaml.doc"The name of the route calculator resource."]}letcontext_="DescribeRouteCalculatorRequest"letmake~calculatorName=fun()->{calculatorName}letto_valuex=structure_to_value[("CalculatorName",(Some(ResourceName.to_valuex.calculatorName)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcalculatorName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"CalculatorName")inmake~calculatorName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcalculatorName=field_map_exnjson__"CalculatorName"ResourceName.of_jsoninmake~calculatorName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend you upgrade to the Routes API V2 unless you require Grab data. DescribeRouteCalculator is part of a previous Amazon Location Service Routes API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The Routes API version 2 has a simplified interface that can be used without creating or managing route calculator resources. If you are using an Amazon Web Services SDK or the Amazon Web Services CLI, note that the Routes API version 2 is found under geo-routes or geo_routes, not under location. Since Grab is not yet fully supported in Routes API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Routes V2 API Reference or the Developer Guide. Retrieves the route calculator resource details."]moduleDescribePlaceIndexResponse=structtypenonrect={indexName:ResourceName.toption[@ocaml.doc"The name of the place index resource being described."];indexArn:GeoArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) for the place index resource. Used to specify a resource across Amazon Web Services. Format example: arn:aws:geo:region:account-id:place-index/ExamplePlaceIndex"];pricingPlan:PricingPlan.toption[@ocaml.doc"No longer used. Always returns RequestBasedUsage."];description:ResourceDescription.toption[@ocaml.doc"The optional description for the place index resource."];createTime:Timestamp.toption[@ocaml.doc"The timestamp for when the place index resource was created in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."];updateTime:Timestamp.toption[@ocaml.doc"The timestamp for when the place index resource was last updated in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."];dataSource:String_.toption[@ocaml.doc"The data provider of geospatial data. Values can be one of the following: Esri Grab Here For more information about data providers, see Amazon Location Service data providers."];dataSourceConfiguration:DataSourceConfiguration.toption[@ocaml.doc"The specified data storage option for requesting Places."];tags:TagMap.toption[@ocaml.doc"Tags associated with place index resource."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?indexName=fun?indexArn->fun?pricingPlan->fun?description->fun?createTime->fun?updateTime->fun?dataSource->fun?dataSourceConfiguration->fun?tags->fun()->{indexName;indexArn;pricingPlan;description;createTime;updateTime;dataSource;dataSourceConfiguration;tags}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("IndexName",(Option.mapx.indexName~f:ResourceName.to_value));("IndexArn",(Option.mapx.indexArn~f:GeoArn.to_value));("PricingPlan",(Option.mapx.pricingPlan~f:PricingPlan.to_value));("Description",(Option.mapx.description~f:ResourceDescription.to_value));("CreateTime",(Option.mapx.createTime~f:Timestamp.to_value));("UpdateTime",(Option.mapx.updateTime~f:Timestamp.to_value));("DataSource",(Option.mapx.dataSource~f:String_.to_value));("DataSourceConfiguration",(Option.mapx.dataSourceConfiguration~f:DataSourceConfiguration.to_value));("Tags",(Option.mapx.tags~f:TagMap.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:TagMap.of_xml)(Xml.childxml_arg0"Tags")inletdataSourceConfiguration=(Option.map~f:DataSourceConfiguration.of_xml)(Xml.childxml_arg0"DataSourceConfiguration")inletdataSource=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"DataSource")inletupdateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"UpdateTime")inletcreateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"CreateTime")inletdescription=(Option.map~f:ResourceDescription.of_xml)(Xml.childxml_arg0"Description")inletpricingPlan=(Option.map~f:PricingPlan.of_xml)(Xml.childxml_arg0"PricingPlan")inletindexArn=(Option.map~f:GeoArn.of_xml)(Xml.childxml_arg0"IndexArn")inletindexName=(Option.map~f:ResourceName.of_xml)(Xml.childxml_arg0"IndexName")inmake?tags?dataSourceConfiguration?dataSource?updateTime?createTime?description?pricingPlan?indexArn?indexName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"Tags"TagMap.of_jsoninletdataSourceConfiguration=field_mapjson__"DataSourceConfiguration"DataSourceConfiguration.of_jsoninletdataSource=field_mapjson__"DataSource"String_.of_jsoninletupdateTime=field_mapjson__"UpdateTime"Timestamp.of_jsoninletcreateTime=field_mapjson__"CreateTime"Timestamp.of_jsoninletdescription=field_mapjson__"Description"ResourceDescription.of_jsoninletpricingPlan=field_mapjson__"PricingPlan"PricingPlan.of_jsoninletindexArn=field_mapjson__"IndexArn"GeoArn.of_jsoninletindexName=field_mapjson__"IndexName"ResourceName.of_jsoninmake?tags?dataSourceConfiguration?dataSource?updateTime?createTime?description?pricingPlan?indexArn?indexName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend you upgrade to the Places API V2 unless you require Grab data. DescribePlaceIndex is part of a previous Amazon Location Service Places API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The Places API version 2 has a simplified interface that can be used without creating or managing place index resources. If you are using an Amazon Web Services SDK or the Amazon Web Services CLI, note that the Places API version 2 is found under geo-places or geo_places, not under location. Since Grab is not yet fully supported in Places API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Places V2 API Reference or the Developer Guide. Retrieves the place index resource details."]moduleDescribePlaceIndexRequest=structtypenonrect={indexName:ResourceName.t[@ocaml.doc"The name of the place index resource."]}letcontext_="DescribePlaceIndexRequest"letmake~indexName=fun()->{indexName}letto_valuex=structure_to_value[("IndexName",(Some(ResourceName.to_valuex.indexName)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letindexName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"IndexName")inmake~indexName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letindexName=field_map_exnjson__"IndexName"ResourceName.of_jsoninmake~indexName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend you upgrade to the Places API V2 unless you require Grab data. DescribePlaceIndex is part of a previous Amazon Location Service Places API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The Places API version 2 has a simplified interface that can be used without creating or managing place index resources. If you are using an Amazon Web Services SDK or the Amazon Web Services CLI, note that the Places API version 2 is found under geo-places or geo_places, not under location. Since Grab is not yet fully supported in Places API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Places V2 API Reference or the Developer Guide. Retrieves the place index resource details."]moduleDescribeMapResponse=structtypenonrect={mapName:ResourceName.toption[@ocaml.doc"The map style selected from an available provider."];mapArn:GeoArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) for the map resource. Used to specify a resource across all Amazon Web Services. Format example: arn:aws:geo:region:account-id:map/ExampleMap"];pricingPlan:PricingPlan.toption[@ocaml.doc"No longer used. Always returns RequestBasedUsage."];dataSource:String_.toption[@ocaml.doc"Specifies the data provider for the associated map tiles."];configuration:MapConfiguration.toption[@ocaml.doc"Specifies the map tile style selected from a partner data provider."];description:ResourceDescription.toption[@ocaml.doc"The optional description for the map resource."];tags:TagMap.toption[@ocaml.doc"Tags associated with the map resource."];createTime:Timestamp.toption[@ocaml.doc"The timestamp for when the map resource was created in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."];updateTime:Timestamp.toption[@ocaml.doc"The timestamp for when the map resource was last update in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?mapName=fun?mapArn->fun?pricingPlan->fun?dataSource->fun?configuration->fun?description->fun?tags->fun?createTime->fun?updateTime->fun()->{mapName;mapArn;pricingPlan;dataSource;configuration;description;tags;createTime;updateTime}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("MapName",(Option.mapx.mapName~f:ResourceName.to_value));("MapArn",(Option.mapx.mapArn~f:GeoArn.to_value));("PricingPlan",(Option.mapx.pricingPlan~f:PricingPlan.to_value));("DataSource",(Option.mapx.dataSource~f:String_.to_value));("Configuration",(Option.mapx.configuration~f:MapConfiguration.to_value));("Description",(Option.mapx.description~f:ResourceDescription.to_value));("Tags",(Option.mapx.tags~f:TagMap.to_value));("CreateTime",(Option.mapx.createTime~f:Timestamp.to_value));("UpdateTime",(Option.mapx.updateTime~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letupdateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"UpdateTime")inletcreateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"CreateTime")inlettags=(Option.map~f:TagMap.of_xml)(Xml.childxml_arg0"Tags")inletdescription=(Option.map~f:ResourceDescription.of_xml)(Xml.childxml_arg0"Description")inletconfiguration=(Option.map~f:MapConfiguration.of_xml)(Xml.childxml_arg0"Configuration")inletdataSource=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"DataSource")inletpricingPlan=(Option.map~f:PricingPlan.of_xml)(Xml.childxml_arg0"PricingPlan")inletmapArn=(Option.map~f:GeoArn.of_xml)(Xml.childxml_arg0"MapArn")inletmapName=(Option.map~f:ResourceName.of_xml)(Xml.childxml_arg0"MapName")inmake?updateTime?createTime?tags?description?configuration?dataSource?pricingPlan?mapArn?mapName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letupdateTime=field_mapjson__"UpdateTime"Timestamp.of_jsoninletcreateTime=field_mapjson__"CreateTime"Timestamp.of_jsoninlettags=field_mapjson__"Tags"TagMap.of_jsoninletdescription=field_mapjson__"Description"ResourceDescription.of_jsoninletconfiguration=field_mapjson__"Configuration"MapConfiguration.of_jsoninletdataSource=field_mapjson__"DataSource"String_.of_jsoninletpricingPlan=field_mapjson__"PricingPlan"PricingPlan.of_jsoninletmapArn=field_mapjson__"MapArn"GeoArn.of_jsoninletmapName=field_mapjson__"MapName"ResourceName.of_jsoninmake?updateTime?createTime?tags?description?configuration?dataSource?pricingPlan?mapArn?mapName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend upgrading to the Maps API V2 unless you require Grab data. DescribeMap is part of a previous Amazon Location Service Maps API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The Maps API version 2 has a simplified interface that can be used without creating or managing map resources. If you are using an AWS SDK or the AWS CLI, note that the Maps API version 2 is found under geo-maps or geo_maps, not under location. Since Grab is not yet fully supported in Maps API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Maps V2 API Reference or the Developer Guide. Retrieves the map resource details."]moduleDescribeMapRequest=structtypenonrect={mapName:ResourceName.t[@ocaml.doc"The name of the map resource."]}letcontext_="DescribeMapRequest"letmake~mapName=fun()->{mapName}letto_valuex=structure_to_value[("MapName",(Some(ResourceName.to_valuex.mapName)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmapName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"MapName")inmake~mapName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmapName=field_map_exnjson__"MapName"ResourceName.of_jsoninmake~mapName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend upgrading to the Maps API V2 unless you require Grab data. DescribeMap is part of a previous Amazon Location Service Maps API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The Maps API version 2 has a simplified interface that can be used without creating or managing map resources. If you are using an AWS SDK or the AWS CLI, note that the Maps API version 2 is found under geo-maps or geo_maps, not under location. Since Grab is not yet fully supported in Maps API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Maps V2 API Reference or the Developer Guide. Retrieves the map resource details."]moduleDescribeKeyResponse=structtypenonrect={key:ApiKey.toption[@ocaml.doc"The key value/string of an API key."];keyArn:Arn.toption[@ocaml.doc"The Amazon Resource Name (ARN) for the API key resource. Used when you need to specify a resource across all Amazon Web Services. Format example: arn:aws:geo:region:account-id:key/ExampleKey"];keyName:ResourceName.toption[@ocaml.doc"The name of the API key resource."];restrictions:ApiKeyRestrictions.toption;createTime:Timestamp.toption[@ocaml.doc"The timestamp for when the API key resource was created in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."];expireTime:Timestamp.toption[@ocaml.doc"The timestamp for when the API key resource will expire in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."];updateTime:Timestamp.toption[@ocaml.doc"The timestamp for when the API key resource was last updated in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."];description:ResourceDescription.toption[@ocaml.doc"The optional description for the API key resource."];tags:TagMap.toption[@ocaml.doc"Tags associated with the API key resource."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?key=fun?keyArn->fun?keyName->fun?restrictions->fun?createTime->fun?expireTime->fun?updateTime->fun?description->fun?tags->fun()->{key;keyArn;keyName;restrictions;createTime;expireTime;updateTime;description;tags}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Key",(Option.mapx.key~f:ApiKey.to_value));("KeyArn",(Option.mapx.keyArn~f:Arn.to_value));("KeyName",(Option.mapx.keyName~f:ResourceName.to_value));("Restrictions",(Option.mapx.restrictions~f:ApiKeyRestrictions.to_value));("CreateTime",(Option.mapx.createTime~f:Timestamp.to_value));("ExpireTime",(Option.mapx.expireTime~f:Timestamp.to_value));("UpdateTime",(Option.mapx.updateTime~f:Timestamp.to_value));("Description",(Option.mapx.description~f:ResourceDescription.to_value));("Tags",(Option.mapx.tags~f:TagMap.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:TagMap.of_xml)(Xml.childxml_arg0"Tags")inletdescription=(Option.map~f:ResourceDescription.of_xml)(Xml.childxml_arg0"Description")inletupdateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"UpdateTime")inletexpireTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"ExpireTime")inletcreateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"CreateTime")inletrestrictions=(Option.map~f:ApiKeyRestrictions.of_xml)(Xml.childxml_arg0"Restrictions")inletkeyName=(Option.map~f:ResourceName.of_xml)(Xml.childxml_arg0"KeyName")inletkeyArn=(Option.map~f:Arn.of_xml)(Xml.childxml_arg0"KeyArn")inletkey=(Option.map~f:ApiKey.of_xml)(Xml.childxml_arg0"Key")inmake?tags?description?updateTime?expireTime?createTime?restrictions?keyName?keyArn?key()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"Tags"TagMap.of_jsoninletdescription=field_mapjson__"Description"ResourceDescription.of_jsoninletupdateTime=field_mapjson__"UpdateTime"Timestamp.of_jsoninletexpireTime=field_mapjson__"ExpireTime"Timestamp.of_jsoninletcreateTime=field_mapjson__"CreateTime"Timestamp.of_jsoninletrestrictions=field_mapjson__"Restrictions"ApiKeyRestrictions.of_jsoninletkeyName=field_mapjson__"KeyName"ResourceName.of_jsoninletkeyArn=field_mapjson__"KeyArn"Arn.of_jsoninletkey=field_mapjson__"Key"ApiKey.of_jsoninmake?tags?description?updateTime?expireTime?createTime?restrictions?keyName?keyArn?key()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves the API key resource details. For more information, see Use API keys to authenticate in the Amazon Location Service Developer Guide."]moduleDescribeKeyRequest=structtypenonrect={keyName:ResourceName.t[@ocaml.doc"The name of the API key resource."]}letcontext_="DescribeKeyRequest"letmake~keyName=fun()->{keyName}letto_valuex=structure_to_value[("KeyName",(Some(ResourceName.to_valuex.keyName)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letkeyName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"KeyName")inmake~keyName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letkeyName=field_map_exnjson__"KeyName"ResourceName.of_jsoninmake~keyName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves the API key resource details. For more information, see Use API keys to authenticate in the Amazon Location Service Developer Guide."]moduleDescribeGeofenceCollectionResponse=structtypenonrect={collectionName:ResourceName.toption[@ocaml.doc"The name of the geofence collection."];collectionArn:Arn.toption[@ocaml.doc"The Amazon Resource Name (ARN) for the geofence collection resource. Used when you need to specify a resource across all Amazon Web Services. Format example: arn:aws:geo:region:account-id:geofence-collection/ExampleGeofenceCollection"];description:ResourceDescription.toption[@ocaml.doc"The optional description for the geofence collection."];pricingPlan:PricingPlan.toption[@ocaml.doc"No longer used. Always returns RequestBasedUsage."];pricingPlanDataSource:String_.toption[@ocaml.doc"No longer used. Always returns an empty string."];kmsKeyId:KmsKeyId.toption[@ocaml.doc"A key identifier for an Amazon Web Services KMS customer managed key assigned to the Amazon Location resource"];tags:TagMap.toption[@ocaml.doc"Displays the key, value pairs of tags associated with this resource."];createTime:Timestamp.toption[@ocaml.doc"The timestamp for when the geofence resource was created in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ"];updateTime:Timestamp.toption[@ocaml.doc"The timestamp for when the geofence collection was last updated in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ"];geofenceCount:DescribeGeofenceCollectionResponseGeofenceCountInteger.toption[@ocaml.doc"The number of geofences in the geofence collection."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?collectionName=fun?collectionArn->fun?description->fun?pricingPlan->fun?pricingPlanDataSource->fun?kmsKeyId->fun?tags->fun?createTime->fun?updateTime->fun?geofenceCount->fun()->{collectionName;collectionArn;description;pricingPlan;pricingPlanDataSource;kmsKeyId;tags;createTime;updateTime;geofenceCount}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("CollectionName",(Option.mapx.collectionName~f:ResourceName.to_value));("CollectionArn",(Option.mapx.collectionArn~f:Arn.to_value));("Description",(Option.mapx.description~f:ResourceDescription.to_value));("PricingPlan",(Option.mapx.pricingPlan~f:PricingPlan.to_value));("PricingPlanDataSource",(Option.mapx.pricingPlanDataSource~f:String_.to_value));("KmsKeyId",(Option.mapx.kmsKeyId~f:KmsKeyId.to_value));("Tags",(Option.mapx.tags~f:TagMap.to_value));("CreateTime",(Option.mapx.createTime~f:Timestamp.to_value));("UpdateTime",(Option.mapx.updateTime~f:Timestamp.to_value));("GeofenceCount",(Option.mapx.geofenceCount~f:DescribeGeofenceCollectionResponseGeofenceCountInteger.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letgeofenceCount=(Option.map~f:DescribeGeofenceCollectionResponseGeofenceCountInteger.of_xml)(Xml.childxml_arg0"GeofenceCount")inletupdateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"UpdateTime")inletcreateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"CreateTime")inlettags=(Option.map~f:TagMap.of_xml)(Xml.childxml_arg0"Tags")inletkmsKeyId=(Option.map~f:KmsKeyId.of_xml)(Xml.childxml_arg0"KmsKeyId")inletpricingPlanDataSource=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"PricingPlanDataSource")inletpricingPlan=(Option.map~f:PricingPlan.of_xml)(Xml.childxml_arg0"PricingPlan")inletdescription=(Option.map~f:ResourceDescription.of_xml)(Xml.childxml_arg0"Description")inletcollectionArn=(Option.map~f:Arn.of_xml)(Xml.childxml_arg0"CollectionArn")inletcollectionName=(Option.map~f:ResourceName.of_xml)(Xml.childxml_arg0"CollectionName")inmake?geofenceCount?updateTime?createTime?tags?kmsKeyId?pricingPlanDataSource?pricingPlan?description?collectionArn?collectionName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letgeofenceCount=field_mapjson__"GeofenceCount"DescribeGeofenceCollectionResponseGeofenceCountInteger.of_jsoninletupdateTime=field_mapjson__"UpdateTime"Timestamp.of_jsoninletcreateTime=field_mapjson__"CreateTime"Timestamp.of_jsoninlettags=field_mapjson__"Tags"TagMap.of_jsoninletkmsKeyId=field_mapjson__"KmsKeyId"KmsKeyId.of_jsoninletpricingPlanDataSource=field_mapjson__"PricingPlanDataSource"String_.of_jsoninletpricingPlan=field_mapjson__"PricingPlan"PricingPlan.of_jsoninletdescription=field_mapjson__"Description"ResourceDescription.of_jsoninletcollectionArn=field_mapjson__"CollectionArn"Arn.of_jsoninletcollectionName=field_mapjson__"CollectionName"ResourceName.of_jsoninmake?geofenceCount?updateTime?createTime?tags?kmsKeyId?pricingPlanDataSource?pricingPlan?description?collectionArn?collectionName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves the geofence collection details."]moduleDescribeGeofenceCollectionRequest=structtypenonrect={collectionName:ResourceName.t[@ocaml.doc"The name of the geofence collection."]}letcontext_="DescribeGeofenceCollectionRequest"letmake~collectionName=fun()->{collectionName}letto_valuex=structure_to_value[("CollectionName",(Some(ResourceName.to_valuex.collectionName)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcollectionName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"CollectionName")inmake~collectionName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcollectionName=field_map_exnjson__"CollectionName"ResourceName.of_jsoninmake~collectionName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Retrieves the geofence collection details."]moduleDeleteTrackerResponse=structtypenonrect=unittypenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letof_header_and_body=((fun(xs,pipe)->make())[@warning"-27"])letto_value_=`Structure[]letto_queryv=to_queryto_valuevletof_xml_=make()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_json_=make()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Deletes a tracker resource from your Amazon Web Services account. This operation deletes the resource permanently. If the tracker resource is in use, you may encounter an error. Make sure that the target resource isn't a dependency for your applications."]moduleDeleteTrackerRequest=structtypenonrect={trackerName:ResourceName.t[@ocaml.doc"The name of the tracker resource to be deleted."]}letcontext_="DeleteTrackerRequest"letmake~trackerName=fun()->{trackerName}letto_valuex=structure_to_value[("TrackerName",(Some(ResourceName.to_valuex.trackerName)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettrackerName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"TrackerName")inmake~trackerName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettrackerName=field_map_exnjson__"TrackerName"ResourceName.of_jsoninmake~trackerName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Deletes a tracker resource from your Amazon Web Services account. This operation deletes the resource permanently. If the tracker resource is in use, you may encounter an error. Make sure that the target resource isn't a dependency for your applications."]moduleDeleteRouteCalculatorResponse=structtypenonrect=unittypenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))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 no longer current and may be deprecated in the future. We recommend you upgrade to the Routes API V2 unless you require Grab data. DeleteRouteCalculator is part of a previous Amazon Location Service Routes API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The Routes API version 2 has a simplified interface that can be used without creating or managing route calculator resources. If you are using an Amazon Web Services SDK or the Amazon Web Services CLI, note that the Routes API version 2 is found under geo-routes or geo_routes, not under location. Since Grab is not yet fully supported in Routes API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Routes V2 API Reference or the Developer Guide. Deletes a route calculator resource from your Amazon Web Services account. This operation deletes the resource permanently."]moduleDeleteRouteCalculatorRequest=structtypenonrect={calculatorName:ResourceName.t[@ocaml.doc"The name of the route calculator resource to be deleted."]}letcontext_="DeleteRouteCalculatorRequest"letmake~calculatorName=fun()->{calculatorName}letto_valuex=structure_to_value[("CalculatorName",(Some(ResourceName.to_valuex.calculatorName)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcalculatorName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"CalculatorName")inmake~calculatorName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcalculatorName=field_map_exnjson__"CalculatorName"ResourceName.of_jsoninmake~calculatorName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend you upgrade to the Routes API V2 unless you require Grab data. DeleteRouteCalculator is part of a previous Amazon Location Service Routes API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The Routes API version 2 has a simplified interface that can be used without creating or managing route calculator resources. If you are using an Amazon Web Services SDK or the Amazon Web Services CLI, note that the Routes API version 2 is found under geo-routes or geo_routes, not under location. Since Grab is not yet fully supported in Routes API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Routes V2 API Reference or the Developer Guide. Deletes a route calculator resource from your Amazon Web Services account. This operation deletes the resource permanently."]moduleDeletePlaceIndexResponse=structtypenonrect=unittypenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))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 no longer current and may be deprecated in the future. We recommend you upgrade to the Places API V2 unless you require Grab data. DeletePlaceIndex is part of a previous Amazon Location Service Places API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The Places API version 2 has a simplified interface that can be used without creating or managing place index resources. If you are using an Amazon Web Services SDK or the Amazon Web Services CLI, note that the Places API version 2 is found under geo-places or geo_places, not under location. Since Grab is not yet fully supported in Places API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Places V2 API Reference or the Developer Guide. Deletes a place index resource from your Amazon Web Services account. This operation deletes the resource permanently."]moduleDeletePlaceIndexRequest=structtypenonrect={indexName:ResourceName.t[@ocaml.doc"The name of the place index resource to be deleted."]}letcontext_="DeletePlaceIndexRequest"letmake~indexName=fun()->{indexName}letto_valuex=structure_to_value[("IndexName",(Some(ResourceName.to_valuex.indexName)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letindexName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"IndexName")inmake~indexName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letindexName=field_map_exnjson__"IndexName"ResourceName.of_jsoninmake~indexName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend you upgrade to the Places API V2 unless you require Grab data. DeletePlaceIndex is part of a previous Amazon Location Service Places API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The Places API version 2 has a simplified interface that can be used without creating or managing place index resources. If you are using an Amazon Web Services SDK or the Amazon Web Services CLI, note that the Places API version 2 is found under geo-places or geo_places, not under location. Since Grab is not yet fully supported in Places API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Places V2 API Reference or the Developer Guide. Deletes a place index resource from your Amazon Web Services account. This operation deletes the resource permanently."]moduleDeleteMapResponse=structtypenonrect=unittypenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))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 no longer current and may be deprecated in the future. We recommend upgrading to the Maps API V2 unless you require Grab data. DeleteMap is part of a previous Amazon Location Service Maps API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The Maps API version 2 has a simplified interface that can be used without creating or managing map resources. If you are using an AWS SDK or the AWS CLI, note that the Maps API version 2 is found under geo-maps or geo_maps, not under location. Since Grab is not yet fully supported in Maps API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Maps V2 API Reference or the Developer Guide. Deletes a map resource from your Amazon Web Services account. This operation deletes the resource permanently. If the map is being used in an application, the map may not render."]moduleDeleteMapRequest=structtypenonrect={mapName:ResourceName.t[@ocaml.doc"The name of the map resource to be deleted."]}letcontext_="DeleteMapRequest"letmake~mapName=fun()->{mapName}letto_valuex=structure_to_value[("MapName",(Some(ResourceName.to_valuex.mapName)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letmapName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"MapName")inmake~mapName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letmapName=field_map_exnjson__"MapName"ResourceName.of_jsoninmake~mapName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend upgrading to the Maps API V2 unless you require Grab data. DeleteMap is part of a previous Amazon Location Service Maps API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The Maps API version 2 has a simplified interface that can be used without creating or managing map resources. If you are using an AWS SDK or the AWS CLI, note that the Maps API version 2 is found under geo-maps or geo_maps, not under location. Since Grab is not yet fully supported in Maps API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Maps V2 API Reference or the Developer Guide. Deletes a map resource from your Amazon Web Services account. This operation deletes the resource permanently. If the map is being used in an application, the map may not render."]moduleDeleteKeyResponse=structtypenonrect=unittypenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letof_header_and_body=((fun(xs,pipe)->make())[@warning"-27"])letto_value_=`Structure[]letto_queryv=to_queryto_valuevletof_xml_=make()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_json_=make()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Deletes the specified API key. The API key must have been deactivated more than 90 days previously. For more information, see Use API keys to authenticate in the Amazon Location Service Developer Guide."]moduleDeleteKeyRequest=structtypenonrect={keyName:ResourceName.t[@ocaml.doc"The name of the API key to delete."];forceDelete:Boolean.toption[@ocaml.doc"ForceDelete bypasses an API key's expiry conditions and deletes the key. Set the parameter true to delete the key or to false to not preemptively delete the API key. Valid values: true, or false. Required: No This action is irreversible. Only use ForceDelete if you are certain the key is no longer in use."]}letcontext_="DeleteKeyRequest"letmake?forceDelete=fun~keyName->fun()->{forceDelete;keyName}letto_valuex=structure_to_value[("KeyName",(Some(ResourceName.to_valuex.keyName)));("forceDelete",(Option.mapx.forceDelete~f:Boolean.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letforceDelete=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"forceDelete")inletkeyName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"KeyName")inmake?forceDelete~keyName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letforceDelete=field_mapjson__"ForceDelete"Boolean.of_jsoninletkeyName=field_map_exnjson__"KeyName"ResourceName.of_jsoninmake?forceDelete~keyName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Deletes the specified API key. The API key must have been deactivated more than 90 days previously. For more information, see Use API keys to authenticate in the Amazon Location Service Developer Guide."]moduleDeleteGeofenceCollectionResponse=structtypenonrect=unittypenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letof_header_and_body=((fun(xs,pipe)->make())[@warning"-27"])letto_value_=`Structure[]letto_queryv=to_queryto_valuevletof_xml_=make()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_json_=make()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Deletes a geofence collection from your Amazon Web Services account. This operation deletes the resource permanently. If the geofence collection is the target of a tracker resource, the devices will no longer be monitored."]moduleDeleteGeofenceCollectionRequest=structtypenonrect={collectionName:ResourceName.t[@ocaml.doc"The name of the geofence collection to be deleted."]}letcontext_="DeleteGeofenceCollectionRequest"letmake~collectionName=fun()->{collectionName}letto_valuex=structure_to_value[("CollectionName",(Some(ResourceName.to_valuex.collectionName)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcollectionName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"CollectionName")inmake~collectionName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcollectionName=field_map_exnjson__"CollectionName"ResourceName.of_jsoninmake~collectionName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Deletes a geofence collection from your Amazon Web Services account. This operation deletes the resource permanently. If the geofence collection is the target of a tracker resource, the devices will no longer be monitored."]moduleCreateTrackerResponse=structtypenonrect={trackerName:ResourceName.toption[@ocaml.doc"The name of the tracker resource."];trackerArn:Arn.toption[@ocaml.doc"The Amazon Resource Name (ARN) for the tracker resource. Used when you need to specify a resource across all Amazon Web Services. Format example: arn:aws:geo:region:account-id:tracker/ExampleTracker"];createTime:Timestamp.toption[@ocaml.doc"The timestamp for when the tracker resource was created in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`ConflictExceptionofConflictException.t|`InternalServerExceptionofInternalServerException.t|`ServiceQuotaExceededExceptionofServiceQuotaExceededException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?trackerName=fun?trackerArn->fun?createTime->fun()->{trackerName;trackerArn;createTime}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"ConflictException"->`ConflictException(ConflictException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ServiceQuotaExceededException"->`ServiceQuotaExceededException(ServiceQuotaExceededException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"ConflictException"->`ConflictException(ConflictException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ServiceQuotaExceededException"->`ServiceQuotaExceededException(ServiceQuotaExceededException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`ConflictExceptione->`Assoc[("error",(`String"ConflictException"));("details",(ConflictException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ServiceQuotaExceededExceptione->`Assoc[("error",(`String"ServiceQuotaExceededException"));("details",(ServiceQuotaExceededException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("TrackerName",(Option.mapx.trackerName~f:ResourceName.to_value));("TrackerArn",(Option.mapx.trackerArn~f:Arn.to_value));("CreateTime",(Option.mapx.createTime~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcreateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"CreateTime")inlettrackerArn=(Option.map~f:Arn.of_xml)(Xml.childxml_arg0"TrackerArn")inlettrackerName=(Option.map~f:ResourceName.of_xml)(Xml.childxml_arg0"TrackerName")inmake?createTime?trackerArn?trackerName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcreateTime=field_mapjson__"CreateTime"Timestamp.of_jsoninlettrackerArn=field_mapjson__"TrackerArn"Arn.of_jsoninlettrackerName=field_mapjson__"TrackerName"ResourceName.of_jsoninmake?createTime?trackerArn?trackerName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates a tracker resource in your Amazon Web Services account, which lets you retrieve current and historical location of devices."]moduleCreateTrackerRequest=structtypenonrect={trackerName:ResourceName.t[@ocaml.doc"The name for the tracker resource. Requirements: Contain only alphanumeric characters (A-Z, a-z, 0-9) , hyphens (-), periods (.), and underscores (_). Must be a unique tracker resource name. No spaces allowed. For example, ExampleTracker."];pricingPlan:PricingPlan.toption[@ocaml.doc"No longer used. If included, the only allowed value is RequestBasedUsage."];kmsKeyId:KmsKeyId.toption[@ocaml.doc"A key identifier for an Amazon Web Services KMS customer managed key. Enter a key ID, key ARN, alias name, or alias ARN."];pricingPlanDataSource:String_.toption[@ocaml.doc"This parameter is no longer used."];description:ResourceDescription.toption[@ocaml.doc"An optional description for the tracker resource."];tags:TagMap.toption[@ocaml.doc"Applies one or more tags to the tracker resource. A tag is a key-value pair helps manage, identify, search, and filter your resources by labelling them. Format: \"key\" : \"value\" Restrictions: Maximum 50 tags per resource Each resource tag must be unique with a maximum of one value. Maximum key length: 128 Unicode characters in UTF-8 Maximum value length: 256 Unicode characters in UTF-8 Can use alphanumeric characters (A\226\128\147Z, a\226\128\147z, 0\226\128\1479), and the following characters: + - = . _ : / \\@. Cannot use \"aws:\" as a prefix for a key."];positionFiltering:PositionFiltering.toption[@ocaml.doc"Specifies the position filtering for the tracker resource. Valid values: TimeBased - Location updates are evaluated against linked geofence collections, but not every location update is stored. If your update frequency is more often than 30 seconds, only one update per 30 seconds is stored for each unique device ID. DistanceBased - If the device has moved less than 30 m (98.4 ft), location updates are ignored. Location updates within this area are neither evaluated against linked geofence collections, nor stored. This helps control costs by reducing the number of geofence evaluations and historical device positions to paginate through. Distance-based filtering can also reduce the effects of GPS noise when displaying device trajectories on a map. AccuracyBased - If the device has moved less than the measured accuracy, location updates are ignored. For example, if two consecutive updates from a device have a horizontal accuracy of 5 m and 10 m, the second update is ignored if the device has moved less than 15 m. Ignored location updates are neither evaluated against linked geofence collections, nor stored. This can reduce the effects of GPS noise when displaying device trajectories on a map, and can help control your costs by reducing the number of geofence evaluations. This field is optional. If not specified, the default value is TimeBased."];eventBridgeEnabled:Boolean.toption[@ocaml.doc"Whether to enable position UPDATE events from this tracker to be sent to EventBridge. You do not need enable this feature to get ENTER and EXIT events for geofences with this tracker. Those events are always sent to EventBridge."];kmsKeyEnableGeospatialQueries:Boolean.toption[@ocaml.doc"Enables GeospatialQueries for a tracker that uses a Amazon Web Services KMS customer managed key. This parameter is only used if you are using a KMS customer managed key. If you wish to encrypt your data using your own KMS customer managed key, then the Bounding Polygon Queries feature will be disabled by default. This is because by using this feature, a representation of your device positions will not be encrypted using the your KMS managed key. The exact device position, however; is still encrypted using your managed key. You can choose to opt-in to the Bounding Polygon Quseries feature. This is done by setting the KmsKeyEnableGeospatialQueries parameter to true when creating or updating a Tracker."]}letcontext_="CreateTrackerRequest"letmake?pricingPlan=fun?kmsKeyId->fun?pricingPlanDataSource->fun?description->fun?tags->fun?positionFiltering->fun?eventBridgeEnabled->fun?kmsKeyEnableGeospatialQueries->fun~trackerName->fun()->{pricingPlan;kmsKeyId;pricingPlanDataSource;description;tags;positionFiltering;eventBridgeEnabled;kmsKeyEnableGeospatialQueries;trackerName}letto_valuex=structure_to_value[("TrackerName",(Some(ResourceName.to_valuex.trackerName)));("PricingPlan",(Option.mapx.pricingPlan~f:PricingPlan.to_value));("KmsKeyId",(Option.mapx.kmsKeyId~f:KmsKeyId.to_value));("PricingPlanDataSource",(Option.mapx.pricingPlanDataSource~f:String_.to_value));("Description",(Option.mapx.description~f:ResourceDescription.to_value));("Tags",(Option.mapx.tags~f:TagMap.to_value));("PositionFiltering",(Option.mapx.positionFiltering~f:PositionFiltering.to_value));("EventBridgeEnabled",(Option.mapx.eventBridgeEnabled~f:Boolean.to_value));("KmsKeyEnableGeospatialQueries",(Option.mapx.kmsKeyEnableGeospatialQueries~f:Boolean.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letkmsKeyEnableGeospatialQueries=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"KmsKeyEnableGeospatialQueries")inleteventBridgeEnabled=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"EventBridgeEnabled")inletpositionFiltering=(Option.map~f:PositionFiltering.of_xml)(Xml.childxml_arg0"PositionFiltering")inlettags=(Option.map~f:TagMap.of_xml)(Xml.childxml_arg0"Tags")inletdescription=(Option.map~f:ResourceDescription.of_xml)(Xml.childxml_arg0"Description")inletpricingPlanDataSource=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"PricingPlanDataSource")inletkmsKeyId=(Option.map~f:KmsKeyId.of_xml)(Xml.childxml_arg0"KmsKeyId")inletpricingPlan=(Option.map~f:PricingPlan.of_xml)(Xml.childxml_arg0"PricingPlan")inlettrackerName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"TrackerName")inmake?kmsKeyEnableGeospatialQueries?eventBridgeEnabled?positionFiltering?tags?description?pricingPlanDataSource?kmsKeyId?pricingPlan~trackerName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letkmsKeyEnableGeospatialQueries=field_mapjson__"KmsKeyEnableGeospatialQueries"Boolean.of_jsoninleteventBridgeEnabled=field_mapjson__"EventBridgeEnabled"Boolean.of_jsoninletpositionFiltering=field_mapjson__"PositionFiltering"PositionFiltering.of_jsoninlettags=field_mapjson__"Tags"TagMap.of_jsoninletdescription=field_mapjson__"Description"ResourceDescription.of_jsoninletpricingPlanDataSource=field_mapjson__"PricingPlanDataSource"String_.of_jsoninletkmsKeyId=field_mapjson__"KmsKeyId"KmsKeyId.of_jsoninletpricingPlan=field_mapjson__"PricingPlan"PricingPlan.of_jsoninlettrackerName=field_map_exnjson__"TrackerName"ResourceName.of_jsoninmake?kmsKeyEnableGeospatialQueries?eventBridgeEnabled?positionFiltering?tags?description?pricingPlanDataSource?kmsKeyId?pricingPlan~trackerName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates a tracker resource in your Amazon Web Services account, which lets you retrieve current and historical location of devices."]moduleCreateRouteCalculatorResponse=structtypenonrect={calculatorName:ResourceName.toption[@ocaml.doc"The name of the route calculator resource. For example, ExampleRouteCalculator."];calculatorArn:GeoArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) for the route calculator resource. Use the ARN when you specify a resource across all Amazon Web Services. Format example: arn:aws:geo:region:account-id:route-calculator/ExampleCalculator"];createTime:Timestamp.toption[@ocaml.doc"The timestamp when the route calculator resource was created in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ. For example, 2020\226\128\14707-2T12:15:20.000Z+01:00"]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`ConflictExceptionofConflictException.t|`InternalServerExceptionofInternalServerException.t|`ServiceQuotaExceededExceptionofServiceQuotaExceededException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?calculatorName=fun?calculatorArn->fun?createTime->fun()->{calculatorName;calculatorArn;createTime}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"ConflictException"->`ConflictException(ConflictException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ServiceQuotaExceededException"->`ServiceQuotaExceededException(ServiceQuotaExceededException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"ConflictException"->`ConflictException(ConflictException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ServiceQuotaExceededException"->`ServiceQuotaExceededException(ServiceQuotaExceededException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`ConflictExceptione->`Assoc[("error",(`String"ConflictException"));("details",(ConflictException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ServiceQuotaExceededExceptione->`Assoc[("error",(`String"ServiceQuotaExceededException"));("details",(ServiceQuotaExceededException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("CalculatorName",(Option.mapx.calculatorName~f:ResourceName.to_value));("CalculatorArn",(Option.mapx.calculatorArn~f:GeoArn.to_value));("CreateTime",(Option.mapx.createTime~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcreateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"CreateTime")inletcalculatorArn=(Option.map~f:GeoArn.of_xml)(Xml.childxml_arg0"CalculatorArn")inletcalculatorName=(Option.map~f:ResourceName.of_xml)(Xml.childxml_arg0"CalculatorName")inmake?createTime?calculatorArn?calculatorName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcreateTime=field_mapjson__"CreateTime"Timestamp.of_jsoninletcalculatorArn=field_mapjson__"CalculatorArn"GeoArn.of_jsoninletcalculatorName=field_mapjson__"CalculatorName"ResourceName.of_jsoninmake?createTime?calculatorArn?calculatorName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend you upgrade to the Routes API V2 unless you require Grab data. CreateRouteCalculator is part of a previous Amazon Location Service Routes API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The Routes API version 2 has a simplified interface that can be used without creating or managing route calculator resources. If you are using an Amazon Web Services SDK or the Amazon Web Services CLI, note that the Routes API version 2 is found under geo-routes or geo_routes, not under location. Since Grab is not yet fully supported in Routes API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Routes V2 API Reference or the Developer Guide. Creates a route calculator resource in your Amazon Web Services account. You can send requests to a route calculator resource to estimate travel time, distance, and get directions. A route calculator sources traffic and road network data from your chosen data provider. If your application is tracking or routing assets you use in your business, such as delivery vehicles or employees, you must not use Esri as your geolocation provider. See section 82 of the Amazon Web Services service terms for more details."]moduleCreateRouteCalculatorRequest=structtypenonrect={calculatorName:ResourceName.t[@ocaml.doc"The name of the route calculator resource. Requirements: Can use alphanumeric characters (A\226\128\147Z, a\226\128\147z, 0\226\128\1479) , hyphens (-), periods (.), and underscores (_). Must be a unique Route calculator resource name. No spaces allowed. For example, ExampleRouteCalculator."];dataSource:String_.t[@ocaml.doc"Specifies the data provider of traffic and road network data. This field is case-sensitive. Enter the valid values as shown. For example, entering HERE returns an error. Valid values include: Esri \226\128\147 For additional information about Esri's coverage in your region of interest, see Esri details on street networks and traffic coverage. Route calculators that use Esri as a data source only calculate routes that are shorter than 400 km. Grab \226\128\147 Grab provides routing functionality for Southeast Asia. For additional information about GrabMaps' coverage, see GrabMaps countries and areas covered. Here \226\128\147 For additional information about HERE Technologies' coverage in your region of interest, see HERE car routing coverage and HERE truck routing coverage. For additional information , see Data providers on the Amazon Location Service Developer Guide."];pricingPlan:PricingPlan.toption[@ocaml.doc"No longer used. If included, the only allowed value is RequestBasedUsage."];description:ResourceDescription.toption[@ocaml.doc"The optional description for the route calculator resource."];tags:TagMap.toption[@ocaml.doc"Applies one or more tags to the route calculator resource. A tag is a key-value pair helps manage, identify, search, and filter your resources by labelling them. For example: \\{ \"tag1\" : \"value1\", \"tag2\" : \"value2\"\\} Format: \"key\" : \"value\" Restrictions: Maximum 50 tags per resource Each resource tag must be unique with a maximum of one value. Maximum key length: 128 Unicode characters in UTF-8 Maximum value length: 256 Unicode characters in UTF-8 Can use alphanumeric characters (A\226\128\147Z, a\226\128\147z, 0\226\128\1479), and the following characters: + - = . _ : / \\@. Cannot use \"aws:\" as a prefix for a key."]}letcontext_="CreateRouteCalculatorRequest"letmake?pricingPlan=fun?description->fun?tags->fun~calculatorName->fun~dataSource->fun()->{pricingPlan;description;tags;calculatorName;dataSource}letto_valuex=structure_to_value[("CalculatorName",(Some(ResourceName.to_valuex.calculatorName)));("DataSource",(Some(String_.to_valuex.dataSource)));("PricingPlan",(Option.mapx.pricingPlan~f:PricingPlan.to_value));("Description",(Option.mapx.description~f:ResourceDescription.to_value));("Tags",(Option.mapx.tags~f:TagMap.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:TagMap.of_xml)(Xml.childxml_arg0"Tags")inletdescription=(Option.map~f:ResourceDescription.of_xml)(Xml.childxml_arg0"Description")inletpricingPlan=(Option.map~f:PricingPlan.of_xml)(Xml.childxml_arg0"PricingPlan")inletdataSource=String_.of_xml(Xml.child_exn~context:context_xml_arg0"DataSource")inletcalculatorName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"CalculatorName")inmake?tags?description?pricingPlan~dataSource~calculatorName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"Tags"TagMap.of_jsoninletdescription=field_mapjson__"Description"ResourceDescription.of_jsoninletpricingPlan=field_mapjson__"PricingPlan"PricingPlan.of_jsoninletdataSource=field_map_exnjson__"DataSource"String_.of_jsoninletcalculatorName=field_map_exnjson__"CalculatorName"ResourceName.of_jsoninmake?tags?description?pricingPlan~dataSource~calculatorName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend you upgrade to the Routes API V2 unless you require Grab data. CreateRouteCalculator is part of a previous Amazon Location Service Routes API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The Routes API version 2 has a simplified interface that can be used without creating or managing route calculator resources. If you are using an Amazon Web Services SDK or the Amazon Web Services CLI, note that the Routes API version 2 is found under geo-routes or geo_routes, not under location. Since Grab is not yet fully supported in Routes API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Routes V2 API Reference or the Developer Guide. Creates a route calculator resource in your Amazon Web Services account. You can send requests to a route calculator resource to estimate travel time, distance, and get directions. A route calculator sources traffic and road network data from your chosen data provider. If your application is tracking or routing assets you use in your business, such as delivery vehicles or employees, you must not use Esri as your geolocation provider. See section 82 of the Amazon Web Services service terms for more details."]moduleCreatePlaceIndexResponse=structtypenonrect={indexName:ResourceName.toption[@ocaml.doc"The name for the place index resource."];indexArn:GeoArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) for the place index resource. Used to specify a resource across Amazon Web Services. Format example: arn:aws:geo:region:account-id:place-index/ExamplePlaceIndex"];createTime:Timestamp.toption[@ocaml.doc"The timestamp for when the place index resource was created in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`ConflictExceptionofConflictException.t|`InternalServerExceptionofInternalServerException.t|`ServiceQuotaExceededExceptionofServiceQuotaExceededException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?indexName=fun?indexArn->fun?createTime->fun()->{indexName;indexArn;createTime}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"ConflictException"->`ConflictException(ConflictException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ServiceQuotaExceededException"->`ServiceQuotaExceededException(ServiceQuotaExceededException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"ConflictException"->`ConflictException(ConflictException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ServiceQuotaExceededException"->`ServiceQuotaExceededException(ServiceQuotaExceededException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`ConflictExceptione->`Assoc[("error",(`String"ConflictException"));("details",(ConflictException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ServiceQuotaExceededExceptione->`Assoc[("error",(`String"ServiceQuotaExceededException"));("details",(ServiceQuotaExceededException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("IndexName",(Option.mapx.indexName~f:ResourceName.to_value));("IndexArn",(Option.mapx.indexArn~f:GeoArn.to_value));("CreateTime",(Option.mapx.createTime~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcreateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"CreateTime")inletindexArn=(Option.map~f:GeoArn.of_xml)(Xml.childxml_arg0"IndexArn")inletindexName=(Option.map~f:ResourceName.of_xml)(Xml.childxml_arg0"IndexName")inmake?createTime?indexArn?indexName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcreateTime=field_mapjson__"CreateTime"Timestamp.of_jsoninletindexArn=field_mapjson__"IndexArn"GeoArn.of_jsoninletindexName=field_mapjson__"IndexName"ResourceName.of_jsoninmake?createTime?indexArn?indexName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend you upgrade to the Places API V2 unless you require Grab data. CreatePlaceIndex is part of a previous Amazon Location Service Places API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The Places API version 2 has a simplified interface that can be used without creating or managing place index resources. If you are using an Amazon Web Services SDK or the Amazon Web Services CLI, note that the Places API version 2 is found under geo-places or geo_places, not under location. Since Grab is not yet fully supported in Places API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Places V2 API Reference or the Developer Guide. Creates a place index resource in your Amazon Web Services account. Use a place index resource to geocode addresses and other text queries by using the SearchPlaceIndexForText operation, and reverse geocode coordinates by using the SearchPlaceIndexForPosition operation, and enable autosuggestions by using the SearchPlaceIndexForSuggestions operation. If your application is tracking or routing assets you use in your business, such as delivery vehicles or employees, you must not use Esri as your geolocation provider. See section 82 of the Amazon Web Services service terms for more details."]moduleCreatePlaceIndexRequest=structtypenonrect={indexName:ResourceName.t[@ocaml.doc"The name of the place index resource. Requirements: Contain only alphanumeric characters (A\226\128\147Z, a\226\128\147z, 0\226\128\1479), hyphens (-), periods (.), and underscores (_). Must be a unique place index resource name. No spaces allowed. For example, ExamplePlaceIndex."];dataSource:String_.t[@ocaml.doc"Specifies the geospatial data provider for the new place index. This field is case-sensitive. Enter the valid values as shown. For example, entering HERE returns an error. Valid values include: Esri \226\128\147 For additional information about Esri's coverage in your region of interest, see Esri details on geocoding coverage. Grab \226\128\147 Grab provides place index functionality for Southeast Asia. For additional information about GrabMaps' coverage, see GrabMaps countries and areas covered. Here \226\128\147 For additional information about HERE Technologies' coverage in your region of interest, see HERE details on goecoding coverage. If you specify HERE Technologies (Here) as the data provider, you may not store results for locations in Japan. For more information, see the Amazon Web Services service terms for Amazon Location Service. For additional information , see Data providers on the Amazon Location Service developer guide."];pricingPlan:PricingPlan.toption[@ocaml.doc"No longer used. If included, the only allowed value is RequestBasedUsage."];description:ResourceDescription.toption[@ocaml.doc"The optional description for the place index resource."];dataSourceConfiguration:DataSourceConfiguration.toption[@ocaml.doc"Specifies the data storage option requesting Places."];tags:TagMap.toption[@ocaml.doc"Applies one or more tags to the place index resource. A tag is a key-value pair that helps you manage, identify, search, and filter your resources. Format: \"key\" : \"value\" Restrictions: Maximum 50 tags per resource. Each tag key must be unique and must have exactly one associated value. Maximum key length: 128 Unicode characters in UTF-8. Maximum value length: 256 Unicode characters in UTF-8. Can use alphanumeric characters (A\226\128\147Z, a\226\128\147z, 0\226\128\1479), and the following characters: + - = . _ : / \\@ Cannot use \"aws:\" as a prefix for a key."]}letcontext_="CreatePlaceIndexRequest"letmake?pricingPlan=fun?description->fun?dataSourceConfiguration->fun?tags->fun~indexName->fun~dataSource->fun()->{pricingPlan;description;dataSourceConfiguration;tags;indexName;dataSource}letto_valuex=structure_to_value[("IndexName",(Some(ResourceName.to_valuex.indexName)));("DataSource",(Some(String_.to_valuex.dataSource)));("PricingPlan",(Option.mapx.pricingPlan~f:PricingPlan.to_value));("Description",(Option.mapx.description~f:ResourceDescription.to_value));("DataSourceConfiguration",(Option.mapx.dataSourceConfiguration~f:DataSourceConfiguration.to_value));("Tags",(Option.mapx.tags~f:TagMap.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:TagMap.of_xml)(Xml.childxml_arg0"Tags")inletdataSourceConfiguration=(Option.map~f:DataSourceConfiguration.of_xml)(Xml.childxml_arg0"DataSourceConfiguration")inletdescription=(Option.map~f:ResourceDescription.of_xml)(Xml.childxml_arg0"Description")inletpricingPlan=(Option.map~f:PricingPlan.of_xml)(Xml.childxml_arg0"PricingPlan")inletdataSource=String_.of_xml(Xml.child_exn~context:context_xml_arg0"DataSource")inletindexName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"IndexName")inmake?tags?dataSourceConfiguration?description?pricingPlan~dataSource~indexName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"Tags"TagMap.of_jsoninletdataSourceConfiguration=field_mapjson__"DataSourceConfiguration"DataSourceConfiguration.of_jsoninletdescription=field_mapjson__"Description"ResourceDescription.of_jsoninletpricingPlan=field_mapjson__"PricingPlan"PricingPlan.of_jsoninletdataSource=field_map_exnjson__"DataSource"String_.of_jsoninletindexName=field_map_exnjson__"IndexName"ResourceName.of_jsoninmake?tags?dataSourceConfiguration?description?pricingPlan~dataSource~indexName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend you upgrade to the Places API V2 unless you require Grab data. CreatePlaceIndex is part of a previous Amazon Location Service Places API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The Places API version 2 has a simplified interface that can be used without creating or managing place index resources. If you are using an Amazon Web Services SDK or the Amazon Web Services CLI, note that the Places API version 2 is found under geo-places or geo_places, not under location. Since Grab is not yet fully supported in Places API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Places V2 API Reference or the Developer Guide. Creates a place index resource in your Amazon Web Services account. Use a place index resource to geocode addresses and other text queries by using the SearchPlaceIndexForText operation, and reverse geocode coordinates by using the SearchPlaceIndexForPosition operation, and enable autosuggestions by using the SearchPlaceIndexForSuggestions operation. If your application is tracking or routing assets you use in your business, such as delivery vehicles or employees, you must not use Esri as your geolocation provider. See section 82 of the Amazon Web Services service terms for more details."]moduleCreateMapResponse=structtypenonrect={mapName:ResourceName.toption[@ocaml.doc"The name of the map resource."];mapArn:GeoArn.toption[@ocaml.doc"The Amazon Resource Name (ARN) for the map resource. Used to specify a resource across all Amazon Web Services. Format example: arn:aws:geo:region:account-id:map/ExampleMap"];createTime:Timestamp.toption[@ocaml.doc"The timestamp for when the map resource was created in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`ConflictExceptionofConflictException.t|`InternalServerExceptionofInternalServerException.t|`ServiceQuotaExceededExceptionofServiceQuotaExceededException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?mapName=fun?mapArn->fun?createTime->fun()->{mapName;mapArn;createTime}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"ConflictException"->`ConflictException(ConflictException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ServiceQuotaExceededException"->`ServiceQuotaExceededException(ServiceQuotaExceededException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"ConflictException"->`ConflictException(ConflictException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ServiceQuotaExceededException"->`ServiceQuotaExceededException(ServiceQuotaExceededException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`ConflictExceptione->`Assoc[("error",(`String"ConflictException"));("details",(ConflictException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ServiceQuotaExceededExceptione->`Assoc[("error",(`String"ServiceQuotaExceededException"));("details",(ServiceQuotaExceededException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("MapName",(Option.mapx.mapName~f:ResourceName.to_value));("MapArn",(Option.mapx.mapArn~f:GeoArn.to_value));("CreateTime",(Option.mapx.createTime~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcreateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"CreateTime")inletmapArn=(Option.map~f:GeoArn.of_xml)(Xml.childxml_arg0"MapArn")inletmapName=(Option.map~f:ResourceName.of_xml)(Xml.childxml_arg0"MapName")inmake?createTime?mapArn?mapName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcreateTime=field_mapjson__"CreateTime"Timestamp.of_jsoninletmapArn=field_mapjson__"MapArn"GeoArn.of_jsoninletmapName=field_mapjson__"MapName"ResourceName.of_jsoninmake?createTime?mapArn?mapName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend upgrading to the Maps API V2 unless you require Grab data. CreateMap is part of a previous Amazon Location Service Maps API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The Maps API version 2 has a simplified interface that can be used without creating or managing map resources. If you are using an AWS SDK or the AWS CLI, note that the Maps API version 2 is found under geo-maps or geo_maps, not under location. Since Grab is not yet fully supported in Maps API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Maps V2 API Reference or the Developer Guide. Creates a map resource in your Amazon Web Services account, which provides map tiles of different styles sourced from global location data providers. If your application is tracking or routing assets you use in your business, such as delivery vehicles or employees, you must not use Esri as your geolocation provider. See section 82 of the Amazon Web Services service terms for more details."]moduleCreateMapRequest=structtypenonrect={mapName:ResourceName.t[@ocaml.doc"The name for the map resource. Requirements: Must contain only alphanumeric characters (A\226\128\147Z, a\226\128\147z, 0\226\128\1479), hyphens (-), periods (.), and underscores (_). Must be a unique map resource name. No spaces allowed. For example, ExampleMap."];configuration:MapConfiguration.t[@ocaml.doc"Specifies the MapConfiguration, including the map style, for the map resource that you create. The map style defines the look of maps and the data provider for your map resource."];pricingPlan:PricingPlan.toption[@ocaml.doc"No longer used. If included, the only allowed value is RequestBasedUsage."];description:ResourceDescription.toption[@ocaml.doc"An optional description for the map resource."];tags:TagMap.toption[@ocaml.doc"Applies one or more tags to the map resource. A tag is a key-value pair helps manage, identify, search, and filter your resources by labelling them. Format: \"key\" : \"value\" Restrictions: Maximum 50 tags per resource Each resource tag must be unique with a maximum of one value. Maximum key length: 128 Unicode characters in UTF-8 Maximum value length: 256 Unicode characters in UTF-8 Can use alphanumeric characters (A\226\128\147Z, a\226\128\147z, 0\226\128\1479), and the following characters: + - = . _ : / \\@. Cannot use \"aws:\" as a prefix for a key."]}letcontext_="CreateMapRequest"letmake?pricingPlan=fun?description->fun?tags->fun~mapName->fun~configuration->fun()->{pricingPlan;description;tags;mapName;configuration}letto_valuex=structure_to_value[("MapName",(Some(ResourceName.to_valuex.mapName)));("Configuration",(Some(MapConfiguration.to_valuex.configuration)));("PricingPlan",(Option.mapx.pricingPlan~f:PricingPlan.to_value));("Description",(Option.mapx.description~f:ResourceDescription.to_value));("Tags",(Option.mapx.tags~f:TagMap.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:TagMap.of_xml)(Xml.childxml_arg0"Tags")inletdescription=(Option.map~f:ResourceDescription.of_xml)(Xml.childxml_arg0"Description")inletpricingPlan=(Option.map~f:PricingPlan.of_xml)(Xml.childxml_arg0"PricingPlan")inletconfiguration=MapConfiguration.of_xml(Xml.child_exn~context:context_xml_arg0"Configuration")inletmapName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"MapName")inmake?tags?description?pricingPlan~configuration~mapName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"Tags"TagMap.of_jsoninletdescription=field_mapjson__"Description"ResourceDescription.of_jsoninletpricingPlan=field_mapjson__"PricingPlan"PricingPlan.of_jsoninletconfiguration=field_map_exnjson__"Configuration"MapConfiguration.of_jsoninletmapName=field_map_exnjson__"MapName"ResourceName.of_jsoninmake?tags?description?pricingPlan~configuration~mapName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend upgrading to the Maps API V2 unless you require Grab data. CreateMap is part of a previous Amazon Location Service Maps API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The Maps API version 2 has a simplified interface that can be used without creating or managing map resources. If you are using an AWS SDK or the AWS CLI, note that the Maps API version 2 is found under geo-maps or geo_maps, not under location. Since Grab is not yet fully supported in Maps API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Maps V2 API Reference or the Developer Guide. Creates a map resource in your Amazon Web Services account, which provides map tiles of different styles sourced from global location data providers. If your application is tracking or routing assets you use in your business, such as delivery vehicles or employees, you must not use Esri as your geolocation provider. See section 82 of the Amazon Web Services service terms for more details."]moduleCreateKeyResponse=structtypenonrect={key:ApiKey.toption[@ocaml.doc"The key value/string of an API key. This value is used when making API calls to authorize the call. For example, see GetMapGlyphs."];keyArn:Arn.toption[@ocaml.doc"The Amazon Resource Name (ARN) for the API key resource. Used when you need to specify a resource across all Amazon Web Services. Format example: arn:aws:geo:region:account-id:key/ExampleKey"];keyName:ResourceName.toption[@ocaml.doc"The name of the API key resource."];createTime:Timestamp.toption[@ocaml.doc"The timestamp for when the API key resource was created in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`ConflictExceptionofConflictException.t|`InternalServerExceptionofInternalServerException.t|`ServiceQuotaExceededExceptionofServiceQuotaExceededException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?key=fun?keyArn->fun?keyName->fun?createTime->fun()->{key;keyArn;keyName;createTime}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"ConflictException"->`ConflictException(ConflictException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ServiceQuotaExceededException"->`ServiceQuotaExceededException(ServiceQuotaExceededException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"ConflictException"->`ConflictException(ConflictException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ServiceQuotaExceededException"->`ServiceQuotaExceededException(ServiceQuotaExceededException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`ConflictExceptione->`Assoc[("error",(`String"ConflictException"));("details",(ConflictException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ServiceQuotaExceededExceptione->`Assoc[("error",(`String"ServiceQuotaExceededException"));("details",(ServiceQuotaExceededException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Key",(Option.mapx.key~f:ApiKey.to_value));("KeyArn",(Option.mapx.keyArn~f:Arn.to_value));("KeyName",(Option.mapx.keyName~f:ResourceName.to_value));("CreateTime",(Option.mapx.createTime~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcreateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"CreateTime")inletkeyName=(Option.map~f:ResourceName.of_xml)(Xml.childxml_arg0"KeyName")inletkeyArn=(Option.map~f:Arn.of_xml)(Xml.childxml_arg0"KeyArn")inletkey=(Option.map~f:ApiKey.of_xml)(Xml.childxml_arg0"Key")inmake?createTime?keyName?keyArn?key()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcreateTime=field_mapjson__"CreateTime"Timestamp.of_jsoninletkeyName=field_mapjson__"KeyName"ResourceName.of_jsoninletkeyArn=field_mapjson__"KeyArn"Arn.of_jsoninletkey=field_mapjson__"Key"ApiKey.of_jsoninmake?createTime?keyName?keyArn?key()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates an API key resource in your Amazon Web Services account, which lets you grant actions for Amazon Location resources to the API key bearer. For more information, see Use API keys to authenticate in the Amazon Location Service Developer Guide."]moduleCreateKeyRequest=structtypenonrect={keyName:ResourceName.t[@ocaml.doc"A custom name for the API key resource. Requirements: Contain only alphanumeric characters (A\226\128\147Z, a\226\128\147z, 0\226\128\1479), hyphens (-), periods (.), and underscores (_). Must be a unique API key name. No spaces allowed. For example, ExampleAPIKey."];restrictions:ApiKeyRestrictions.t[@ocaml.doc"The API key restrictions for the API key resource."];description:ResourceDescription.toption[@ocaml.doc"An optional description for the API key resource."];expireTime:Timestamp.toption[@ocaml.doc"The optional timestamp for when the API key resource will expire in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ. One of NoExpiry or ExpireTime must be set."];noExpiry:Boolean.toption[@ocaml.doc"Optionally set to true to set no expiration time for the API key. One of NoExpiry or ExpireTime must be set."];tags:TagMap.toption[@ocaml.doc"Applies one or more tags to the map resource. A tag is a key-value pair that helps manage, identify, search, and filter your resources by labelling them. Format: \"key\" : \"value\" Restrictions: Maximum 50 tags per resource Each resource tag must be unique with a maximum of one value. Maximum key length: 128 Unicode characters in UTF-8 Maximum value length: 256 Unicode characters in UTF-8 Can use alphanumeric characters (A\226\128\147Z, a\226\128\147z, 0\226\128\1479), and the following characters: + - = . _ : / \\@. Cannot use \"aws:\" as a prefix for a key."]}letcontext_="CreateKeyRequest"letmake?description=fun?expireTime->fun?noExpiry->fun?tags->fun~keyName->fun~restrictions->fun()->{description;expireTime;noExpiry;tags;keyName;restrictions}letto_valuex=structure_to_value[("KeyName",(Some(ResourceName.to_valuex.keyName)));("Restrictions",(Some(ApiKeyRestrictions.to_valuex.restrictions)));("Description",(Option.mapx.description~f:ResourceDescription.to_value));("ExpireTime",(Option.mapx.expireTime~f:Timestamp.to_value));("NoExpiry",(Option.mapx.noExpiry~f:Boolean.to_value));("Tags",(Option.mapx.tags~f:TagMap.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=lettags=(Option.map~f:TagMap.of_xml)(Xml.childxml_arg0"Tags")inletnoExpiry=(Option.map~f:Boolean.of_xml)(Xml.childxml_arg0"NoExpiry")inletexpireTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"ExpireTime")inletdescription=(Option.map~f:ResourceDescription.of_xml)(Xml.childxml_arg0"Description")inletrestrictions=ApiKeyRestrictions.of_xml(Xml.child_exn~context:context_xml_arg0"Restrictions")inletkeyName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"KeyName")inmake?tags?noExpiry?expireTime?description~restrictions~keyName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=lettags=field_mapjson__"Tags"TagMap.of_jsoninletnoExpiry=field_mapjson__"NoExpiry"Boolean.of_jsoninletexpireTime=field_mapjson__"ExpireTime"Timestamp.of_jsoninletdescription=field_mapjson__"Description"ResourceDescription.of_jsoninletrestrictions=field_map_exnjson__"Restrictions"ApiKeyRestrictions.of_jsoninletkeyName=field_map_exnjson__"KeyName"ResourceName.of_jsoninmake?tags?noExpiry?expireTime?description~restrictions~keyName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates an API key resource in your Amazon Web Services account, which lets you grant actions for Amazon Location resources to the API key bearer. For more information, see Use API keys to authenticate in the Amazon Location Service Developer Guide."]moduleCreateGeofenceCollectionResponse=structtypenonrect={collectionName:ResourceName.toption[@ocaml.doc"The name for the geofence collection."];collectionArn:Arn.toption[@ocaml.doc"The Amazon Resource Name (ARN) for the geofence collection resource. Used when you need to specify a resource across all Amazon Web Services. Format example: arn:aws:geo:region:account-id:geofence-collection/ExampleGeofenceCollection"];createTime:Timestamp.toption[@ocaml.doc"The timestamp for when the geofence collection was created in ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ"]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`ConflictExceptionofConflictException.t|`InternalServerExceptionofInternalServerException.t|`ServiceQuotaExceededExceptionofServiceQuotaExceededException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?collectionName=fun?collectionArn->fun?createTime->fun()->{collectionName;collectionArn;createTime}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"ConflictException"->`ConflictException(ConflictException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ServiceQuotaExceededException"->`ServiceQuotaExceededException(ServiceQuotaExceededException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"ConflictException"->`ConflictException(ConflictException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ServiceQuotaExceededException"->`ServiceQuotaExceededException(ServiceQuotaExceededException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`ConflictExceptione->`Assoc[("error",(`String"ConflictException"));("details",(ConflictException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ServiceQuotaExceededExceptione->`Assoc[("error",(`String"ServiceQuotaExceededException"));("details",(ServiceQuotaExceededException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("CollectionName",(Option.mapx.collectionName~f:ResourceName.to_value));("CollectionArn",(Option.mapx.collectionArn~f:Arn.to_value));("CreateTime",(Option.mapx.createTime~f:Timestamp.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letcreateTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"CreateTime")inletcollectionArn=(Option.map~f:Arn.of_xml)(Xml.childxml_arg0"CollectionArn")inletcollectionName=(Option.map~f:ResourceName.of_xml)(Xml.childxml_arg0"CollectionName")inmake?createTime?collectionArn?collectionName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letcreateTime=field_mapjson__"CreateTime"Timestamp.of_jsoninletcollectionArn=field_mapjson__"CollectionArn"Arn.of_jsoninletcollectionName=field_mapjson__"CollectionName"ResourceName.of_jsoninmake?createTime?collectionArn?collectionName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates a geofence collection, which manages and stores geofences."]moduleCreateGeofenceCollectionRequest=structtypenonrect={collectionName:ResourceName.t[@ocaml.doc"A custom name for the geofence collection. Requirements: Contain only alphanumeric characters (A\226\128\147Z, a\226\128\147z, 0\226\128\1479), hyphens (-), periods (.), and underscores (_). Must be a unique geofence collection name. No spaces allowed. For example, ExampleGeofenceCollection."];pricingPlan:PricingPlan.toption[@ocaml.doc"No longer used. If included, the only allowed value is RequestBasedUsage."];pricingPlanDataSource:String_.toption[@ocaml.doc"This parameter is no longer used."];description:ResourceDescription.toption[@ocaml.doc"An optional description for the geofence collection."];tags:TagMap.toption[@ocaml.doc"Applies one or more tags to the geofence collection. A tag is a key-value pair helps manage, identify, search, and filter your resources by labelling them. Format: \"key\" : \"value\" Restrictions: Maximum 50 tags per resource Each resource tag must be unique with a maximum of one value. Maximum key length: 128 Unicode characters in UTF-8 Maximum value length: 256 Unicode characters in UTF-8 Can use alphanumeric characters (A\226\128\147Z, a\226\128\147z, 0\226\128\1479), and the following characters: + - = . _ : / \\@. Cannot use \"aws:\" as a prefix for a key."];kmsKeyId:KmsKeyId.toption[@ocaml.doc"A key identifier for an Amazon Web Services KMS customer managed key. Enter a key ID, key ARN, alias name, or alias ARN."]}letcontext_="CreateGeofenceCollectionRequest"letmake?pricingPlan=fun?pricingPlanDataSource->fun?description->fun?tags->fun?kmsKeyId->fun~collectionName->fun()->{pricingPlan;pricingPlanDataSource;description;tags;kmsKeyId;collectionName}letto_valuex=structure_to_value[("CollectionName",(Some(ResourceName.to_valuex.collectionName)));("PricingPlan",(Option.mapx.pricingPlan~f:PricingPlan.to_value));("PricingPlanDataSource",(Option.mapx.pricingPlanDataSource~f:String_.to_value));("Description",(Option.mapx.description~f:ResourceDescription.to_value));("Tags",(Option.mapx.tags~f:TagMap.to_value));("KmsKeyId",(Option.mapx.kmsKeyId~f:KmsKeyId.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letkmsKeyId=(Option.map~f:KmsKeyId.of_xml)(Xml.childxml_arg0"KmsKeyId")inlettags=(Option.map~f:TagMap.of_xml)(Xml.childxml_arg0"Tags")inletdescription=(Option.map~f:ResourceDescription.of_xml)(Xml.childxml_arg0"Description")inletpricingPlanDataSource=(Option.map~f:String_.of_xml)(Xml.childxml_arg0"PricingPlanDataSource")inletpricingPlan=(Option.map~f:PricingPlan.of_xml)(Xml.childxml_arg0"PricingPlan")inletcollectionName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"CollectionName")inmake?kmsKeyId?tags?description?pricingPlanDataSource?pricingPlan~collectionName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letkmsKeyId=field_mapjson__"KmsKeyId"KmsKeyId.of_jsoninlettags=field_mapjson__"Tags"TagMap.of_jsoninletdescription=field_mapjson__"Description"ResourceDescription.of_jsoninletpricingPlanDataSource=field_mapjson__"PricingPlanDataSource"String_.of_jsoninletpricingPlan=field_mapjson__"PricingPlan"PricingPlan.of_jsoninletcollectionName=field_map_exnjson__"CollectionName"ResourceName.of_jsoninmake?kmsKeyId?tags?description?pricingPlanDataSource?pricingPlan~collectionName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates a geofence collection, which manages and stores geofences."]moduleCancelJobResponse=structtypenonrect={jobArn:GeoArn.toption[@ocaml.doc"Amazon Resource Name (ARN) of the cancelled job."];jobId:JobId.toption[@ocaml.doc"Unique job identifier."];status:JobStatus.toption[@ocaml.doc"Job status after cancellation request."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?jobArn=fun?jobId->fun?status->fun()->{jobArn;jobId;status}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("JobArn",(Option.mapx.jobArn~f:GeoArn.to_value));("JobId",(Option.mapx.jobId~f:JobId.to_value));("Status",(Option.mapx.status~f:JobStatus.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letstatus=(Option.map~f:JobStatus.of_xml)(Xml.childxml_arg0"Status")inletjobId=(Option.map~f:JobId.of_xml)(Xml.childxml_arg0"JobId")inletjobArn=(Option.map~f:GeoArn.of_xml)(Xml.childxml_arg0"JobArn")inmake?status?jobId?jobArn()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letstatus=field_mapjson__"Status"JobStatus.of_jsoninletjobId=field_mapjson__"JobId"JobId.of_jsoninletjobArn=field_mapjson__"JobArn"GeoArn.of_jsoninmake?status?jobId?jobArn()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"CancelJob cancels a job that is currently running or pending. If the job is already in a terminal state (Completed, Failed, or Cancelled), the operation returns successfully with the current status. For more information, see Job concepts in the Amazon Location Service Developer Guide."]moduleCancelJobRequest=structtypenonrect={jobId:JobId.t[@ocaml.doc"The unique identifier of the job to cancel."]}letcontext_="CancelJobRequest"letmake~jobId=fun()->{jobId}letto_valuex=structure_to_value[("JobId",(Some(JobId.to_valuex.jobId)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letjobId=JobId.of_xml(Xml.child_exn~context:context_xml_arg0"JobId")inmake~jobId()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letjobId=field_map_exnjson__"JobId"JobId.of_jsoninmake~jobId()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"CancelJob cancels a job that is currently running or pending. If the job is already in a terminal state (Completed, Failed, or Cancelled), the operation returns successfully with the current status. For more information, see Job concepts in the Amazon Location Service Developer Guide."]moduleCalculateRouteResponse=structtypenonrect={legs:LegList.toption[@ocaml.doc"Contains details about each path between a pair of positions included along a route such as: StartPosition, EndPosition, Distance, DurationSeconds, Geometry, and Steps. The number of legs returned corresponds to one fewer than the total number of positions in the request. For example, a route with a departure position and destination position returns one leg with the positions snapped to a nearby road: The StartPosition is the departure position. The EndPosition is the destination position. A route with a waypoint between the departure and destination position returns two legs with the positions snapped to a nearby road: Leg 1: The StartPosition is the departure position . The EndPosition is the waypoint positon. Leg 2: The StartPosition is the waypoint position. The EndPosition is the destination position."];summary:CalculateRouteSummary.toption[@ocaml.doc"Contains information about the whole route, such as: RouteBBox, DataSource, Distance, DistanceUnit, and DurationSeconds."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?legs=fun?summary->fun()->{legs;summary}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Legs",(Option.mapx.legs~f:LegList.to_value));("Summary",(Option.mapx.summary~f:CalculateRouteSummary.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letsummary=(Option.map~f:CalculateRouteSummary.of_xml)(Xml.childxml_arg0"Summary")inletlegs=(Option.map~f:LegList.of_xml)(Xml.childxml_arg0"Legs")inmake?summary?legs()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letsummary=field_mapjson__"Summary"CalculateRouteSummary.of_jsoninletlegs=field_mapjson__"Legs"LegList.of_jsoninmake?summary?legs()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns the result of the route calculation. Metadata includes legs and route summary."]moduleCalculateRouteRequest=structtypenonrect={calculatorName:ResourceName.t[@ocaml.doc"The name of the route calculator resource that you want to use to calculate the route."];departurePosition:Position.t[@ocaml.doc"The start position for the route. Defined in World Geodetic System (WGS 84) format: \\[longitude, latitude\\]. For example, \\[-123.115, 49.285\\] If you specify a departure that's not located on a road, Amazon Location moves the position to the nearest road. If Esri is the provider for your route calculator, specifying a route that is longer than 400 km returns a 400 RoutesValidationException error. Valid Values: \\[-180 to 180,-90 to 90\\]"];destinationPosition:Position.t[@ocaml.doc"The finish position for the route. Defined in World Geodetic System (WGS 84) format: \\[longitude, latitude\\]. For example, \\[-122.339, 47.615\\] If you specify a destination that's not located on a road, Amazon Location moves the position to the nearest road. Valid Values: \\[-180 to 180,-90 to 90\\]"];waypointPositions:CalculateRouteRequestWaypointPositionsList.toption[@ocaml.doc"Specifies an ordered list of up to 23 intermediate positions to include along a route between the departure position and destination position. For example, from the DeparturePosition \\[-123.115, 49.285\\], the route follows the order that the waypoint positions are given \\[\\[-122.757, 49.0021\\],\\[-122.349, 47.620\\]\\] If you specify a waypoint position that's not located on a road, Amazon Location moves the position to the nearest road. Specifying more than 23 waypoints returns a 400 ValidationException error. If Esri is the provider for your route calculator, specifying a route that is longer than 400 km returns a 400 RoutesValidationException error. Valid Values: \\[-180 to 180,-90 to 90\\]"];travelMode:TravelMode.toption[@ocaml.doc"Specifies the mode of transport when calculating a route. Used in estimating the speed of travel and road compatibility. You can choose Car, Truck, Walking, Bicycle or Motorcycle as options for the TravelMode. Bicycle and Motorcycle are only valid when using Grab as a data provider, and only within Southeast Asia. Truck is not available for Grab. For more details on the using Grab for routing, including areas of coverage, see GrabMaps in the Amazon Location Service Developer Guide. The TravelMode you specify also determines how you specify route preferences: If traveling by Car use the CarModeOptions parameter. If traveling by Truck use the TruckModeOptions parameter. Default Value: Car"];departureTime:Timestamp.toption[@ocaml.doc"Specifies the desired time of departure. Uses the given time to calculate the route. Otherwise, the best time of day to travel with the best traffic conditions is used to calculate the route. In ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ. For example, 2020\226\128\14707-2T12:15:20.000Z+01:00"];departNow:SensitiveBoolean.toption[@ocaml.doc"Sets the time of departure as the current time. Uses the current time to calculate a route. Otherwise, the best time of day to travel with the best traffic conditions is used to calculate the route. Default Value: false Valid Values: false | true"];distanceUnit:DistanceUnit.toption[@ocaml.doc"Set the unit system to specify the distance. Default Value: Kilometers"];includeLegGeometry:SensitiveBoolean.toption[@ocaml.doc"Set to include the geometry details in the result for each path between a pair of positions. Default Value: false Valid Values: false | true"];carModeOptions:CalculateRouteCarModeOptions.toption[@ocaml.doc"Specifies route preferences when traveling by Car, such as avoiding routes that use ferries or tolls. Requirements: TravelMode must be specified as Car."];truckModeOptions:CalculateRouteTruckModeOptions.toption[@ocaml.doc"Specifies route preferences when traveling by Truck, such as avoiding routes that use ferries or tolls, and truck specifications to consider when choosing an optimal road. Requirements: TravelMode must be specified as Truck."];arrivalTime:Timestamp.toption[@ocaml.doc"Specifies the desired time of arrival. Uses the given time to calculate the route. Otherwise, the best time of day to travel with the best traffic conditions is used to calculate the route. ArrivalTime is not supported Esri."];optimizeFor:OptimizationMode.toption[@ocaml.doc"Specifies the distance to optimize for when calculating a route."];key:ApiKey.toption[@ocaml.doc"The optional API key to authorize the request."]}letcontext_="CalculateRouteRequest"letmake?waypointPositions=fun?travelMode->fun?departureTime->fun?departNow->fun?distanceUnit->fun?includeLegGeometry->fun?carModeOptions->fun?truckModeOptions->fun?arrivalTime->fun?optimizeFor->fun?key->fun~calculatorName->fun~departurePosition->fun~destinationPosition->fun()->{waypointPositions;travelMode;departureTime;departNow;distanceUnit;includeLegGeometry;carModeOptions;truckModeOptions;arrivalTime;optimizeFor;key;calculatorName;departurePosition;destinationPosition}letto_valuex=structure_to_value[("CalculatorName",(Some(ResourceName.to_valuex.calculatorName)));("DeparturePosition",(Some(Position.to_valuex.departurePosition)));("DestinationPosition",(Some(Position.to_valuex.destinationPosition)));("WaypointPositions",(Option.mapx.waypointPositions~f:CalculateRouteRequestWaypointPositionsList.to_value));("TravelMode",(Option.mapx.travelMode~f:TravelMode.to_value));("DepartureTime",(Option.mapx.departureTime~f:Timestamp.to_value));("DepartNow",(Option.mapx.departNow~f:SensitiveBoolean.to_value));("DistanceUnit",(Option.mapx.distanceUnit~f:DistanceUnit.to_value));("IncludeLegGeometry",(Option.mapx.includeLegGeometry~f:SensitiveBoolean.to_value));("CarModeOptions",(Option.mapx.carModeOptions~f:CalculateRouteCarModeOptions.to_value));("TruckModeOptions",(Option.mapx.truckModeOptions~f:CalculateRouteTruckModeOptions.to_value));("ArrivalTime",(Option.mapx.arrivalTime~f:Timestamp.to_value));("OptimizeFor",(Option.mapx.optimizeFor~f:OptimizationMode.to_value));("key",(Option.mapx.key~f:ApiKey.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letkey=(Option.map~f:ApiKey.of_xml)(Xml.childxml_arg0"key")inletoptimizeFor=(Option.map~f:OptimizationMode.of_xml)(Xml.childxml_arg0"OptimizeFor")inletarrivalTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"ArrivalTime")inlettruckModeOptions=(Option.map~f:CalculateRouteTruckModeOptions.of_xml)(Xml.childxml_arg0"TruckModeOptions")inletcarModeOptions=(Option.map~f:CalculateRouteCarModeOptions.of_xml)(Xml.childxml_arg0"CarModeOptions")inletincludeLegGeometry=(Option.map~f:SensitiveBoolean.of_xml)(Xml.childxml_arg0"IncludeLegGeometry")inletdistanceUnit=(Option.map~f:DistanceUnit.of_xml)(Xml.childxml_arg0"DistanceUnit")inletdepartNow=(Option.map~f:SensitiveBoolean.of_xml)(Xml.childxml_arg0"DepartNow")inletdepartureTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"DepartureTime")inlettravelMode=(Option.map~f:TravelMode.of_xml)(Xml.childxml_arg0"TravelMode")inletwaypointPositions=(Option.map~f:CalculateRouteRequestWaypointPositionsList.of_xml)(Xml.childxml_arg0"WaypointPositions")inletdestinationPosition=Position.of_xml(Xml.child_exn~context:context_xml_arg0"DestinationPosition")inletdeparturePosition=Position.of_xml(Xml.child_exn~context:context_xml_arg0"DeparturePosition")inletcalculatorName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"CalculatorName")inmake?key?optimizeFor?arrivalTime?truckModeOptions?carModeOptions?includeLegGeometry?distanceUnit?departNow?departureTime?travelMode?waypointPositions~destinationPosition~departurePosition~calculatorName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letkey=field_mapjson__"Key"ApiKey.of_jsoninletoptimizeFor=field_mapjson__"OptimizeFor"OptimizationMode.of_jsoninletarrivalTime=field_mapjson__"ArrivalTime"Timestamp.of_jsoninlettruckModeOptions=field_mapjson__"TruckModeOptions"CalculateRouteTruckModeOptions.of_jsoninletcarModeOptions=field_mapjson__"CarModeOptions"CalculateRouteCarModeOptions.of_jsoninletincludeLegGeometry=field_mapjson__"IncludeLegGeometry"SensitiveBoolean.of_jsoninletdistanceUnit=field_mapjson__"DistanceUnit"DistanceUnit.of_jsoninletdepartNow=field_mapjson__"DepartNow"SensitiveBoolean.of_jsoninletdepartureTime=field_mapjson__"DepartureTime"Timestamp.of_jsoninlettravelMode=field_mapjson__"TravelMode"TravelMode.of_jsoninletwaypointPositions=field_mapjson__"WaypointPositions"CalculateRouteRequestWaypointPositionsList.of_jsoninletdestinationPosition=field_map_exnjson__"DestinationPosition"Position.of_jsoninletdeparturePosition=field_map_exnjson__"DeparturePosition"Position.of_jsoninletcalculatorName=field_map_exnjson__"CalculatorName"ResourceName.of_jsoninmake?key?optimizeFor?arrivalTime?truckModeOptions?carModeOptions?includeLegGeometry?distanceUnit?departNow?departureTime?travelMode?waypointPositions~destinationPosition~departurePosition~calculatorName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend you upgrade to CalculateRoutes or CalculateIsolines unless you require Grab data. CalculateRoute is part of a previous Amazon Location Service Routes API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The version 2 CalculateRoutes operation gives better results for point-to-point routing, while the version 2 CalculateIsolines operation adds support for calculating service areas and travel time envelopes. If you are using an Amazon Web Services SDK or the Amazon Web Services CLI, note that the Routes API version 2 is found under geo-routes or geo_routes, not under location. Since Grab is not yet fully supported in Routes API version 2, we recommend you continue using API version 1 when using Grab. Calculates a route given the following required parameters: DeparturePosition and DestinationPosition. Requires that you first create a route calculator resource. By default, a request that doesn't specify a departure time uses the best time of day to travel with the best traffic conditions when calculating the route. Additional options include: Specifying a departure time using either DepartureTime or DepartNow. This calculates a route based on predictive traffic data at the given time. You can't specify both DepartureTime and DepartNow in a single request. Specifying both parameters returns a validation error. Specifying a travel mode using TravelMode sets the transportation mode used to calculate the routes. This also lets you specify additional route preferences in CarModeOptions if traveling by Car, or TruckModeOptions if traveling by Truck. If you specify walking for the travel mode and your data provider is Esri, the start and destination must be within 40km."]moduleCalculateRouteMatrixResponse=structtypenonrect={routeMatrix:RouteMatrix.toption[@ocaml.doc"The calculated route matrix containing the results for all pairs of DeparturePositions to DestinationPositions. Each row corresponds to one entry in DeparturePositions. Each entry in the row corresponds to the route from that entry in DeparturePositions to an entry in DestinationPositions."];snappedDeparturePositions:CalculateRouteMatrixResponseSnappedDeparturePositionsList.toption[@ocaml.doc"For routes calculated using an Esri route calculator resource, departure positions are snapped to the closest road. For Esri route calculator resources, this returns the list of departure/origin positions used for calculation of the RouteMatrix."];snappedDestinationPositions:CalculateRouteMatrixResponseSnappedDestinationPositionsList.toption[@ocaml.doc"The list of destination positions for the route matrix used for calculation of the RouteMatrix."];summary:CalculateRouteMatrixSummary.toption[@ocaml.doc"Contains information about the route matrix, DataSource, DistanceUnit, RouteCount and ErrorCount."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?routeMatrix=fun?snappedDeparturePositions->fun?snappedDestinationPositions->fun?summary->fun()->{routeMatrix;snappedDeparturePositions;snappedDestinationPositions;summary}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("RouteMatrix",(Option.mapx.routeMatrix~f:RouteMatrix.to_value));("SnappedDeparturePositions",(Option.mapx.snappedDeparturePositions~f:CalculateRouteMatrixResponseSnappedDeparturePositionsList.to_value));("SnappedDestinationPositions",(Option.mapx.snappedDestinationPositions~f:CalculateRouteMatrixResponseSnappedDestinationPositionsList.to_value));("Summary",(Option.mapx.summary~f:CalculateRouteMatrixSummary.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letsummary=(Option.map~f:CalculateRouteMatrixSummary.of_xml)(Xml.childxml_arg0"Summary")inletsnappedDestinationPositions=(Option.map~f:CalculateRouteMatrixResponseSnappedDestinationPositionsList.of_xml)(Xml.childxml_arg0"SnappedDestinationPositions")inletsnappedDeparturePositions=(Option.map~f:CalculateRouteMatrixResponseSnappedDeparturePositionsList.of_xml)(Xml.childxml_arg0"SnappedDeparturePositions")inletrouteMatrix=(Option.map~f:RouteMatrix.of_xml)(Xml.childxml_arg0"RouteMatrix")inmake?summary?snappedDestinationPositions?snappedDeparturePositions?routeMatrix()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letsummary=field_mapjson__"Summary"CalculateRouteMatrixSummary.of_jsoninletsnappedDestinationPositions=field_mapjson__"SnappedDestinationPositions"CalculateRouteMatrixResponseSnappedDestinationPositionsList.of_jsoninletsnappedDeparturePositions=field_mapjson__"SnappedDeparturePositions"CalculateRouteMatrixResponseSnappedDeparturePositionsList.of_jsoninletrouteMatrix=field_mapjson__"RouteMatrix"RouteMatrix.of_jsoninmake?summary?snappedDestinationPositions?snappedDeparturePositions?routeMatrix()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Returns the result of the route matrix calculation."]moduleCalculateRouteMatrixRequest=structtypenonrect={calculatorName:ResourceName.t[@ocaml.doc"The name of the route calculator resource that you want to use to calculate the route matrix."];departurePositions:CalculateRouteMatrixRequestDeparturePositionsList.t[@ocaml.doc"The list of departure (origin) positions for the route matrix. An array of points, each of which is itself a 2-value array defined in WGS 84 format: \\[longitude, latitude\\]. For example, \\[-123.115, 49.285\\]. Depending on the data provider selected in the route calculator resource there may be additional restrictions on the inputs you can choose. See Position restrictions in the Amazon Location Service Developer Guide. For route calculators that use Esri as the data provider, if you specify a departure that's not located on a road, Amazon Location moves the position to the nearest road. The snapped value is available in the result in SnappedDeparturePositions. Valid Values: \\[-180 to 180,-90 to 90\\]"];destinationPositions:CalculateRouteMatrixRequestDestinationPositionsList.t[@ocaml.doc"The list of destination positions for the route matrix. An array of points, each of which is itself a 2-value array defined in WGS 84 format: \\[longitude, latitude\\]. For example, \\[-122.339, 47.615\\] Depending on the data provider selected in the route calculator resource there may be additional restrictions on the inputs you can choose. See Position restrictions in the Amazon Location Service Developer Guide. For route calculators that use Esri as the data provider, if you specify a destination that's not located on a road, Amazon Location moves the position to the nearest road. The snapped value is available in the result in SnappedDestinationPositions. Valid Values: \\[-180 to 180,-90 to 90\\]"];travelMode:TravelMode.toption[@ocaml.doc"Specifies the mode of transport when calculating a route. Used in estimating the speed of travel and road compatibility. The TravelMode you specify also determines how you specify route preferences: If traveling by Car use the CarModeOptions parameter. If traveling by Truck use the TruckModeOptions parameter. Bicycle or Motorcycle are only valid when using Grab as a data provider, and only within Southeast Asia. Truck is not available for Grab. For more information about using Grab as a data provider, see GrabMaps in the Amazon Location Service Developer Guide. Default Value: Car"];departureTime:Timestamp.toption[@ocaml.doc"Specifies the desired time of departure. Uses the given time to calculate the route matrix. You can't set both DepartureTime and DepartNow. If neither is set, the best time of day to travel with the best traffic conditions is used to calculate the route matrix. Setting a departure time in the past returns a 400 ValidationException error. In ISO 8601 format: YYYY-MM-DDThh:mm:ss.sssZ. For example, 2020\226\128\14707-2T12:15:20.000Z+01:00"];departNow:SensitiveBoolean.toption[@ocaml.doc"Sets the time of departure as the current time. Uses the current time to calculate the route matrix. You can't set both DepartureTime and DepartNow. If neither is set, the best time of day to travel with the best traffic conditions is used to calculate the route matrix. Default Value: false Valid Values: false | true"];distanceUnit:DistanceUnit.toption[@ocaml.doc"Set the unit system to specify the distance. Default Value: Kilometers"];carModeOptions:CalculateRouteCarModeOptions.toption[@ocaml.doc"Specifies route preferences when traveling by Car, such as avoiding routes that use ferries or tolls. Requirements: TravelMode must be specified as Car."];truckModeOptions:CalculateRouteTruckModeOptions.toption[@ocaml.doc"Specifies route preferences when traveling by Truck, such as avoiding routes that use ferries or tolls, and truck specifications to consider when choosing an optimal road. Requirements: TravelMode must be specified as Truck."];key:ApiKey.toption[@ocaml.doc"The optional API key to authorize the request."]}letcontext_="CalculateRouteMatrixRequest"letmake?travelMode=fun?departureTime->fun?departNow->fun?distanceUnit->fun?carModeOptions->fun?truckModeOptions->fun?key->fun~calculatorName->fun~departurePositions->fun~destinationPositions->fun()->{travelMode;departureTime;departNow;distanceUnit;carModeOptions;truckModeOptions;key;calculatorName;departurePositions;destinationPositions}letto_valuex=structure_to_value[("CalculatorName",(Some(ResourceName.to_valuex.calculatorName)));("DeparturePositions",(Some(CalculateRouteMatrixRequestDeparturePositionsList.to_valuex.departurePositions)));("DestinationPositions",(Some(CalculateRouteMatrixRequestDestinationPositionsList.to_valuex.destinationPositions)));("TravelMode",(Option.mapx.travelMode~f:TravelMode.to_value));("DepartureTime",(Option.mapx.departureTime~f:Timestamp.to_value));("DepartNow",(Option.mapx.departNow~f:SensitiveBoolean.to_value));("DistanceUnit",(Option.mapx.distanceUnit~f:DistanceUnit.to_value));("CarModeOptions",(Option.mapx.carModeOptions~f:CalculateRouteCarModeOptions.to_value));("TruckModeOptions",(Option.mapx.truckModeOptions~f:CalculateRouteTruckModeOptions.to_value));("key",(Option.mapx.key~f:ApiKey.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letkey=(Option.map~f:ApiKey.of_xml)(Xml.childxml_arg0"key")inlettruckModeOptions=(Option.map~f:CalculateRouteTruckModeOptions.of_xml)(Xml.childxml_arg0"TruckModeOptions")inletcarModeOptions=(Option.map~f:CalculateRouteCarModeOptions.of_xml)(Xml.childxml_arg0"CarModeOptions")inletdistanceUnit=(Option.map~f:DistanceUnit.of_xml)(Xml.childxml_arg0"DistanceUnit")inletdepartNow=(Option.map~f:SensitiveBoolean.of_xml)(Xml.childxml_arg0"DepartNow")inletdepartureTime=(Option.map~f:Timestamp.of_xml)(Xml.childxml_arg0"DepartureTime")inlettravelMode=(Option.map~f:TravelMode.of_xml)(Xml.childxml_arg0"TravelMode")inletdestinationPositions=CalculateRouteMatrixRequestDestinationPositionsList.of_xml(Xml.child_exn~context:context_xml_arg0"DestinationPositions")inletdeparturePositions=CalculateRouteMatrixRequestDeparturePositionsList.of_xml(Xml.child_exn~context:context_xml_arg0"DeparturePositions")inletcalculatorName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"CalculatorName")inmake?key?truckModeOptions?carModeOptions?distanceUnit?departNow?departureTime?travelMode~destinationPositions~departurePositions~calculatorName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letkey=field_mapjson__"Key"ApiKey.of_jsoninlettruckModeOptions=field_mapjson__"TruckModeOptions"CalculateRouteTruckModeOptions.of_jsoninletcarModeOptions=field_mapjson__"CarModeOptions"CalculateRouteCarModeOptions.of_jsoninletdistanceUnit=field_mapjson__"DistanceUnit"DistanceUnit.of_jsoninletdepartNow=field_mapjson__"DepartNow"SensitiveBoolean.of_jsoninletdepartureTime=field_mapjson__"DepartureTime"Timestamp.of_jsoninlettravelMode=field_mapjson__"TravelMode"TravelMode.of_jsoninletdestinationPositions=field_map_exnjson__"DestinationPositions"CalculateRouteMatrixRequestDestinationPositionsList.of_jsoninletdeparturePositions=field_map_exnjson__"DeparturePositions"CalculateRouteMatrixRequestDeparturePositionsList.of_jsoninletcalculatorName=field_map_exnjson__"CalculatorName"ResourceName.of_jsoninmake?key?truckModeOptions?carModeOptions?distanceUnit?departNow?departureTime?travelMode~destinationPositions~departurePositions~calculatorName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"This operation is no longer current and may be deprecated in the future. We recommend you upgrade to the V2 CalculateRouteMatrix unless you require Grab data. This version of CalculateRouteMatrix is part of a previous Amazon Location Service Routes API (version 1) which has been superseded by a more intuitive, powerful, and complete API (version 2). The version 2 CalculateRouteMatrix operation gives better results for matrix routing calculations. If you are using an Amazon Web Services SDK or the Amazon Web Services CLI, note that the Routes API version 2 is found under geo-routes or geo_routes, not under location. Since Grab is not yet fully supported in Routes API version 2, we recommend you continue using API version 1 when using Grab. Start your version 2 API journey with the Routes V2 API Reference or the Developer Guide. Calculates a route matrix given the following required parameters: DeparturePositions and DestinationPositions. CalculateRouteMatrix calculates routes and returns the travel time and travel distance from each departure position to each destination position in the request. For example, given departure positions A and B, and destination positions X and Y, CalculateRouteMatrix will return time and distance for routes from A to X, A to Y, B to X, and B to Y (in that order). The number of results returned (and routes calculated) will be the number of DeparturePositions times the number of DestinationPositions. Your account is charged for each route calculated, not the number of requests. Requires that you first create a route calculator resource. By default, a request that doesn't specify a departure time uses the best time of day to travel with the best traffic conditions when calculating routes. Additional options include: Specifying a departure time using either DepartureTime or DepartNow. This calculates routes based on predictive traffic data at the given time. You can't specify both DepartureTime and DepartNow in a single request. Specifying both parameters returns a validation error. Specifying a travel mode using TravelMode sets the transportation mode used to calculate the routes. This also lets you specify additional route preferences in CarModeOptions if traveling by Car, or TruckModeOptions if traveling by Truck."]moduleBatchUpdateDevicePositionResponse=structtypenonrect={errors:BatchUpdateDevicePositionErrorList.toption[@ocaml.doc"Contains error details for each device that failed to update its position."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?errors=fun()->{errors}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Errors",(Option.mapx.errors~f:BatchUpdateDevicePositionErrorList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=leterrors=(Option.map~f:BatchUpdateDevicePositionErrorList.of_xml)(Xml.childxml_arg0"Errors")inmake?errors()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=leterrors=field_mapjson__"Errors"BatchUpdateDevicePositionErrorList.of_jsoninmake?errors()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Uploads position update data for one or more devices to a tracker resource (up to 10 devices per batch). Amazon Location uses the data when it reports the last known device position and position history. Amazon Location retains location data for 30 days. Position updates are handled based on the PositionFiltering property of the tracker. When PositionFiltering is set to TimeBased, updates are evaluated against linked geofence collections, and location data is stored at a maximum of one position per 30 second interval. If your update frequency is more often than every 30 seconds, only one update per 30 seconds is stored for each unique device ID. When PositionFiltering is set to DistanceBased filtering, location data is stored and evaluated against linked geofence collections only if the device has moved more than 30 m (98.4 ft). When PositionFiltering is set to AccuracyBased filtering, location data is stored and evaluated against linked geofence collections only if the device has moved more than the measured accuracy. For example, if two consecutive updates from a device have a horizontal accuracy of 5 m and 10 m, the second update is neither stored or evaluated if the device has moved less than 15 m. If PositionFiltering is set to AccuracyBased filtering, Amazon Location uses the default value \\{ \"Horizontal\": 0\\} when accuracy is not provided on a DevicePositionUpdate."]moduleBatchUpdateDevicePositionRequest=structtypenonrect={trackerName:ResourceName.t[@ocaml.doc"The name of the tracker resource to update."];updates:BatchUpdateDevicePositionRequestUpdatesList.t[@ocaml.doc"Contains the position update details for each device, up to 10 devices."]}letcontext_="BatchUpdateDevicePositionRequest"letmake~trackerName=fun~updates->fun()->{trackerName;updates}letto_valuex=structure_to_value[("TrackerName",(Some(ResourceName.to_valuex.trackerName)));("Updates",(Some(BatchUpdateDevicePositionRequestUpdatesList.to_valuex.updates)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letupdates=BatchUpdateDevicePositionRequestUpdatesList.of_xml(Xml.child_exn~context:context_xml_arg0"Updates")inlettrackerName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"TrackerName")inmake~updates~trackerName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letupdates=field_map_exnjson__"Updates"BatchUpdateDevicePositionRequestUpdatesList.of_jsoninlettrackerName=field_map_exnjson__"TrackerName"ResourceName.of_jsoninmake~updates~trackerName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Uploads position update data for one or more devices to a tracker resource (up to 10 devices per batch). Amazon Location uses the data when it reports the last known device position and position history. Amazon Location retains location data for 30 days. Position updates are handled based on the PositionFiltering property of the tracker. When PositionFiltering is set to TimeBased, updates are evaluated against linked geofence collections, and location data is stored at a maximum of one position per 30 second interval. If your update frequency is more often than every 30 seconds, only one update per 30 seconds is stored for each unique device ID. When PositionFiltering is set to DistanceBased filtering, location data is stored and evaluated against linked geofence collections only if the device has moved more than 30 m (98.4 ft). When PositionFiltering is set to AccuracyBased filtering, location data is stored and evaluated against linked geofence collections only if the device has moved more than the measured accuracy. For example, if two consecutive updates from a device have a horizontal accuracy of 5 m and 10 m, the second update is neither stored or evaluated if the device has moved less than 15 m. If PositionFiltering is set to AccuracyBased filtering, Amazon Location uses the default value \\{ \"Horizontal\": 0\\} when accuracy is not provided on a DevicePositionUpdate."]moduleBatchPutGeofenceResponse=structtypenonrect={successes:BatchPutGeofenceSuccessList.toption[@ocaml.doc"Contains each geofence that was successfully stored in a geofence collection."];errors:BatchPutGeofenceErrorList.toption[@ocaml.doc"Contains additional error details for each geofence that failed to be stored in a geofence collection."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?successes=fun?errors->fun()->{successes;errors}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Successes",(Option.mapx.successes~f:BatchPutGeofenceSuccessList.to_value));("Errors",(Option.mapx.errors~f:BatchPutGeofenceErrorList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=leterrors=(Option.map~f:BatchPutGeofenceErrorList.of_xml)(Xml.childxml_arg0"Errors")inletsuccesses=(Option.map~f:BatchPutGeofenceSuccessList.of_xml)(Xml.childxml_arg0"Successes")inmake?errors?successes()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=leterrors=field_mapjson__"Errors"BatchPutGeofenceErrorList.of_jsoninletsuccesses=field_mapjson__"Successes"BatchPutGeofenceSuccessList.of_jsoninmake?errors?successes()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A batch request for storing geofence geometries into a given geofence collection, or updates the geometry of an existing geofence if a geofence ID is included in the request."]moduleBatchPutGeofenceRequest=structtypenonrect={collectionName:ResourceName.t[@ocaml.doc"The geofence collection storing the geofences."];entries:BatchPutGeofenceRequestEntriesList.t[@ocaml.doc"The batch of geofences to be stored in a geofence collection."]}letcontext_="BatchPutGeofenceRequest"letmake~collectionName=fun~entries->fun()->{collectionName;entries}letto_valuex=structure_to_value[("CollectionName",(Some(ResourceName.to_valuex.collectionName)));("Entries",(Some(BatchPutGeofenceRequestEntriesList.to_valuex.entries)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letentries=BatchPutGeofenceRequestEntriesList.of_xml(Xml.child_exn~context:context_xml_arg0"Entries")inletcollectionName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"CollectionName")inmake~entries~collectionName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letentries=field_map_exnjson__"Entries"BatchPutGeofenceRequestEntriesList.of_jsoninletcollectionName=field_map_exnjson__"CollectionName"ResourceName.of_jsoninmake~entries~collectionName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"A batch request for storing geofence geometries into a given geofence collection, or updates the geometry of an existing geofence if a geofence ID is included in the request."]moduleBatchGetDevicePositionResponse=structtypenonrect={errors:BatchGetDevicePositionErrorList.toption[@ocaml.doc"Contains error details for each device that failed to send its position to the tracker resource."];devicePositions:DevicePositionList.toption[@ocaml.doc"Contains device position details such as the device ID, position, and timestamps for when the position was received and sampled."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?errors=fun?devicePositions->fun()->{errors;devicePositions}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Errors",(Option.mapx.errors~f:BatchGetDevicePositionErrorList.to_value));("DevicePositions",(Option.mapx.devicePositions~f:DevicePositionList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdevicePositions=(Option.map~f:DevicePositionList.of_xml)(Xml.childxml_arg0"DevicePositions")inleterrors=(Option.map~f:BatchGetDevicePositionErrorList.of_xml)(Xml.childxml_arg0"Errors")inmake?devicePositions?errors()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdevicePositions=field_mapjson__"DevicePositions"DevicePositionList.of_jsoninleterrors=field_mapjson__"Errors"BatchGetDevicePositionErrorList.of_jsoninmake?devicePositions?errors()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists the latest device positions for requested devices."]moduleBatchGetDevicePositionRequest=structtypenonrect={trackerName:BatchGetDevicePositionRequestTrackerNameString.t[@ocaml.doc"The tracker resource retrieving the device position."];deviceIds:BatchGetDevicePositionRequestDeviceIdsList.t[@ocaml.doc"Devices whose position you want to retrieve. For example, for two devices: device-ids=DeviceId1&device-ids=DeviceId2"]}letcontext_="BatchGetDevicePositionRequest"letmake~trackerName=fun~deviceIds->fun()->{trackerName;deviceIds}letto_valuex=structure_to_value[("TrackerName",(Some(BatchGetDevicePositionRequestTrackerNameString.to_valuex.trackerName)));("DeviceIds",(Some(BatchGetDevicePositionRequestDeviceIdsList.to_valuex.deviceIds)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdeviceIds=BatchGetDevicePositionRequestDeviceIdsList.of_xml(Xml.child_exn~context:context_xml_arg0"DeviceIds")inlettrackerName=BatchGetDevicePositionRequestTrackerNameString.of_xml(Xml.child_exn~context:context_xml_arg0"TrackerName")inmake~deviceIds~trackerName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdeviceIds=field_map_exnjson__"DeviceIds"BatchGetDevicePositionRequestDeviceIdsList.of_jsoninlettrackerName=field_map_exnjson__"TrackerName"BatchGetDevicePositionRequestTrackerNameString.of_jsoninmake~deviceIds~trackerName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Lists the latest device positions for requested devices."]moduleBatchEvaluateGeofencesResponse=structtypenonrect={errors:BatchEvaluateGeofencesErrorList.toption[@ocaml.doc"Contains error details for each device that failed to evaluate its position against the given geofence collection."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?errors=fun()->{errors}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Errors",(Option.mapx.errors~f:BatchEvaluateGeofencesErrorList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=leterrors=(Option.map~f:BatchEvaluateGeofencesErrorList.of_xml)(Xml.childxml_arg0"Errors")inmake?errors()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=leterrors=field_mapjson__"Errors"BatchEvaluateGeofencesErrorList.of_jsoninmake?errors()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Evaluates device positions against the geofence geometries from a given geofence collection. This operation always returns an empty response because geofences are asynchronously evaluated. The evaluation determines if the device has entered or exited a geofenced area, and then publishes one of the following events to Amazon EventBridge: ENTER if Amazon Location determines that the tracked device has entered a geofenced area. EXIT if Amazon Location determines that the tracked device has exited a geofenced area. The last geofence that a device was observed within is tracked for 30 days after the most recent device position update. Geofence evaluation uses the given device position. It does not account for the optional Accuracy of a DevicePositionUpdate. The DeviceID is used as a string to represent the device. You do not need to have a Tracker associated with the DeviceID."]moduleBatchEvaluateGeofencesRequest=structtypenonrect={collectionName:ResourceName.t[@ocaml.doc"The geofence collection used in evaluating the position of devices against its geofences."];devicePositionUpdates:BatchEvaluateGeofencesRequestDevicePositionUpdatesList.t[@ocaml.doc"Contains device details for each device to be evaluated against the given geofence collection."]}letcontext_="BatchEvaluateGeofencesRequest"letmake~collectionName=fun~devicePositionUpdates->fun()->{collectionName;devicePositionUpdates}letto_valuex=structure_to_value[("CollectionName",(Some(ResourceName.to_valuex.collectionName)));("DevicePositionUpdates",(Some(BatchEvaluateGeofencesRequestDevicePositionUpdatesList.to_valuex.devicePositionUpdates)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdevicePositionUpdates=BatchEvaluateGeofencesRequestDevicePositionUpdatesList.of_xml(Xml.child_exn~context:context_xml_arg0"DevicePositionUpdates")inletcollectionName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"CollectionName")inmake~devicePositionUpdates~collectionName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdevicePositionUpdates=field_map_exnjson__"DevicePositionUpdates"BatchEvaluateGeofencesRequestDevicePositionUpdatesList.of_jsoninletcollectionName=field_map_exnjson__"CollectionName"ResourceName.of_jsoninmake~devicePositionUpdates~collectionName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Evaluates device positions against the geofence geometries from a given geofence collection. This operation always returns an empty response because geofences are asynchronously evaluated. The evaluation determines if the device has entered or exited a geofenced area, and then publishes one of the following events to Amazon EventBridge: ENTER if Amazon Location determines that the tracked device has entered a geofenced area. EXIT if Amazon Location determines that the tracked device has exited a geofenced area. The last geofence that a device was observed within is tracked for 30 days after the most recent device position update. Geofence evaluation uses the given device position. It does not account for the optional Accuracy of a DevicePositionUpdate. The DeviceID is used as a string to represent the device. You do not need to have a Tracker associated with the DeviceID."]moduleBatchDeleteGeofenceResponse=structtypenonrect={errors:BatchDeleteGeofenceErrorList.toption[@ocaml.doc"Contains error details for each geofence that failed to delete."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?errors=fun()->{errors}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Errors",(Option.mapx.errors~f:BatchDeleteGeofenceErrorList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=leterrors=(Option.map~f:BatchDeleteGeofenceErrorList.of_xml)(Xml.childxml_arg0"Errors")inmake?errors()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=leterrors=field_mapjson__"Errors"BatchDeleteGeofenceErrorList.of_jsoninmake?errors()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Deletes a batch of geofences from a geofence collection. This operation deletes the resource permanently."]moduleBatchDeleteGeofenceRequest=structtypenonrect={collectionName:ResourceName.t[@ocaml.doc"The geofence collection storing the geofences to be deleted."];geofenceIds:BatchDeleteGeofenceRequestGeofenceIdsList.t[@ocaml.doc"The batch of geofences to be deleted."]}letcontext_="BatchDeleteGeofenceRequest"letmake~collectionName=fun~geofenceIds->fun()->{collectionName;geofenceIds}letto_valuex=structure_to_value[("CollectionName",(Some(ResourceName.to_valuex.collectionName)));("GeofenceIds",(Some(BatchDeleteGeofenceRequestGeofenceIdsList.to_valuex.geofenceIds)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letgeofenceIds=BatchDeleteGeofenceRequestGeofenceIdsList.of_xml(Xml.child_exn~context:context_xml_arg0"GeofenceIds")inletcollectionName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"CollectionName")inmake~geofenceIds~collectionName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letgeofenceIds=field_map_exnjson__"GeofenceIds"BatchDeleteGeofenceRequestGeofenceIdsList.of_jsoninletcollectionName=field_map_exnjson__"CollectionName"ResourceName.of_jsoninmake~geofenceIds~collectionName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Deletes a batch of geofences from a geofence collection. This operation deletes the resource permanently."]moduleBatchDeleteDevicePositionHistoryResponse=structtypenonrect={errors:BatchDeleteDevicePositionHistoryErrorList.toption[@ocaml.doc"Contains error details for each device history that failed to delete."]}typenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake?errors=fun()->{errors}leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))letto_valuex=structure_to_value[("Errors",(Option.mapx.errors~f:BatchDeleteDevicePositionHistoryErrorList.to_value))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=leterrors=(Option.map~f:BatchDeleteDevicePositionHistoryErrorList.of_xml)(Xml.childxml_arg0"Errors")inmake?errors()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=leterrors=field_mapjson__"Errors"BatchDeleteDevicePositionHistoryErrorList.of_jsoninmake?errors()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Deletes the position history of one or more devices from a tracker resource."]moduleBatchDeleteDevicePositionHistoryRequest=structtypenonrect={trackerName:ResourceName.t[@ocaml.doc"The name of the tracker resource to delete the device position history from."];deviceIds:BatchDeleteDevicePositionHistoryRequestDeviceIdsList.t[@ocaml.doc"Devices whose position history you want to delete. For example, for two devices: \226\128\156DeviceIds\226\128\157 : \\[DeviceId1,DeviceId2\\]"]}letcontext_="BatchDeleteDevicePositionHistoryRequest"letmake~trackerName=fun~deviceIds->fun()->{trackerName;deviceIds}letto_valuex=structure_to_value[("TrackerName",(Some(ResourceName.to_valuex.trackerName)));("DeviceIds",(Some(BatchDeleteDevicePositionHistoryRequestDeviceIdsList.to_valuex.deviceIds)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letdeviceIds=BatchDeleteDevicePositionHistoryRequestDeviceIdsList.of_xml(Xml.child_exn~context:context_xml_arg0"DeviceIds")inlettrackerName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"TrackerName")inmake~deviceIds~trackerName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letdeviceIds=field_map_exnjson__"DeviceIds"BatchDeleteDevicePositionHistoryRequestDeviceIdsList.of_jsoninlettrackerName=field_map_exnjson__"TrackerName"ResourceName.of_jsoninmake~deviceIds~trackerName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Deletes the position history of one or more devices from a tracker resource."]moduleAssociateTrackerConsumerResponse=structtypenonrect=unittypenonrecerror=[`AccessDeniedExceptionofAccessDeniedException.t|`ConflictExceptionofConflictException.t|`InternalServerExceptionofInternalServerException.t|`ResourceNotFoundExceptionofResourceNotFoundException.t|`ServiceQuotaExceededExceptionofServiceQuotaExceededException.t|`ThrottlingExceptionofThrottlingException.t|`ValidationExceptionofValidationException.t|`Unknown_operation_errorof(string*stringoption)]letmake()=()leterror_of_jsonnamejson=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_jsonjson)|"ConflictException"->`ConflictException(ConflictException.of_jsonjson)|"InternalServerException"->`InternalServerException(InternalServerException.of_jsonjson)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_jsonjson)|"ServiceQuotaExceededException"->`ServiceQuotaExceededException(ServiceQuotaExceededException.of_jsonjson)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_jsonjson)|"ValidationException"->`ValidationException(ValidationException.of_jsonjson)|name->`Unknown_operation_error(name,(Some(Yojson.Safe.to_stringjson)))leterror_of_xmlnamexml=matchnamewith|"AccessDeniedException"->`AccessDeniedException(AccessDeniedException.of_xmlxml)|"ConflictException"->`ConflictException(ConflictException.of_xmlxml)|"InternalServerException"->`InternalServerException(InternalServerException.of_xmlxml)|"ResourceNotFoundException"->`ResourceNotFoundException(ResourceNotFoundException.of_xmlxml)|"ServiceQuotaExceededException"->`ServiceQuotaExceededException(ServiceQuotaExceededException.of_xmlxml)|"ThrottlingException"->`ThrottlingException(ThrottlingException.of_xmlxml)|"ValidationException"->`ValidationException(ValidationException.of_xmlxml)|name->`Unknown_operation_error(name,(Some(Awso.Xml.to_stringxml)))leterror_to_json:error->Yojson.Safe.t=function|`AccessDeniedExceptione->`Assoc[("error",(`String"AccessDeniedException"));("details",(AccessDeniedException.to_jsone))]|`ConflictExceptione->`Assoc[("error",(`String"ConflictException"));("details",(ConflictException.to_jsone))]|`InternalServerExceptione->`Assoc[("error",(`String"InternalServerException"));("details",(InternalServerException.to_jsone))]|`ResourceNotFoundExceptione->`Assoc[("error",(`String"ResourceNotFoundException"));("details",(ResourceNotFoundException.to_jsone))]|`ServiceQuotaExceededExceptione->`Assoc[("error",(`String"ServiceQuotaExceededException"));("details",(ServiceQuotaExceededException.to_jsone))]|`ThrottlingExceptione->`Assoc[("error",(`String"ThrottlingException"));("details",(ThrottlingException.to_jsone))]|`ValidationExceptione->`Assoc[("error",(`String"ValidationException"));("details",(ValidationException.to_jsone))]|`Unknown_operation_error(code,msg)->`Assoc(("error",(`Stringcode))::((matchmsgwith|None->[]|Somem->[("message",(`Stringm))])))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 an association between a geofence collection and a tracker resource. This allows the tracker resource to communicate location data to the linked geofence collection. You can associate up to five geofence collections to each tracker resource. Currently not supported \226\128\148 Cross-account configurations, such as creating associations between a tracker resource in one account and a geofence collection in another account."]moduleAssociateTrackerConsumerRequest=structtypenonrect={trackerName:ResourceName.t[@ocaml.doc"The name of the tracker resource to be associated with a geofence collection."];consumerArn:Arn.t[@ocaml.doc"The Amazon Resource Name (ARN) for the geofence collection to be associated to tracker resource. Used when you need to specify a resource across all Amazon Web Services. Format example: arn:aws:geo:region:account-id:geofence-collection/ExampleGeofenceCollectionConsumer"]}letcontext_="AssociateTrackerConsumerRequest"letmake~trackerName=fun~consumerArn->fun()->{trackerName;consumerArn}letto_valuex=structure_to_value[("TrackerName",(Some(ResourceName.to_valuex.trackerName)));("ConsumerArn",(Some(Arn.to_valuex.consumerArn)))]letto_queryv=to_queryto_valuevletof_xmlxml_arg0=letconsumerArn=Arn.of_xml(Xml.child_exn~context:context_xml_arg0"ConsumerArn")inlettrackerName=ResourceName.of_xml(Xml.child_exn~context:context_xml_arg0"TrackerName")inmake~consumerArn~trackerName()letof_strings=of_xml(Awso.Xml.parse_responses)[@@warning"-32"]letof_jsonjson__=letconsumerArn=field_map_exnjson__"ConsumerArn"Arn.of_jsoninlettrackerName=field_map_exnjson__"TrackerName"ResourceName.of_jsoninmake~consumerArn~trackerName()letto_jsonv=composed_to_jsonto_valuevend[@@ocaml.doc"Creates an association between a geofence collection and a tracker resource. This allows the tracker resource to communicate location data to the linked geofence collection. You can associate up to five geofence collections to each tracker resource. Currently not supported \226\128\148 Cross-account configurations, such as creating associations between a tracker resource in one account and a geofence collection in another account."]