1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495open!Core_kernelmoduleId=structtypet={subreddit:Subreddit_name.toption;page:string}[@@derivingsexp]endmoduleRevision=structincludeJson_object.UtilsmoduleId=structincludeUuidincludeUuid.Unstableletof_uuid=identletto_uuid=identendletpage_name=required_field"page"stringletid=required_field"id"(string>>Id.of_string)letreason=optional_field"reason"stringlettimestamp=required_field"timestamp"timelethidden=required_field"revision_hidden"boolletauthor=optional_field"author"Thing.User.of_jsonendmodulePermissions=structincludeJson_object.UtilsincludeJson_object.Make_kinded_simple(structletkind="wikipagesettings"end)moduleLevel=structtypet=|Use_subreddit_wiki_permissions|Only_approved_contributors_for_this_page|Only_moderators[@@derivingsexp]letof_int_exnlevel=matchlevelwith|0->Use_subreddit_wiki_permissions|1->Only_approved_contributors_for_this_page|2->Only_moderators|_->raise_s[%message"Unrecognized wiki page permission level"(level:int)];;letto_intt=matchtwith|Use_subreddit_wiki_permissions->0|Only_approved_contributors_for_this_page->1|Only_moderators->2;;endletlevel=required_field"permlevel"(int>>Level.of_int_exn)letcontributors=required_field"editors"(Json.get_listThing.User.of_json)letlisted=required_field"listed"boolendincludeJson_object.UtilsincludeJson_object.Make_kinded_simple(structletkind="wikipage"end)letmay_revise=required_field"may_revise"boolletrevision_id=required_field"revision_id"(string>>Uuid.of_string)letrevision_by=required_field"revision_by"Thing.User.of_jsonletcontenttmarkup=letfield=matchmarkupwith|`markdown->"content_md"|`HTML->"content_html"inrequired_fieldfieldstringt;;letrevision_time=required_field"revision_date"timeletrevision_reason=optional_field"reason"stringmoduleEdit_conflict=structincludeJson_object.Utilsletdiff=required_field"diffcontent"stringletmessage=required_field"message"stringletnew_content=required_field"newcontent"stringletnew_revision=required_field"newrevision"(string>>Uuid.of_string)letreason=optional_field"reason"stringend