CINXE.COM
Node.js Setup
<!DOCTYPE html><html lang="en" style="" data-color-mode="system" class=" useReactApp "><head><script src="https://cdn.readme.io/public/js/force-firefox-anchor-jump.js?1732290089794"></script><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="readme-deploy" content="5.235.0"><meta name="readme-subdomain" content="developers"><meta name="readme-basepath-childProject" content="main"><meta name="readme-version" content="2.0"><title>Node.js Setup</title><meta name="description" content="🚀 Upgrading to v6.0?: Please see our upgrade path documentation . 🚧 Any issues?: Integrations can be tricky! Contact support if you have any questions/issues. Overview If you're a developer, it takes a few small steps to send your API logs to ReadMe so your team can get deep insights into your API..."><meta property="og:title" content="Node.js Setup"><meta property="og:description" content="🚀 Upgrading to v6.0?: Please see our upgrade path documentation . 🚧 Any issues?: Integrations can be tricky! Contact support if you have any questions/issues. Overview If you're a developer, it takes a few small steps to send your API logs to ReadMe so your team can get deep insights into your API..."><meta property="og:site_name" content="ReadMe"><meta name="twitter:title" content="Node.js Setup"><meta name="twitter:description" content="🚀 Upgrading to v6.0?: Please see our upgrade path documentation . 🚧 Any issues?: Integrations can be tricky! Contact support if you have any questions/issues. Overview If you're a developer, it takes a few small steps to send your API logs to ReadMe so your team can get deep insights into your API..."><meta name="twitter:card" content="summary_large_image"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta property="og:image" content="https://files.readme.io/3977150-small-readme-blue.png"><meta name="twitter:image" content="https://files.readme.io/3977150-small-readme-blue.png"><link id="favicon" rel="shortcut icon" href="https://docs.readme.com/favicon.ico" type="image/x-icon"><link rel="canonical" href="https://docs.readme.com/main/docs/sending-logs-to-readme-with-nodejs"><script src="https://cdn.readme.io/public/js/cash-dom.min.js?1732290089794"></script><link data-chunk="routes-Dash-ChatGPT-CopilotInstalledPage" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/routes-Dash-ChatGPT-CopilotInstalledPage.e465d3c8429ef097e6ed.css"> <link data-chunk="New" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/New.f8e4e9e20d429e588f3c.css"> <link data-chunk="routes-Tutorials" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/routes-Tutorials.1d38d1ab2f3572f1dd24.css"> <link data-chunk="routes-SuperHub-Routes" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/routes-SuperHub-Routes.394c4b2f8910cf363781.css"> <link data-chunk="List" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/List.8b6b887d01c2343868e8.css"> <link data-chunk="routes-Changelog" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/routes-Changelog.28957affcff81e852361.css"> <link data-chunk="Editor" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/Editor.c9adabeec62cc7e2bd7a.css"> <link data-chunk="Page" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/Page.f8e4e9e20d429e588f3c.css"> <link data-chunk="routes-Discuss" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/routes-Discuss.8f79ff8c1099c5933136.css"> <link data-chunk="CustomPage" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/CustomPage.38a39d6ce8b0e2afad5a.css"> <link data-chunk="routes-Doc" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/routes-Doc.921b58c17b447c4e783e.css"> <link data-chunk="routes-Landing" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/routes-Landing.c5ea43d2f4b3b926ff1f.css"> <link data-chunk="routes-Reference" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/routes-Reference.087102afd3bca3215f45.css"> <link data-chunk="routes-PageNotFound" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/routes-PageNotFound.d8afd1171cf7a455eed7.css"> <link data-chunk="Header" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/Header.1c46140f4fda4e981a8d.css"> <link data-chunk="routes-SuperHub" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/routes-SuperHub.db8b3beb03eead84c21e.css"> <link data-chunk="routes-SuperHub" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/8263.75e3fc491ee8103c63a3.css"> <link data-chunk="routes-SuperHub" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/2395.593cd7b6ba0bdb6787a8.css"> <link data-chunk="main" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/main.2415ba38e8e5c2ba190e.css"> <link data-chunk="main" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/ui-styles.a5d24742a3656724b61d.css"> <link data-chunk="main" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/main.766cf20fa350c2c18107.js"> <link data-chunk="routes-SuperHub" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/6859.fc1496da022e612abe33.js"> <link data-chunk="routes-SuperHub" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/1802.00a1e88cc0d9da2aae1b.js"> <link data-chunk="routes-SuperHub" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/9772.1912e092b9c8785ff5c3.js"> <link data-chunk="routes-SuperHub" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/3284.6ecd6ef27e2009d3fdc7.js"> <link data-chunk="routes-SuperHub" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/7449.dae0332305a8704415a6.js"> <link data-chunk="routes-SuperHub" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/7372.aa4569536a36087cf4a9.js"> <link data-chunk="routes-SuperHub" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/9082.f9fa9ec2b80af1ef61bd.js"> <link data-chunk="routes-SuperHub" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/572.bab1eda8453360a8a761.js"> <link data-chunk="routes-SuperHub" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/5312.ca2c08ec1b75bb03c21e.js"> <link data-chunk="routes-SuperHub" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/5548.8fb1bb5d57de6c263c67.js"> <link data-chunk="routes-SuperHub" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/2395.6288c030d5183baa5a89.js"> <link data-chunk="routes-SuperHub" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/6522.057d8ea587133ae98687.js"> <link data-chunk="routes-SuperHub" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/7112.69c3d611e7e54e411b26.js"> <link data-chunk="routes-SuperHub" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/4608.3b5a227647e78e858c3f.js"> <link data-chunk="routes-SuperHub" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/8263.a563779273b90f66c0db.js"> <link data-chunk="routes-SuperHub" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/1282.591f476c316bf3670bbd.js"> <link data-chunk="routes-SuperHub" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/routes-SuperHub.a3bb3020bf29f8f67ef8.js"> <link data-chunk="Header" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/3880.3892311d81c548cb073c.js"> <link data-chunk="Header" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/7783.48ca7ef3a5c469d97e53.js"> <link data-chunk="Header" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/Header.ad57d9fcd570c04fb712.js"> <link data-chunk="routes-PageNotFound" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/routes-PageNotFound.84a460336ee9c83a7d55.js"> <link data-chunk="Footer" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/Footer.eb98b86c4279989f5a59.js"> <link data-chunk="core-icons-chevron-up-down-svg" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/core-icons-chevron-up-down-svg.6aae957df71e6f4c5e24.js"> <link data-chunk="routes-Reference" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/7971.db270c2970b791e38435.js"> <link data-chunk="routes-Reference" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/6722.e485c5aa155bd0f0ccf8.js"> <link data-chunk="routes-Reference" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/153.e4db5a313c7d51383015.js"> <link data-chunk="routes-Reference" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/routes-Reference.d66a49f09580aafdabb6.js"> <link data-chunk="routes-Landing" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/4002.08d1caef58d08eaccd19.js"> <link data-chunk="routes-Landing" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/routes-Landing.f0816876bdfbbc06801a.js"> <link data-chunk="routes-Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/6841.587d285d41ca8bab11b1.js"> <link data-chunk="routes-Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/routes-Doc.e3a4e0817a9a640436bc.js"> <link data-chunk="CustomPage" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/6922.e8247ef6931a72e55b3e.js"> <link data-chunk="CustomPage" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/2859.94b03b9a9585460aa921.js"> <link data-chunk="core-icons-arrow-right-svg" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/core-icons-arrow-right-svg.eadb74658f93b4e7d75f.js"> <link data-chunk="core-icons-arrow-up-right-svg" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/core-icons-arrow-up-right-svg.8ec73f7e322d79a2695b.js"> <link data-chunk="core-icons-more-vertical-svg" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/core-icons-more-vertical-svg.4822b3f831e11095980d.js"> <link data-chunk="core-icons-alert-circle-svg" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/core-icons-alert-circle-svg.4cee8264c97045599b56.js"> <link data-chunk="core-icons-lock-svg" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/core-icons-lock-svg.70942d3ee6bad6267696.js"> <link data-chunk="routes-Discuss" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/routes-Discuss.6a5b69949f194448cf4f.js"> <link data-chunk="Page" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/2637.a5df1d5e240762d7981f.js"> <link data-chunk="Page" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/Page.65c6f721688901333944.js"> <link data-chunk="Editor" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/Editor.002979730c36f9c65ad3.js"> <link data-chunk="core-icons-x-circle-svg" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/core-icons-x-circle-svg.abc0e0ea5b7f9dff667c.js"> <link data-chunk="core-icons-suggested-edits-svg" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/core-icons-suggested-edits-svg.8d2d8ac2fd22ded9238d.js"> <link data-chunk="routes-Changelog" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/routes-Changelog.3f125a62ed05cc53aec4.js"> <link data-chunk="List" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/4674.13378da16ce7b5beba66.js"> <link data-chunk="List" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/List.12cee315afa198c8e23e.js"> <link data-chunk="core-icons-search-svg" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/core-icons-search-svg.ad9cac962958d30983a7.js"> <link data-chunk="core-icons-custom-pages-svg" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/core-icons-custom-pages-svg.444e514638d9afbec182.js"> <link data-chunk="routes-SuperHub-Routes" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/7285.703d773b1bb63ae6e7ee.js"> <link data-chunk="routes-SuperHub-Routes" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/routes-SuperHub-Routes.5ccfbee71da134a1eeba.js"> <link data-chunk="rmdx" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/rmdx.594ae0fac8012b876a80.js"> <link data-chunk="Post" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/Post.cced33af5051de7f473f.js"> <link data-chunk="core-icons-chevron-down-svg" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/core-icons-chevron-down-svg.e20b84e9871bd73d1b8c.js"> <link data-chunk="routes-Tutorials" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/routes-Tutorials.8adf2bf8562dfeff14b4.js"> <link data-chunk="core-icons-eye-off-svg" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/core-icons-eye-off-svg.b2b8b241b4b324dfd9c1.js"> <link data-chunk="core-icons-trending-up-svg" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/core-icons-trending-up-svg.0dd920b0698e57f75afa.js"> <link data-chunk="core-icons-callout-info-svg" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/core-icons-callout-info-svg.79b14e8568c9cecbc827.js"> <link data-chunk="core-icons-webhook-svg" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/core-icons-webhook-svg.fe540ea1c09e1c0e0247.js"> <link data-chunk="New" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/New.908bc26e77bebc585452.js"> <link data-chunk="core-icons-star-svg" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/core-icons-star-svg.b834e1612cb2af1e174e.js"> <link data-chunk="core-icons-key-svg" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/core-icons-key-svg.71e09670b926900508b8.js"> <link data-chunk="routes-Dash-ChatGPT-CopilotInstalledPage" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/1231.f80a04007595f4936e51.js"> <link data-chunk="routes-Dash-ChatGPT-CopilotInstalledPage" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/routes-Dash-ChatGPT-CopilotInstalledPage.905756735b64839665ac.js"> <link data-chunk="core-icons-inbox-svg" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/core-icons-inbox-svg.01c2ecb759e417a98bb8.js"> <link data-chunk="core-icons-message-circle-svg" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/core-icons-message-circle-svg.1e24c2d2eb4f9a6ede5d.js"> <link data-chunk="main" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/ui-styles.a5d24742a3656724b61d.css"> <link data-chunk="main" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/main.2415ba38e8e5c2ba190e.css"> <link data-chunk="routes-SuperHub" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/2395.593cd7b6ba0bdb6787a8.css"> <link data-chunk="routes-SuperHub" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/8263.75e3fc491ee8103c63a3.css"> <link data-chunk="routes-SuperHub" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/routes-SuperHub.db8b3beb03eead84c21e.css"> <link data-chunk="Header" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/Header.1c46140f4fda4e981a8d.css"> <link data-chunk="routes-PageNotFound" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/routes-PageNotFound.d8afd1171cf7a455eed7.css"> <link data-chunk="routes-Reference" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/routes-Reference.087102afd3bca3215f45.css"> <link data-chunk="routes-Landing" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/routes-Landing.c5ea43d2f4b3b926ff1f.css"> <link data-chunk="routes-Doc" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/routes-Doc.921b58c17b447c4e783e.css"> <link data-chunk="CustomPage" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/CustomPage.38a39d6ce8b0e2afad5a.css"> <link data-chunk="routes-Discuss" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/routes-Discuss.8f79ff8c1099c5933136.css"> <link data-chunk="Page" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/Page.f8e4e9e20d429e588f3c.css"> <link data-chunk="Editor" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/Editor.c9adabeec62cc7e2bd7a.css"> <link data-chunk="routes-Changelog" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/routes-Changelog.28957affcff81e852361.css"> <link data-chunk="List" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/List.8b6b887d01c2343868e8.css"> <link data-chunk="routes-SuperHub-Routes" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/routes-SuperHub-Routes.394c4b2f8910cf363781.css"> <link data-chunk="routes-Tutorials" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/routes-Tutorials.1d38d1ab2f3572f1dd24.css"> <link data-chunk="New" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/New.f8e4e9e20d429e588f3c.css"> <link data-chunk="routes-Dash-ChatGPT-CopilotInstalledPage" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/routes-Dash-ChatGPT-CopilotInstalledPage.e465d3c8429ef097e6ed.css"><!-- CUSTOM CSS--><style title="rm-custom-css">:root{--project-color-primary:#018EF5;--project-color-inverse:#fff;--recipe-button-color:#018EF5;--recipe-button-color-hover:#01538f;--recipe-button-color-active:#00365d;--recipe-button-color-focus:rgba(1, 142, 245, 0.25);--recipe-button-color-disabled:#c3e6ff}[id=enterprise] .ReadMeUI[is=AlgoliaSearch]{--project-color-primary:#018EF5;--project-color-inverse:#fff}a{color:var(--color-link-primary,#018ef5)}a:hover{color:var(--color-link-primary-darken-5,#01538f)}a.text-muted:hover{color:var(--color-link-primary,#018ef5)}.btn.btn-primary{background-color:#018ef5}.btn.btn-primary:hover{background-color:#01538f}.theme-line #hub-landing-top h2{color:#018ef5}#hub-landing-top .btn:hover{color:#018ef5}.theme-line #hub-landing-top .btn:hover{color:#fff}.theme-solid header#hub-header #header-top{background-color:#018ef5}.theme-solid.header-gradient header#hub-header #header-top{background:linear-gradient(to bottom,#018ef5,#0062aa)}.theme-solid.header-custom header#hub-header #header-top{background-image:url(undefined)}.theme-line header#hub-header #header-top{border-bottom-color:#018ef5}.theme-line header#hub-header #header-top .btn{background-color:#018ef5}header#hub-header #header-top #header-logo{width:232px;height:40px;margin-top:0;background-image:url(https://files.readme.io/7f72f63-small-readme-white_1.png)}#hub-subheader-parent #hub-subheader .hub-subheader-breadcrumbs .dropdown-menu a:hover{background-color:#018ef5}#subheader-links a.active{color:#018ef5!important;box-shadow:inset 0 -2px 0 #018ef5}#subheader-links a:hover{color:#018ef5!important;box-shadow:inset 0 -2px 0 #018ef5;opacity:.7}.discussion .submit-vote.submit-vote-parent.voted a.submit-vote-button{background-color:#018ef5}section#hub-discuss .discussion a .discuss-body h4{color:#018ef5}section#hub-discuss .discussion a:hover .discuss-body h4{color:#01538f}#hub-subheader-parent #hub-subheader.sticky-header.sticky{border-bottom-color:#018ef5}#hub-subheader-parent #hub-subheader.sticky-header.sticky .search-box{border-bottom-color:#018ef5}#hub-search-results h3 em{color:#018ef5}.main_background,.tag-item{background:#018ef5!important}.main_background:hover{background:#01538f!important}.main_color{color:#018ef5!important}.border_bottom_main_color{border-bottom:2px solid #018ef5}.main_color_hover:hover{color:#018ef5!important}section#hub-discuss h1{color:#018ef5}#hub-reference .hub-api .api-definition .api-try-it-out.active{border-color:#018ef5;background-color:#018ef5}#hub-reference .hub-api .api-definition .api-try-it-out.active:hover{background-color:#01538f;border-color:#01538f}#hub-reference .hub-api .api-definition .api-try-it-out:hover{border-color:#018ef5;color:#018ef5}#hub-reference .hub-reference .logs .logs-empty .logs-login-button,#hub-reference .hub-reference .logs .logs-login .logs-login-button{background-color:var(--project-color-primary,#018ef5);border-color:var(--project-color-primary,#018ef5)}#hub-reference .hub-reference .logs .logs-empty .logs-login-button:hover,#hub-reference .hub-reference .logs .logs-login .logs-login-button:hover{background-color:#01538f;border-color:#01538f}#hub-reference .hub-reference .logs .logs-empty>svg>path,#hub-reference .hub-reference .logs .logs-login>svg>path{fill:#018ef5;fill:var(--project-color-primary,#018ef5)}#hub-reference .hub-reference .logs:last-child .logs-empty,#hub-reference .hub-reference .logs:last-child .logs-login{margin-bottom:35px}#hub-reference .hub-reference .hub-reference-section .hub-reference-left header .hub-reference-edit:hover{color:#018ef5}.main-color-accent{border-bottom:3px solid #018ef5;padding-bottom:8px}/*! BEGIN HUB_CUSTOM_STYLES */body{--font-brand:'Marfa',var(--font-family);--font-brand-mono:'Marfa Mono',var(--font-family-mono);--GridGap:var(--lg)}@media (max-width:450px){body{--GridGap:var(--md)}}.Main{display:flex;flex-direction:column;gap:var(--GridGap);padding:var(--GridGap)}.Main.Main{width:auto}.Main ol,.Main ul{list-style:none;margin:0;padding:0}.Main figure{margin:0}.flex{display:flex}.flex_col{flex-direction:column}.flex_center{align-items:center}.flex_grow{flex:1 1}.flex_shrink{flex:0 0}@font-face{font-display:block;font-family:Marfa;font-weight:400;src:url(//readme.com/static/fonts/ABCMarfa-Regular.woff2) format('woff2')}@font-face{font-display:block;font-family:Marfa;font-weight:600;src:url(//readme.com/static/fonts/ABCMarfa-Bold.woff2) format('woff2')}@font-face{font-display:block;font-family:'Marfa Mono';font-weight:400;src:url(//readme.com/static/fonts/ABCMarfaMono-Regular.woff2) format('woff2')}.rm-Header nav[class*=Header-left]{visibility:hidden}body .ThemeContext_line .rm-Header{--Header-background:var(--color-primary);--Header-border-color:rgba(0,0,0,0.1);--Header-border-width:1px;--Header-button-color:var(--white);--Header-button-hover:rgba(255,255,255,0.2);--Header-button-active:rgba(255,255,255,0.75);--Header-button-focus:rgba(255,255,255,0.075);--Header-jumpTo-background:var(--color-primary-inverse);--Header-jumpTo-color:var(--color-primary);--Header-logo-height:var(--header-logo-height)}@media (max-width:768px){body .ThemeContext_line .rm-Header{--Header-border-color:transparent}.rm-Header-top.rm-Header-top{border:0}.rm-Header{overflow:hidden}.hub-is-home .rm-Header-bottom{overflow:auto}}[data-color-mode=dark] .rm-Header{box-shadow:0 1px 0 rgba(0,0,0,.1)}@media (prefers-color-scheme:dark){[data-color-mode=auto] .rm-Header{box-shadow:0 1px 0 rgba(0,0,0,.1)}}.Hero{background:var(--color-primary);padding:var(--xl) var(--lg)}.Hero-h1,.Hero-p{font-family:var(--font-brand);margin:0 auto;text-align:center}.Hero-h1{color:var(--white);font-size:70px!important;font-weight:var(--font-weight-bold)!important;line-height:1.2;max-width:650px}@media (max-width:1220px){.Hero-h1{font-size:64px!important}}@media (max-width:990px){.Hero-h1{font-size:52px!important;max-width:500px}}@media (max-width:450px){.Hero-h1{font-size:42px!important}}.Hero-p{color:var(--blue100)!important;font-size:20px;font-weight:400;line-height:1.4;max-width:400px}.Hero-banner{align-items:center;display:flex;flex-direction:column;gap:.75em;margin-left:auto;margin-right:auto;margin-bottom:2em;max-width:300px;padding-bottom:2em;text-align:center}.Hero-banner-text{color:var(--white);font-family:var(--font-body);font-size:1.25em;font-weight:var(--font-weight);max-width:30ch}.Hero-banner-text-hover{box-shadow:0 2px 0 rgba(0,0,0,);font-style:italic;font-weight:800;position:relative;text-decoration:none}.Hero-banner-text-hover:active,.Hero-banner-text-hover:focus,.Hero-banner-text-hover:hover{animation:banner-text 1s infinite;box-shadow:none}@media (prefers-reduced-motion){.Hero-banner-text-hover:active,.Hero-banner-text-hover:focus,.Hero-banner-text-hover:hover{animation:banner-text 1s steps(1,end) infinite}}@keyframes banner-text{0%{text-shadow:none}33%{text-shadow:-2px 2px 0 var(--green),-4px 4px 0 var(--yellow),-6px 6px 0 var(--red)}66%{text-shadow:2px 2px 0 var(--green),4px 4px 0 var(--yellow),6px 6px 0 var(--red)}100%{text-shadow:none}}.Hero-banner-new{position:relative}.Hero-banner-new-label{--Banner-playState:running;height:2.5em;position:relative;width:2.5em}.Hero-banner-new-svg{animation:rotate 2s linear infinite var(--Banner-playState);height:2.5em;position:absolute;width:2.5em;z-index:1}@media (prefers-reduced-motion){.Hero-banner-new-svg{animation:none}}@keyframes rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.Hero-banner-new-svg.blue{fill:var(--white);left:0;right:0;z-index:5}.Hero-banner-new-svg.green{bottom:-.1em;fill:var(--green);left:-.1em;z-index:4}.Hero-banner-new-svg.yellow{bottom:-.2em;fill:var(--yellow);left:-.2em;z-index:3}.Hero-banner-new-svg.red{bottom:-.3em;fill:var(--red);left:-.3em;z-index:2}.Hero-banner-new-text{align-items:center;color:var(--blue);display:flex;font-family:var(--font-body);font-size:.65em;font-weight:800;inset:0;justify-content:center;margin:auto;position:absolute;text-align:center;transform:rotate(-20deg) translateX(.05em);z-index:6}.Hero-banner em{font-style:italic}.Hero-banner a{color:currentcolor}.Section{--Tile-padding:var(--lg);--Tile-color:var(--color-text-default);--Tile-heading-margin:var(--Tile-padding);--Tile-heading-color:var(--color-text-minimum);border-radius:15px}.Section_product .TileGrid{grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(3,auto)}@media (max-width:1260px){.Section_product .TileGrid{grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(4,1fr)}}@media (max-width:960px){.Section_product .TileGrid{grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(5,1fr)}}@media (max-width:675px){.Section_product .TileGrid{grid-template-columns:1fr;grid-template-rows:auto}}.Section_product .TileGrid-item:nth-child(1){grid-area:1/1/3/2}.Section_product .TileGrid-item:nth-child(2){grid-area:1/2/2/3}.Section_product .TileGrid-item:nth-child(3){grid-area:1/3/2/4}.Section_product .TileGrid-item:nth-child(4){grid-area:1/4/2/5}.Section_product .TileGrid-item:nth-child(5){grid-area:2/2/3/3}.Section_product .TileGrid-item:nth-child(6){grid-area:2/3/3/4}.Section_product .TileGrid-item:nth-child(7){grid-area:2/4/3/5}.Section_product .TileGrid-item:nth-child(8){grid-area:3/2/4/5}@media (max-width:1260px){.Section_product .TileGrid-item:nth-child(1){grid-area:1/1/2/4}.Section_product .TileGrid-item:nth-child(1) a{height:auto}.Section_product .TileGrid-item:nth-child(2){grid-area:2/1/3/2}.Section_product .TileGrid-item:nth-child(3){grid-area:2/2/3/3}.Section_product .TileGrid-item:nth-child(4){grid-area:2/3/3/4}.Section_product .TileGrid-item:nth-child(5){grid-area:3/1/4/2}.Section_product .TileGrid-item:nth-child(6){grid-area:3/2/4/3}.Section_product .TileGrid-item:nth-child(7){grid-area:3/3/4/4}.Section_product .TileGrid-item:nth-child(8){grid-area:4/1/5/4}}@media (max-width:960px){.Section_product .TileGrid-item:nth-child(2){grid-area:2/1/3/2}.Section_product .TileGrid-item:nth-child(3){grid-area:2/2/3/3}.Section_product .TileGrid-item:nth-child(4){grid-area:3/1/4/2}.Section_product .TileGrid-item:nth-child(5){grid-area:3/2/4/3}.Section_product .TileGrid-item:nth-child(6){grid-area:4/1/5/2}.Section_product .TileGrid-item:nth-child(7){grid-area:4/2/5/3}.Section_product .TileGrid-item:nth-child(8){grid-area:5/1/6/3}}@media (max-width:675px){.Section_product .TileGrid-item.TileGrid-item{grid-area:unset}}.Section_dark{background:#001242}.Section_enterprise{--Tile-color:var(--white);--Tile-heading-margin:var(--md);--Tile-heading-color:var(--white);padding:var(--Tile-padding)}@media (max-width:500px){.Section_enterprise{padding:var(--md)}}.Section_enterprise .TileGrid{grid-template-columns:repeat(4,1fr)}@media (max-width:1280px){.Section_enterprise .TileGrid{grid-template-columns:repeat(2,1fr)}}@media (max-width:715px){.Section_enterprise .TileGrid{grid-template-columns:1fr}}.Section_enterprise .Tile-heading{opacity:.5}.TileGrid{display:grid;grid-gap:var(--sm)}.Tile-heading{color:var(--Tile-heading-color);font-size:14px;font-weight:var(--font-weight-bold)!important;margin-bottom:var(--md);margin-left:var(--Tile-heading-margin)}.Tile{border:1px solid transparent;border-radius:15px;display:flex;flex-direction:column;height:100%;overflow:hidden;padding:var(--md);position:relative;transition:box-shadow var(--transition-slow)}.Tile:active .Tile-title,.Tile:focus-visible .Tile-title,.Tile:hover .Tile-title{color:var(--blue)}.Tile:active .icon-arrow-right2,.Tile:focus-visible .icon-arrow-right2,.Tile:hover .icon-arrow-right2{color:var(--blue);transform:translateX(2px)}.Tile:focus,.Tile:focus-visible{outline:0}.Tile_outline{border-color:var(--color-border-default);padding:var(--Tile-padding)}.Tile_outline:hover{border-color:var(--color-input-border-hover)}.Tile_outline:active,.Tile_outline:focus-visible{border-color:var(--color-input-border-active);box-shadow:0 0 0 3px var(--color-input-border-focus)}.Tile_sm .Tile-title{font-size:16px;margin-top:0}.Tile_sm .Tile-description{font-size:14px}.Tile-title{align-items:center;color:var(--Tile-color);display:flex;font-family:var(--font-brand)!important;font-size:22px;font-weight:var(--font-weight-bold);gap:var(--sm);margin-top:15px}@media (max-width:450px){.Tile-title{display:block}}.Tile-title>span{flex:0 0 auto}.Tile-title>.icon-arrow-right2{font-size:16px;opacity:.5;transition:transform var(--transition-slow) var(--transition-timing)}.Tile-description{color:var(--Tile-color);font-size:15px;line-height:1.4;margin-top:5px}.Tile-image{bottom:0;height:auto;position:absolute;right:0;width:100%}@media (max-width:1260px){.Tile_lg{flex-direction:row;gap:var(--md);justify-content:space-between;padding:var(--md) 0 0 var(--md)}.Tile_lg .flex{flex:1 1 auto;max-width:380px}.Tile-image{max-height:180px;max-width:400px;position:unset;width:auto}}@media (max-width:650px){.Tile_lg{align-items:flex-end;flex-direction:column}.Tile_lg .flex{max-width:none;padding-right:var(--md)}.Tile-image{max-width:100%}}.TileIcon{align-items:center;border:1px solid var(--color-border-default);border-radius:var(--border-radius-lg);box-shadow:0 1px 2px rgba(0,0,0,.05),inset 0 -1px 2px rgba(0,0,0,.2),inset 0 1px 1px rgba(255,255,255,.2);color:var(--white);display:inline-flex;font-size:24px;height:var(--button-md);justify-content:center;width:var(--button-md)}.TileIcon_sm{font-size:16px;height:24px;width:24px}.TileIcon_green{background:linear-gradient(180deg,#59d4a4 0,#12ca93 100%)}.TileIcon_red{background:linear-gradient(180deg,#f17c81 0,#e95f6a 100%)}.TileIcon_yellow{background:linear-gradient(180deg,#ffd885 0,#f7c543 100%)}.TileIcon_blue{background:linear-gradient(180deg,#619efe 0,#118cfd 100%)}.TileIcon_purple{background:linear-gradient(180deg,#9987c9 0,#8470be 100%)}.TileIcon_orange{background:linear-gradient(180deg,#ffaa7b 0,#fe8c4e 100%)}.TileIcon_gray{background:linear-gradient(180deg,#adb4c1 0,#939eae 100%)}.ReadMeAPI{overflow:hidden;padding-bottom:var(--xxl);padding-top:var(--xl);position:relative}.ReadMeAPI-container{margin-left:auto;margin-right:auto;max-width:960px;padding-left:var(--lg);padding-right:var(--lg)}.ReadMeAPI-h2{color:var(--white);font-family:var(--font-brand);font-size:42px;font-weight:var(--font-weight-bold)!important;line-height:1.2;margin-bottom:0;margin-top:0}@media (max-width:650px){.ReadMeAPI-h2{font-size:30px}}@media (max-width:500px){.ReadMeAPI-h2{font-size:28px;-webkit-hyphens:auto;hyphens:auto;overflow-wrap:break-word}}.ReadMeAPI-h2 .yellow{color:var(--yellow)}.ReadMeAPI-a{color:var(--white);display:inline-flex;font-family:var(--font-brand);font-size:24px;gap:var(--xs);margin-top:var(--md);opacity:.75}.ReadMeAPI-a:active,.ReadMeAPI-a:focus-within,.ReadMeAPI-a:hover{color:var(--white);opacity:1}.ReadMeAPI-a:active .icon-arrow-right2,.ReadMeAPI-a:focus-within .icon-arrow-right2,.ReadMeAPI-a:hover .icon-arrow-right2{transform:translateX(2px)}.ReadMeAPI-a .icon-arrow-right2{opacity:.5;transition:transform var(--transition-slow) var(--transition-timing)}.ReadMeAPI-figure{bottom:-48px;display:flex;gap:var(--md);left:-10%;position:absolute}.ReadMeAPI-svg{background:linear-gradient(180deg,#002077 0,#002077 100%);border:1px solid rgba(0,0,0,.1);border-radius:15px;box-shadow:0 1px 2px rgba(0,0,0,.05),inset 0 -1px 2px rgba(0,0,0,.2),inset 0 1px 1px rgba(255,255,255,.2);height:110px;width:406px}.Eyebrow{background:var(--yellow);border-radius:var(--border-radius);color:#001242;display:table;font-family:var(--font-brand-mono);font-weight:var(--font-weight);font-size:14px;line-height:1;margin-bottom:var(--md);padding:var(--xs) var(--sm)}.Card{align-items:center;border:1px solid var(--color-border-default);border-radius:15px;display:flex;flex-direction:column;justify-content:flex-start;overflow:hidden;padding:var(--lg)}.Card .TileIcon+.Card-heading{margin-top:var(--md)}.Card-heading{color:var(--color-text-default);font-size:26px;font-weight:var(--font-weight-bold)!important;margin:0}.Card-description,.Card-heading{font-family:var(--font-brand);text-align:center}.Card-link{color:var(--blue);font-size:16px;font-weight:var(--font-weight-bold);gap:var(--xs);margin-top:var(--md)}.Card-link:active,.Card-link:focus-visible,.Card-link:hover{color:var(--blue)!important}.Card-link:active .icon-arrow-right2,.Card-link:focus-visible .icon-arrow-right2,.Card-link:hover .icon-arrow-right2{transform:translateX(2px)}.Card-link .icon-arrow-right2{opacity:.5;transition:transform var(--transition-slow) var(--transition-timing)}.Card-description{color:var(--color-text-minimum)!important;font-size:18px;font-weight:var(--font-weight);line-height:1.4;margin:var(--xs) auto 0;max-width:400px}@media (max-width:1100px){.CommunityChangelog{flex-direction:column}}.Community{display:flex;flex-direction:column;gap:var(--sm);margin-left:auto;margin-right:auto;max-width:300px;padding-top:170px;position:relative;width:100%}@media (max-width:500px){.Community{max-width:250px}}.Community::before{background:url(//files.readme.io/6d9a6e6-bubs.png);background-position:center;background-repeat:no-repeat;background-size:500px;content:'';height:100%;left:-100px;position:absolute;top:30px;width:500px}@media (max-width:1100px){.Community{padding-top:140px}.Community::before{top:0}}.Community-from p,.Community-to p{margin:0}a.Community-to{font-weight:var(--font-weight-bold)}a.Community-to:active,a.Community-to:focus-visible,a.Community-to:hover{color:var(--white)}a.Community-to:active .icon-arrow-right2,a.Community-to:focus-visible .icon-arrow-right2,a.Community-to:hover .icon-arrow-right2{transform:translateX(2px)}.Community-to .icon-arrow-right2{color:var(--white);display:inline-block;opacity:.5;transition:transform var(--transition-slow) var(--transition-timing)}.Community-from,.Community-to{border-radius:1.15rem;line-height:1.25;max-width:75%;padding:.5rem .875rem;position:relative;width:fit-content;word-wrap:break-word}.Community-from::after,.Community-from::before,.Community-to::after,.Community-to::before{bottom:-.1rem;content:'';height:1rem;position:absolute}.Community-to{align-self:flex-end;background-color:#248bf5;color:var(--white)}.Community-to::before{border-bottom-left-radius:.8rem .7rem;border-right:1rem solid #248bf5;right:-.35rem;transform:translate(0,-.1rem)}.Community-to::after{background-color:var(--color-bg-page);border-bottom-left-radius:.5rem;right:-40px;transform:translate(-30px,-2px);width:10px}.Community-from{align-items:flex-start;background-color:#e5e5ea;color:var(--gray0)}.Community-from::before{border-bottom-right-radius:.8rem .7rem;border-left:1rem solid #e5e5ea;left:-.35rem;transform:translate(0,-.1rem)}.Community-from::after{background-color:#f0f0f0;border-bottom-right-radius:.5rem;left:20px;transform:translate(-30px,-2px);width:10px}.Community-avatar{bottom:-2px;height:50px;left:-60px;position:absolute;width:50px}.Changelogs{margin-top:var(--md)}.ChangelogPost{padding-bottom:var(--md);padding-top:var(--md)}.ChangelogPost+.ChangelogPost{border-top:1px solid var(--color-border-default)}.ChangelogPost-tag{color:var(--color-text-muted);font-size:14px;font-weight:var(--font-weight-bold)}.ChangelogPost-link{align-items:center;color:var(--color-text-default);display:flex;font-size:20px;font-weight:var(--font-weight-bold);gap:var(--xs);margin-top:var(--sm)}.ChangelogPost-link:active,.ChangelogPost-link:focus-visible,.ChangelogPost-link:hover{color:var(--blue)}.ChangelogPost-link:active .icon-arrow-right2,.ChangelogPost-link:focus-visible .icon-arrow-right2,.ChangelogPost-link:hover .icon-arrow-right2{opacity:.5;transform:none}.ChangelogPost-link .icon-arrow-right2{font-size:16px;opacity:0;transform:translateX(-2px);transition:opacity var(--transition-slow),transform var(--transition-slow)}.ChangelogPost-date{color:var(--color-text-minimum);font-size:14px;font-weight:var(--font-weight);margin-top:var(--xs)}@media (max-width:1100px){.BonusCards{flex-direction:column}}.Footer{align-items:flex-start;gap:var(--xxl);padding:var(--GridGap)}@media (max-width:1220px){.Footer{gap:var(--lg)}}@media (max-width:850px){.Footer{flex-direction:column}}.Footer-logo{height:30px;width:fit-content}.Footer-heading{color:var(--color-text-default);font-family:var(--font-brand);font-size:64px;font-weight:var(--font-weight-bold)!important;line-height:1;margin-bottom:0;margin-top:var(--lg)}@media (max-width:1220px){.Footer-heading{font-size:52px}}@media (max-width:990px){.Footer-heading{font-size:42px}}.Footer-heading-highlight{color:var(--blue)}.Footer-description{color:var(--color-text-default)!important;font-family:var(--font-brand);font-size:20px;line-height:1.4;margin-bottom:0;margin-top:var(--md)}.Footer-links{background:#e7f3ff;border-radius:var(--border-radius-lg);color:var(--blue);font-family:var(--font-brand);font-size:14px;gap:var(--sm);margin-top:var(--lg);padding:var(--sm);width:fit-content}.Footer-links .Button{font-family:var(--font-brand)}.Footer-links .Button_primary_text{color:var(--gray20);font-weight:var(--font-weight-bold);padding-left:0}.Footer-escape{color:var(--blue);font-weight:var(--font-weight-bold);margin-top:var(--lg);width:fit-content}.Footer-escape .icon-arrow-right2{opacity:.5}.Footer-owlberts{height:470px;width:auto}@media (max-width:1220px){.Footer-owlberts{height:400px}}@media (max-width:990px){.Footer-owlberts{height:350px}}@media (max-width:500px){.Footer-owlberts{height:auto;max-width:100%;width:100%}}.markdown-body .callout[theme="🥳"]{--background:#C878E1;--border:#375CD7;--text:#f5fffa}.markdown-body .callout[theme="🚀"]{--background:#;--border:#;--text:#}.markdown-body .callout[theme="🎉"]{--background:#;--border:#;--text:#}.rm-Changelog .markdown-body p:first-of-type{font-size:1.25em;margin:30px 0}.rm-Changelog .markdown-body h2+p{font-size:1.25em}.rm-Changelog .markdown-body h3{margin-top:30px}/*! END HUB_CUSTOM_STYLES */</style><meta name="loadedProject" content="main"><meta name="parentProject" content="readme-docs-group"><meta name="childrenProjects" content="[{"subdomain":"developers","subpath":"main","name":"ReadMe","_id":"5f7ce9e3a5504d0414d025d0"},{"subdomain":"enterprise-docs","subpath":"ent","name":"Enterprise","_id":"6205993d7fb8d70029bba49b"},{"subdomain":"rdmd","subpath":"","name":"ReadMe Markdown","_id":"5d8907e71937f80012277b72"}]"><meta name="siblingProjects" content="[{"subdomain":"developers","name":"ReadMe","_id":"5f7ce9e3a5504d0414d025d0"},{"subdomain":"enterprise-docs","name":"Enterprise","_id":"6205993d7fb8d70029bba49b"},{"subdomain":"rdmd","name":"ReadMe Markdown","_id":"5d8907e71937f80012277b72"}]"><!-- Slack App Suggestions Tag --> <meta name="slack-app-id" content="AQBR3NZUY"> <!-- Top-level OG image attributes (applied on every page) --> <meta property="og:image" content="https://readme.com/static/og_images/index.png"> <meta property="og:image:secure_url" content="https://readme.com/static/og_images/index.png"> <meta name="twitter:image" content="https://readme.com/static/og_images/index.png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="630"> <meta name="author" content="ReadMe"> <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script> <script> $.noConflict(); </script> <!-- RSS feed parsing script --> <script src="//unpkg.com/rss-parser@3.12.0/dist/rss-parser.min.js"></script> <script src="//unpkg.com/timeago.js@4.0.2/dist/timeago.min.js"></script> <script>var storedColorMode = `system` === 'system' ? window.localStorage.getItem('color-scheme') : `system` document.querySelector('[data-color-mode]').setAttribute('data-color-mode', storedColorMode)</script><script id="config" type="application/json" data-json="{"algoliaIndex":"readme_search_v2","amplitude":{"apiKey":"dc8065a65ef83d6ad23e37aaf014fc84","enabled":true},"asset_url":"https://cdn.readme.io","domain":"readme.io","domainFull":"https://dash.readme.com","encryptedLocalStorageKey":"ekfls-2024-05","fullstory":{"enabled":true,"orgId":"FSV9A"},"metrics":{"billingCronEnabled":"true","dashUrl":"https://m.readme.io","defaultUrl":"https://m.readme.io","exportMaxRetries":12,"wsUrl":"wss://m.readme.io"},"proxyUrl":"https://try.readme.io","readmeRecaptchaSiteKey":"6LesVBYpAAAAAESOCHOyo2kF9SZXPVb54Nwf3i2x","releaseVersion":"5.235.0","sentry":{"dsn":"https://3bbe57a973254129bcb93e47dc0cc46f@o343074.ingest.sentry.io/2052166","enabled":true,"tracesSampleRate":0},"shMigration":{"promoVideo":"","forceWaitlist":false},"sslBaseDomain":"readmessl.com","sslGenerationService":"ssl.readmessl.com","stripePk":"pk_live_5103PML2qXbDukVh7GDAkQoR4NSuLqy8idd5xtdm9407XdPR6o3bo663C1ruEGhXJjpnb2YCpj8EU1UvQYanuCjtr00t1DRCf2a","superHub":{"newProjectsEnabled":true},"wootric":{"accountToken":"NPS-122b75a4","enabled":true}}"></script></head><body class="body-overlap theme-solid header-solid header-bg-size-auto header-bg-pos-tl header-overlay-triangles reference-layout-row lumosity-normal "><div id="ssr-top"></div><div id="ssr-main"><div class="App ThemeContext ThemeContext_dark " style="--color-primary:#018EF5;--color-primary-inverse:#fff;--color-primary-alt:#0062aa;--color-primary-darken-10:#0171c2;--color-primary-darken-20:#01538f;--color-primary-alpha-25:rgba(1, 142, 245, 0.25);--color-link-primary:#018EF5;--color-link-primary-darken-5:#017fdc;--color-link-primary-darken-10:#0171c2;--color-link-primary-darken-20:#01538f;--color-link-primary-alpha-50:rgba(1, 142, 245, 0.5);--color-link-primary-alpha-25:rgba(1, 142, 245, 0.25);--color-link-background:rgba(1, 142, 245, 0.09);--color-link-text:#fff;--color-login-link:#018EF5;--color-login-link-text:#fff;--color-login-link-darken-10:#0171c2;--color-login-link-primary-alpha-50:rgba(1, 142, 245, 0.5)"><header class="Header3zzata9F_ZPQ rm-Header "><div class="rm-Header-top Header-topuTMpygDG4e1V"><div class="rm-Container rm-Container_flex"><div style="outline:none" tabindex="-1"><a href="#content" target="_self" class="Button Button_md rm-JumpTo Header-jumpTo3IWKQXmhSI5D Button_primary">Jump to Content</a></div><div class="rm-Header-left Header-leftADQdGVqx1wqU"><a class="rm-Logo Header-logo1Xy41PtkzbdG" href="https://readme.com" target="_self"><img alt="ReadMe" class="rm-Logo-img Header-logo-img3YvV4lcGKkeb" src="https://files.readme.io/7f72f63-small-readme-white_1.png"/></a><a class="Button Button_md rm-Header-link rm-Header-top-link Button_slate_text Header-link2tXYTgXq85zW" href="https://readme.com/customers" target="_self" to="https://readme.com/customers">Customer Stories</a><a class="Button Button_md rm-Header-link rm-Header-top-link Button_slate_text Header-link2tXYTgXq85zW" href="https://blog.readme.com" target="_self" to="https://blog.readme.com">ReadMe Blog</a></div><div class="rm-Header-left Header-leftADQdGVqx1wqU Header-left_mobile1RG-X93lx6PF"><div><button aria-label="Toggle navigation menu" class="icon-menu menu3d6DYNDa3tk5" type="button"></button><div class=""><div class="Flyout95xhYIIoTKtc undefined rm-Flyout" data-testid="flyout"><div class="MobileFlyout1hHJpUd-nYkd"><a aria-current="page" class="rm-MobileFlyout-item NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- active" href="/main/docs" target="_self"><i class="icon-guides NavItem-badge1qOxpfTiALoz"></i><span class="NavItem-textSlZuuL489uiw">Guides</span></a><a class="rm-MobileFlyout-item NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- " href="/main/recipes" target="_self"><i class="icon-recipes NavItem-badge1qOxpfTiALoz"></i><span class="NavItem-textSlZuuL489uiw">Recipes</span></a><a class="rm-MobileFlyout-item NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- " href="/main/reference" target="_self"><i class="icon-references NavItem-badge1qOxpfTiALoz"></i><span class="NavItem-textSlZuuL489uiw">API Reference</span></a><a class="rm-MobileFlyout-item NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- " href="/main/changelog" target="_self"><i class="icon-changelog NavItem-badge1qOxpfTiALoz"></i><span class="NavItem-textSlZuuL489uiw">Changelog</span></a><a class="rm-MobileFlyout-item NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- " href="/main/discuss" target="_self"><i class="icon-discussions NavItem-badge1qOxpfTiALoz"></i><span class="NavItem-textSlZuuL489uiw">Discussions</span></a><hr class="MobileFlyout-divider10xf7R2X1MeW"/><a class="rm-MobileFlyout-item NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- NavItem_dropdown-muted1xJVuczwGc74" href="https://readme.com/customers" rel="noopener" target="_blank" to="https://readme.com/customers">Customer Stories</a><a class="rm-MobileFlyout-item NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- NavItem_dropdown-muted1xJVuczwGc74" href="https://blog.readme.com" rel="noopener" target="_blank" to="https://blog.readme.com">ReadMe Blog</a><a class="rm-MobileFlyout-item NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- NavItem_dropdown-muted1xJVuczwGc74" href="/login?redirect_uri=/docs/sending-logs-to-readme-with-nodejs" target="_self" to="/login?redirect_uri=/docs/sending-logs-to-readme-with-nodejs">Log In</a><a class="MobileFlyout-logo3Lq1eTlk1K76 Header-logo1Xy41PtkzbdG rm-Logo" href="https://readme.com" target="_self"><img alt="ReadMe" class="Header-logo-img3YvV4lcGKkeb rm-Logo-img" src="https://files.readme.io/7f72f63-small-readme-white_1.png"/></a></div></div></div></div><div class="Header-left-nav2xWPWMNHOGf_"><i class="icon-guides Header-left-nav-icon10glJKFwewOv"></i>Guides</div></div><div class="rm-Header-right Header-right21PC2XTT6aMg"><span class="Header-right_desktop14ja01RUQ7HE"><a href="/login?redirect_uri=/main/docs/sending-logs-to-readme-with-nodejs" target="_self" class="Button Button_slate_text Button_md Header-link2tXYTgXq85zW undefined NavItem_mdrYO3ChA2kYvP rm-Header-top-link rm-Header-top-link_login Button_primary">Log In</a></span><div class="ThemeToggle-wrapper1M_iJESXCpGR Dropdown Dropdown_closed"><button aria-label="Toggle to light mode" id="ThemeToggle-button-static-id-placeholder" aria-haspopup="dialog" class="Button Button_slate_text Button_sm rm-ThemeToggle ThemeToggle2tVPbUyQbWDo Dropdown-toggle Button_primary" type="button"><svg aria-labelledby="ThemeToggle-button-static-id-placeholder" class="Icon ThemeToggle-Icon3g9ZT7pRMwCv " role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Moon (Dark Mode)</title><path d="M19 14.79C18.8427 16.4922 18.2039 18.1144 17.1582 19.4668C16.1126 20.8192 14.7035 21.8458 13.0957 22.4265C11.4879 23.0073 9.74798 23.1181 8.0795 22.7461C6.41102 22.3741 4.88299 21.5345 3.67423 20.3258C2.46546 19.117 1.62594 17.589 1.25391 15.9205C0.881876 14.252 0.992717 12.5121 1.57346 10.9043C2.1542 9.29651 3.18083 7.88737 4.53321 6.84175C5.8856 5.79614 7.5078 5.15731 9.21 5C8.21341 6.34827 7.73385 8.00945 7.85853 9.68141C7.98322 11.3534 8.70386 12.9251 9.8894 14.1106C11.0749 15.2961 12.6466 16.0168 14.3186 16.1415C15.9906 16.2662 17.6517 15.7866 19 14.79Z"></path><path class="ThemeToggle-Icon-star3wweJby1gM4w" d="M18.3707 1C18.3707 3.22825 16.2282 5.37069 14 5.37069C16.2282 5.37069 18.3707 7.51313 18.3707 9.74138C18.3707 7.51313 20.5132 5.37069 22.7414 5.37069C20.5132 5.37069 18.3707 3.22825 18.3707 1Z"></path></svg><svg aria-labelledby="ThemeToggle-button-static-id-placeholder" class="Icon ThemeToggle-Icon3g9ZT7pRMwCv ThemeToggle-Icon_active18I2-19CkbgD" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Sun (Light Mode)</title><path class="ThemeToggle-Icon-ray2ab8_BwBkrTx" d="M12 1V3"></path><path class="ThemeToggle-Icon-ray2ab8_BwBkrTx" d="M18.36 5.64L19.78 4.22"></path><path class="ThemeToggle-Icon-ray2ab8_BwBkrTx" d="M21 12H23"></path><path class="ThemeToggle-Icon-ray2ab8_BwBkrTx" d="M18.36 18.36L19.78 19.78"></path><path class="ThemeToggle-Icon-ray2ab8_BwBkrTx" d="M12 21V23"></path><path class="ThemeToggle-Icon-ray2ab8_BwBkrTx" d="M4.22 19.78L5.64 18.36"></path><path class="ThemeToggle-Icon-ray2ab8_BwBkrTx" d="M1 12H3"></path><path class="ThemeToggle-Icon-ray2ab8_BwBkrTx" d="M4.22 4.22L5.64 5.64"></path><path d="M12 17C14.7614 17 17 14.7614 17 12C17 9.23858 14.7614 7 12 7C9.23858 7 7 9.23858 7 12C7 14.7614 9.23858 17 12 17Z"></path></svg></button></div></div></div></div><div class="Header-bottom2eLKOFXMEmh5 rm-Header-bottom rm-Header-bottom_withOwlbot Header-bottom_withOwlbot3wuKp8NLXCqs"><div class="rm-Container rm-Container_flex"><nav class="Header-leftADQdGVqx1wqU"><a aria-current="page" class="Button Button_md rm-Header-link rm-Header-bottom-link Button_slate_text Header-bottom-link_mobile active" href="/main/docs" target="_self"><i class="icon-guides"></i><span>Guides</span></a><a class="Button Button_md rm-Header-link rm-Header-bottom-link Button_slate_text Header-bottom-link_mobile " href="/main/recipes" target="_self"><i class="icon-recipes"></i><span>Recipes</span></a><a class="Button Button_md rm-Header-link rm-Header-bottom-link Button_slate_text Header-bottom-link_mobile " href="/main/reference" target="_self"><i class="icon-references"></i><span>API Reference</span></a><a class="Button Button_md rm-Header-link rm-Header-bottom-link Button_slate_text Header-bottom-link_mobile " href="/main/changelog" target="_self"><i class="icon-changelog"></i><span>Changelog</span></a><a class="Button Button_md rm-Header-link rm-Header-bottom-link Button_slate_text Header-bottom-link_mobile " href="/main/discuss" target="_self"><i class="icon-discussions"></i><span>Discussions</span></a></nav><button align="center" justify="between" style="--flex-gap:var(--xs)" class="Button Button_sm Flex Flex_row MobileSubnav1DsTfasXloM2 Button_contrast Button_contrast_outline" type="button"><span class="Button-label">Node.js Setup</span><span class="IconWrapper Icon-wrapper2z2wVIeGsiUy"><svg fill="none" viewBox="0 0 24 24" class="Icon Icon3_D2ysxFZ_ll Icon-svg2Lm7f6G9Ly5a" data-name="chevron-up-down" role="img" style="--icon-color:inherit;--icon-size:inherit;--icon-stroke-width:2px"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="m6 16 6 6 6-6M18 8l-6-6-6 6" class="icon-stroke-width"></path></svg></span></button><div class="rm-Header-search Header-searchtb6Foi0-D9Vx Header-search_owlbot2iEpu0FSLYUx rm-Header-search_feather Header-search_featherYsmQBn55F3d9"></div></div></div><div class="hub-search-results--reactApp " id="hub-search-results"><div class="hub-container"><div class="modal-backdrop show-modal rm-SearchModal" role="button" tabindex="0"></div></div></div></header><main class="rm-Guides"><div class="rm-Container rm-Container_flex"><nav aria-label="Page navigation" class="rm-Sidebar hub-sidebar reference-redesign Nav3C5f8FcjkaHj rm-Sidebar_guides" id="hub-sidebar"><div class="Sidebar1t2G1ZJq-vU1 rm-Sidebar hub-sidebar-content"><section class="Sidebar-listWrapper6Q9_yUrG906C rm-Sidebar-section"><h2 class="Sidebar-headingTRQyOa2pk0gh rm-Sidebar-heading">🏁 QUICK START</h2><ul class="Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/intro-to-readme"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Welcome to ReadMe!</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/quickstart-guide"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Quickstart Guide</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/best-practices"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Best Practices</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/use-cases-overview"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Use Cases Overview</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/features-overview"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Features Overview</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 Sidebar-link_parent3OBrzjAJRSfq text-wrap rm-Sidebar-link" target="_self" href="/main/docs/navigating-your-hub"><span class="Sidebar-link-textLuTE1ySm4Kqn"><button aria-expanded="false" aria-label="Show subpages for Navigating Your Hub" class="Sidebar-link-buttonWrapper3hnFHNku8_BJ"><i class="Sidebar-link-expandIcon2yVH6SarI6NW icon-chevron-rightward"></i></button><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Navigating Your Hub</span></span></a><ul class="subpages Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/search"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Search + Search API</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/quick-nav-api-reference"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Quick Nav in the API Reference</span></span></a></li></ul></li></ul></section><section class="Sidebar-listWrapper6Q9_yUrG906C rm-Sidebar-section"><h2 class="Sidebar-headingTRQyOa2pk0gh rm-Sidebar-heading">⚙️ PROJECT SETUP</h2><ul class="Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 Sidebar-link_parent3OBrzjAJRSfq text-wrap rm-Sidebar-link" target="_self" href="/main/docs/project-setup-overview"><span class="Sidebar-link-textLuTE1ySm4Kqn"><button aria-expanded="false" aria-label="Show subpages for Project Setup Overview" class="Sidebar-link-buttonWrapper3hnFHNku8_BJ"><i class="Sidebar-link-expandIcon2yVH6SarI6NW icon-chevron-rightward"></i></button><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Project Setup Overview</span></span></a><ul class="subpages Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/your-dashboard-and-profile"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Your Dashboard and Profile</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/project-settings"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Project Settings</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/quick-switcher"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Quick Switcher</span></span></a></li></ul></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 Sidebar-link_parent3OBrzjAJRSfq text-wrap rm-Sidebar-link" target="_self" href="/main/docs/adding-your-api-reference"><span class="Sidebar-link-textLuTE1ySm4Kqn"><button aria-expanded="false" aria-label="Show subpages for Adding Your API Reference" class="Sidebar-link-buttonWrapper3hnFHNku8_BJ"><i class="Sidebar-link-expandIcon2yVH6SarI6NW icon-chevron-rightward"></i></button><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Adding Your API Reference</span></span></a><ul class="subpages Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/openapi-upload"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">OpenAPI Upload</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/manual-api-editor"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Manual API Editor</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/graphql"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">GraphQL API Reference (Limited Support)</span></span></a></li></ul></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/ip-addresses"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">ReadMe's Outbound IP Addresses</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 Sidebar-link_parent3OBrzjAJRSfq text-wrap rm-Sidebar-link" target="_self" href="/main/docs/openapi"><span class="Sidebar-link-textLuTE1ySm4Kqn"><button aria-expanded="false" aria-label="Show subpages for OpenAPI Support in ReadMe" class="Sidebar-link-buttonWrapper3hnFHNku8_BJ"><i class="Sidebar-link-expandIcon2yVH6SarI6NW icon-chevron-rightward"></i></button><span class="Sidebar-link-text_label1gCT_uPnx7Gu">OpenAPI Support in ReadMe</span></span></a><ul class="subpages Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/openapi-categories-pages-subpages"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Categories, Pages, and Subpages</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/openapi-resyncing"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Re-syncing Your OpenAPI Document</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/openapi-compatibility-chart"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">OpenAPI Compatibility Chart</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/openapi-extensions"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">OpenAPI Extensions</span></span></a></li></ul></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/custom-login-page"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Custom Login Page</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/user-data-options"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Sending Data to Your Documentation's Users</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 Sidebar-link_parent3OBrzjAJRSfq text-wrap rm-Sidebar-link" target="_self" href="/main/docs/setting-up-custom-domain"><span class="Sidebar-link-textLuTE1ySm4Kqn"><button aria-expanded="false" aria-label="Show subpages for Setting Custom Domain & SSL" class="Sidebar-link-buttonWrapper3hnFHNku8_BJ"><i class="Sidebar-link-expandIcon2yVH6SarI6NW icon-chevron-rightward"></i></button><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Setting Custom Domain & SSL</span></span></a><ul class="subpages Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/allowing-iframes"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Allow iFrames</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/having-problems-generating-ssl"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Having Problems Generating SSL?</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/url-paths-in-readme"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">URL Paths in ReadMe</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/turn-off-cloudflare-proxy"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Turn Off Cloudflare Proxy</span></span></a></li></ul></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/how-to-launch-your-project"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">How to Launch Your Project</span></span></a></li></ul></section><section class="Sidebar-listWrapper6Q9_yUrG906C rm-Sidebar-section"><h2 class="Sidebar-headingTRQyOa2pk0gh rm-Sidebar-heading">📝 DOCUMENTATION</h2><ul class="Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/writing-managing-docs"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Writing & Managing Docs</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 Sidebar-link_parent3OBrzjAJRSfq text-wrap rm-Sidebar-link" target="_self" href="/main/docs/structuring-your-docs"><span class="Sidebar-link-textLuTE1ySm4Kqn"><button aria-expanded="false" aria-label="Show subpages for Structuring Your Docs" class="Sidebar-link-buttonWrapper3hnFHNku8_BJ"><i class="Sidebar-link-expandIcon2yVH6SarI6NW icon-chevron-rightward"></i></button><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Structuring Your Docs</span></span></a><ul class="subpages Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/landing-page"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Landing Page</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/guides"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Guides</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/recipes"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Recipes</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/changelog"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Changelog</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/custom-page"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Custom Pages</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/error-pages"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Error Pages</span></span></a></li></ul></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 Sidebar-link_parent3OBrzjAJRSfq text-wrap rm-Sidebar-link" target="_self" href="/main/docs/new-markdown-editor-overview"><span class="Sidebar-link-textLuTE1ySm4Kqn"><button aria-expanded="false" aria-label="Show subpages for Markdown Editor Overview" class="Sidebar-link-buttonWrapper3hnFHNku8_BJ"><i class="Sidebar-link-expandIcon2yVH6SarI6NW icon-chevron-rightward"></i></button><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Markdown Editor Overview</span></span></a><ul class="subpages Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/editor-best-practices"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Documentation Best Practices</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/preview-and-publish-pages"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Preview and Publish Pages</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/page-history"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Page History</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/copying-widget-content"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Copying Widget Content</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/reordering-pages"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Reordering Pages</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/linking-to-pages"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Link to Pages</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/page-metadata-and-seo"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Page Metadata and SEO</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/glossary"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Using Glossary</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" rel="noopener" target="_blank" data-active="" href="https://rdmd.readme.io"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">ReadMe Flavored Markdown</span></span><i aria-hidden="true" class="Sidebar-link-externalIcon1RcnjKm-3Ft8 icon-arrow-up-right"></i></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/raw-mode-editor"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Raw Mode Editor</span></span></a></li></ul></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/reusable-content"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Reusable Content Overview</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/new-sidebar-page-navigation"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">New Sidebar & Page Controls Experience</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 Sidebar-link_parent3OBrzjAJRSfq text-wrap rm-Sidebar-link" target="_self" href="/main/docs/maintaining-your-docs"><span class="Sidebar-link-textLuTE1ySm4Kqn"><button aria-expanded="false" aria-label="Show subpages for Maintaining Your Docs" class="Sidebar-link-buttonWrapper3hnFHNku8_BJ"><i class="Sidebar-link-expandIcon2yVH6SarI6NW icon-chevron-rightward"></i></button><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Maintaining Your Docs</span></span></a><ul class="subpages Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/redirect-scenarios"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Redirect Scenarios</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/versions"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Documentation Versioning</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/suggested-edits"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Suggested Edits</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/internal-documentation"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Internal Documentation</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/login-expiration"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Login Expiration</span></span></a></li></ul></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 Sidebar-link_parent3OBrzjAJRSfq text-wrap rm-Sidebar-link" target="_self" href="/main/docs/rdme"><span class="Sidebar-link-textLuTE1ySm4Kqn"><button aria-expanded="false" aria-label="Show subpages for Syncing Docs via CLI / GitHub" class="Sidebar-link-buttonWrapper3hnFHNku8_BJ"><i class="Sidebar-link-expandIcon2yVH6SarI6NW icon-chevron-rightward"></i></button><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Syncing Docs via CLI / GitHub</span></span></a><ul class="subpages Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/github-actions-docs-example"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">GitHub Actions Example: Syncing Markdown</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/github-actions-openapi-example"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">GitHub Actions Example: Syncing OpenAPI</span></span></a></li></ul></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/owlbot"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Owlbot AI</span></span></a></li></ul></section><section class="Sidebar-listWrapper6Q9_yUrG906C rm-Sidebar-section"><h2 class="Sidebar-headingTRQyOa2pk0gh rm-Sidebar-heading">📊 developer dashboard</h2><ul class="Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/developer-dashboard"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Developer Dashboard Overview</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/my-developers"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">My Developers Overview</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 Sidebar-link_parent3OBrzjAJRSfq text-wrap rm-Sidebar-link" target="_self" href="/main/docs/personalized-docs"><span class="Sidebar-link-textLuTE1ySm4Kqn"><button aria-expanded="false" aria-label="Show subpages for Personalized API Docs Overview" class="Sidebar-link-buttonWrapper3hnFHNku8_BJ"><i class="Sidebar-link-expandIcon2yVH6SarI6NW icon-chevron-rightward"></i></button><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Personalized API Docs Overview</span></span></a><ul class="subpages Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/personalized-docs-webhook"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Set Up Personalized Docs</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/amazon-api-gateway-webhook"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Using Amazon API Gateway with the Personalized Docs Webhook</span></span></a></li></ul></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/sending-api-logs"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Real-Time API Logs Overview</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 Sidebar-link_parent3OBrzjAJRSfq text-wrap rm-Sidebar-link" target="_self" href="/main/docs/reference-core-pages"><span class="Sidebar-link-textLuTE1ySm4Kqn"><button aria-expanded="false" aria-label="Show subpages for API Reference" class="Sidebar-link-buttonWrapper3hnFHNku8_BJ"><i class="Sidebar-link-expandIcon2yVH6SarI6NW icon-chevron-rightward"></i></button><span class="Sidebar-link-text_label1gCT_uPnx7Gu">API Reference</span></span></a><ul class="subpages Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/my-requests"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">My Requests Overview</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/showing-api-logs-to-users"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Show API Request History To Users</span></span></a></li></ul></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 Sidebar-link_parent3OBrzjAJRSfq text-wrap rm-Sidebar-link" target="_self" href="/main/docs/sdks"><span class="Sidebar-link-textLuTE1ySm4Kqn"><button aria-expanded="false" aria-label="Show subpages for SDKs" class="Sidebar-link-buttonWrapper3hnFHNku8_BJ"><i class="Sidebar-link-expandIcon2yVH6SarI6NW icon-chevron-rightward"></i></button><span class="Sidebar-link-text_label1gCT_uPnx7Gu">SDKs</span></span></a><ul class="subpages Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a aria-current="page" class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link active" target="_self" href="/main/docs/sending-logs-to-readme-with-nodejs"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Node.js Setup</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/python-django-api-metrics"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Python (Django) Setup</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/python-flask-api-metrics"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Python (Flask) Setup</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/sending-logs-to-readme-with-php-laravel"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">PHP (Laravel) Setup</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/ruby-api-metrics-set-up"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Ruby (Rails/Rack) Setup</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/net-setup"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">.NET Setup</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/other-ways-to-use-api-metrics"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Other Ways to Send API Requests</span></span></a></li></ul></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 Sidebar-link_parent3OBrzjAJRSfq text-wrap rm-Sidebar-link" target="_self" href="/main/docs/using-metrics-charts"><span class="Sidebar-link-textLuTE1ySm4Kqn"><button aria-expanded="false" aria-label="Show subpages for API & Docs Metrics Charts" class="Sidebar-link-buttonWrapper3hnFHNku8_BJ"><i class="Sidebar-link-expandIcon2yVH6SarI6NW icon-chevron-rightward"></i></button><span class="Sidebar-link-text_label1gCT_uPnx7Gu">API & Docs Metrics Charts</span></span></a><ul class="subpages Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/exporting-metrics-data"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Export Metrics Data</span></span></a></li></ul></li></ul></section><section class="Sidebar-listWrapper6Q9_yUrG906C rm-Sidebar-section"><h2 class="Sidebar-headingTRQyOa2pk0gh rm-Sidebar-heading">👋 DEVELOPER COMMUNITY</h2><ul class="Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/supporting-your-developers"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Supporting Your Developers</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 Sidebar-link_parent3OBrzjAJRSfq text-wrap rm-Sidebar-link" target="_self" href="/main/docs/discussion-forums"><span class="Sidebar-link-textLuTE1ySm4Kqn"><button aria-expanded="false" aria-label="Show subpages for Discussion Forums" class="Sidebar-link-buttonWrapper3hnFHNku8_BJ"><i class="Sidebar-link-expandIcon2yVH6SarI6NW icon-chevron-rightward"></i></button><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Discussion Forums</span></span></a><ul class="subpages Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/managing-forum-support"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Managing Forum Support</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/creating-a-dev-faq"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Creating a Dev FAQ</span></span></a></li></ul></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/health-check-status-updates"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Health Check Status Updates</span></span></a></li></ul></section><section class="Sidebar-listWrapper6Q9_yUrG906C rm-Sidebar-section"><h2 class="Sidebar-headingTRQyOa2pk0gh rm-Sidebar-heading">🎨. PROJECT CUSTOMIZATION</h2><ul class="Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/making-your-hub-shine"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Making Your Hub Shine</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/design-themes"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Design Themes</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 Sidebar-link_parent3OBrzjAJRSfq text-wrap rm-Sidebar-link" target="_self" href="/main/docs/custom-css-and-javascript"><span class="Sidebar-link-textLuTE1ySm4Kqn"><button aria-expanded="false" aria-label="Show subpages for Custom CSS and JavaScript" class="Sidebar-link-buttonWrapper3hnFHNku8_BJ"><i class="Sidebar-link-expandIcon2yVH6SarI6NW icon-chevron-rightward"></i></button><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Custom CSS and JavaScript</span></span></a><ul class="subpages Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/customizing-docs-using-css-variables"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Customizing Docs Using CSS Variables</span></span></a></li></ul></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/custom-css-with-dark-mode"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Dark Mode: Overview & Custom CSS</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 Sidebar-link_parent3OBrzjAJRSfq text-wrap rm-Sidebar-link" target="_self" href="/main/docs/site-navigation"><span class="Sidebar-link-textLuTE1ySm4Kqn"><button aria-expanded="false" aria-label="Show subpages for Site Navigation" class="Sidebar-link-buttonWrapper3hnFHNku8_BJ"><i class="Sidebar-link-expandIcon2yVH6SarI6NW icon-chevron-rightward"></i></button><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Site Navigation</span></span></a><ul class="subpages Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/subheader-layout"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Subheader Layout</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/site-footer"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Site Footer</span></span></a></li></ul></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/pro-tips"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Pro Tips</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 Sidebar-link_parent3OBrzjAJRSfq text-wrap rm-Sidebar-link" target="_self" href="/main/docs/integrations"><span class="Sidebar-link-textLuTE1ySm4Kqn"><button aria-expanded="false" aria-label="Show subpages for Integrations" class="Sidebar-link-buttonWrapper3hnFHNku8_BJ"><i class="Sidebar-link-expandIcon2yVH6SarI6NW icon-chevron-rightward"></i></button><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Integrations</span></span></a><ul class="subpages Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/slack"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Slack</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/google-analytics"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Google Analytics</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/segment"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Segment</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/zendesk"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Zendesk</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/localize"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Localize</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/transifex"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Transifex</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/typekit-key"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Typekit</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/google-site-verification"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Google Site Verification</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/recaptcha"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">reCaptcha</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/aws"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Amazon API Gateway</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/stainless"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Stainless</span></span></a></li></ul></li></ul></section><section class="Sidebar-listWrapper6Q9_yUrG906C rm-Sidebar-section"><h2 class="Sidebar-headingTRQyOa2pk0gh rm-Sidebar-heading">🔑 ACCOUNT & SETTINGS</h2><ul class="Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/your-account"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Your Account</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/two-factor-authentication"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Two-Factor Authentication</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/manage-team"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Manage Team</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/transfer-ownership"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Transfer Ownership</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/plans-and-pricing"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Plans and Pricing</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/payment-and-billing-info"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Payment and Billing Info</span></span></a></li></ul></section><section class="Sidebar-listWrapper6Q9_yUrG906C rm-Sidebar-section"><h2 class="Sidebar-headingTRQyOa2pk0gh rm-Sidebar-heading">❓ TECHNICAL SUPPORT & QUESTIONS</h2><ul class="Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/need-more-support"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Need More Support?</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" rel="noopener" target="_blank" data-active="" href="http://readmestatus.com"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">ReadMe Status</span></span><i aria-hidden="true" class="Sidebar-link-externalIcon1RcnjKm-3Ft8 icon-arrow-up-right"></i></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/feature-requests"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Feature Requests</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 Sidebar-link_parent3OBrzjAJRSfq text-wrap rm-Sidebar-link" target="_self" href="/main/docs/security-faq"><span class="Sidebar-link-textLuTE1ySm4Kqn"><button aria-expanded="false" aria-label="Show subpages for Security FAQ" class="Sidebar-link-buttonWrapper3hnFHNku8_BJ"><i class="Sidebar-link-expandIcon2yVH6SarI6NW icon-chevron-rightward"></i></button><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Security FAQ</span></span></a><ul class="subpages Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/bug-bounty-program"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Bug Bounty Program</span></span></a></li></ul></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/technical-faq"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Technical FAQ</span></span></a></li></ul></section><section class="Sidebar-listWrapper6Q9_yUrG906C rm-Sidebar-section"><h2 class="Sidebar-headingTRQyOa2pk0gh rm-Sidebar-heading">🔎 README MICRO</h2><ul class="Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/readme-micro"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">ReadMe Micro Overview</span></span></a></li></ul></section><section class="Sidebar-listWrapper6Q9_yUrG906C rm-Sidebar-section"><h2 class="Sidebar-headingTRQyOa2pk0gh rm-Sidebar-heading">ReadMe Refactored</h2><ul class="Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/welcome-to-readme-refactored"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Welcome to ReadMe Refactored</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 Sidebar-link_parent3OBrzjAJRSfq text-wrap rm-Sidebar-link" target="_self" href="/main/docs/migration"><span class="Sidebar-link-textLuTE1ySm4Kqn"><button aria-expanded="false" aria-label="Show subpages for Migrating to the ReadMe Refactored Experience" class="Sidebar-link-buttonWrapper3hnFHNku8_BJ"><i class="Sidebar-link-expandIcon2yVH6SarI6NW icon-chevron-rightward"></i></button><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Migrating to the ReadMe Refactored Experience</span></span></a><ul class="subpages Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/migration-faq"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Migration FAQ</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/rendering-errors-invalid-mdx"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Rendering Errors: Invalid MDX</span></span></a></li></ul></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 Sidebar-link_parent3OBrzjAJRSfq text-wrap rm-Sidebar-link" target="_self" href="/main/docs/new-editor-ui"><span class="Sidebar-link-textLuTE1ySm4Kqn"><button aria-expanded="false" aria-label="Show subpages for New Editing UI" class="Sidebar-link-buttonWrapper3hnFHNku8_BJ"><i class="Sidebar-link-expandIcon2yVH6SarI6NW icon-chevron-rightward"></i></button><span class="Sidebar-link-text_label1gCT_uPnx7Gu">New Editing UI</span></span></a><ul class="subpages Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/using-the-editor-ui"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Using the Editing UI</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 Sidebar-link_parent3OBrzjAJRSfq text-wrap rm-Sidebar-link" target="_self" href="/main/docs/creating-and-editing-content"><span class="Sidebar-link-textLuTE1ySm4Kqn"><button aria-expanded="false" aria-label="Show subpages for Creating and Editing Content" class="Sidebar-link-buttonWrapper3hnFHNku8_BJ"><i class="Sidebar-link-expandIcon2yVH6SarI6NW icon-chevron-rightward"></i></button><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Creating and Editing Content</span></span></a><ul class="subpages Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/creating-mermaid-diagrams"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Creating Mermaid Diagrams</span></span></a></li></ul></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/managing-documentation"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Managing Documentation</span></span></a></li></ul></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 Sidebar-link_parent3OBrzjAJRSfq text-wrap rm-Sidebar-link" target="_self" href="/main/docs/mdx"><span class="Sidebar-link-textLuTE1ySm4Kqn"><button aria-expanded="false" aria-label="Show subpages for MDX" class="Sidebar-link-buttonWrapper3hnFHNku8_BJ"><i class="Sidebar-link-expandIcon2yVH6SarI6NW icon-chevron-rightward"></i></button><span class="Sidebar-link-text_label1gCT_uPnx7Gu">MDX</span></span></a><ul class="subpages Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/using-mdx"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Using MDX</span></span></a></li></ul></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 Sidebar-link_parent3OBrzjAJRSfq text-wrap rm-Sidebar-link" target="_self" href="/main/docs/bi-directional-sync"><span class="Sidebar-link-textLuTE1ySm4Kqn"><button aria-expanded="false" aria-label="Show subpages for Bi-Directional Sync" class="Sidebar-link-buttonWrapper3hnFHNku8_BJ"><i class="Sidebar-link-expandIcon2yVH6SarI6NW icon-chevron-rightward"></i></button><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Bi-Directional Sync</span></span></a><ul class="subpages Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless subpage text-wrap rm-Sidebar-link" target="_self" href="/main/docs/editing-with-bi-directional-sync"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Editing with Bi-Directional Sync</span></span></a></li></ul></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/main/docs/office-hours"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Office Hours</span></span></a></li></ul></section></div></nav><article class="rm-Article " id="content"><header id="content-head"><div class="row clearfix"><div class="col-xs-9"><h1>Node.js Setup</h1></div><div class="col-xs-3"><a class="suggestEdits" rel="nofollow" href="/main/edit/sending-logs-to-readme-with-nodejs"><i aria-hidden="true" class="icon icon-edit"></i> Suggest Edits</a></div></div></header><div class="grid-container-fluid" id="content-container"><section class="content-body grid-75"><div dehydrated="<blockquote class="callout callout_default" theme="🚀"><h2 class="callout-heading"><span class="callout-icon">🚀</span><p>Upgrading to v6.0?</p></h2><p>Please see our <a href="#how-can-i-upgrade-to-v60" target="" title="">upgrade path documentation</a>.</p></blockquote> <blockquote class="callout callout_warn" theme="🚧"><h2 class="callout-heading"><span class="callout-icon">🚧</span><p>Any issues?</p></h2><p>Integrations can be tricky! <a href="https://docs.readme.com/guides/docs/contact-support" target="" title="">Contact support</a> if you have any questions/issues.</p></blockquote> <h2 class="heading heading-2 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="overview"></div><div class="heading-text"><div id="section-overview" class="heading-anchor_backwardsCompatibility"></div>Overview</div><a aria-label="Skip link to Overview" class="heading-anchor-icon fa fa-anchor" href="#overview"></a></h2> <p>If you&#x27;re a developer, it takes a few small steps to send your API logs to <a href="http://readme.com/" target="" title="">ReadMe</a> so your team can get deep insights into your API&#x27;s usage with <a href="https://readme.com/metrics" target="" title="">ReadMe Metrics</a>. Here&#x27;s an overview of how the integration works:</p> <ul> <li>You add the Node.js SDK to your server manually or via the included <a href="https://expressjs.com/" target="" title="">Express.js</a> middleware.</li> <li>The Node.js SDK sends ReadMe the details of your API&#x27;s incoming requests and outgoing responses, with the option for you to redact any private parameters or headers.</li> <li>ReadMe uses these request and response details to populate Metrics charts which can be used to analyze specific API calls or monitor aggregate usage data.</li> </ul> <h2 class="heading heading-2 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="expressjs-integration"></div><div class="heading-text"><div id="section-express-js-integration" class="heading-anchor_backwardsCompatibility"></div>Express.js Integration</div><a aria-label="Skip link to Express.js Integration" class="heading-anchor-icon fa fa-anchor" href="#expressjs-integration"></a></h2> <blockquote class="callout callout_info" theme="ℹ️"><h2 class="callout-heading empty"><span class="callout-icon">ℹ️</span></h2><p><strong>Note:</strong> If you&#x27;re not using <a href="https://expressjs.com/" target="" title="">Express.js</a>, check out our example integrations for <a href="https://hapi.dev/" target="" title="">hapi</a> or <a href="https://www.fastify.io/" target="" title="">Fastify</a> <a href="https://github.com/readmeio/metrics-sdks/tree/main/packages/node/examples" target="" title="">here</a>.</p></blockquote> <ol> <li>Locate the file in your organization&#x27;s API codebase that contains your Express server; often this file is named <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">express.js</code>, <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">app.js</code>, or <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">server.js</code>. You can also search your codebase for <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">express()</code> as that&#x27;s where Express will be usually instantiated from.</li> <li>From the directory of this codebase, run the following command in your command line to install the <a href="https://www.npmjs.com/package/readmeio" target="" title=""><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">readmeio</code> package from <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">npm</code></a>:</li> </ol> <div class="CodeTabs CodeTabs_initial theme-light"><div class="CodeTabs-toolbar" role="tablist"><button aria-selected="true" class="CodeTabs_active" role="tab" type="button">Bash</button></div><div class="CodeTabs-inner" role="tabpanel"><pre><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang-bash theme-light" data-lang="bash" name="" tabindex="0">npm install readmeio --save </code></pre></div></div> <ol start="3"> <li>Load the <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">readmeio</code> module into your Express server. Usually near the beginning of the file, you will see several <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">import</code> or <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">require</code> statements. Add the following statement to that group:</li> </ol> <h4 class="heading heading-4 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="typescript"></div><div class="heading-text"><div id="section-typescript" class="heading-anchor_backwardsCompatibility"></div>Typescript</div><a aria-label="Skip link to Typescript" class="heading-anchor-icon fa fa-anchor" href="#typescript"></a></h4> <div class="CodeTabs CodeTabs_initial theme-light"><div class="CodeTabs-toolbar" role="tablist"><button aria-selected="true" class="CodeTabs_active" role="tab" type="button">ts</button></div><div class="CodeTabs-inner" role="tabpanel"><pre><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang-ts theme-light" data-lang="ts" name="" tabindex="0">import * as readme from &#x27;readmeio&#x27;; </code></pre></div></div> <h4 class="heading heading-4 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="nodejs"></div><div class="heading-text"><div id="section-node-js" class="heading-anchor_backwardsCompatibility"></div>Node.js</div><a aria-label="Skip link to Node.js" class="heading-anchor-icon fa fa-anchor" href="#nodejs"></a></h4> <div class="CodeTabs CodeTabs_initial theme-light"><div class="CodeTabs-toolbar" role="tablist"><button aria-selected="true" class="CodeTabs_active" role="tab" type="button">JavaScript</button></div><div class="CodeTabs-inner" role="tabpanel"><pre><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang-js theme-light" data-lang="js" name="" tabindex="0">const readme = require(&#x27;readmeio&#x27;); </code></pre></div></div> <ol start="4"> <li>Configure the following middleware function:</li> </ol> <div class="CodeTabs CodeTabs_initial theme-light"><div class="CodeTabs-toolbar" role="tablist"><button aria-selected="true" class="CodeTabs_active" role="tab" type="button">JavaScript</button></div><div class="CodeTabs-inner" role="tabpanel"><pre><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang-js theme-light" data-lang="js" name="" tabindex="0">app.use((req, res, next) =&gt; { readme.log(readmeAPIKey, req, res, { // You might extract this from a header or parameter. apiKey: req.&lt;apiKey&gt;, // You might extract these from user data associated with the API key. label: req.&lt;userNameToShowInDashboard&gt;, email: req.&lt;userEmailAddress&gt;, }); return next(); }); </code></pre></div></div> <p>For more details about the parameters you can provide to the <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">express</code> function, refer to the <a href="https://docs.readme.com/docs/sending-logs-to-readme-with-nodejs#express-middleware-reference" target="" title="">Express.js documentation</a>.</p> <ol start="5"> <li>Test a request:</li> </ol> <div class="CodeTabs CodeTabs_initial theme-light"><div class="CodeTabs-toolbar" role="tablist"><button aria-selected="true" class="CodeTabs_active" role="tab" type="button">Bash</button></div><div class="CodeTabs-inner" role="tabpanel"><pre><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang-bash theme-light" data-lang="bash" name="" tabindex="0">curl -i {my api url} </code></pre></div></div> <p>You should see a response header <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">x-documentation-url</code>. This header contains a URL to a detailed log of the API request/response. For info on configuring this header, check out the <a href="https://docs.readme.com/docs/sending-logs-to-readme-with-nodejs#documentation-url" target="" title="">Documentation URL</a> docs.</p> <h3 class="heading heading-3 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="log-reference"></div><div class="heading-text"><div id="section-log-reference" class="heading-anchor_backwardsCompatibility"></div><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">log</code> Reference</div><a aria-label="Skip link to [object Object]" class="heading-anchor-icon fa fa-anchor" href="#log-reference"></a></h3> <p>The <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">log</code> function accepts the following parameters:</p> <blockquote> <p>Note that this middleware is not likely to be sensitive to order. If you are new to Express, see <a href="https://stormpath.com/blog/how-to-write-middleware-for-express-apps" target="" title="">How to Write Middleware for Express.js Apps</a>.</p> </blockquote> <!-- --> <div class="rdmd-table"><div class="rdmd-table-inner"><table><thead><tr><th style="text-align:left">Parameter</th><th style="text-align:left">Required?</th><th style="text-align:left">Description</th></tr></thead><tbody><tr><td style="text-align:left"><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">readmeAPIKey</code></td><td style="text-align:left">yes</td><td style="text-align:left">The API key for your ReadMe project. This ensures your requests end up in your dashboard. You can read more about the API key in <a href="https://docs.readme.com/reference/authentication" target="" title="">our docs</a>.</td></tr><tr><td style="text-align:left"><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">req</code></td><td style="text-align:left">yes</td><td style="text-align:left">The incoming <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">Request</code> object from Express.</td></tr><tr><td style="text-align:left"><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">res</code></td><td style="text-align:left">yes</td><td style="text-align:left">The outgoing <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">Response</code> object from Express.</td></tr><tr><td style="text-align:left"><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">groupFn</code></td><td style="text-align:left">yes</td><td style="text-align:left">A function that helps translate incoming request data to our metrics grouping data. You can read more under <a href="#grouping-function" target="" title="">Grouping Function</a>.</td></tr><tr><td style="text-align:left"><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">options</code></td><td style="text-align:left">no</td><td style="text-align:left">Additional options. You can read more under <a href="#additional-express-options" target="" title="">Additional Express Options</a></td></tr></tbody></table></div></div> <!-- --> <h4 class="heading heading-4 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="example"></div><div class="heading-text"><div id="section-example" class="heading-anchor_backwardsCompatibility"></div>Example</div><a aria-label="Skip link to Example" class="heading-anchor-icon fa fa-anchor" href="#example"></a></h4> <div class="CodeTabs CodeTabs_initial theme-light"><div class="CodeTabs-toolbar" role="tablist"><button aria-selected="true" class="CodeTabs_active" role="tab" type="button">JavaScript</button></div><div class="CodeTabs-inner" role="tabpanel"><pre><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang-js theme-light" data-lang="js" name="" tabindex="0">readme.log(readmeAPIKey, req, res, groupFn, options); </code></pre></div></div> <h3 class="heading heading-3 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="grouping-function"></div><div class="heading-text"><div id="section-grouping-function" class="heading-anchor_backwardsCompatibility"></div>Grouping Function</div><a aria-label="Skip link to Grouping Function" class="heading-anchor-icon fa fa-anchor" href="#grouping-function"></a></h3> <p>The grouping function is a function your script should include that extracts identifying information out of the <a href="https://expressjs.com/en/4x/api.html#req" target="" title=""><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">req</code></a> object. While only <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">apiKey</code> is required, we recommend providing all three values to get the most out of the metrics dashboard.</p> <p>Return data:</p> <!-- --> <div class="rdmd-table"><div class="rdmd-table-inner"><table><thead><tr><th style="text-align:left">Field</th><th style="text-align:left">Required?</th><th style="text-align:left">Type</th><th style="text-align:left">Usage</th></tr></thead><tbody><tr><td style="text-align:left"><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">apiKey</code></td><td style="text-align:left">yes</td><td style="text-align:left">string</td><td style="text-align:left">API Key used to make the request. Note that this is different from the <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">readmeAPIKey</code> described above and should be a value from your API that is unique to each of your users.</td></tr><tr><td style="text-align:left"><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">label</code></td><td style="text-align:left">no</td><td style="text-align:left">string</td><td style="text-align:left">This will be the user&#x27;s display name in the API Metrics Dashboard, since it&#x27;s much easier to remember a name than an API key.</td></tr><tr><td style="text-align:left"><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">email</code></td><td style="text-align:left">no</td><td style="text-align:left">string</td><td style="text-align:left">Email of the user that is making the call.</td></tr></tbody></table></div></div> <!-- --> <h4 class="heading heading-4 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="example-1"></div><div class="heading-text"><div id="section-example" class="heading-anchor_backwardsCompatibility"></div>Example</div><a aria-label="Skip link to Example" class="heading-anchor-icon fa fa-anchor" href="#example-1"></a></h4> <div class="CodeTabs CodeTabs_initial theme-light"><div class="CodeTabs-toolbar" role="tablist"><button aria-selected="true" class="CodeTabs_active" role="tab" type="button">JavaScript</button></div><div class="CodeTabs-inner" role="tabpanel"><pre><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang-js theme-light" data-lang="js" name="" tabindex="0">app.use((req, res, next) =&gt; { readme.log(readmeAPIKey, req, res, { // You might extract this from a header or parameter. apiKey: req.&lt;apiKey&gt;, // You might extract these from user data associated with the API key. label: req.&lt;userNameToShowInDashboard&gt;, email: req.&lt;userEmailAddress&gt;, }); return next(); }); </code></pre></div></div> <h3 class="heading heading-3 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="additional-express-options"></div><div class="heading-text"><div id="section-additional-express-options" class="heading-anchor_backwardsCompatibility"></div>Additional Express Options</div><a aria-label="Skip link to Additional Express Options" class="heading-anchor-icon fa fa-anchor" href="#additional-express-options"></a></h3> <!-- --> <div class="rdmd-table"><div class="rdmd-table-inner"><table><thead><tr><th style="text-align:left">Option</th><th style="text-align:left">Type</th><th style="text-align:left">Description</th></tr></thead><tbody><tr><td style="text-align:left"><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">allowlist</code></td><td style="text-align:left">Array of strings</td><td style="text-align:left">If included, <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">denylist</code> will be ignored and all parameters but those in this list will be redacted.</td></tr><tr><td style="text-align:left"><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">baseLogUrl</code></td><td style="text-align:left">string</td><td style="text-align:left">This value is used when building the x-documentation-url header (see docs <a href="#documentation-url" target="" title="">below</a>). It is your ReadMe documentation&#x27;s base URL (e.g. <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">https://example.readme.com</code>). If not provided, we will make one API call a day to determine your base URL (more info in <a href="https://docs.readme.com/docs/sending-logs-to-readme-with-nodejs#documentation-url" target="" title="">Documentation URL</a>. If provided, we will use that value and never look it up automatically.</td></tr><tr><td style="text-align:left"><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">bufferLength</code></td><td style="text-align:left">number</td><td style="text-align:left">Defaults to <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">1</code>. This value should be a number representing the amount of requests to group up before sending them over the network. Increasing this value will increase performance but delay the time until logs show up in the dashboard. The default value is 1.</td></tr><tr><td style="text-align:left"><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">denylist</code></td><td style="text-align:left">Array of strings</td><td style="text-align:left">An array of parameter names that will be redacted from the query parameters, request body (when JSON or form-encoded), response body (when JSON) and headers. For nested request parameters use dot notation (e.g. <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">a.b.c</code> to redact the field <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">c</code> within <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">{ a: { b: { c: &#x27;foo&#x27; }}}</code>).</td></tr><tr><td style="text-align:left"><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">development</code></td><td style="text-align:left">bool</td><td style="text-align:left">Defaults to false. When <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">true</code>, the log will be marked as a development log. This is great for separating staging or test data from data coming from customers.</td></tr><tr><td style="text-align:left"><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">fireAndForget</code></td><td style="text-align:left">bool</td><td style="text-align:left">Defaults to <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">true</code>. When <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">false</code>, the server will wait for the response from the metrics call. This will be slower, but the response is useful in debugging problems.</td></tr></tbody></table></div></div> <!-- --> <h4 class="heading heading-4 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="example-2"></div><div class="heading-text"><div id="section-example" class="heading-anchor_backwardsCompatibility"></div>Example</div><a aria-label="Skip link to Example" class="heading-anchor-icon fa fa-anchor" href="#example-2"></a></h4> <div class="CodeTabs CodeTabs_initial theme-light"><div class="CodeTabs-toolbar" role="tablist"><button aria-selected="true" class="CodeTabs_active" role="tab" type="button">JavaScript</button></div><div class="CodeTabs-inner" role="tabpanel"><pre><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang-js theme-light" data-lang="js" name="" tabindex="0">{ denyList: [&#x27;password&#x27;, &#x27;secret&#x27;], development: true, fireAndForget: true, bufferLength: 1, baseLogUrl: &quot;https://example.readme.com&quot; } </code></pre></div></div> <h3 class="heading heading-3 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="documentation-url"></div><div class="heading-text"><div id="section-documentation-url" class="heading-anchor_backwardsCompatibility"></div>Documentation URL</div><a aria-label="Skip link to Documentation URL" class="heading-anchor-icon fa fa-anchor" href="#documentation-url"></a></h3> <p>With the middleware loaded, all requests that funneled through it will receive a <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">x-documentation-url</code> header applied to the response. The value of this header will be the URL on ReadMe Metrics with which you can view the log for that request.</p> <p>Note that in order to generate this URL, an API request is made to ReadMe once a day, and cached to a local file in <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">node_modules/.cache/readmeio</code>, to retrieve your projects baseUrl. If this request to ReadMe fails, the <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">x-documentation-url</code> header will not be added to responses.</p> <p>If you wish to not rely on this cache, you can opt to supply a <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">baseLogUrl</code> option into the middleware, which should evaluate to the public-facing URL of your ReadMe project.</p> <h2 class="heading heading-2 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="security"></div><div class="heading-text"><div id="section-security" class="heading-anchor_backwardsCompatibility"></div>Security</div><a aria-label="Skip link to Security" class="heading-anchor-icon fa fa-anchor" href="#security"></a></h2> <p>By default API keys sent the grouping function and <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">Authorization</code> headers are encrypted into an integrity hash using the <a href="https://npm.im/ssri" target="" title="">ssri</a> library. In order for us to safely utilize this data later in your ReadMe dashboards, and allow you to do user tracing, we pluck the last 4 characters off of the end of the encrypted string and save that with the integrity hash.</p> <p>For example if the API key is <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">1999e4893f732ba38b948dbe8d34ed48cd54f058</code> we will include <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">f058</code> on the end of the hash, resulting in ReadMe Metrics recording the following in our database:</p> <blockquote> <p>sha512-/0bFzsk3a5wrmdTxA6qstL9TExGVTr9BUgZvhIjVrTa2M/KsNkW+AF8wJtgYd1OIvHc5qGgB9WfUbCA8PPbE8w==?f058</p> </blockquote> <h2 class="heading heading-2 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="sample-applications"></div><div class="heading-text"><div id="section-sample-applications" class="heading-anchor_backwardsCompatibility"></div>Sample Applications</div><a aria-label="Skip link to Sample Applications" class="heading-anchor-icon fa fa-anchor" href="#sample-applications"></a></h2> <ul> <li><a href="https://github.com/readmeio/metrics-sdks/tree/main/packages/node/examples/express" target="" title="">Express</a></li> <li><a href="https://github.com/readmeio/metrics-sdks/tree/main/packages/node/examples/fastify" target="" title="">Fastify</a></li> <li><a href="https://github.com/readmeio/metrics-sdks/tree/main/packages/node/examples/hapi" target="" title="">Hapi</a></li> </ul> <h2 class="heading heading-2 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="faq"></div><div class="heading-text"><div id="section-faq" class="heading-anchor_backwardsCompatibility"></div>FAQ</div><a aria-label="Skip link to FAQ" class="heading-anchor-icon fa fa-anchor" href="#faq"></a></h2> <h3 class="heading heading-3 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="are-there-any-limitations"></div><div class="heading-text"><div id="section-are-there-any-limitations" class="heading-anchor_backwardsCompatibility"></div>Are there any limitations?</div><a aria-label="Skip link to Are there any limitations?" class="heading-anchor-icon fa fa-anchor" href="#are-there-any-limitations"></a></h3> <ul> <li>Though we offer <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">allowlist</code> and <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">denylist</code> options for suppressing data you send to API Metrics, they are only supported on JSON and form-encoded request bodies. If you need to suppression support for other request body types you can parse the request body yourself and supply that modified payload into the <a href="#log-reference" target="" title=""><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">log</code> function</a> where you&#x27;d send us <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">req</code>.</li> </ul> <h3 class="heading heading-3 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="how-can-i-upgrade-to-v60"></div><div class="heading-text"><div id="section-how-can-i-upgrade-to-v-6-0" class="heading-anchor_backwardsCompatibility"></div>How can I upgrade to v6.0?</div><a aria-label="Skip link to How can I upgrade to v6.0?" class="heading-anchor-icon fa fa-anchor" href="#how-can-i-upgrade-to-v60"></a></h3> <blockquote class="callout callout_info" theme="ℹ️"><h2 class="callout-heading empty"><span class="callout-icon">ℹ️</span></h2><p>If you are already using <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">readme.log()</code> as your entry point for recording API Metrics you don&#x27;t need to do change anything.</p></blockquote> <p>With the v6 release of our Node SDK we&#x27;ve heavily simplified how the library can be implemented across every available JS web framework out there.</p> <p>Given a <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">readme.express()</code> code snippet that looks like the following:</p> <div class="CodeTabs CodeTabs_initial theme-light"><div class="CodeTabs-toolbar" role="tablist"><button aria-selected="true" class="CodeTabs_active" role="tab" type="button">JavaScript</button></div><div class="CodeTabs-inner" role="tabpanel"><pre><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang-js theme-light" data-lang="js" name="" tabindex="0">app.use( readme.express(readmeAPIKey, req =&gt; ({ apiKey: req.&lt;apiKey&gt;, label: req.&lt;userNameToShowInDashboard&gt;, email: req.&lt;userEmailAddress&gt;, })) ); </code></pre></div></div> <p>You should change your implementation to use our new <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">readme.log()</code> method, resulting in something that looks like this:</p> <div class="CodeTabs CodeTabs_initial theme-light"><div class="CodeTabs-toolbar" role="tablist"><button aria-selected="true" class="CodeTabs_active" role="tab" type="button">JavaScript</button></div><div class="CodeTabs-inner" role="tabpanel"><pre><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang-js theme-light" data-lang="js" name="" tabindex="0">app.use((req, res, next) =&gt; { readme.log(readmeAPIKey, req, res, { apiKey: req.&lt;apiKey&gt;, label: req.&lt;userNameToShowInDashboard&gt;, email: req.&lt;userEmailAddress&gt;, }); return next(); }); </code></pre></div></div>" style="margin-left:31px" class="rm-Markdown markdown-body rm-Markdown markdown-body ng-non-bindable" data-testid="RDMD"><blockquote class="callout callout_default" theme="🚀"><h2 class="callout-heading"><span class="callout-icon">🚀</span><p>Upgrading to v6.0?</p></h2><p>Please see our <a target="_self" href="#how-can-i-upgrade-to-v60">upgrade path documentation</a>.</p></blockquote> <blockquote class="callout callout_warn" theme="🚧"><h2 class="callout-heading"><span class="callout-icon">🚧</span><p>Any issues?</p></h2><p>Integrations can be tricky! <a target="_self" href="https://docs.readme.com/guides/docs/contact-support">Contact support</a> if you have any questions/issues.</p></blockquote> <h2 class="heading heading-2 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="overview"></div><div class="heading-text"><div id="section-overview" class="heading-anchor_backwardsCompatibility"></div>Overview</div><a aria-label="Skip link to Overview" class="heading-anchor-icon fa fa-anchor" href="#overview"></a></h2> <p>If you're a developer, it takes a few small steps to send your API logs to <a target="_self" href="http://readme.com/">ReadMe</a> so your team can get deep insights into your API's usage with <a target="_self" href="https://readme.com/metrics">ReadMe Metrics</a>. Here's an overview of how the integration works:</p> <ul> <li>You add the Node.js SDK to your server manually or via the included <a target="_self" href="https://expressjs.com/">Express.js</a> middleware.</li> <li>The Node.js SDK sends ReadMe the details of your API's incoming requests and outgoing responses, with the option for you to redact any private parameters or headers.</li> <li>ReadMe uses these request and response details to populate Metrics charts which can be used to analyze specific API calls or monitor aggregate usage data.</li> </ul> <h2 class="heading heading-2 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="expressjs-integration"></div><div class="heading-text"><div id="section-express-js-integration" class="heading-anchor_backwardsCompatibility"></div>Express.js Integration</div><a aria-label="Skip link to Express.js Integration" class="heading-anchor-icon fa fa-anchor" href="#expressjs-integration"></a></h2> <blockquote class="callout callout_info" theme="ℹ️"><h2 class="callout-heading empty"><span class="callout-icon">ℹ️</span></h2><p><strong>Note:</strong> If you're not using <a target="_self" href="https://expressjs.com/">Express.js</a>, check out our example integrations for <a target="_self" href="https://hapi.dev/">hapi</a> or <a target="_self" href="https://www.fastify.io/">Fastify</a> <a target="_self" href="https://github.com/readmeio/metrics-sdks/tree/main/packages/node/examples">here</a>.</p></blockquote> <ol> <li>Locate the file in your organization's API codebase that contains your Express server; often this file is named <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">express.js</code>, <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">app.js</code>, or <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">server.js</code>. You can also search your codebase for <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">express()</code> as that's where Express will be usually instantiated from.</li> <li>From the directory of this codebase, run the following command in your command line to install the <a target="_self" href="https://www.npmjs.com/package/readmeio"><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">readmeio</code> package from <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">npm</code></a>:</li> </ol> <div class="CodeTabs CodeTabs_initial theme-light"><div class="CodeTabs-toolbar" role="tablist"><button aria-selected="true" class="CodeTabs_active" role="tab" type="button">Bash</button></div><div class="CodeTabs-inner" role="tabpanel"><pre><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang-bash theme-light" data-lang="bash" name="" tabindex="0">npm install readmeio --save </code></pre></div></div> <ol start="3"> <li>Load the <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">readmeio</code> module into your Express server. Usually near the beginning of the file, you will see several <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">import</code> or <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">require</code> statements. Add the following statement to that group:</li> </ol> <h4 class="heading heading-4 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="typescript"></div><div class="heading-text"><div id="section-typescript" class="heading-anchor_backwardsCompatibility"></div>Typescript</div><a aria-label="Skip link to Typescript" class="heading-anchor-icon fa fa-anchor" href="#typescript"></a></h4> <div class="CodeTabs CodeTabs_initial theme-light"><div class="CodeTabs-toolbar" role="tablist"><button aria-selected="true" class="CodeTabs_active" role="tab" type="button">ts</button></div><div class="CodeTabs-inner" role="tabpanel"><pre><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang-ts theme-light" data-lang="ts" name="" tabindex="0">import * as readme from 'readmeio'; </code></pre></div></div> <h4 class="heading heading-4 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="nodejs"></div><div class="heading-text"><div id="section-node-js" class="heading-anchor_backwardsCompatibility"></div>Node.js</div><a aria-label="Skip link to Node.js" class="heading-anchor-icon fa fa-anchor" href="#nodejs"></a></h4> <div class="CodeTabs CodeTabs_initial theme-light"><div class="CodeTabs-toolbar" role="tablist"><button aria-selected="true" class="CodeTabs_active" role="tab" type="button">JavaScript</button></div><div class="CodeTabs-inner" role="tabpanel"><pre><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang-js theme-light" data-lang="js" name="" tabindex="0">const readme = require('readmeio'); </code></pre></div></div> <ol start="4"> <li>Configure the following middleware function:</li> </ol> <div class="CodeTabs CodeTabs_initial theme-light"><div class="CodeTabs-toolbar" role="tablist"><button aria-selected="true" class="CodeTabs_active" role="tab" type="button">JavaScript</button></div><div class="CodeTabs-inner" role="tabpanel"><pre><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang-js theme-light" data-lang="js" name="" tabindex="0">app.use((req, res, next) => { readme.log(readmeAPIKey, req, res, { // You might extract this from a header or parameter. apiKey: req.<apiKey>, // You might extract these from user data associated with the API key. label: req.<userNameToShowInDashboard>, email: req.<userEmailAddress>, }); return next(); }); </code></pre></div></div> <p>For more details about the parameters you can provide to the <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">express</code> function, refer to the <a target="_self" href="/main/docs/sending-logs-to-readme-with-nodejs#express-middleware-reference">Express.js documentation</a>.</p> <ol start="5"> <li>Test a request:</li> </ol> <div class="CodeTabs CodeTabs_initial theme-light"><div class="CodeTabs-toolbar" role="tablist"><button aria-selected="true" class="CodeTabs_active" role="tab" type="button">Bash</button></div><div class="CodeTabs-inner" role="tabpanel"><pre><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang-bash theme-light" data-lang="bash" name="" tabindex="0">curl -i {my api url} </code></pre></div></div> <p>You should see a response header <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">x-documentation-url</code>. This header contains a URL to a detailed log of the API request/response. For info on configuring this header, check out the <a target="_self" href="/main/docs/sending-logs-to-readme-with-nodejs#documentation-url">Documentation URL</a> docs.</p> <h3 class="heading heading-3 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="log-reference"></div><div class="heading-text"><div id="section-log-reference" class="heading-anchor_backwardsCompatibility"></div><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">log</code> Reference</div><a aria-label="Skip link to [object Object]" class="heading-anchor-icon fa fa-anchor" href="#log-reference"></a></h3> <p>The <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">log</code> function accepts the following parameters:</p> <blockquote> <p>Note that this middleware is not likely to be sensitive to order. If you are new to Express, see <a target="_self" href="https://stormpath.com/blog/how-to-write-middleware-for-express-apps">How to Write Middleware for Express.js Apps</a>.</p> </blockquote> <!-- --> <div class="rdmd-table"><div class="rdmd-table-inner"><table><thead><tr><th style="text-align:left">Parameter</th><th style="text-align:left">Required?</th><th style="text-align:left">Description</th></tr></thead><tbody><tr><td style="text-align:left"><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">readmeAPIKey</code></td><td style="text-align:left">yes</td><td style="text-align:left">The API key for your ReadMe project. This ensures your requests end up in your dashboard. You can read more about the API key in <a target="_self" href="/main/reference/authentication">our docs</a>.</td></tr><tr><td style="text-align:left"><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">req</code></td><td style="text-align:left">yes</td><td style="text-align:left">The incoming <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">Request</code> object from Express.</td></tr><tr><td style="text-align:left"><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">res</code></td><td style="text-align:left">yes</td><td style="text-align:left">The outgoing <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">Response</code> object from Express.</td></tr><tr><td style="text-align:left"><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">groupFn</code></td><td style="text-align:left">yes</td><td style="text-align:left">A function that helps translate incoming request data to our metrics grouping data. You can read more under <a target="_self" href="#grouping-function">Grouping Function</a>.</td></tr><tr><td style="text-align:left"><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">options</code></td><td style="text-align:left">no</td><td style="text-align:left">Additional options. You can read more under <a target="_self" href="#additional-express-options">Additional Express Options</a></td></tr></tbody></table></div></div> <!-- --> <h4 class="heading heading-4 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="example"></div><div class="heading-text"><div id="section-example" class="heading-anchor_backwardsCompatibility"></div>Example</div><a aria-label="Skip link to Example" class="heading-anchor-icon fa fa-anchor" href="#example"></a></h4> <div class="CodeTabs CodeTabs_initial theme-light"><div class="CodeTabs-toolbar" role="tablist"><button aria-selected="true" class="CodeTabs_active" role="tab" type="button">JavaScript</button></div><div class="CodeTabs-inner" role="tabpanel"><pre><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang-js theme-light" data-lang="js" name="" tabindex="0">readme.log(readmeAPIKey, req, res, groupFn, options); </code></pre></div></div> <h3 class="heading heading-3 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="grouping-function"></div><div class="heading-text"><div id="section-grouping-function" class="heading-anchor_backwardsCompatibility"></div>Grouping Function</div><a aria-label="Skip link to Grouping Function" class="heading-anchor-icon fa fa-anchor" href="#grouping-function"></a></h3> <p>The grouping function is a function your script should include that extracts identifying information out of the <a target="_self" href="https://expressjs.com/en/4x/api.html#req"><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">req</code></a> object. While only <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">apiKey</code> is required, we recommend providing all three values to get the most out of the metrics dashboard.</p> <p>Return data:</p> <!-- --> <div class="rdmd-table"><div class="rdmd-table-inner"><table><thead><tr><th style="text-align:left">Field</th><th style="text-align:left">Required?</th><th style="text-align:left">Type</th><th style="text-align:left">Usage</th></tr></thead><tbody><tr><td style="text-align:left"><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">apiKey</code></td><td style="text-align:left">yes</td><td style="text-align:left">string</td><td style="text-align:left">API Key used to make the request. Note that this is different from the <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">readmeAPIKey</code> described above and should be a value from your API that is unique to each of your users.</td></tr><tr><td style="text-align:left"><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">label</code></td><td style="text-align:left">no</td><td style="text-align:left">string</td><td style="text-align:left">This will be the user's display name in the API Metrics Dashboard, since it's much easier to remember a name than an API key.</td></tr><tr><td style="text-align:left"><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">email</code></td><td style="text-align:left">no</td><td style="text-align:left">string</td><td style="text-align:left">Email of the user that is making the call.</td></tr></tbody></table></div></div> <!-- --> <h4 class="heading heading-4 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="example-1"></div><div class="heading-text"><div id="section-example" class="heading-anchor_backwardsCompatibility"></div>Example</div><a aria-label="Skip link to Example" class="heading-anchor-icon fa fa-anchor" href="#example-1"></a></h4> <div class="CodeTabs CodeTabs_initial theme-light"><div class="CodeTabs-toolbar" role="tablist"><button aria-selected="true" class="CodeTabs_active" role="tab" type="button">JavaScript</button></div><div class="CodeTabs-inner" role="tabpanel"><pre><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang-js theme-light" data-lang="js" name="" tabindex="0">app.use((req, res, next) => { readme.log(readmeAPIKey, req, res, { // You might extract this from a header or parameter. apiKey: req.<apiKey>, // You might extract these from user data associated with the API key. label: req.<userNameToShowInDashboard>, email: req.<userEmailAddress>, }); return next(); }); </code></pre></div></div> <h3 class="heading heading-3 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="additional-express-options"></div><div class="heading-text"><div id="section-additional-express-options" class="heading-anchor_backwardsCompatibility"></div>Additional Express Options</div><a aria-label="Skip link to Additional Express Options" class="heading-anchor-icon fa fa-anchor" href="#additional-express-options"></a></h3> <!-- --> <div class="rdmd-table"><div class="rdmd-table-inner"><table><thead><tr><th style="text-align:left">Option</th><th style="text-align:left">Type</th><th style="text-align:left">Description</th></tr></thead><tbody><tr><td style="text-align:left"><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">allowlist</code></td><td style="text-align:left">Array of strings</td><td style="text-align:left">If included, <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">denylist</code> will be ignored and all parameters but those in this list will be redacted.</td></tr><tr><td style="text-align:left"><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">baseLogUrl</code></td><td style="text-align:left">string</td><td style="text-align:left">This value is used when building the x-documentation-url header (see docs <a target="_self" href="#documentation-url">below</a>). It is your ReadMe documentation's base URL (e.g. <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">https://example.readme.com</code>). If not provided, we will make one API call a day to determine your base URL (more info in <a target="_self" href="/main/docs/sending-logs-to-readme-with-nodejs#documentation-url">Documentation URL</a>. If provided, we will use that value and never look it up automatically.</td></tr><tr><td style="text-align:left"><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">bufferLength</code></td><td style="text-align:left">number</td><td style="text-align:left">Defaults to <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">1</code>. This value should be a number representing the amount of requests to group up before sending them over the network. Increasing this value will increase performance but delay the time until logs show up in the dashboard. The default value is 1.</td></tr><tr><td style="text-align:left"><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">denylist</code></td><td style="text-align:left">Array of strings</td><td style="text-align:left">An array of parameter names that will be redacted from the query parameters, request body (when JSON or form-encoded), response body (when JSON) and headers. For nested request parameters use dot notation (e.g. <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">a.b.c</code> to redact the field <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">c</code> within <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">{ a: { b: { c: 'foo' }}}</code>).</td></tr><tr><td style="text-align:left"><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">development</code></td><td style="text-align:left">bool</td><td style="text-align:left">Defaults to false. When <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">true</code>, the log will be marked as a development log. This is great for separating staging or test data from data coming from customers.</td></tr><tr><td style="text-align:left"><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">fireAndForget</code></td><td style="text-align:left">bool</td><td style="text-align:left">Defaults to <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">true</code>. When <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">false</code>, the server will wait for the response from the metrics call. This will be slower, but the response is useful in debugging problems.</td></tr></tbody></table></div></div> <!-- --> <h4 class="heading heading-4 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="example-2"></div><div class="heading-text"><div id="section-example" class="heading-anchor_backwardsCompatibility"></div>Example</div><a aria-label="Skip link to Example" class="heading-anchor-icon fa fa-anchor" href="#example-2"></a></h4> <div class="CodeTabs CodeTabs_initial theme-light"><div class="CodeTabs-toolbar" role="tablist"><button aria-selected="true" class="CodeTabs_active" role="tab" type="button">JavaScript</button></div><div class="CodeTabs-inner" role="tabpanel"><pre><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang-js theme-light" data-lang="js" name="" tabindex="0">{ denyList: ['password', 'secret'], development: true, fireAndForget: true, bufferLength: 1, baseLogUrl: "https://example.readme.com" } </code></pre></div></div> <h3 class="heading heading-3 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="documentation-url"></div><div class="heading-text"><div id="section-documentation-url" class="heading-anchor_backwardsCompatibility"></div>Documentation URL</div><a aria-label="Skip link to Documentation URL" class="heading-anchor-icon fa fa-anchor" href="#documentation-url"></a></h3> <p>With the middleware loaded, all requests that funneled through it will receive a <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">x-documentation-url</code> header applied to the response. The value of this header will be the URL on ReadMe Metrics with which you can view the log for that request.</p> <p>Note that in order to generate this URL, an API request is made to ReadMe once a day, and cached to a local file in <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">node_modules/.cache/readmeio</code>, to retrieve your projects baseUrl. If this request to ReadMe fails, the <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">x-documentation-url</code> header will not be added to responses.</p> <p>If you wish to not rely on this cache, you can opt to supply a <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">baseLogUrl</code> option into the middleware, which should evaluate to the public-facing URL of your ReadMe project.</p> <h2 class="heading heading-2 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="security"></div><div class="heading-text"><div id="section-security" class="heading-anchor_backwardsCompatibility"></div>Security</div><a aria-label="Skip link to Security" class="heading-anchor-icon fa fa-anchor" href="#security"></a></h2> <p>By default API keys sent the grouping function and <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">Authorization</code> headers are encrypted into an integrity hash using the <a target="_self" href="https://npm.im/ssri">ssri</a> library. In order for us to safely utilize this data later in your ReadMe dashboards, and allow you to do user tracing, we pluck the last 4 characters off of the end of the encrypted string and save that with the integrity hash.</p> <p>For example if the API key is <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">1999e4893f732ba38b948dbe8d34ed48cd54f058</code> we will include <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">f058</code> on the end of the hash, resulting in ReadMe Metrics recording the following in our database:</p> <blockquote> <p>sha512-/0bFzsk3a5wrmdTxA6qstL9TExGVTr9BUgZvhIjVrTa2M/KsNkW+AF8wJtgYd1OIvHc5qGgB9WfUbCA8PPbE8w==?f058</p> </blockquote> <h2 class="heading heading-2 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="sample-applications"></div><div class="heading-text"><div id="section-sample-applications" class="heading-anchor_backwardsCompatibility"></div>Sample Applications</div><a aria-label="Skip link to Sample Applications" class="heading-anchor-icon fa fa-anchor" href="#sample-applications"></a></h2> <ul> <li><a target="_self" href="https://github.com/readmeio/metrics-sdks/tree/main/packages/node/examples/express">Express</a></li> <li><a target="_self" href="https://github.com/readmeio/metrics-sdks/tree/main/packages/node/examples/fastify">Fastify</a></li> <li><a target="_self" href="https://github.com/readmeio/metrics-sdks/tree/main/packages/node/examples/hapi">Hapi</a></li> </ul> <h2 class="heading heading-2 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="faq"></div><div class="heading-text"><div id="section-faq" class="heading-anchor_backwardsCompatibility"></div>FAQ</div><a aria-label="Skip link to FAQ" class="heading-anchor-icon fa fa-anchor" href="#faq"></a></h2> <h3 class="heading heading-3 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="are-there-any-limitations"></div><div class="heading-text"><div id="section-are-there-any-limitations" class="heading-anchor_backwardsCompatibility"></div>Are there any limitations?</div><a aria-label="Skip link to Are there any limitations?" class="heading-anchor-icon fa fa-anchor" href="#are-there-any-limitations"></a></h3> <ul> <li>Though we offer <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">allowlist</code> and <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">denylist</code> options for suppressing data you send to API Metrics, they are only supported on JSON and form-encoded request bodies. If you need to suppression support for other request body types you can parse the request body yourself and supply that modified payload into the <a target="_self" href="#log-reference"><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">log</code> function</a> where you'd send us <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">req</code>.</li> </ul> <h3 class="heading heading-3 header-scroll" align=""><div class="heading-anchor anchor waypoint" id="how-can-i-upgrade-to-v60"></div><div class="heading-text"><div id="section-how-can-i-upgrade-to-v-6-0" class="heading-anchor_backwardsCompatibility"></div>How can I upgrade to v6.0?</div><a aria-label="Skip link to How can I upgrade to v6.0?" class="heading-anchor-icon fa fa-anchor" href="#how-can-i-upgrade-to-v60"></a></h3> <blockquote class="callout callout_info" theme="ℹ️"><h2 class="callout-heading empty"><span class="callout-icon">ℹ️</span></h2><p>If you are already using <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">readme.log()</code> as your entry point for recording API Metrics you don't need to do change anything.</p></blockquote> <p>With the v6 release of our Node SDK we've heavily simplified how the library can be implemented across every available JS web framework out there.</p> <p>Given a <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">readme.express()</code> code snippet that looks like the following:</p> <div class="CodeTabs CodeTabs_initial theme-light"><div class="CodeTabs-toolbar" role="tablist"><button aria-selected="true" class="CodeTabs_active" role="tab" type="button">JavaScript</button></div><div class="CodeTabs-inner" role="tabpanel"><pre><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang-js theme-light" data-lang="js" name="" tabindex="0">app.use( readme.express(readmeAPIKey, req => ({ apiKey: req.<apiKey>, label: req.<userNameToShowInDashboard>, email: req.<userEmailAddress>, })) ); </code></pre></div></div> <p>You should change your implementation to use our new <button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang- theme-light" data-lang="" name="" tabindex="0">readme.log()</code> method, resulting in something that looks like this:</p> <div class="CodeTabs CodeTabs_initial theme-light"><div class="CodeTabs-toolbar" role="tablist"><button aria-selected="true" class="CodeTabs_active" role="tab" type="button">JavaScript</button></div><div class="CodeTabs-inner" role="tabpanel"><pre><button aria-label="Copy Code" class="rdmd-code-copy fa"></button><code class="rdmd-code lang-js theme-light" data-lang="js" name="" tabindex="0">app.use((req, res, next) => { readme.log(readmeAPIKey, req, res, { apiKey: req.<apiKey>, label: req.<userNameToShowInDashboard>, email: req.<userEmailAddress>, }); return next(); }); </code></pre></div></div></div><div class="UpdatedAt"><p class="DateLine "><i class="icon icon-watch"></i>Updated<!-- --> <!-- -->6 months ago<!-- --> </p></div><hr class="NextStepsDivider"/><nav aria-label="Pagination Controls" class="PaginationControlsjDYuqu8pBMUy rm-Pagination"></nav></section><section class="content-toc grid-25"><nav><ul class="toc-list"><li><a class="tocHeader" href="#"><i class="icon icon-text-align-left"></i>Table of Contents</a></li><li class="toc-children"><ul> <li> <a href="#overview">Overview</a> </li> <li> <a href="#expressjs-integration">Express.js Integration</a> <ul> <li><a href="#log-reference"><code>log</code> Reference</a></li> <li><a href="#grouping-function">Grouping Function</a></li> <li><a href="#additional-express-options">Additional Express Options</a></li> <li><a href="#documentation-url">Documentation URL</a></li> </ul> </li> <li> <a href="#security">Security</a> </li> <li> <a href="#sample-applications">Sample Applications</a> </li> <li> <a href="#faq">FAQ</a> <ul> <li><a href="#are-there-any-limitations">Are there any limitations?</a></li> <li><a href="#how-can-i-upgrade-to-v60">How can I upgrade to v6.0?</a></li> </ul> </li> </ul></li></ul></nav></section></div><div class="ModalWrapper" id="tutorialmodal-root"></div></article></div></main><footer aria-label="Status banner" class="AppFooter rm-Banners"></footer><div class="ModalWrapper" id="ChatGPT-modal"></div></div></div><div class="ng-non-bindable"><script id="ssr-props" data-initial-props="{"sidebars":{"docs":[{"_id":"633470b833bb8d04e657051a","title":"🏁 QUICK START","slug":"quick-start","order":0,"reference":false,"project":"5f7ce9e3a5504d0414d025d0","version":"62056dee230e07007218bf4c","createdAt":"2022-09-28T16:05:12.048Z","__v":0,"pages":[{"_id":"633470ee319c1c102f8ad5db","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[],"examples":{"codes":[]}},"title":"Welcome to ReadMe!","icon":"","type":"basic","slug":"intro-to-readme","order":0,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2022-09-28T16:06:06.791Z","category":"633470b833bb8d04e657051a","parentDoc":null,"isBodyEmpty":false,"children":[]},{"_id":"669970c67d4663001a7903bb","api":{"method":"get","url":"","auth":"required","params":[]},"title":"Quickstart Guide","icon":"","type":"basic","slug":"quickstart-guide","order":1,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","category":"633470b833bb8d04e657051a","createdAt":"2024-07-18T19:45:10.087Z","parentDoc":null,"isBodyEmpty":false,"children":[]},{"_id":"6334712764104b07bc8c18d0","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Best Practices","icon":"","type":"basic","slug":"best-practices","order":2,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2022-09-28T16:07:03.822Z","category":"633470b833bb8d04e657051a","parentDoc":null,"isBodyEmpty":false,"children":[]},{"_id":"6334714d579dfb0f1f6f2e7d","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Use Cases Overview","icon":"","type":"basic","slug":"use-cases-overview","order":3,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2022-09-28T16:07:41.847Z","category":"633470b833bb8d04e657051a","parentDoc":null,"isBodyEmpty":false,"children":[]},{"_id":"633471615302080010b3065f","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[],"examples":{"codes":[]}},"title":"Features Overview","icon":"","type":"basic","slug":"features-overview","order":4,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2022-09-28T16:08:01.791Z","category":"633470b833bb8d04e657051a","parentDoc":null,"isBodyEmpty":false,"children":[]},{"_id":"6334717812f4df044a03db9e","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Navigating Your Hub","icon":"","type":"basic","slug":"navigating-your-hub","order":5,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2022-09-28T16:08:24.058Z","category":"633470b833bb8d04e657051a","parentDoc":null,"isBodyEmpty":false,"children":[{"_id":"6334718eb1e76c000f793720","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Search + Search API","icon":"","type":"basic","slug":"search","order":0,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"search-search-api","createdAt":"2022-09-28T16:08:46.534Z","parentDoc":"6334717812f4df044a03db9e","category":"633470b833bb8d04e657051a","isBodyEmpty":false,"children":[]},{"_id":"637d08d737038d0023409b2d","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Quick Nav in the API Reference","icon":"","type":"basic","slug":"quick-nav-api-reference","order":1,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2022-11-22T17:37:27.747Z","parentDoc":"6334717812f4df044a03db9e","category":"633470b833bb8d04e657051a","isBodyEmpty":false,"children":[]}]}]},{"_id":"62292aea889520008ed0113b","title":"⚙️ PROJECT SETUP","slug":"project-setup","order":1,"reference":false,"project":"5f7ce9e3a5504d0414d025d0","version":"62056dee230e07007218bf4c","createdAt":"2022-03-09T22:32:10.159Z","__v":0,"pages":[{"_id":"62292b6cf597210064b5bc25","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Project Setup Overview","type":"basic","slug":"project-setup-overview","order":0,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"api-login-setup","createdAt":"2022-03-09T22:34:20.911Z","category":"62292aea889520008ed0113b","parentDoc":null,"icon":"","isBodyEmpty":false,"children":[{"_id":"62603c6041169e03dd81b9d0","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Your Dashboard and Profile","type":"basic","slug":"your-dashboard-and-profile","order":0,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2022-04-20T17:01:20.357Z","category":"62292aea889520008ed0113b","parentDoc":"62292b6cf597210064b5bc25","icon":"","isBodyEmpty":false,"children":[]},{"_id":"6229060e2ec5c706036b1fcc","api":{"method":"get","url":"","auth":"required","apiSetting":null,"params":[],"results":{"codes":[{"name":"","status":200,"language":"json","code":"{}"},{"status":400,"language":"json","code":"{}","name":""}]},"settings":"","examples":{"codes":[]}},"title":"Project Settings","type":"basic","slug":"project-settings","order":1,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"project-settings-new","createdAt":"2022-03-09T19:54:54.987Z","category":"62292aea889520008ed0113b","parentDoc":"62292b6cf597210064b5bc25","icon":"","isBodyEmpty":false,"children":[]},{"_id":"633471b26900920017382428","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Quick Switcher","icon":"","type":"basic","slug":"quick-switcher","order":2,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2022-09-28T16:09:22.363Z","parentDoc":"62292b6cf597210064b5bc25","category":"62292aea889520008ed0113b","isBodyEmpty":false,"children":[]}]},{"_id":"622930ca81249400a7c7103b","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[],"examples":{"codes":[]}},"title":"Adding Your API Reference","type":"basic","slug":"adding-your-api-reference","order":1,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"api-reference-setup","createdAt":"2022-03-09T22:57:14.611Z","category":"62292aea889520008ed0113b","parentDoc":null,"icon":"","isBodyEmpty":false,"children":[{"_id":"62505bffbfa0ad036edbab46","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"language":"json","code":"{}","name":"","status":200},{"status":400,"language":"json","code":"{}","name":""}]},"params":[],"examples":{"codes":[]}},"title":"OpenAPI Upload","type":"basic","slug":"openapi-upload","order":0,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"openapi","createdAt":"2022-04-08T15:59:59.299Z","category":"62292aea889520008ed0113b","parentDoc":"622930ca81249400a7c7103b","icon":"","isBodyEmpty":false,"children":[]},{"_id":"622931e5f597210064b5c2e7","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[],"examples":{"codes":[]}},"title":"Manual API Editor","type":"basic","slug":"manual-api-editor","order":1,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"manual-api-editor-new","createdAt":"2022-03-09T23:01:57.386Z","parentDoc":"622930ca81249400a7c7103b","category":"62292aea889520008ed0113b","icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218bf4a","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[],"examples":{"codes":[]}},"title":"GraphQL API Reference (Limited Support)","type":"basic","slug":"graphql","order":2,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2022-01-25T19:23:23.396Z","category":"62292aea889520008ed0113b","parentDoc":"622930ca81249400a7c7103b","icon":"","isBodyEmpty":false,"children":[]}]},{"_id":"65652711f44bad00505f98b7","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[],"examples":{"codes":[]}},"title":"ReadMe's Outbound IP Addresses","icon":"","type":"basic","slug":"ip-addresses","order":2,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","category":"62292aea889520008ed0113b","createdAt":"2023-11-27T23:32:33.173Z","parentDoc":null,"isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be60","type":"basic","category":"62292aea889520008ed0113b","link_external":false,"slug":"openapi","api":{"method":"get","results":{"codes":[{"language":"json","code":"{}","name":"","status":200},{"status":400,"language":"json","code":"{}","name":""}]},"auth":"required","params":[],"url":"","examples":{"codes":[]}},"link_url":"","order":3,"sync_unique":"","hidden":false,"isReference":false,"parentDoc":null,"title":"OpenAPI Support in ReadMe","createdAt":"2017-03-03T21:43:39.046Z","previousSlug":"openapi-support-in-readme","deprecated":false,"icon":"","isBodyEmpty":false,"children":[{"_id":"62056dee230e07007218be66","category":"62292aea889520008ed0113b","createdAt":"2017-06-27T18:10:18.121Z","link_external":false,"link_url":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"auth":"required","params":[],"url":"","method":"get","examples":{"codes":[]}},"isReference":false,"order":0,"slug":"openapi-categories-pages-subpages","type":"basic","title":"Categories, Pages, and Subpages","parentDoc":"62056dee230e07007218be60","previousSlug":"","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be67","category":"62292aea889520008ed0113b","parentDoc":"62056dee230e07007218be60","createdAt":"2017-06-27T18:57:03.330Z","link_external":false,"link_url":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"auth":"required","params":[],"url":"","method":"get"},"isReference":false,"order":1,"slug":"openapi-resyncing","type":"basic","title":"Re-syncing Your OpenAPI Document","deprecated":false,"icon":"","previousSlug":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218bf39","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"OpenAPI Compatibility Chart","type":"basic","slug":"openapi-compatibility-chart","order":2,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2021-08-30T22:43:13.750Z","parentDoc":"62056dee230e07007218be60","category":"62292aea889520008ed0113b","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be68","category":"62292aea889520008ed0113b","parentDoc":"62056dee230e07007218be60","createdAt":"2017-06-28T17:58:11.722Z","link_external":false,"link_url":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"auth":"required","params":[],"url":"","method":"get","examples":{"codes":[]}},"isReference":false,"order":3,"slug":"openapi-extensions","type":"basic","title":"OpenAPI Extensions","previousSlug":"","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]}]},{"_id":"6347374daa1f0303335c9fd3","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[],"examples":{"codes":[]}},"title":"Custom Login Page","icon":"","type":"basic","slug":"custom-login-page","order":5,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2022-10-12T21:53:17.027Z","parentDoc":null,"category":"62292aea889520008ed0113b","isBodyEmpty":false,"children":[]},{"_id":"63473801a53c290040d8e0b6","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[],"examples":{"codes":[]}},"title":"Sending Data to Your Documentation's Users","icon":"","type":"basic","slug":"user-data-options","order":6,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2022-10-12T21:56:17.246Z","parentDoc":null,"category":"62292aea889520008ed0113b","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be3c","slug":"setting-up-custom-domain","type":"basic","hidden":false,"isReference":false,"link_external":false,"parentDoc":null,"api":{"url":"","apiSetting":null,"auth":"required","params":[],"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"language":"json","status":400,"name":"","code":"{}"}]},"settings":"","method":"get","examples":{"codes":[]}},"category":"62292aea889520008ed0113b","sync_unique":"","title":"Setting Custom Domain & SSL","link_url":"","createdAt":"2015-09-04T18:27:37.736Z","order":7,"deprecated":false,"icon":"","previousSlug":"","isBodyEmpty":false,"children":[{"_id":"62056dee230e07007218be4a","category":"62292aea889520008ed0113b","createdAt":"2016-05-18T00:18:36.034Z","hidden":false,"order":0,"sync_unique":"","isReference":false,"link_url":"","title":"Allow iFrames","api":{"apiSetting":null,"auth":"required","params":[],"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"settings":"","url":"","method":"get"},"link_external":false,"parentDoc":"62056dee230e07007218be3c","slug":"allowing-iframes","type":"basic","deprecated":false,"icon":"","previousSlug":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be70","category":"62292aea889520008ed0113b","parentDoc":"62056dee230e07007218be3c","createdAt":"2018-02-06T17:57:57.597Z","link_external":false,"link_url":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"auth":"required","params":[],"url":"","method":"get"},"isReference":false,"order":1,"slug":"having-problems-generating-ssl","type":"basic","title":"Having Problems Generating SSL?","previousSlug":"","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218bea1","parentDoc":"62056dee230e07007218be3c","category":"62292aea889520008ed0113b","createdAt":"2019-12-23T00:07:18.313Z","link_external":false,"link_url":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"auth":"required","params":[],"url":"","method":"get","examples":{"codes":[]}},"isReference":false,"order":2,"slug":"url-paths-in-readme","type":"basic","title":"URL Paths in ReadMe","deprecated":false,"icon":"","previousSlug":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be9d","category":"62292aea889520008ed0113b","createdAt":"2019-12-11T05:13:56.433Z","link_external":false,"link_url":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"auth":"required","params":[],"url":"","method":"get"},"isReference":false,"order":3,"slug":"turn-off-cloudflare-proxy","type":"basic","title":"Turn Off Cloudflare Proxy","parentDoc":"62056dee230e07007218be3c","previousSlug":"","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]}]},{"_id":"6234bb9568801908e75c415c","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"How to Launch Your Project","type":"basic","slug":"how-to-launch-your-project","order":8,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2022-03-18T17:04:21.717Z","category":"62292aea889520008ed0113b","parentDoc":null,"icon":"","isBodyEmpty":false,"children":[]}]},{"_id":"62056dee230e07007218be06","__v":0,"createdAt":"2015-08-26T00:09:16.772Z","order":2,"slug":"documentation","title":"📝 DOCUMENTATION","version":"62056dee230e07007218bf4c","project":"5f7ce9e3a5504d0414d025d0","reference":false,"from_sync":false,"pages":[{"_id":"62350c22283060003d48ee69","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Writing & Managing Docs","type":"basic","slug":"writing-managing-docs","order":0,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2022-03-18T22:48:02.176Z","category":"62056dee230e07007218be06","parentDoc":null,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"62350c4fca9d9901850f1c73","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Structuring Your Docs","type":"basic","slug":"structuring-your-docs","order":1,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2022-03-18T22:48:47.921Z","category":"62056dee230e07007218be06","parentDoc":null,"icon":"","isBodyEmpty":false,"children":[{"_id":"62056dee230e07007218be2c","isReference":false,"order":0,"slug":"landing-page","createdAt":"2016-04-13T00:11:13.248Z","title":"Landing Page","type":"basic","category":"62056dee230e07007218be06","link_external":false,"link_url":"","parentDoc":"62350c4fca9d9901850f1c73","sync_unique":"","api":{"apiSetting":null,"auth":"required","params":[],"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","url":"","method":"get"},"hidden":false,"previousSlug":"","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"623e4844943645002effa489","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[],"examples":{"codes":[]}},"title":"Guides","type":"basic","slug":"guides","order":1,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2022-03-25T22:55:00.367Z","parentDoc":"62350c4fca9d9901850f1c73","category":"62056dee230e07007218be06","icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218beeb","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Recipes","type":"basic","slug":"recipes","order":2,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"tutorials","createdAt":"2020-10-15T21:23:52.356Z","category":"62056dee230e07007218be06","parentDoc":"62350c4fca9d9901850f1c73","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be31","order":3,"sync_unique":"","category":"62056dee230e07007218be06","link_url":"","isReference":false,"link_external":false,"slug":"changelog","type":"basic","api":{"apiSetting":null,"auth":"required","params":[],"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","url":"","method":"get"},"createdAt":"2015-09-16T18:14:00.300Z","title":"Changelog","hidden":false,"parentDoc":"62350c4fca9d9901850f1c73","deprecated":false,"icon":"","previousSlug":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be1f","title":"Custom Pages","api":{"settings":"","url":"","apiSetting":null,"auth":"required","params":[],"results":{"codes":[{"code":"{}","language":"json","status":200,"name":""},{"language":"json","status":400,"name":"","code":"{}"}]},"method":"get"},"isReference":false,"order":4,"slug":"custom-page","sync_unique":"","category":"62056dee230e07007218be06","link_external":false,"link_url":"","parentDoc":"62350c4fca9d9901850f1c73","hidden":false,"createdAt":"2015-12-09T00:31:09.141Z","type":"basic","deprecated":false,"icon":"","previousSlug":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be40","hidden":false,"order":5,"parentDoc":"62350c4fca9d9901850f1c73","sync_unique":"","api":{"method":"get","params":[],"results":{"codes":[{"language":"json","status":200,"name":"","code":"{}"},{"status":400,"name":"","code":"{}","language":"json"}]},"settings":"","url":"","auth":"required","examples":{"codes":[]}},"link_external":false,"link_url":"","slug":"error-pages","title":"Error Pages","createdAt":"2016-04-13T00:34:05.394Z","type":"basic","category":"62056dee230e07007218be06","isReference":false,"previousSlug":"","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]}]},{"_id":"623e4a5dd8107f007ff17343","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[],"examples":{"codes":[]}},"title":"Markdown Editor Overview","type":"basic","slug":"new-markdown-editor-overview","order":2,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"using-the-editor","createdAt":"2022-03-25T23:03:57.821Z","category":"62056dee230e07007218be06","parentDoc":null,"icon":"","isBodyEmpty":false,"children":[{"_id":"64386fa2d6e899005f1d1436","api":{"method":"get","url":"","auth":"required","params":[]},"title":"Documentation Best Practices","icon":"","type":"basic","slug":"editor-best-practices","order":0,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"best-practices-1","parentDoc":"623e4a5dd8107f007ff17343","category":"62056dee230e07007218be06","createdAt":"2023-04-13T21:09:54.415Z","isBodyEmpty":false,"children":[]},{"_id":"623e4abbeb8312003956047a","api":{"method":"get","url":"","auth":"required","params":[],"results":{"codes":[{"language":"json","code":"{}","name":"","status":200},{"status":400,"language":"json","code":"{}","name":""}]},"settings":"","examples":{"codes":[]}},"title":"Preview and Publish Pages","type":"basic","slug":"preview-and-publish-pages","order":1,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2022-03-25T23:05:31.011Z","category":"62056dee230e07007218be06","parentDoc":"623e4a5dd8107f007ff17343","icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be62","category":"62056dee230e07007218be06","link_url":"","order":2,"hidden":false,"sync_unique":"","title":"Page History","link_external":false,"slug":"page-history","type":"basic","api":{"results":{"codes":[{"language":"json","code":"{}","name":"","status":200},{"code":"{}","name":"","status":400,"language":"json"}]},"auth":"required","params":[],"url":"","method":"get"},"createdAt":"2017-03-04T00:09:37.283Z","isReference":false,"parentDoc":"623e4a5dd8107f007ff17343","deprecated":false,"icon":"","previousSlug":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be5f","slug":"copying-widget-content","title":"Copying Widget Content","type":"basic","link_external":false,"isReference":false,"parentDoc":"623e4a5dd8107f007ff17343","sync_unique":"","api":{"auth":"required","params":[],"results":{"codes":[{"code":"{}","name":"","status":200,"language":"json"},{"status":400,"language":"json","code":"{}","name":""}]},"settings":"","url":"","apiSetting":null,"method":"get"},"category":"62056dee230e07007218be06","link_url":"","hidden":false,"order":3,"createdAt":"2017-02-23T19:19:28.211Z","deprecated":false,"icon":"","previousSlug":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be65","link_external":false,"parentDoc":"623e4a5dd8107f007ff17343","type":"basic","api":{"url":"","method":"get","results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"auth":"required","params":[],"examples":{"codes":[]}},"createdAt":"2017-04-28T18:48:36.289Z","link_url":"","title":"Reordering Pages","order":4,"slug":"reordering-pages","category":"62056dee230e07007218be06","hidden":false,"isReference":false,"sync_unique":"","previousSlug":"","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be34","link_external":false,"slug":"linking-to-pages","createdAt":"2015-09-16T22:12:15.824Z","hidden":false,"sync_unique":"","title":"Link to Pages","api":{"apiSetting":null,"auth":"required","params":[],"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"code":"{}","language":"json","status":400,"name":""}]},"settings":"","url":"","method":"get","examples":{"codes":[]}},"category":"62056dee230e07007218be06","link_url":"","order":5,"type":"basic","isReference":false,"parentDoc":"623e4a5dd8107f007ff17343","previousSlug":"","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be91","createdAt":"2019-09-30T20:53:38.700Z","parentDoc":"623e4a5dd8107f007ff17343","category":"62056dee230e07007218be06","link_external":false,"link_url":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"auth":"required","params":[],"url":"","method":"get","examples":{"codes":[]}},"isReference":false,"order":6,"slug":"page-metadata-and-seo","type":"basic","title":"Page Metadata and SEO","previousSlug":"page-metadata","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be73","category":"62056dee230e07007218be06","createdAt":"2018-03-29T14:51:06.529Z","link_external":false,"link_url":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"auth":"required","params":[],"url":"","method":"get"},"isReference":false,"order":7,"slug":"glossary","type":"basic","title":"Using Glossary","parentDoc":"623e4a5dd8107f007ff17343","deprecated":false,"icon":"","previousSlug":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be32","hidden":false,"sync_unique":"","api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"language":"json","status":400,"name":"","code":"{}"}]},"settings":"","url":"","apiSetting":null,"auth":"required","params":[],"method":"get"},"createdAt":"2015-09-01T21:22:10.697Z","parentDoc":"623e4a5dd8107f007ff17343","slug":"markdown-options","isReference":false,"link_url":"https://rdmd.readme.io","title":"ReadMe Flavored Markdown","type":"link","category":"62056dee230e07007218be06","link_external":true,"order":8,"previousSlug":"","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be5c","order":9,"parentDoc":"623e4a5dd8107f007ff17343","api":{"apiSetting":null,"auth":"required","params":[],"results":{"codes":[{"name":"","status":200,"language":"json","code":"{}"},{"status":400,"language":"json","code":"{}","name":""}]},"settings":"","url":"","method":"get"},"hidden":false,"link_url":"","title":"Raw Mode Editor","type":"basic","isReference":false,"link_external":false,"slug":"raw-mode-editor","sync_unique":"","category":"62056dee230e07007218be06","createdAt":"2016-12-21T14:49:29.780Z","deprecated":false,"previousSlug":"raw-editor","icon":"","isBodyEmpty":false,"children":[]}]},{"_id":"656e26595242e900464766ca","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[],"examples":{"codes":[]}},"title":"Reusable Content Overview","icon":"","type":"basic","slug":"reusable-content","order":3,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"reusable-content-overview","category":"62056dee230e07007218be06","createdAt":"2023-12-04T19:19:53.261Z","parentDoc":null,"isBodyEmpty":false,"children":[]},{"_id":"63e15dbfd5520a0012773678","api":{"method":"get","url":"","auth":"required","params":[]},"title":"New Sidebar & Page Controls Experience","icon":"","type":"basic","slug":"new-sidebar-page-navigation","order":4,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"new-sidebar-page-navigation-experience-in-beta","category":"62056dee230e07007218be06","createdAt":"2023-02-06T20:06:23.026Z","parentDoc":null,"isBodyEmpty":false,"children":[]},{"_id":"62477a0e7bce40009b3ab892","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Maintaining Your Docs","type":"basic","slug":"maintaining-your-docs","order":5,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2022-04-01T22:17:50.842Z","category":"62056dee230e07007218be06","parentDoc":null,"icon":"","isBodyEmpty":false,"children":[{"_id":"62056dee230e07007218be78","category":"62056dee230e07007218be06","createdAt":"2018-06-25T21:25:11.626Z","link_external":false,"link_url":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"auth":"required","params":[],"url":"","method":"get","examples":{"codes":[]}},"isReference":false,"order":0,"slug":"redirect-scenarios","type":"basic","title":"Redirect Scenarios","parentDoc":"62477a0e7bce40009b3ab892","deprecated":false,"icon":"","previousSlug":"handling-redirects","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be20","link_external":false,"hidden":false,"order":1,"title":"Documentation Versioning","category":"62056dee230e07007218be06","link_url":"","createdAt":"2015-09-03T21:40:00.407Z","slug":"versions","sync_unique":"","api":{"apiSetting":null,"auth":"required","params":[],"results":{"codes":[{"code":"{}","language":"json","status":200,"name":""},{"language":"json","status":400,"name":"","code":"{}"}]},"settings":"","url":"","method":"get","examples":{"codes":[]}},"isReference":false,"parentDoc":"62477a0e7bce40009b3ab892","type":"basic","previousSlug":"documentation-versioning","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be26","api":{"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"language":"json","status":400,"name":"","code":"{}"}]},"settings":"","url":"","apiSetting":null,"auth":"required","params":[],"method":"get"},"category":"62056dee230e07007218be06","hidden":false,"order":2,"sync_unique":"","type":"basic","link_url":"","createdAt":"2015-09-25T00:19:32.144Z","link_external":false,"parentDoc":"62477a0e7bce40009b3ab892","slug":"suggested-edits","isReference":false,"title":"Suggested Edits","previousSlug":"","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be3f","hidden":false,"order":3,"slug":"internal-documentation","api":{"url":"","apiSetting":null,"auth":"required","params":[],"results":{"codes":[{"language":"json","status":200,"name":"","code":"{}"},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","method":"get","examples":{"codes":[]}},"sync_unique":"","type":"basic","category":"62056dee230e07007218be06","link_external":false,"title":"Internal Documentation","isReference":false,"link_url":"","createdAt":"2015-09-15T23:43:01.470Z","parentDoc":"62477a0e7bce40009b3ab892","previousSlug":"","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"64416de5870d1412b6ce2a56","api":{"method":"get","url":"","auth":"required","params":[]},"title":"Login Expiration","icon":"","type":"basic","slug":"login-expiration","order":4,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","parentDoc":"62477a0e7bce40009b3ab892","category":"62056dee230e07007218be06","createdAt":"2023-04-20T16:52:53.612Z","isBodyEmpty":false,"children":[]}]},{"_id":"624c8abeec30400014c97c6c","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Syncing Docs via CLI / GitHub","type":"basic","slug":"rdme","order":6,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"syncing-docs-via-cli-github","createdAt":"2022-04-05T18:30:22.493Z","parentDoc":null,"category":"62056dee230e07007218be06","icon":"","isBodyEmpty":false,"children":[{"_id":"637c17dc5a1e32001fc1abf7","api":{"method":"get","url":"","auth":"required","params":[],"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]}},"title":"GitHub Actions Example: Syncing Markdown","icon":"","type":"basic","slug":"github-actions-docs-example","order":0,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be06","createdAt":"2022-11-22T00:29:16.997Z","parentDoc":"624c8abeec30400014c97c6c","isBodyEmpty":false,"children":[]},{"_id":"637c17ddb5b628008d3b0dc1","api":{"method":"get","url":"","auth":"required","params":[],"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]}},"title":"GitHub Actions Example: Syncing OpenAPI","icon":"","type":"basic","slug":"github-actions-openapi-example","order":1,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be06","createdAt":"2022-11-22T00:29:17.053Z","parentDoc":"624c8abeec30400014c97c6c","isBodyEmpty":false,"children":[]}]},{"_id":"648b4f4e29e375006cb9af06","api":{"method":"get","url":"","auth":"required","params":[],"examples":{"codes":[]},"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]}},"title":"Owlbot AI","icon":"","type":"basic","slug":"owlbot","order":7,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"owlbot-ai","category":"62056dee230e07007218be06","createdAt":"2023-06-15T17:50:06.414Z","parentDoc":null,"isBodyEmpty":false,"children":[]}]},{"_id":"62056dee230e07007218be10","title":"📊 developer dashboard","slug":"developer-metrics","order":3,"reference":false,"isAPI":false,"project":"5f7ce9e3a5504d0414d025d0","version":"62056dee230e07007218bf4c","createdAt":"2020-10-06T22:29:27.499Z","__v":0,"pages":[{"_id":"6442e146e1005c006414f001","api":{"method":"get","url":"","auth":"required","params":[],"examples":{"codes":[]},"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]}},"title":"Developer Dashboard Overview","icon":"","type":"basic","slug":"developer-dashboard","order":0,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"developer-dashboard-overview","category":"62056dee230e07007218be10","createdAt":"2023-04-21T19:17:26.817Z","parentDoc":null,"isBodyEmpty":false,"children":[]},{"_id":"6446f39e185d59002167a6da","api":{"method":"get","url":"","auth":"required","params":[],"examples":{"codes":[]},"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]}},"title":"My Developers Overview","icon":"","type":"basic","slug":"my-developers","order":1,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"my-developers-overview-draft","category":"62056dee230e07007218be10","createdAt":"2023-04-24T21:24:46.395Z","parentDoc":null,"isBodyEmpty":false,"children":[]},{"_id":"63472b9c13bc22006e3882c2","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Personalized API Docs Overview","icon":"","type":"basic","slug":"personalized-docs","order":2,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2022-10-12T21:03:24.929Z","category":"62056dee230e07007218be10","parentDoc":null,"isBodyEmpty":false,"children":[{"_id":"63472bbe59a075004b49ca84","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[],"examples":{"codes":[]}},"title":"Set Up Personalized Docs","icon":"","type":"basic","slug":"personalized-docs-webhook","order":0,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"setting-up-the-personalized-docs-webhook","createdAt":"2022-10-12T21:03:58.981Z","parentDoc":"63472b9c13bc22006e3882c2","category":"62056dee230e07007218be10","isBodyEmpty":false,"children":[]},{"_id":"63a20d506fad0500add11523","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Using Amazon API Gateway with the Personalized Docs Webhook","icon":"","type":"basic","slug":"amazon-api-gateway-webhook","order":1,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"using-amazon-api-gateway-with-the-personalized-docs-webhook","parentDoc":"63472b9c13bc22006e3882c2","category":"62056dee230e07007218be10","createdAt":"2022-12-20T19:30:24.811Z","isBodyEmpty":false,"children":[]}]},{"_id":"62056dee230e07007218bedf","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Real-Time API Logs Overview","type":"basic","slug":"sending-api-logs","order":3,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"api-metrics-setup","createdAt":"2020-10-06T22:32:13.612Z","category":"62056dee230e07007218be10","parentDoc":null,"deprecated":false,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"637bdbc3af758d0063340eae","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"API Reference","icon":"","type":"basic","slug":"reference-core-pages","order":4,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"api-reference-getting-started-authentication","createdAt":"2022-11-21T20:12:51.162Z","category":"62056dee230e07007218be10","parentDoc":null,"isBodyEmpty":false,"children":[{"_id":"65403fbeb36291002d011502","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[],"examples":{"codes":[]}},"title":"My Requests Overview","icon":"","type":"basic","slug":"my-requests","order":0,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"my-requests-overview","category":"62056dee230e07007218be10","createdAt":"2023-10-30T23:43:58.693Z","parentDoc":"637bdbc3af758d0063340eae","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218bede","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Show API Request History To Users","type":"basic","slug":"showing-api-logs-to-users","order":1,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"showing-logs-in-the-docs","createdAt":"2020-10-06T22:31:33.278Z","parentDoc":"637bdbc3af758d0063340eae","category":"62056dee230e07007218be10","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]}]},{"_id":"662176fe39c00000450dea4c","api":{"method":"get","url":"","auth":"required","params":[]},"title":"SDKs","icon":"","type":"basic","slug":"sdks","order":5,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be10","createdAt":"2024-04-18T19:39:42.607Z","parentDoc":null,"isBodyEmpty":false,"children":[{"_id":"62056dee230e07007218bee0","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Node.js Setup","type":"basic","slug":"sending-logs-to-readme-with-nodejs","order":0,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"nodejs-setup","createdAt":"2020-10-06T22:32:50.273Z","parentDoc":"662176fe39c00000450dea4c","category":"62056dee230e07007218be10","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218bf28","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[],"examples":{"codes":[]}},"title":"Python (Django) Setup","type":"basic","slug":"python-django-api-metrics","order":1,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","parentDoc":"662176fe39c00000450dea4c","createdAt":"2021-07-10T00:03:33.420Z","category":"62056dee230e07007218be10","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218bf27","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[],"examples":{"codes":[]}},"title":"Python (Flask) Setup","type":"basic","slug":"python-flask-api-metrics","order":2,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","parentDoc":"662176fe39c00000450dea4c","createdAt":"2021-07-09T23:53:06.813Z","category":"62056dee230e07007218be10","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218bee1","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"PHP (Laravel) Setup","type":"basic","slug":"sending-logs-to-readme-with-php-laravel","order":3,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"php-laravel-api-metrics","createdAt":"2020-10-06T22:34:52.452Z","parentDoc":"662176fe39c00000450dea4c","category":"62056dee230e07007218be10","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218bee3","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Ruby (Rails/Rack) Setup","type":"basic","slug":"ruby-api-metrics-set-up","order":4,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"ruby-railsrack-api-metrics","createdAt":"2020-10-06T22:35:48.962Z","parentDoc":"662176fe39c00000450dea4c","category":"62056dee230e07007218be10","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218bf4b","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":".NET Setup","type":"basic","slug":"net-setup","order":5,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2022-01-26T21:42:32.799Z","parentDoc":"662176fe39c00000450dea4c","category":"62056dee230e07007218be10","icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218bee5","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Other Ways to Send API Requests","type":"basic","slug":"other-ways-to-use-api-metrics","order":6,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2020-10-06T22:36:46.563Z","parentDoc":"662176fe39c00000450dea4c","category":"62056dee230e07007218be10","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]}]},{"_id":"62479589fc69c0001ada7bb0","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[],"examples":{"codes":[]}},"title":"API & Docs Metrics Charts","type":"basic","slug":"using-metrics-charts","order":6,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2022-04-02T00:15:05.051Z","category":"62056dee230e07007218be10","parentDoc":null,"icon":"","isBodyEmpty":false,"children":[{"_id":"64d15ac6ec2bde004808fa31","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[],"examples":{"codes":[]}},"title":"Export Metrics Data","icon":"","type":"basic","slug":"exporting-metrics-data","order":0,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be10","createdAt":"2023-08-07T20:57:42.693Z","parentDoc":"62479589fc69c0001ada7bb0","isBodyEmpty":false,"children":[]}]}]},{"_id":"62056dee230e07007218be09","__v":0,"createdAt":"2015-08-26T00:10:32.384Z","from_sync":false,"title":"👋 DEVELOPER COMMUNITY","version":"62056dee230e07007218bf4c","order":5,"project":"5f7ce9e3a5504d0414d025d0","reference":false,"slug":"support-form-settings","pages":[{"_id":"624799a377c91e002ee02f42","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Supporting Your Developers","type":"basic","slug":"supporting-your-developers","order":0,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2022-04-02T00:32:35.533Z","category":"62056dee230e07007218be09","parentDoc":null,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be2f","isReference":false,"link_url":"","parentDoc":null,"api":{"settings":"","url":"","apiSetting":null,"auth":"required","params":[],"results":{"codes":[{"code":"{}","language":"json","status":200,"name":""},{"language":"json","status":400,"name":"","code":"{}"}]},"method":"get"},"category":"62056dee230e07007218be09","sync_unique":"","link_external":false,"hidden":false,"slug":"discussion-forums","title":"Discussion Forums","createdAt":"2015-09-25T21:19:10.944Z","order":1,"type":"basic","previousSlug":"submit-a-question","deprecated":false,"icon":"","isBodyEmpty":false,"children":[{"_id":"62056dee230e07007218be30","parentDoc":"62056dee230e07007218be2f","slug":"managing-forum-support","type":"basic","category":"62056dee230e07007218be09","link_external":false,"order":0,"createdAt":"2015-09-25T21:48:01.591Z","sync_unique":"","title":"Managing Forum Support","hidden":false,"isReference":false,"link_url":"","api":{"settings":"","url":"","apiSetting":null,"auth":"required","params":[],"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"method":"get"},"previousSlug":"support-forum-for-admins","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be5e","isReference":false,"link_external":false,"sync_unique":"","type":"basic","parentDoc":"62056dee230e07007218be2f","title":"Creating a Dev FAQ","api":{"apiSetting":null,"auth":"required","params":[],"results":{"codes":[{"code":"{}","name":"","status":200,"language":"json"},{"status":400,"language":"json","code":"{}","name":""}]},"settings":"","url":"","method":"get"},"link_url":"","order":1,"category":"62056dee230e07007218be09","createdAt":"2017-01-04T23:12:21.640Z","hidden":false,"slug":"creating-a-dev-faq","previousSlug":"discussion-forums","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]}]},{"_id":"62056dee230e07007218be6d","category":"62056dee230e07007218be09","createdAt":"2018-01-24T19:09:00.407Z","link_external":false,"link_url":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"auth":"required","params":[],"url":"","method":"get"},"isReference":false,"order":2,"slug":"health-check-status-updates","type":"basic","title":"Health Check Status Updates","parentDoc":null,"deprecated":false,"previousSlug":"health-check","icon":"","isBodyEmpty":false,"children":[]}]},{"_id":"62056dee230e07007218be07","title":"🎨. PROJECT CUSTOMIZATION","version":"62056dee230e07007218bf4c","reference":false,"from_sync":false,"slug":"appearance","project":"5f7ce9e3a5504d0414d025d0","createdAt":"2015-08-26T00:10:16.611Z","order":6,"__v":0,"pages":[{"_id":"62479b3596e500003cc2500b","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Making Your Hub Shine","type":"basic","slug":"making-your-hub-shine","order":0,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2022-04-02T00:39:17.719Z","category":"62056dee230e07007218be07","parentDoc":null,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be29","createdAt":"2016-04-13T00:09:23.696Z","link_external":false,"link_url":"","category":"62056dee230e07007218be07","order":1,"parentDoc":null,"type":"basic","api":{"apiSetting":null,"auth":"required","params":[],"results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"code":"{}","language":"json","status":400,"name":""}]},"settings":"","url":"","method":"get"},"slug":"design-themes","hidden":false,"isReference":false,"sync_unique":"","title":"Design Themes","previousSlug":"theme-editor","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be28","slug":"custom-css-and-javascript","type":"basic","createdAt":"2016-04-12T23:58:50.186Z","order":2,"parentDoc":null,"title":"Custom CSS and JavaScript","api":{"apiSetting":null,"auth":"required","params":[],"results":{"codes":[{"language":"json","status":200,"name":"","code":"{}"},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","url":"","method":"get","examples":{"codes":[]}},"link_url":"","sync_unique":"","hidden":false,"link_external":false,"isReference":false,"category":"62056dee230e07007218be07","previousSlug":"adding-custom-javascriptcss","deprecated":false,"icon":"","isBodyEmpty":false,"children":[{"_id":"62056dee230e07007218bf20","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Customizing Docs Using CSS Variables","type":"basic","slug":"customizing-docs-using-css-variables","order":0,"isReference":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"custom-css","createdAt":"2021-03-11T00:23:45.491Z","category":"62056dee230e07007218be07","parentDoc":"62056dee230e07007218be28","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]}]},{"_id":"637bdc1314894c004f7cd46f","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[],"examples":{"codes":[]}},"title":"Dark Mode: Overview & Custom CSS","icon":"","type":"basic","slug":"custom-css-with-dark-mode","order":4,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"dark-mode-overview-custom-css","createdAt":"2022-11-21T20:14:11.588Z","category":"62056dee230e07007218be07","parentDoc":null,"isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be2a","link_external":false,"link_url":"","category":"62056dee230e07007218be07","isReference":false,"order":5,"type":"basic","createdAt":"2016-04-13T00:10:07.107Z","api":{"apiSetting":null,"auth":"required","params":[],"results":{"codes":[{"language":"json","status":200,"name":"","code":"{}"},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","url":"","method":"get"},"hidden":false,"parentDoc":null,"sync_unique":"","slug":"site-navigation","title":"Site Navigation","deprecated":false,"previousSlug":"navigation","icon":"","isBodyEmpty":false,"children":[{"_id":"624c742799c781007d50be11","api":{"method":"get","url":"","auth":"required","apiSetting":null,"params":[],"results":{"codes":[{"language":"json","status":200,"name":"","code":"{}"},{"name":"","code":"{}","language":"json","status":400}]},"settings":""},"title":"Subheader Layout","type":"basic","slug":"subheader-layout","order":0,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2022-04-05T16:53:59.502Z","category":"62056dee230e07007218be07","parentDoc":"62056dee230e07007218be2a","icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be2b","api":{"url":"","apiSetting":null,"auth":"required","params":[],"results":{"codes":[{"language":"json","status":200,"name":"","code":"{}"},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","method":"get"},"createdAt":"2016-04-13T00:10:36.520Z","slug":"site-footer","hidden":false,"link_external":false,"link_url":"","category":"62056dee230e07007218be07","isReference":false,"order":1,"parentDoc":"62056dee230e07007218be2a","sync_unique":"","title":"Site Footer","type":"basic","deprecated":false,"previousSlug":"footer","icon":"","isBodyEmpty":false,"children":[]}]},{"_id":"624c88db1c09fa0021dfe826","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[],"examples":{"codes":[]}},"title":"Pro Tips","type":"basic","slug":"pro-tips","order":6,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2022-04-05T18:22:19.227Z","category":"62056dee230e07007218be07","parentDoc":null,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be39","category":"62056dee230e07007218be07","isReference":false,"parentDoc":null,"slug":"integrations","link_url":"","sync_unique":"","type":"basic","api":{"results":{"codes":[{"language":"json","status":200,"name":"","code":"{}"},{"status":400,"name":"","code":"{}","language":"json"}]},"settings":"","url":"","apiSetting":null,"auth":"required","params":[],"method":"get"},"createdAt":"2015-09-03T22:10:07.662Z","hidden":false,"link_external":false,"order":7,"title":"Integrations","deprecated":false,"previousSlug":"third-party-integrations","icon":"","isBodyEmpty":false,"children":[{"_id":"62056dee230e07007218be98","createdAt":"2019-12-06T17:31:09.759Z","parentDoc":"62056dee230e07007218be39","category":"62056dee230e07007218be07","link_external":false,"link_url":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"auth":"required","params":[],"url":"","method":"get"},"isReference":false,"order":0,"slug":"slack","type":"basic","title":"Slack","previousSlug":"","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be42","link_url":"","order":1,"api":{"results":{"codes":[{"code":"{}","name":"","status":200,"language":"json"},{"status":400,"language":"json","code":"{}","name":""}]},"settings":"","url":"","apiSetting":null,"auth":"required","params":[],"method":"get"},"slug":"google-analytics","createdAt":"2016-05-09T22:07:18.078Z","hidden":false,"isReference":false,"link_external":false,"category":"62056dee230e07007218be07","parentDoc":"62056dee230e07007218be39","sync_unique":"","title":"Google Analytics","type":"basic","previousSlug":"","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be72","category":"62056dee230e07007218be07","parentDoc":"62056dee230e07007218be39","createdAt":"2018-03-06T15:49:43.965Z","link_external":false,"link_url":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"auth":"required","params":[],"url":"","method":"get"},"isReference":false,"order":3,"slug":"segment","type":"basic","title":"Segment","previousSlug":"","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be5d","hidden":false,"sync_unique":"","api":{"params":[],"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"settings":"","url":"","apiSetting":null,"auth":"required","method":"get"},"category":"62056dee230e07007218be07","title":"Zendesk","order":4,"parentDoc":"62056dee230e07007218be39","slug":"zendesk","type":"basic","createdAt":"2016-12-24T01:27:03.908Z","isReference":false,"link_external":false,"link_url":"","previousSlug":"","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be44","link_url":"","order":6,"sync_unique":"","api":{"auth":"required","params":[],"results":{"codes":[{"name":"","status":200,"language":"json","code":"{}"},{"language":"json","code":"{}","name":"","status":400}]},"settings":"","url":"","apiSetting":null,"method":"get"},"isReference":false,"parentDoc":"62056dee230e07007218be39","slug":"localize","title":"Localize","type":"basic","category":"62056dee230e07007218be07","createdAt":"2016-05-09T22:07:56.280Z","hidden":false,"link_external":false,"deprecated":false,"icon":"","previousSlug":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218bea2","parentDoc":"62056dee230e07007218be39","category":"62056dee230e07007218be07","createdAt":"2020-02-03T23:07:48.062Z","link_external":false,"link_url":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"auth":"required","params":[],"url":"","method":"get"},"isReference":false,"order":7,"slug":"transifex","type":"basic","title":"Transifex","deprecated":false,"icon":"","previousSlug":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be5b","type":"basic","isReference":false,"order":8,"parentDoc":"62056dee230e07007218be39","title":"Typekit","category":"62056dee230e07007218be07","hidden":false,"sync_unique":"","api":{"apiSetting":null,"auth":"required","params":[],"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"settings":"","url":"","method":"get"},"link_external":false,"createdAt":"2016-09-29T00:57:53.386Z","link_url":"","slug":"typekit-key","deprecated":false,"icon":"","previousSlug":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be6f","category":"62056dee230e07007218be07","parentDoc":"62056dee230e07007218be39","createdAt":"2018-02-02T05:45:21.642Z","link_external":false,"link_url":"","sync_unique":"","hidden":false,"api":{"apiSetting":null,"settings":"","results":{"codes":[{"code":"{}","name":"","status":200,"language":"json"},{"status":400,"language":"json","code":"{}","name":""}]},"auth":"required","params":[],"url":"","method":"get"},"isReference":false,"order":9,"slug":"google-site-verification","type":"basic","title":"Google Site Verification","previousSlug":"","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be84","category":"62056dee230e07007218be07","parentDoc":"62056dee230e07007218be39","createdAt":"2018-11-21T22:22:09.273Z","link_external":false,"link_url":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"auth":"required","params":[],"url":"","method":"get"},"isReference":false,"order":11,"slug":"recaptcha","type":"basic","title":"reCaptcha","deprecated":false,"icon":"","previousSlug":"","isBodyEmpty":false,"children":[]},{"_id":"6347298d1994f10013b7fd26","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Amazon API Gateway","icon":"","type":"basic","slug":"aws","order":12,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2022-10-12T20:54:37.283Z","parentDoc":"62056dee230e07007218be39","category":"62056dee230e07007218be07","isBodyEmpty":false,"children":[]},{"_id":"66faf0e393a04f005915700a","api":{"method":"get","url":"","auth":"required","params":[]},"title":"Stainless","icon":"","type":"basic","slug":"stainless","order":13,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","parentDoc":"62056dee230e07007218be39","category":"62056dee230e07007218be07","createdAt":"2024-09-30T18:41:39.302Z","isBodyEmpty":false,"children":[]}]}]},{"_id":"624cb20585a75d004c978f57","title":"🔑 ACCOUNT & SETTINGS","slug":"account-settings","order":7,"reference":false,"project":"5f7ce9e3a5504d0414d025d0","version":"62056dee230e07007218bf4c","createdAt":"2022-04-05T21:17:57.108Z","__v":0,"pages":[{"_id":"62056dee230e07007218be3d","createdAt":"2016-04-06T23:16:49.872Z","link_external":false,"order":0,"parentDoc":null,"api":{"auth":"required","params":[],"results":{"codes":[{"status":200,"name":"","code":"{}","language":"json"},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","url":"","method":"get","examples":{"codes":[]}},"category":"624cb20585a75d004c978f57","sync_unique":"","slug":"your-account","title":"Your Account","type":"basic","hidden":false,"isReference":false,"link_url":"","previousSlug":"cancel-subscription","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be8c","createdAt":"2019-09-17T23:56:44.001Z","parentDoc":null,"category":"624cb20585a75d004c978f57","link_external":false,"link_url":"","sync_unique":"","hidden":false,"api":{"settings":"","results":{"codes":[{"code":"{}","name":"","status":200,"language":"json"},{"name":"","status":400,"language":"json","code":"{}"}]},"apiSetting":null,"auth":"required","params":[],"url":"","method":"get","examples":{"codes":[]}},"isReference":false,"order":1,"slug":"two-factor-authentication","type":"basic","title":"Two-Factor Authentication","deprecated":false,"icon":"","previousSlug":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be3e","category":"624cb20585a75d004c978f57","order":2,"link_url":"","parentDoc":null,"slug":"manage-team","sync_unique":"","type":"basic","hidden":false,"link_external":false,"title":"Manage Team","api":{"apiSetting":null,"auth":"required","params":[],"results":{"codes":[{"code":"{}","language":"json","status":200,"name":""},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","url":"","method":"get","examples":{"codes":[]}},"createdAt":"2016-05-04T20:54:30.712Z","isReference":false,"previousSlug":"","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218be45","link_url":"","order":3,"type":"basic","parentDoc":null,"sync_unique":"","createdAt":"2016-05-09T22:08:27.341Z","hidden":false,"api":{"settings":"","url":"","apiSetting":null,"auth":"required","params":[],"results":{"codes":[{"language":"json","code":"{}","name":"","status":200},{"status":400,"language":"json","code":"{}","name":""}]},"method":"get","examples":{"codes":[]}},"link_external":false,"category":"624cb20585a75d004c978f57","isReference":false,"slug":"transfer-ownership","title":"Transfer Ownership","previousSlug":"","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"624cbef7703d1c0014a77583","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Plans and Pricing","type":"basic","slug":"plans-and-pricing","order":5,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"plans-pricing","createdAt":"2022-04-05T22:13:11.611Z","category":"624cb20585a75d004c978f57","parentDoc":null,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"664d06480ff3710010cedc93","api":{"method":"get","url":"","auth":"required","params":[]},"title":"Payment and Billing Info","icon":"","type":"basic","slug":"payment-and-billing-info","order":6,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","category":"624cb20585a75d004c978f57","createdAt":"2024-05-21T20:38:32.262Z","parentDoc":null,"isBodyEmpty":false,"children":[]}]},{"_id":"62056dee230e07007218be0a","version":"62056dee230e07007218bf4c","createdAt":"2015-02-05T19:37:30.976Z","slug":"tips-and-tricks","project":"5f7ce9e3a5504d0414d025d0","reference":false,"title":"❓ TECHNICAL SUPPORT & QUESTIONS","__v":0,"from_sync":false,"order":8,"pages":[{"_id":"62056dee230e07007218be6c","category":"62056dee230e07007218be0a","createdAt":"2018-01-12T19:15:19.681Z","link_external":false,"link_url":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"auth":"required","params":[],"url":"","method":"get"},"isReference":false,"order":0,"slug":"need-more-support","type":"basic","title":"Need More Support?","parentDoc":null,"deprecated":false,"previousSlug":"contact-support","icon":"","isBodyEmpty":false,"children":[]},{"_id":"66043c63090c370058f1385f","api":{"method":"get","url":"","auth":"required","params":[]},"title":"ReadMe Status","icon":"","type":"link","slug":"readme-status","order":1,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"http://readmestatus.com","link_external":true,"previousSlug":"","category":"62056dee230e07007218be0a","createdAt":"2024-03-27T15:33:55.115Z","parentDoc":null,"isBodyEmpty":true,"children":[]},{"_id":"62056dee230e07007218be7b","category":"62056dee230e07007218be0a","createdAt":"2018-08-03T00:02:01.723Z","link_external":false,"link_url":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[{"status":200,"language":"json","code":"{}","name":""},{"status":400,"language":"json","code":"{}","name":""}]},"auth":"required","params":[],"url":"","method":"get","examples":{"codes":[]}},"isReference":false,"order":2,"slug":"feature-requests","type":"basic","title":"Feature Requests","parentDoc":null,"deprecated":false,"icon":"","previousSlug":"","isBodyEmpty":false,"children":[]},{"_id":"624cc8c821e428006c7759a6","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Security FAQ","type":"basic","slug":"security-faq","order":3,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2022-04-05T22:55:04.751Z","category":"62056dee230e07007218be0a","parentDoc":null,"icon":"","isBodyEmpty":false,"children":[{"_id":"6393654f0420bf000f0be905","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[],"examples":{"codes":[]}},"title":"Bug Bounty Program","icon":"","type":"basic","slug":"bug-bounty-program","order":0,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2022-12-09T16:41:51.258Z","parentDoc":"624cc8c821e428006c7759a6","category":"62056dee230e07007218be0a","isBodyEmpty":false,"children":[]}]},{"_id":"62056dee230e07007218be23","category":"62056dee230e07007218be0a","isReference":false,"link_url":"","parentDoc":null,"sync_unique":"","type":"basic","order":4,"slug":"technical-faq","createdAt":"2015-09-15T17:49:54.369Z","link_external":false,"hidden":false,"title":"Technical FAQ","api":{"results":{"codes":[{"status":200,"name":"","code":"{}","language":"json"},{"name":"","code":"{}","language":"json","status":400}]},"settings":"","url":"","apiSetting":null,"auth":"required","params":[],"method":"get","examples":{"codes":[]}},"deprecated":false,"previousSlug":"faq","icon":"","isBodyEmpty":false,"children":[]}]},{"_id":"64f8c3b94e8f64001f07ea58","title":"🔎 README MICRO","slug":"readme-micro","order":9,"reference":false,"project":"5f7ce9e3a5504d0414d025d0","version":"62056dee230e07007218bf4c","createdAt":"2023-09-06T18:23:53.383Z","__v":0,"pages":[{"_id":"64d129ccc69eae0073002516","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[],"examples":{"codes":[]}},"title":"ReadMe Micro Overview","icon":"","type":"basic","slug":"readme-micro","order":0,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","category":"64f8c3b94e8f64001f07ea58","createdAt":"2023-08-07T17:28:44.612Z","parentDoc":null,"isBodyEmpty":false,"children":[]}]},{"_id":"6732850c3cee9b006fe502ba","title":"ReadMe Refactored","slug":"readme-refactored","order":9999,"reference":false,"project":"5f7ce9e3a5504d0414d025d0","version":"62056dee230e07007218bf4c","createdAt":"2024-11-11T22:28:28.338Z","__v":0,"pages":[{"_id":"67328550d85789006848e265","api":{"method":"get","url":"","auth":"required","params":[]},"title":"Welcome to ReadMe Refactored","icon":"","type":"basic","slug":"welcome-to-readme-refactored","order":0,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","category":"6732850c3cee9b006fe502ba","createdAt":"2024-11-11T22:29:36.064Z","parentDoc":null,"isBodyEmpty":false,"children":[]},{"_id":"67329739da3b2700230f5fab","api":{"method":"get","url":"","auth":"required","params":[]},"title":"Migrating to the ReadMe Refactored Experience","icon":"","type":"basic","slug":"migration","order":1,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","category":"6732850c3cee9b006fe502ba","createdAt":"2024-11-11T23:46:01.061Z","parentDoc":null,"isBodyEmpty":false,"children":[{"_id":"6733f473c7fa49002a11424b","api":{"method":"get","url":"","auth":"required","params":[]},"title":"Migration FAQ","icon":"","type":"basic","slug":"migration-faq","order":0,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","parentDoc":"67329739da3b2700230f5fab","category":"6732850c3cee9b006fe502ba","createdAt":"2024-11-13T00:36:03.508Z","isBodyEmpty":false,"children":[]},{"_id":"673f920f2ec270004308b05f","api":{"method":"get","url":"","auth":"required","params":[]},"title":"Rendering Errors: Invalid MDX","icon":"","type":"basic","slug":"rendering-errors-invalid-mdx","order":999,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"migrating-from-markdown-to-mdx","parentDoc":"67329739da3b2700230f5fab","category":"6732850c3cee9b006fe502ba","createdAt":"2024-11-21T20:03:27.086Z","isBodyEmpty":false,"children":[]}]},{"_id":"673285f9eb63b40055e06560","api":{"method":"get","url":"","auth":"required","params":[]},"title":"New Editing UI","icon":"","type":"basic","slug":"new-editor-ui","order":2,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","category":"6732850c3cee9b006fe502ba","createdAt":"2024-11-11T22:32:25.083Z","parentDoc":null,"isBodyEmpty":false,"children":[{"_id":"673286a0a18b190010f50f3a","api":{"method":"get","url":"","auth":"required","params":[]},"title":"Using the Editing UI","icon":"","type":"basic","slug":"using-the-editor-ui","order":0,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","parentDoc":"673285f9eb63b40055e06560","category":"6732850c3cee9b006fe502ba","createdAt":"2024-11-11T22:35:12.414Z","isBodyEmpty":false,"children":[]},{"_id":"673286cbc7901d00352f4e26","api":{"method":"get","url":"","auth":"required","params":[]},"title":"Creating and Editing Content","icon":"","type":"basic","slug":"creating-and-editing-content","order":1,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","parentDoc":"673285f9eb63b40055e06560","category":"6732850c3cee9b006fe502ba","createdAt":"2024-11-11T22:35:55.674Z","isBodyEmpty":false,"children":[{"_id":"67353d483fd11d0074e4d90d","api":{"method":"get","url":"","auth":"required","params":[]},"title":"Creating Mermaid Diagrams","icon":"","type":"basic","slug":"creating-mermaid-diagrams","order":0,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","parentDoc":"673286cbc7901d00352f4e26","category":"6732850c3cee9b006fe502ba","createdAt":"2024-11-13T23:59:04.781Z","isBodyEmpty":false,"children":[]}]},{"_id":"6732872113ad7f0066bc7b26","api":{"method":"get","url":"","auth":"required","params":[]},"title":"Managing Documentation","icon":"","type":"basic","slug":"managing-documentation","order":2,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","parentDoc":"673285f9eb63b40055e06560","category":"6732850c3cee9b006fe502ba","createdAt":"2024-11-11T22:37:21.692Z","isBodyEmpty":false,"children":[]}]},{"_id":"673287e7f42add004eab7ce7","api":{"method":"get","url":"","auth":"required","params":[]},"title":"MDX","icon":"","type":"basic","slug":"mdx","order":3,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","category":"6732850c3cee9b006fe502ba","createdAt":"2024-11-11T22:40:39.951Z","parentDoc":null,"isBodyEmpty":false,"children":[{"_id":"67328853ffa9a80057a2bb3d","api":{"method":"get","url":"","auth":"required","params":[]},"title":"Using MDX","icon":"","type":"basic","slug":"using-mdx","order":0,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","parentDoc":"673287e7f42add004eab7ce7","category":"6732850c3cee9b006fe502ba","createdAt":"2024-11-11T22:42:27.255Z","isBodyEmpty":false,"children":[]}]},{"_id":"6732891da3e3f000127e60af","api":{"method":"get","url":"","auth":"required","params":[]},"title":"Bi-Directional Sync","icon":"","type":"basic","slug":"bi-directional-sync","order":4,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","category":"6732850c3cee9b006fe502ba","createdAt":"2024-11-11T22:45:49.316Z","parentDoc":null,"isBodyEmpty":false,"children":[{"_id":"67366bb6a7aafd0030d95b48","api":{"method":"get","url":"","auth":"required","params":[]},"title":"Editing with Bi-Directional Sync","icon":"","type":"basic","slug":"editing-with-bi-directional-sync","order":0,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"editing-with-bi-directional-sync-copy","parentDoc":"6732891da3e3f000127e60af","category":"6732850c3cee9b006fe502ba","createdAt":"2024-11-14T21:29:26.253Z","isBodyEmpty":false,"children":[]}]},{"_id":"6740deb7507c4d005064d1c3","api":{"method":"get","url":"","auth":"required","params":[]},"title":"Office Hours","icon":"","type":"basic","slug":"office-hours","order":999,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","category":"6732850c3cee9b006fe502ba","createdAt":"2024-11-22T19:42:47.120Z","isBodyEmpty":false,"children":[]}]}],"refs":[{"_id":"6376ba4d127d990003112b72","title":"Developer Dashboard","slug":"realtime","order":1,"reference":true,"categoryType":"RealtimeCategory","project":"5f7ce9e3a5504d0414d025d0","version":"62056dee230e07007218bf4c","createdAt":"2022-05-13T23:34:25.637Z","__v":0,"supportsMyRequests":true,"pages":[{"_id":"6376ba4d127d990003112b8a","api":{"method":"get","url":"/","results":{"codes":[]},"apiSetting":"62056dee230e07007218be15"},"title":"Getting Started","icon":"icon-book1","type":"endpoint","slug":"getting-started","order":0,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","pageType":"RealtimePage","category":"6376ba4d127d990003112b72","createdAt":"2022-11-17T22:48:45.203Z","parentDoc":null,"isBodyEmpty":true,"children":[]},{"_id":"6376ba4d127d990003112b8b","api":{"method":"get","url":"/","results":{"codes":[]},"apiSetting":"62056dee230e07007218be15"},"title":"Authentication","icon":"icon-key1","type":"endpoint","slug":"authentication","order":1,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","pageType":"RealtimePage","category":"6376ba4d127d990003112b72","createdAt":"2022-11-17T22:48:45.204Z","parentDoc":null,"isBodyEmpty":false,"children":[]},{"_id":"651c5fd8d8d50a2651e8ce56","api":{"method":"get","url":"/","results":{"codes":[]},"apiSetting":"62056dee230e07007218be15"},"title":"My Requests","icon":"icon-gauge-circle","type":"endpoint","slug":"my-requests","order":2,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","pageType":"RealtimePage","category":"6376ba4d127d990003112b72","createdAt":"2022-11-17T22:48:45.204Z","parentDoc":null,"isBodyEmpty":true,"children":[]}]},{"_id":"62056dee230e07007218be0e","title":"ReadMe API 🦉","slug":"api-endpoints-1","order":8,"reference":true,"isAPI":true,"project":"5f7ce9e3a5504d0414d025d0","version":"62056dee230e07007218bf4c","createdAt":"2020-10-06T22:08:15.687Z","__v":0,"pages":[{"_id":"62056dee230e07007218bece","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Intro to the ReadMe API","type":"basic","slug":"intro-to-the-readme-api","order":0,"isReference":true,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2020-10-06T22:09:42.903Z","category":"62056dee230e07007218be0e","parentDoc":null,"deprecated":false,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218bf29","api":{"method":"get","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15"},"title":"API Registry","type":"basic","slug":"api-registry","order":2,"isReference":true,"hidden":false,"sync_unique":"tag__API Registry","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2021-07-27T18:51:02.101Z","parentDoc":null,"deprecated":false,"icon":"","isBodyEmpty":true,"children":[{"_id":"62056dee230e07007218bf2a","api":{"method":"get","url":"","auth":"required","params":[],"results":{"codes":[]},"apiSetting":"62056dee230e07007218be15"},"title":"Retrieve an entry from the API Registry","type":"endpoint","slug":"getapiregistry","order":0,"isReference":true,"hidden":false,"sync_unique":"getAPIRegistry","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2021-07-27T18:51:02.663Z","parentDoc":"62056dee230e07007218bf29","deprecated":false,"icon":"","isBodyEmpty":true,"children":[]}]},{"_id":"62056dee230e07007218bed2","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"title":"Limiting API Results","type":"basic","slug":"pagination","order":3,"isReference":true,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"limiting-api-results","createdAt":"2020-10-06T22:17:59.433Z","parentDoc":null,"category":"62056dee230e07007218be0e","deprecated":false,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218bea7","api":{"method":"get","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15"},"title":"API Specification","type":"basic","slug":"api-specification","order":6,"isReference":true,"hidden":false,"sync_unique":"tag__API Specification","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:16.586Z","parentDoc":null,"deprecated":false,"icon":"","isBodyEmpty":true,"children":[{"_id":"62056dee230e07007218beb0","api":{"method":"get","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15","results":{"codes":[]}},"title":"Get metadata","type":"endpoint","slug":"getapispecification","order":0,"isReference":true,"hidden":false,"sync_unique":"getAPISpecification","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:18.602Z","parentDoc":"62056dee230e07007218bea7","deprecated":false,"icon":"","isBodyEmpty":true,"children":[]},{"_id":"62056dee230e07007218beb1","api":{"method":"post","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15","results":{"codes":[]}},"title":"Upload specification","type":"endpoint","slug":"uploadapispecification","order":1,"isReference":true,"hidden":false,"sync_unique":"uploadAPISpecification","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:18.604Z","parentDoc":"62056dee230e07007218bea7","deprecated":false,"icon":"","isBodyEmpty":true,"children":[]},{"_id":"62056dee230e07007218beb2","api":{"method":"put","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15","results":{"codes":[]}},"title":"Update specification","type":"endpoint","slug":"updateapispecification","order":2,"isReference":true,"hidden":false,"sync_unique":"updateAPISpecification","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:18.605Z","parentDoc":"62056dee230e07007218bea7","deprecated":false,"icon":"","isBodyEmpty":true,"children":[]},{"_id":"62056dee230e07007218beb3","api":{"method":"delete","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15","results":{"codes":[]}},"title":"Delete specification","type":"endpoint","slug":"deleteapispecification","order":3,"isReference":true,"hidden":false,"sync_unique":"deleteAPISpecification","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:18.607Z","parentDoc":"62056dee230e07007218bea7","deprecated":false,"icon":"","isBodyEmpty":true,"children":[]},{"_id":"65a04e4a092001005542b98d","api":{"method":"post","url":"","auth":"required","params":[],"results":{"codes":[]},"apiSetting":"62056dee230e07007218be15"},"title":"Validate API specification","icon":"","type":"endpoint","slug":"validateapispecification","order":4,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"validateAPISpecification","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2024-01-11T20:23:38.189Z","parentDoc":"62056dee230e07007218bea7","isBodyEmpty":true,"children":[]},{"_id":"6419fd857a6d36007bc36338","api":{"method":"get","url":"","auth":"required","params":[],"results":{"codes":[]},"apiSetting":"62056dee230e07007218be15"},"title":"Get our OpenAPI Definition","icon":"","type":"endpoint","slug":"getapischema","order":5,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"getAPISchema","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2023-03-21T18:55:01.798Z","parentDoc":"62056dee230e07007218bea7","isBodyEmpty":true,"children":[]}]},{"_id":"62056dee230e07007218bea8","api":{"method":"get","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15"},"title":"Apply to ReadMe","type":"basic","slug":"apply-to-readme","order":7,"isReference":true,"hidden":false,"sync_unique":"tag__Apply to ReadMe","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:16.587Z","parentDoc":null,"deprecated":false,"icon":"","isBodyEmpty":true,"children":[{"_id":"637d693eafbd2b004b207a0c","api":{"method":"get","url":"","auth":"required","params":[],"results":{"codes":[]},"apiSetting":"62056dee230e07007218be15"},"title":"Get open roles","icon":"","type":"endpoint","slug":"getopenroles","order":0,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"getOpenRoles","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2022-11-23T00:28:46.951Z","parentDoc":"62056dee230e07007218bea8","isBodyEmpty":true,"children":[]},{"_id":"62056dee230e07007218beb4","api":{"method":"post","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15","results":{"codes":[]}},"title":"Submit your application!","type":"endpoint","slug":"applytoreadme","order":1,"isReference":true,"hidden":false,"sync_unique":"applyToReadMe","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:18.608Z","parentDoc":"62056dee230e07007218bea8","deprecated":false,"icon":"","isBodyEmpty":true,"children":[]}]},{"_id":"62056dee230e07007218bea9","api":{"method":"get","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15"},"title":"Categories","type":"basic","slug":"categories","order":8,"isReference":true,"hidden":false,"sync_unique":"tag__Categories","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:16.588Z","parentDoc":null,"deprecated":false,"icon":"","isBodyEmpty":true,"children":[{"_id":"62056dee230e07007218beb5","api":{"method":"get","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15","results":{"codes":[]}},"title":"Get all categories","type":"endpoint","slug":"getcategories","order":0,"isReference":true,"hidden":false,"sync_unique":"getCategories","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:18.609Z","parentDoc":"62056dee230e07007218bea9","deprecated":false,"icon":"","isBodyEmpty":true,"children":[]},{"_id":"637d693eafbd2b004b207a0d","api":{"method":"post","url":"","auth":"required","params":[],"results":{"codes":[]},"apiSetting":"62056dee230e07007218be15"},"title":"Create category","icon":"","type":"endpoint","slug":"createcategory","order":1,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"createCategory","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2022-11-23T00:28:46.953Z","parentDoc":"62056dee230e07007218bea9","isBodyEmpty":true,"children":[]},{"_id":"62056dee230e07007218beb6","api":{"method":"get","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15","results":{"codes":[]}},"title":"Get category","type":"endpoint","slug":"getcategory","order":2,"isReference":true,"hidden":false,"sync_unique":"getCategory","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:18.611Z","parentDoc":"62056dee230e07007218bea9","deprecated":false,"icon":"","isBodyEmpty":true,"children":[]},{"_id":"637d693eafbd2b004b207a0e","api":{"method":"put","url":"","auth":"required","params":[],"results":{"codes":[]},"apiSetting":"62056dee230e07007218be15"},"title":"Update category","icon":"","type":"endpoint","slug":"updatecategory","order":3,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"updateCategory","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2022-11-23T00:28:46.954Z","parentDoc":"62056dee230e07007218bea9","isBodyEmpty":true,"children":[]},{"_id":"637d693eafbd2b004b207a0f","api":{"method":"delete","url":"","auth":"required","params":[],"results":{"codes":[]},"apiSetting":"62056dee230e07007218be15"},"title":"Delete category","icon":"","type":"endpoint","slug":"deletecategory","order":4,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"deleteCategory","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2022-11-23T00:28:46.954Z","parentDoc":"62056dee230e07007218bea9","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218beb7","api":{"method":"get","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15","results":{"codes":[]}},"title":"Get docs for category","type":"endpoint","slug":"getcategorydocs","order":5,"isReference":true,"hidden":false,"sync_unique":"getCategoryDocs","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:18.612Z","parentDoc":"62056dee230e07007218bea9","deprecated":false,"icon":"","isBodyEmpty":true,"children":[]}]},{"_id":"62056dee230e07007218beaa","api":{"method":"get","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15"},"title":"Changelog","type":"basic","slug":"changelog-1","order":9,"isReference":true,"hidden":false,"sync_unique":"tag__Changelog","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:16.589Z","parentDoc":null,"deprecated":false,"icon":"","isBodyEmpty":true,"children":[{"_id":"62056dee230e07007218beb8","api":{"method":"get","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15","results":{"codes":[]}},"title":"Get changelogs","type":"endpoint","slug":"getchangelogs","order":0,"isReference":true,"hidden":false,"sync_unique":"getChangelogs","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:18.613Z","parentDoc":"62056dee230e07007218beaa","deprecated":false,"icon":"","isBodyEmpty":true,"children":[]},{"_id":"62056dee230e07007218beb9","api":{"method":"post","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15","results":{"codes":[]}},"title":"Create changelog","type":"endpoint","slug":"createchangelog","order":1,"isReference":true,"hidden":false,"sync_unique":"createChangelog","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:18.614Z","parentDoc":"62056dee230e07007218beaa","deprecated":false,"icon":"","isBodyEmpty":true,"children":[]},{"_id":"62056dee230e07007218beba","api":{"method":"get","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15","results":{"codes":[]}},"title":"Get changelog","type":"endpoint","slug":"getchangelog","order":2,"isReference":true,"hidden":false,"sync_unique":"getChangelog","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:18.616Z","parentDoc":"62056dee230e07007218beaa","deprecated":false,"icon":"","isBodyEmpty":true,"children":[]},{"_id":"62056dee230e07007218bebb","api":{"method":"put","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15","results":{"codes":[]}},"title":"Update changelog","type":"endpoint","slug":"updatechangelog","order":3,"isReference":true,"hidden":false,"sync_unique":"updateChangelog","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:18.617Z","parentDoc":"62056dee230e07007218beaa","deprecated":false,"icon":"","isBodyEmpty":true,"children":[]},{"_id":"62056dee230e07007218bebc","api":{"method":"delete","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15","results":{"codes":[]}},"title":"Delete changelog","type":"endpoint","slug":"deletechangelog","order":4,"isReference":true,"hidden":false,"sync_unique":"deleteChangelog","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:18.618Z","parentDoc":"62056dee230e07007218beaa","deprecated":false,"icon":"","isBodyEmpty":true,"children":[]}]},{"_id":"62056dee230e07007218beab","api":{"method":"get","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15"},"title":"Custom Pages","type":"basic","slug":"custom-pages","order":10,"isReference":true,"hidden":false,"sync_unique":"tag__Custom Pages","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:16.590Z","parentDoc":null,"deprecated":false,"icon":"","isBodyEmpty":true,"children":[{"_id":"62056dee230e07007218bebd","api":{"method":"get","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15","results":{"codes":[]}},"title":"Get custom pages","type":"endpoint","slug":"getcustompages","order":0,"isReference":true,"hidden":false,"sync_unique":"getCustomPages","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:18.619Z","parentDoc":"62056dee230e07007218beab","deprecated":false,"icon":"","isBodyEmpty":true,"children":[]},{"_id":"62056dee230e07007218bebe","api":{"method":"post","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15","results":{"codes":[]}},"title":"Create custom page","type":"endpoint","slug":"createcustompage","order":1,"isReference":true,"hidden":false,"sync_unique":"createCustomPage","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:18.620Z","parentDoc":"62056dee230e07007218beab","deprecated":false,"icon":"","isBodyEmpty":true,"children":[]},{"_id":"62056dee230e07007218bebf","api":{"method":"get","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15","results":{"codes":[]}},"title":"Get custom page","type":"endpoint","slug":"getcustompage","order":2,"isReference":true,"hidden":false,"sync_unique":"getCustomPage","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:18.621Z","parentDoc":"62056dee230e07007218beab","deprecated":false,"icon":"","isBodyEmpty":true,"children":[]},{"_id":"62056dee230e07007218bec0","api":{"method":"put","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15","results":{"codes":[]}},"title":"Update custom page","type":"endpoint","slug":"updatecustompage","order":3,"isReference":true,"hidden":false,"sync_unique":"updateCustomPage","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:18.623Z","parentDoc":"62056dee230e07007218beab","deprecated":false,"icon":"","isBodyEmpty":true,"children":[]},{"_id":"62056dee230e07007218bec1","api":{"method":"delete","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15","results":{"codes":[]}},"title":"Delete custom page","type":"endpoint","slug":"deletecustompage","order":4,"isReference":true,"hidden":false,"sync_unique":"deleteCustomPage","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:18.624Z","parentDoc":"62056dee230e07007218beab","deprecated":false,"icon":"","isBodyEmpty":true,"children":[]}]},{"_id":"62056dee230e07007218beac","api":{"method":"get","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15"},"title":"Docs","type":"basic","slug":"docs","order":11,"isReference":true,"hidden":false,"sync_unique":"tag__Docs","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:16.591Z","parentDoc":null,"deprecated":false,"icon":"","isBodyEmpty":true,"children":[{"_id":"62056dee230e07007218bec5","api":{"method":"post","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15","results":{"codes":[]}},"title":"Create doc","type":"endpoint","slug":"createdoc","order":0,"isReference":true,"hidden":false,"sync_unique":"createDoc","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:18.629Z","parentDoc":"62056dee230e07007218beac","deprecated":false,"icon":"","isBodyEmpty":true,"children":[]},{"_id":"62056dee230e07007218bec6","api":{"method":"post","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15","results":{"codes":[]}},"title":"Search docs","type":"endpoint","slug":"searchdocs","order":1,"isReference":true,"hidden":false,"sync_unique":"searchDocs","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:18.630Z","parentDoc":"62056dee230e07007218beac","deprecated":false,"icon":"","isBodyEmpty":true,"children":[]},{"_id":"62056dee230e07007218bec2","api":{"method":"get","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15","results":{"codes":[]}},"title":"Get doc","type":"endpoint","slug":"getdoc","order":2,"isReference":true,"hidden":false,"sync_unique":"getDoc","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:18.625Z","parentDoc":"62056dee230e07007218beac","deprecated":false,"icon":"","isBodyEmpty":true,"children":[]},{"_id":"62056dee230e07007218bec3","api":{"method":"put","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15","results":{"codes":[]}},"title":"Update doc","type":"endpoint","slug":"updatedoc","order":3,"isReference":true,"hidden":false,"sync_unique":"updateDoc","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:18.626Z","parentDoc":"62056dee230e07007218beac","deprecated":false,"icon":"","isBodyEmpty":true,"children":[]},{"_id":"62056dee230e07007218bec4","api":{"method":"delete","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15","results":{"codes":[]}},"title":"Delete doc","type":"endpoint","slug":"deletedoc","order":4,"isReference":true,"hidden":false,"sync_unique":"deleteDoc","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:18.628Z","parentDoc":"62056dee230e07007218beac","deprecated":false,"icon":"","isBodyEmpty":true,"children":[]},{"_id":"637d693eafbd2b004b207a10","api":{"method":"get","url":"","auth":"required","params":[],"results":{"codes":[]},"apiSetting":"62056dee230e07007218be15"},"title":"Get production doc","icon":"","type":"endpoint","slug":"getproductiondoc","order":5,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"getProductionDoc","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2022-11-23T00:28:46.960Z","parentDoc":"62056dee230e07007218beac","isBodyEmpty":true,"children":[]}]},{"_id":"65663c3efefba900557ce682","api":{"method":"get","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15"},"title":"IP Addresses","icon":"","type":"basic","slug":"ip-addresses-1","order":12,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"tag__IP Addresses","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2023-11-28T19:15:10.564Z","parentDoc":null,"isBodyEmpty":true,"children":[{"_id":"65663c3efefba900557ce684","api":{"method":"get","url":"","auth":"required","params":[],"results":{"codes":[]},"apiSetting":"62056dee230e07007218be15"},"title":"Get ReadMe’s outbound IP addresses","icon":"","type":"endpoint","slug":"getoutboundips","order":0,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"getOutboundIPs","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2023-11-28T19:15:10.745Z","parentDoc":"65663c3efefba900557ce682","isBodyEmpty":true,"children":[]}]},{"_id":"62056dee230e07007218beae","api":{"method":"get","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15"},"title":"Projects","type":"basic","slug":"projects","order":13,"isReference":true,"hidden":false,"sync_unique":"tag__Projects","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:16.592Z","parentDoc":null,"deprecated":false,"icon":"","isBodyEmpty":true,"children":[{"_id":"62056dee230e07007218bec8","api":{"method":"get","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15","results":{"codes":[]}},"title":"Get metadata about the current project","type":"endpoint","slug":"getproject","order":0,"isReference":true,"hidden":false,"sync_unique":"getProject","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:18.633Z","parentDoc":"62056dee230e07007218beae","deprecated":false,"icon":"","isBodyEmpty":true,"children":[]}]},{"_id":"62056dee230e07007218beaf","api":{"method":"get","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15"},"title":"Version","type":"basic","slug":"version","order":14,"isReference":true,"hidden":false,"sync_unique":"tag__Version","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:16.593Z","parentDoc":null,"deprecated":false,"icon":"","isBodyEmpty":true,"children":[{"_id":"62056dee230e07007218bec9","api":{"method":"get","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15","results":{"codes":[]}},"title":"Get versions","type":"endpoint","slug":"getversions","order":0,"isReference":true,"hidden":false,"sync_unique":"getVersions","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:18.634Z","parentDoc":"62056dee230e07007218beaf","deprecated":false,"icon":"","isBodyEmpty":true,"children":[]},{"_id":"62056dee230e07007218beca","api":{"method":"post","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15","results":{"codes":[]}},"title":"Create version","type":"endpoint","slug":"createversion","order":1,"isReference":true,"hidden":false,"sync_unique":"createVersion","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:18.635Z","parentDoc":"62056dee230e07007218beaf","deprecated":false,"icon":"","isBodyEmpty":true,"children":[]},{"_id":"62056dee230e07007218becb","api":{"method":"get","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15","results":{"codes":[]}},"title":"Get version","type":"endpoint","slug":"getversion","order":2,"isReference":true,"hidden":false,"sync_unique":"getVersion","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:18.636Z","parentDoc":"62056dee230e07007218beaf","deprecated":false,"icon":"","isBodyEmpty":true,"children":[]},{"_id":"62056dee230e07007218becc","api":{"method":"put","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15","results":{"codes":[]}},"title":"Update version","type":"endpoint","slug":"updateversion","order":3,"isReference":true,"hidden":false,"sync_unique":"updateVersion","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:18.638Z","parentDoc":"62056dee230e07007218beaf","deprecated":false,"icon":"","isBodyEmpty":true,"children":[]},{"_id":"62056dee230e07007218becd","api":{"method":"delete","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15","results":{"codes":[]}},"title":"Delete version","type":"endpoint","slug":"deleteversion","order":4,"isReference":true,"hidden":false,"sync_unique":"deleteVersion","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2020-10-06T22:08:18.639Z","parentDoc":"62056dee230e07007218beaf","deprecated":false,"icon":"","isBodyEmpty":true,"children":[]}]},{"_id":"65725159e5b5140037942711","api":{"method":"get","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be15"},"title":"Owlbot AI","icon":"","type":"basic","slug":"owlbot-ai","order":15,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"tag__Owlbot AI","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2023-12-07T23:12:25.992Z","parentDoc":null,"isBodyEmpty":true,"children":[{"_id":"656f92b4bce4a4007d5cac95","api":{"method":"post","url":"","auth":"required","params":[],"results":{"codes":[]},"apiSetting":"62056dee230e07007218be15"},"title":"Ask Owlbot AI a question","icon":"","type":"endpoint","slug":"askowlbot","order":0,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"askOwlbot","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0e","createdAt":"2023-12-05T21:14:28.063Z","parentDoc":"65725159e5b5140037942711","isBodyEmpty":false,"children":[]}]}]},{"_id":"62056dee230e07007218be0f","title":"Developer Metrics API","slug":"developer-metrics-api","order":9,"reference":true,"isAPI":true,"project":"5f7ce9e3a5504d0414d025d0","version":"62056dee230e07007218bf4c","createdAt":"2020-10-06T22:23:02.585Z","__v":0,"pages":[{"_id":"62056dee230e07007218bedb","api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[],"examples":{"codes":[]}},"title":"Metrics API Introduction","type":"basic","slug":"metrics-api-introduction","order":0,"isReference":true,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"previousSlug":"","createdAt":"2020-10-06T22:28:25.653Z","category":"62056dee230e07007218be0f","parentDoc":null,"deprecated":false,"icon":"","isBodyEmpty":false,"children":[]},{"_id":"62056dee230e07007218bed5","api":{"method":"get","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be16","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]}},"title":"API Logs","type":"basic","slug":"api-logs","order":1,"isReference":true,"hidden":false,"sync_unique":"tag__API Logs","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0f","createdAt":"2020-10-06T22:23:03.362Z","parentDoc":null,"deprecated":false,"icon":"","isBodyEmpty":true,"children":[{"_id":"62056dee230e07007218beda","api":{"method":"post","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be16","results":{"codes":[]}},"title":"Send an API Log to ReadMe","type":"endpoint","slug":"post_request","order":0,"isReference":true,"hidden":false,"sync_unique":"post_request","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0f","createdAt":"2020-10-06T22:23:05.659Z","parentDoc":"62056dee230e07007218bed5","deprecated":false,"icon":"","isBodyEmpty":true,"children":[]}]},{"_id":"63bf24a518a6df008b78ed4f","api":{"method":"get","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be16"},"title":"Page Quality","icon":"","type":"basic","slug":"page-quality","order":2,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"tag__Page Quality","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0f","createdAt":"2023-01-11T21:05:41.199Z","parentDoc":null,"isBodyEmpty":true,"children":[{"_id":"63bf24a518a6df008b78ed74","api":{"method":"get","url":"","auth":"required","params":[],"results":{"codes":[]},"apiSetting":"62056dee230e07007218be16"},"title":"Get average page quality","icon":"","type":"endpoint","slug":"getaveragepagequality","order":0,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"getAveragePageQuality","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0f","createdAt":"2023-01-11T21:05:41.496Z","parentDoc":"63bf24a518a6df008b78ed4f","isBodyEmpty":true,"children":[]},{"_id":"63bf24a518a6df008b78ed75","api":{"method":"get","url":"","auth":"required","params":[],"results":{"codes":[]},"apiSetting":"62056dee230e07007218be16"},"title":"Get best pages","icon":"","type":"endpoint","slug":"getbestpages","order":1,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"getBestPages","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0f","createdAt":"2023-01-11T21:05:41.496Z","parentDoc":"63bf24a518a6df008b78ed4f","isBodyEmpty":true,"children":[]},{"_id":"63bf24a518a6df008b78ed76","api":{"method":"get","url":"","auth":"required","params":[],"results":{"codes":[]},"apiSetting":"62056dee230e07007218be16"},"title":"Get page comments","icon":"","type":"endpoint","slug":"getpagecomments","order":2,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"getPageComments","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0f","createdAt":"2023-01-11T21:05:41.497Z","parentDoc":"63bf24a518a6df008b78ed4f","isBodyEmpty":true,"children":[]},{"_id":"63bf24a518a6df008b78ed77","api":{"method":"get","url":"","auth":"required","params":[],"results":{"codes":[]},"apiSetting":"62056dee230e07007218be16"},"title":"Get worst pages","icon":"","type":"endpoint","slug":"getworstpages","order":3,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"getWorstPages","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0f","createdAt":"2023-01-11T21:05:41.497Z","parentDoc":"63bf24a518a6df008b78ed4f","isBodyEmpty":true,"children":[]},{"_id":"63bf24a518a6df008b78ed78","api":{"method":"get","url":"","auth":"required","params":[],"results":{"codes":[]},"apiSetting":"62056dee230e07007218be16"},"title":"Get page breakdown","icon":"","type":"endpoint","slug":"getpageperformance","order":4,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"getPagePerformance","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0f","createdAt":"2023-01-11T21:05:41.498Z","parentDoc":"63bf24a518a6df008b78ed4f","isBodyEmpty":true,"children":[]}]},{"_id":"62056dee230e07007218bed4","api":{"method":"get","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be16"},"title":"Page Views","type":"basic","slug":"page-views","order":3,"isReference":true,"hidden":false,"sync_unique":"tag__Page Views","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0f","createdAt":"2020-10-06T22:23:03.361Z","parentDoc":null,"deprecated":false,"icon":"","isBodyEmpty":true,"children":[{"_id":"63bf24a518a6df008b78ed6b","api":{"method":"get","url":"","auth":"required","params":[],"results":{"codes":[]},"apiSetting":"62056dee230e07007218be16"},"title":"Get difference in page views","icon":"","type":"endpoint","slug":"gethistoricalpageviews","order":0,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"getHistoricalPageViews","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0f","createdAt":"2023-01-11T21:05:41.492Z","parentDoc":"62056dee230e07007218bed4","isBodyEmpty":true,"children":[]},{"_id":"63bf24a518a6df008b78ed6c","api":{"method":"get","url":"","auth":"required","params":[],"results":{"codes":[]},"apiSetting":"62056dee230e07007218be16"},"title":"Get top pages","icon":"","type":"endpoint","slug":"gettoppages","order":1,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"getTopPages","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0f","createdAt":"2023-01-11T21:05:41.492Z","parentDoc":"62056dee230e07007218bed4","isBodyEmpty":true,"children":[]},{"_id":"63bf24a518a6df008b78ed6d","api":{"method":"get","url":"","auth":"required","params":[],"results":{"codes":[]},"apiSetting":"62056dee230e07007218be16"},"title":"Get total page views","icon":"","type":"endpoint","slug":"gettotalpageviews","order":2,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"getTotalPageViews","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0f","createdAt":"2023-01-11T21:05:41.493Z","parentDoc":"62056dee230e07007218bed4","isBodyEmpty":true,"children":[]},{"_id":"63bf24a518a6df008b78ed6e","api":{"method":"get","url":"","auth":"required","params":[],"results":{"codes":[]},"apiSetting":"62056dee230e07007218be16"},"title":"Get unique page views","icon":"","type":"endpoint","slug":"getuniquepageviews","order":3,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"getUniquePageViews","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0f","createdAt":"2023-01-11T21:05:41.493Z","parentDoc":"62056dee230e07007218bed4","isBodyEmpty":true,"children":[]},{"_id":"63bf24a518a6df008b78ed6f","api":{"method":"get","url":"","auth":"required","params":[],"results":{"codes":[]},"apiSetting":"62056dee230e07007218be16"},"title":"Get users","icon":"","type":"endpoint","slug":"getpageviewsbyuser","order":4,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"getPageViewsByUser","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0f","createdAt":"2023-01-11T21:05:41.494Z","parentDoc":"62056dee230e07007218bed4","isBodyEmpty":true,"children":[]},{"_id":"63bf24a518a6df008b78ed70","api":{"method":"get","url":"","auth":"required","params":[],"results":{"codes":[]},"apiSetting":"62056dee230e07007218be16"},"title":"Get page views per day","icon":"","type":"endpoint","slug":"getpageviewsbyday","order":5,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"getPageViewsByDay","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0f","createdAt":"2023-01-11T21:05:41.494Z","parentDoc":"62056dee230e07007218bed4","isBodyEmpty":true,"children":[]},{"_id":"63bf24a518a6df008b78ed71","api":{"method":"get","url":"","auth":"required","params":[],"results":{"codes":[]},"apiSetting":"62056dee230e07007218be16"},"title":"Get views by path","icon":"","type":"endpoint","slug":"getpageviewsforpath","order":6,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"getPageViewsForPath","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0f","createdAt":"2023-01-11T21:05:41.494Z","parentDoc":"62056dee230e07007218bed4","isBodyEmpty":true,"children":[]}]},{"_id":"62056dee230e07007218bed6","api":{"method":"get","url":"","auth":"required","params":[],"apiSetting":"62056dee230e07007218be16"},"title":"Search","type":"basic","slug":"search-1","order":4,"isReference":true,"hidden":false,"sync_unique":"tag__Search","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0f","createdAt":"2020-10-06T22:23:03.363Z","parentDoc":null,"deprecated":false,"icon":"","isBodyEmpty":true,"children":[{"_id":"63bf24a518a6df008b78ed72","api":{"method":"get","url":"","auth":"required","params":[],"results":{"codes":[]},"apiSetting":"62056dee230e07007218be16"},"title":"Get top search terms","icon":"","type":"endpoint","slug":"gettopsearchterms","order":0,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"getTopSearchTerms","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0f","createdAt":"2023-01-11T21:05:41.495Z","parentDoc":"62056dee230e07007218bed6","isBodyEmpty":true,"children":[]},{"_id":"63bf24a518a6df008b78ed73","api":{"method":"get","url":"","auth":"required","params":[],"results":{"codes":[]},"apiSetting":"62056dee230e07007218be16"},"title":"Get data by search term","icon":"","type":"endpoint","slug":"getusersbysearchterm","order":1,"isReference":true,"deprecated":false,"hidden":false,"sync_unique":"getUsersBySearchTerm","link_url":"","link_external":false,"previousSlug":"","category":"62056dee230e07007218be0f","createdAt":"2023-01-11T21:05:41.495Z","parentDoc":"62056dee230e07007218bed6","isBodyEmpty":true,"children":[]}]}]}]},"baseUrl":"/main","apiBaseUrl":"/main","search":{"appId":"T28YKFATPY","searchApiKey":"YTE0NjI2MDVkYTI0ZTBlNWFlODQyMzU4YmNkNTZhZjNiY2Y4YWNiYWFiZGM5OGE4NDcwNmFjMGViNGJlOWNlYXRhZ0ZpbHRlcnM9KHByb2plY3Q6NWY3Y2U5ZTNhNTUwNGQwNDE0ZDAyNWQwLHByb2plY3Q6NjIwNTk5M2Q3ZmI4ZDcwMDI5YmJhNDliLHByb2plY3Q6NWQ4OTA3ZTcxOTM3ZjgwMDEyMjc3YjcyKSwodmVyc2lvbjpub25lLHZlcnNpb246NjIwNTZkZWUyMzBlMDcwMDcyMThiZjRjLHZlcnNpb246NjIwNTk5M2Q3ZmI4ZDcwMDI5YmJhMDQ5LHZlcnNpb246NWZkZjc2MTAxMzQzMjIwMDczODlhNzFiKSwoaGlkZGVuOm5vbmUsaGlkZGVuOmZhbHNlKSwoaW5kZXg6Q3VzdG9tUGFnZSxpbmRleDpQYWdlLGluZGV4OkJsb2csaW5kZXg6RGlzY3VzcyxpbmRleDpUdXRvcmlhbCk=","indexName":"readme_search_v2","projectsMeta":[{"modules":{"landing":false,"docs":true,"examples":true,"reference":true,"changelog":true,"discuss":true,"suggested_edits":true,"logs":false,"custompages":true,"tutorials":true,"graphql":false},"id":"5f7ce9e3a5504d0414d025d0","name":"ReadMe","subdomain":"developers","subpath":"main","nav_names":{"docs":"","reference":"","changelog":"","discuss":"","tutorials":"","recipes":""}},{"modules":{"landing":false,"docs":true,"examples":true,"reference":false,"graphql":false,"changelog":false,"discuss":false,"suggested_edits":true,"logs":false,"custompages":true,"tutorials":false},"id":"6205993d7fb8d70029bba49b","name":"Enterprise","subdomain":"enterprise-docs","subpath":"ent","nav_names":{"docs":"","reference":"","changelog":"","discuss":"","tutorials":"","recipes":""}},{"modules":{"logs":false,"suggested_edits":true,"discuss":false,"changelog":false,"reference":false,"examples":true,"docs":true,"landing":false,"custompages":true,"tutorials":false,"graphql":false},"id":"5d8907e71937f80012277b72","name":"ReadMe Markdown","subdomain":"rdmd","subpath":"","nav_names":{"discuss":"","changelog":"","reference":"","docs":"","tutorials":"","recipes":""}}],"UrlManager":{"options":{"child":false,"parent":null,"hasOneChild":false,"project":null,"version":null,"lang":"en"},"defaults":{"lang":"en"}},"urlManagerOpts":{"lang":"en","parent":{"subdomain":"readme-docs-group","childrenProjects":["main","ent","rdmd"]},"project":{"subdomain":"main"},"version":"2.0"}},"activeDoc":"sending-logs-to-readme-with-nodejs","rdmd":{"baseUrl":"/main","body":"> 🚀 Upgrading to v6.0?\n>\n> Please see our [upgrade path documentation](#how-can-i-upgrade-to-v60).\n\n> 🚧 Any issues?\n>\n> Integrations can be tricky! [Contact support](https://docs.readme.com/guides/docs/contact-support) if you have any questions/issues.\n\n## Overview\n\nIf you're a developer, it takes a few small steps to send your API logs to [ReadMe](http://readme.com/) so your team can get deep insights into your API's usage with [ReadMe Metrics](https://readme.com/metrics). Here's an overview of how the integration works:\n\n- You add the Node.js SDK to your server manually or via the included [Express.js](https://expressjs.com/) middleware.\n- The Node.js SDK sends ReadMe the details of your API's incoming requests and outgoing responses, with the option for you to redact any private parameters or headers.\n- ReadMe uses these request and response details to populate Metrics charts which can be used to analyze specific API calls or monitor aggregate usage data.\n\n## Express.js Integration\n\n> ℹ️\n>\n> **Note:** If you're not using [Express.js](https://expressjs.com/), check out our example integrations for [hapi](https://hapi.dev/) or [Fastify](https://www.fastify.io/) [here](https://github.com/readmeio/metrics-sdks/tree/main/packages/node/examples).\n\n1. Locate the file in your organization's API codebase that contains your Express server; often this file is named `express.js`, `app.js`, or `server.js`. You can also search your codebase for `express()` as that's where Express will be usually instantiated from.\n2. From the directory of this codebase, run the following command in your command line to install the [`readmeio` package from `npm`](https://www.npmjs.com/package/readmeio):\n\n```bash\nnpm install readmeio --save\n```\n\n3. Load the `readmeio` module into your Express server. Usually near the beginning of the file, you will see several `import` or `require` statements. Add the following statement to that group:\n\n#### Typescript\n\n```ts\nimport * as readme from 'readmeio';\n```\n\n#### Node.js\n\n```js\nconst readme = require('readmeio');\n```\n\n4. Configure the following middleware function:\n\n```js\napp.use((req, res, next) => {\n readme.log(readmeAPIKey, req, res, {\n // You might extract this from a header or parameter.\n apiKey: req.<apiKey>,\n\n // You might extract these from user data associated with the API key.\n label: req.<userNameToShowInDashboard>,\n email: req.<userEmailAddress>,\n });\n\n return next();\n});\n```\n\nFor more details about the parameters you can provide to the `express` function, refer to the [Express.js documentation](https://docs.readme.com/docs/sending-logs-to-readme-with-nodejs#express-middleware-reference).\n\n5. Test a request:\n\n```bash\ncurl -i {my api url}\n```\n\nYou should see a response header `x-documentation-url`. This header contains a URL to a detailed log of the API request/response. For info on configuring this header, check out the [Documentation URL](https://docs.readme.com/docs/sending-logs-to-readme-with-nodejs#documentation-url) docs.\n\n### `log` Reference\n\nThe `log` function accepts the following parameters:\n\n> Note that this middleware is not likely to be sensitive to order. If you are new to Express, see [How to Write Middleware for Express.js Apps](https://stormpath.com/blog/how-to-write-middleware-for-express-apps).\n\n<!-- prettier-ignore-start -->\n| Parameter | Required? | Description |\n| :--- | :--- | :--- |\n| `readmeAPIKey` | yes | The API key for your ReadMe project. This ensures your requests end up in your dashboard. You can read more about the API key in [our docs](https://docs.readme.com/reference/authentication). |\n| `req` | yes | The incoming `Request` object from Express. |\n| `res` | yes | The outgoing `Response` object from Express. |\n| `groupFn` | yes | A function that helps translate incoming request data to our metrics grouping data. You can read more under [Grouping Function](#grouping-function).\n| `options` | no | Additional options. You can read more under [Additional Express Options](#additional-express-options)\n<!-- prettier-ignore-end -->\n\n#### Example\n\n```js\nreadme.log(readmeAPIKey, req, res, groupFn, options);\n```\n\n### Grouping Function\n\nThe grouping function is a function your script should include that extracts identifying information out of the [`req`](https://expressjs.com/en/4x/api.html#req) object. While only `apiKey` is required, we recommend providing all three values to get the most out of the metrics dashboard.\n\nReturn data:\n\n<!-- prettier-ignore-start -->\n| Field | Required? | Type | Usage |\n| :--- | :--- | :--- | :--- |\n| `apiKey` | yes | string | API Key used to make the request. Note that this is different from the `readmeAPIKey` described above and should be a value from your API that is unique to each of your users. |\n| `label` | no | string | This will be the user's display name in the API Metrics Dashboard, since it's much easier to remember a name than an API key. |\n| `email` | no | string | Email of the user that is making the call. |\n<!-- prettier-ignore-end -->\n\n#### Example\n\n```js\napp.use((req, res, next) => {\n readme.log(readmeAPIKey, req, res, {\n // You might extract this from a header or parameter.\n apiKey: req.<apiKey>,\n\n // You might extract these from user data associated with the API key.\n label: req.<userNameToShowInDashboard>,\n email: req.<userEmailAddress>,\n });\n\n return next();\n});\n```\n\n### Additional Express Options\n\n<!-- prettier-ignore-start -->\n| Option | Type | Description |\n| :--- | :--- | :--- |\n| `allowlist` | Array of strings | If included, `denylist` will be ignored and all parameters but those in this list will be redacted. |\n| `baseLogUrl` | string | This value is used when building the x-documentation-url header (see docs [below](#documentation-url)). It is your ReadMe documentation's base URL (e.g. `https://example.readme.com`). If not provided, we will make one API call a day to determine your base URL (more info in [Documentation URL](https://docs.readme.com/docs/sending-logs-to-readme-with-nodejs#documentation-url). If provided, we will use that value and never look it up automatically. |\n| `bufferLength` | number | Defaults to `1`. This value should be a number representing the amount of requests to group up before sending them over the network. Increasing this value will increase performance but delay the time until logs show up in the dashboard. The default value is 1. |\n| `denylist` | Array of strings | An array of parameter names that will be redacted from the query parameters, request body (when JSON or form-encoded), response body (when JSON) and headers. For nested request parameters use dot notation (e.g. `a.b.c` to redact the field `c` within `{ a: { b: { c: 'foo' }}}`). |\n| `development` | bool | Defaults to false. When `true`, the log will be marked as a development log. This is great for separating staging or test data from data coming from customers. |\n| `fireAndForget` | bool | Defaults to `true`. When `false`, the server will wait for the response from the metrics call. This will be slower, but the response is useful in debugging problems. |\n<!-- prettier-ignore-end -->\n\n#### Example\n\n```js\n{\n denyList: ['password', 'secret'],\n development: true,\n fireAndForget: true,\n bufferLength: 1,\n baseLogUrl: \"https://example.readme.com\"\n}\n```\n\n### Documentation URL\n\nWith the middleware loaded, all requests that funneled through it will receive a `x-documentation-url` header applied to the response. The value of this header will be the URL on ReadMe Metrics with which you can view the log for that request.\n\nNote that in order to generate this URL, an API request is made to ReadMe once a day, and cached to a local file in `node_modules/.cache/readmeio`, to retrieve your projects baseUrl. If this request to ReadMe fails, the `x-documentation-url` header will not be added to responses.\n\nIf you wish to not rely on this cache, you can opt to supply a `baseLogUrl` option into the middleware, which should evaluate to the public-facing URL of your ReadMe project.\n\n## Security\n\nBy default API keys sent the grouping function and `Authorization` headers are encrypted into an integrity hash using the [ssri](https://npm.im/ssri) library. In order for us to safely utilize this data later in your ReadMe dashboards, and allow you to do user tracing, we pluck the last 4 characters off of the end of the encrypted string and save that with the integrity hash.\n\nFor example if the API key is `1999e4893f732ba38b948dbe8d34ed48cd54f058` we will include `f058` on the end of the hash, resulting in ReadMe Metrics recording the following in our database:\n\n> sha512-/0bFzsk3a5wrmdTxA6qstL9TExGVTr9BUgZvhIjVrTa2M/KsNkW+AF8wJtgYd1OIvHc5qGgB9WfUbCA8PPbE8w==?f058\n\n## Sample Applications\n\n- [Express](https://github.com/readmeio/metrics-sdks/tree/main/packages/node/examples/express)\n- [Fastify](https://github.com/readmeio/metrics-sdks/tree/main/packages/node/examples/fastify)\n- [Hapi](https://github.com/readmeio/metrics-sdks/tree/main/packages/node/examples/hapi)\n\n## FAQ\n\n### Are there any limitations?\n\n- Though we offer `allowlist` and `denylist` options for suppressing data you send to API Metrics, they are only supported on JSON and form-encoded request bodies. If you need to suppression support for other request body types you can parse the request body yourself and supply that modified payload into the [`log` function](#log-reference) where you'd send us `req`.\n\n### How can I upgrade to v6.0?\n\n> ℹ️\n>\n> If you are already using `readme.log()` as your entry point for recording API Metrics you don't need to do change anything.\n\nWith the v6 release of our Node SDK we've heavily simplified how the library can be implemented across every available JS web framework out there.\n\nGiven a `readme.express()` code snippet that looks like the following:\n\n```js\napp.use(\n readme.express(readmeAPIKey, req => ({\n apiKey: req.<apiKey>,\n label: req.<userNameToShowInDashboard>,\n email: req.<userEmailAddress>,\n }))\n);\n```\n\nYou should change your implementation to use our new `readme.log()` method, resulting in something that looks like this:\n\n```js\napp.use((req, res, next) => {\n readme.log(readmeAPIKey, req, res, {\n apiKey: req.<apiKey>,\n label: req.<userNameToShowInDashboard>,\n email: req.<userEmailAddress>,\n });\n\n return next();\n});\n```","opts":{"alwaysThrow":false,"compatibilityMode":false,"copyButtons":true,"correctnewlines":false,"markdownOptions":{"fences":true,"commonmark":true,"gfm":true,"ruleSpaces":false,"listItemIndent":"1","spacedTable":true,"paddedTable":true},"normalize":true,"lazyImages":true,"reusableContent":{"tags":{},"wrap":false},"safeMode":false,"settings":{"position":true},"theme":"light","resourceID":"62056dee230e07007218bee0","resourceType":"page","baseUrl":"/main","terms":[{"_id":"621044ddeed2f80083ac6d97","term":"Enterprise group","definition":"An Enterprise Group refers to the parent dashboard where all global settings are managed, including adding and removing Teammates and End Users, and managing all child projects."},{"_id":"621044f40a103000a83239db","term":"Enterprise group Owner","definition":"There is one owner per Enterprise Group, referred to as “Owner” in the Enterprise Group dashboard. The Enterprise Group Owner has the same access privileges as an Enterprise group Admin. Additionally, ReadMe Product Experience Managers will contact Enterprise group Owners as the primary point of contact for decisions and updates related to renewals, beta programs, and new feature releases."},{"_id":"6210456696b020001ae688e8","term":"Enterprise group Admin","definition":"An Enterprise group Admin is referred to as “Admin” in the Enterprise Group dashboard. Enterprise group Admins can invite, remove, and choose the permission level of other Teammates and End Users. They can also add and remove projects from the Enterprise group, and access any related project via the project’s dashboard."},{"_id":"6210457691c8d40013dcbfd5","term":"Project Admin","definition":"A Project Admin is the default role when you invite a team member to a ReadMe project. A Project Admin has access to a project’s dashboard and can make most team- and project-management related changes with the exception of upgrading your plan, cloning or deleting a project, and transferring project ownership, which only Project Owners can do."},{"_id":"621045878fefbb00a4567123","term":"Project Owner","definition":"There can only be one Project Owner per ReadMe project. This role has all of the privileges of a Project Admin, with the additional abilities to upgrade your plan, clone or delete a project, and transfer project ownership."},{"_id":"621045cf9b3c01001a609907","term":"Teammates","definition":"Teammates are members of your team who manage (e.g. write, edit, update) documentation related to your Enterprise Group projects. Teammates can have one of three permissions: Admin, Viewer, or Some Projects."},{"_id":"621045db6d2803001a066199","term":"Viewer","definition":"When you invite a Teammate to an Enterprise Group you have the ability to set their access to “Viewer”. The Viewer role has access to view the hubs of all child projects within an Enterprise Group, but has no access to the dashboards of the child projects or the Enterprise Group dashboard."},{"_id":"621045f2ddd9a6007632ed4c","term":"End Users","definition":"End Users are consumers of your ReadMe projects’ documentation whom you’d like to grant hub-side access to. As an Enterprise customer, you can invite End Users, define project access, and configure login methods within your Enterprise Group dashboard."},{"_id":"621045feb3162a0020eca3c8","term":"Some Projects","definition":"When you invite a Teammate to an Enterprise Group you have the ability to set their access to “Some Projects”. From there, you’ll set permission access on a per project basis as either No Access, Viewer (only hub-side access to the project), or Admin (dashboard- and hub-side access to the project)."},{"_id":"6215351976fb85003c868c8b","term":"dashboard","definition":"The dashboard or dash refers to the admin panel of ReadMe’s platform where all of your projects and settings are housed. Only Project Admins have access to the dashboard. The dashboard is where Admins can edit projects, create and edit documentation, and more."},{"_id":"621535251676400014e8f933","term":"hub","definition":"The hub is the end user-facing side of your project—where individuals can view and interact with your documentation. For example when you set a page in your dashboard “live”, this becomes visible on the hub-side of your project. Your hub—or hubs if you have multiple projects—is updated through your project’s dashboard. Your hub is visible to anyone with the URL for your documentation, unless you set your project to private."},{"_id":"62153f32e7fa6c00264fdf08","term":"variables","definition":"The variables feature allows you to assign a specific variable (e.g. name) to automatically propagate default values, across all of your documentation. We recommend using this feature for product names and links to allow for simpler bulk editing. Additionally, you can use variables to pass in user data so that aspects of your documentation are personalized for logged in users, such as their name or API key. In order to pass in personalized user data, you first need to set up custom login, which integrates with either JWT or Webhooks. You can set up variables for your project in the Variable Defaults section (within Configuration) of your dashboard."},{"_id":"5b57804ec6af890003de66cf","term":"Page","definition":"Also known as an article"},{"_id":"5b57805e60a07d00037870db","term":"Subpage","definition":"Under a Page"},{"_id":"5b5780787baf140003ef762b","term":"Changelog","definition":"Place where you can go see changes"},{"_id":"5b57808aa599780003538deb","term":"Discussions","definition":"Forum where your customers can share their concerns"},{"_id":"5b5780a17baf140003ef762d","term":"Documentation","definition":"Section where the documentation lives"},{"_id":"5b5780b7a599780003538ded","term":"Reference","definition":"The API Explorer"},{"_id":"5b57f37a0c8f760003f3023c","term":"pop up","definition":"You have to have explicitly use a glossary term by typing \"<<\" in the ReadMe editor. The glossary feature will not find and replace all words that match your glossary term."},{"_id":"5de95d1041cd310027f8c4fb","term":"internal","definition":"Your administrators that can access the dashboard of your projects"},{"_id":"5de95d159e4c7e002f220927","term":"external","definition":"Your members that have access to the hubs"},{"_id":"5deaf50c2aa750006dbd2f3a","term":"login mechanisms","definition":"ReadMe's login mechanisms. We can support Custom OAuth, Custom JWT, SAML, Local ReadMe, and No Login"},{"_id":"6011e68de8693f0014d8d932","term":"RDMD","definition":"Our custom ReadMe-flavored Markdown engine. It's based on remark (meaning it supports all the Markdown syntax you know and love) and adds some custom syntax to support ReadMe features such as variables, glossary (i.e. what you're reading right now!), and emoji! You can read more about RDMD in our docs: rdmd.readme.io"},{"_id":"60231e0409f34c005e4dc876","term":"API Explorer","definition":"Our interactive, OpenAPI-based API reference section. Users can construct and send API requests and view code samples in a language of their choice—all without leaving the docs!"},{"_id":"6063c8810f5a29000f35b3f9","term":"API Reference","definition":"The API reference section of your ReadMe documentation contains information about each of your endpoints and the data that is sent and received. Users can construct and send API requests and view code samples in a language of their choice—all without leaving the docs!"},{"_id":"612d776812676f005baabd10","term":"dereferenced","definition":"The act of dereferencing all `$ref` pointers within an OpenAPI definition, replacing each reference with the value or schema that it resolves to."},{"_id":"6206b7c1ea0c3b0046a1de0c","term":"Enterprise Group","definition":"An Enterprise Group refers to the parent dashboard where all global settings are managed, including adding and removing Teammates and End Users, and managing all child projects."},{"_id":"6206b7d64516a0048e3d346c","term":"Enterprise Group Owner","definition":"There is one owner per Enterprise Group, referred to as “Owner” in the Enterprise Group dashboard. The Enterprise Group Owner has the same access privileges as an Enterprise Group Admin. Additionally, ReadMe Product Experience Managers will contact Enterprise Group Owners as the primary point of contact for decisions and updates related to renewals, beta programs, and new feature releases."},{"_id":"6206bb05eb045403e8f2320e","term":"Enterprise Group Admin","definition":"An Enterprise Group Admin is referred to as “Admin” in the Enterprise Group dashboard. Enterprise Group Admins can invite, remove, and choose the permission level of other Teammates and End Users. They can also add and remove projects from the Enterprise Group, and access any related project via the project’s dashboard."},{"_id":"6206bc6653a2eb002c07a928","term":"Project Admin","definition":"A Project Admin is the default role when you invite a team member to a ReadMe project. A Project Admin has access to a project’s dashboard and can make most team- and project-management related changes with the exception of upgrading your plan, cloning or deleting a project, and transferring project ownership, which only Project Owners can do."},{"_id":"6206bc77c66af9003f0d3ea7","term":"Project Owner","definition":"There can only be one Project Owner per ReadMe project. This role has all of the privileges of a Project Admin, with the additional abilities to upgrade your plan, clone or delete a project, and transfer project ownership."},{"_id":"6206bcae37c9d902c95e84b6","term":"Viewer","definition":"When you invite a Teammate to an Enterprise Group you have the ability to set their access to “Viewer”. The Viewer role has access to view the hubs of all child projects within an Enterprise Group, but has no access to the dashboards of the child projects or to the Enterprise Group dashboard."},{"_id":"62153fd7c4e9aa00950ea1b2","term":"variables","definition":"The variables feature allows you to assign a specific variable (e.g. name) to automatically propagate default values, across all of your documentation. We recommend using this feature for product names and links to allow for simpler bulk editing. Additionally, you can use variables to pass in user data so that aspects of your documentation are personalized for logged in users, such as their name or API key. In order to pass in personalized user data, you first need to set up custom login, which integrates with either JWT or Webhooks. You can set up variables for your project in the Variable Defaults section (within Configuration) of your dashboard."},{"_id":"62153fe068bc3e0058bb1af1","term":"dashboard","definition":"The dashboard, or dash, refers to the admin panel of ReadMe’s platform where all of your projects and settings are housed. Only Project Admins have access to the dashboard. The dashboard is where Admins can edit projects, create and edit documentation, and more."},{"_id":"6217d529a29ea90056b28f2b","term":"hype train","definition":"A 🚆 full of hype"},{"_id":"622fb5f271f5f406608a919f","term":"Custom","definition":"When you invite a Teammate to an Enterprise Group you have the ability to set their access to “Custom”. From there, you’ll set permission access on a per project basis as either No Access, Viewer (only hub-side access to the project), or Admin (dashboard- and hub-side access to the project)."},{"_id":"6230bd1b776d1d033e134034","term":"Teammates","definition":"Teammates are members of your team who manage (e.g. write, edit, update) documentation related to your Enterprise Group projects. Teammates can have one of three permissions: Admin, Viewer, or Custom."},{"_id":"6230bd51fb5b3d005587bca8","term":"End Users","definition":"End Users are consumers of your ReadMe projects’ private documentation whom you’d like to grant hub-side access to. As an Enterprise customer, you can invite End Users, define project access, and configure login methods within your Enterprise Group dashboard."},{"_id":"62583c1c51d83c0353152996","term":"hub","definition":"The hub is the end user-facing side of your project, or documentation site. This is where individuals can view and interact with your documentation. For example when you set a page in your dashboard “live”, this becomes visible on the hub-side of your project. Your hub—or hubs if you have multiple projects—is updated through your project’s dashboard. Your hub is visible to anyone with the URL for your documentation, unless you set your project to private."},{"_id":"64da475bf12f5d0b6eb764fb","term":"Slug","definition":"A URL slug last identifying string of a specific page.\n\nThe slug for https://docs.readme.com/main/docs/intro-to-readme is \"intro-to-readme\""},{"_id":"64da47a94a89fd11c7884cec","term":"dash","definition":"The Dashboard, or Dash, refers to the admin panel of ReadMe’s platform where all of your projects and settings are housed. Only Project Owners and Admins have access to the Dashboard. The Dashboard is where Admins can edit projects, create and edit documentation, and more."},{"_id":"64da49a3af7e2f00190b8748","term":"Glossary","definition":"Glossary terms allow users to provide additional context to specific words or phrases when a viewer hovers over that term. Terms are defined in plaintext under Project Dashboard > Glossary. When editing content, type \"<<\" to insert a Glossary term!"}],"variables":{"user":{},"defaults":[{"source":"security","_id":"6391241e050251002a8e3d28","name":"apiKey","type":"http","scheme":"basic","apiSetting":"5f7cee46dd6cb1037e316143"},{"source":"","_id":"649b525defea78003e22657d","name":"user","default":"API_KEY"},{"source":"","_id":"6352dfca576cb4000f2e14ef","name":"ReadMe","default":"Default Value"},{"source":"","_id":"63d2fc41cba521006b5197ea","name":"id","default":"README_API_KEY"},{"source":"","_id":"63efced04cc2e710b54258b1","name":"email","default":"user@example.com"},{"source":"","_id":"649f33f4cae212001dcd4573","name":"dasdf","default":"aSD"}]}},"terms":[{"_id":"621044ddeed2f80083ac6d97","term":"Enterprise group","definition":"An Enterprise Group refers to the parent dashboard where all global settings are managed, including adding and removing Teammates and End Users, and managing all child projects."},{"_id":"621044f40a103000a83239db","term":"Enterprise group Owner","definition":"There is one owner per Enterprise Group, referred to as “Owner” in the Enterprise Group dashboard. The Enterprise Group Owner has the same access privileges as an Enterprise group Admin. Additionally, ReadMe Product Experience Managers will contact Enterprise group Owners as the primary point of contact for decisions and updates related to renewals, beta programs, and new feature releases."},{"_id":"6210456696b020001ae688e8","term":"Enterprise group Admin","definition":"An Enterprise group Admin is referred to as “Admin” in the Enterprise Group dashboard. Enterprise group Admins can invite, remove, and choose the permission level of other Teammates and End Users. They can also add and remove projects from the Enterprise group, and access any related project via the project’s dashboard."},{"_id":"6210457691c8d40013dcbfd5","term":"Project Admin","definition":"A Project Admin is the default role when you invite a team member to a ReadMe project. A Project Admin has access to a project’s dashboard and can make most team- and project-management related changes with the exception of upgrading your plan, cloning or deleting a project, and transferring project ownership, which only Project Owners can do."},{"_id":"621045878fefbb00a4567123","term":"Project Owner","definition":"There can only be one Project Owner per ReadMe project. This role has all of the privileges of a Project Admin, with the additional abilities to upgrade your plan, clone or delete a project, and transfer project ownership."},{"_id":"621045cf9b3c01001a609907","term":"Teammates","definition":"Teammates are members of your team who manage (e.g. write, edit, update) documentation related to your Enterprise Group projects. Teammates can have one of three permissions: Admin, Viewer, or Some Projects."},{"_id":"621045db6d2803001a066199","term":"Viewer","definition":"When you invite a Teammate to an Enterprise Group you have the ability to set their access to “Viewer”. The Viewer role has access to view the hubs of all child projects within an Enterprise Group, but has no access to the dashboards of the child projects or the Enterprise Group dashboard."},{"_id":"621045f2ddd9a6007632ed4c","term":"End Users","definition":"End Users are consumers of your ReadMe projects’ documentation whom you’d like to grant hub-side access to. As an Enterprise customer, you can invite End Users, define project access, and configure login methods within your Enterprise Group dashboard."},{"_id":"621045feb3162a0020eca3c8","term":"Some Projects","definition":"When you invite a Teammate to an Enterprise Group you have the ability to set their access to “Some Projects”. From there, you’ll set permission access on a per project basis as either No Access, Viewer (only hub-side access to the project), or Admin (dashboard- and hub-side access to the project)."},{"_id":"6215351976fb85003c868c8b","term":"dashboard","definition":"The dashboard or dash refers to the admin panel of ReadMe’s platform where all of your projects and settings are housed. Only Project Admins have access to the dashboard. The dashboard is where Admins can edit projects, create and edit documentation, and more."},{"_id":"621535251676400014e8f933","term":"hub","definition":"The hub is the end user-facing side of your project—where individuals can view and interact with your documentation. For example when you set a page in your dashboard “live”, this becomes visible on the hub-side of your project. Your hub—or hubs if you have multiple projects—is updated through your project’s dashboard. Your hub is visible to anyone with the URL for your documentation, unless you set your project to private."},{"_id":"62153f32e7fa6c00264fdf08","term":"variables","definition":"The variables feature allows you to assign a specific variable (e.g. name) to automatically propagate default values, across all of your documentation. We recommend using this feature for product names and links to allow for simpler bulk editing. Additionally, you can use variables to pass in user data so that aspects of your documentation are personalized for logged in users, such as their name or API key. In order to pass in personalized user data, you first need to set up custom login, which integrates with either JWT or Webhooks. You can set up variables for your project in the Variable Defaults section (within Configuration) of your dashboard."},{"_id":"5b57804ec6af890003de66cf","term":"Page","definition":"Also known as an article"},{"_id":"5b57805e60a07d00037870db","term":"Subpage","definition":"Under a Page"},{"_id":"5b5780787baf140003ef762b","term":"Changelog","definition":"Place where you can go see changes"},{"_id":"5b57808aa599780003538deb","term":"Discussions","definition":"Forum where your customers can share their concerns"},{"_id":"5b5780a17baf140003ef762d","term":"Documentation","definition":"Section where the documentation lives"},{"_id":"5b5780b7a599780003538ded","term":"Reference","definition":"The API Explorer"},{"_id":"5b57f37a0c8f760003f3023c","term":"pop up","definition":"You have to have explicitly use a glossary term by typing \"<<\" in the ReadMe editor. The glossary feature will not find and replace all words that match your glossary term."},{"_id":"5de95d1041cd310027f8c4fb","term":"internal","definition":"Your administrators that can access the dashboard of your projects"},{"_id":"5de95d159e4c7e002f220927","term":"external","definition":"Your members that have access to the hubs"},{"_id":"5deaf50c2aa750006dbd2f3a","term":"login mechanisms","definition":"ReadMe's login mechanisms. We can support Custom OAuth, Custom JWT, SAML, Local ReadMe, and No Login"},{"_id":"6011e68de8693f0014d8d932","term":"RDMD","definition":"Our custom ReadMe-flavored Markdown engine. It's based on remark (meaning it supports all the Markdown syntax you know and love) and adds some custom syntax to support ReadMe features such as variables, glossary (i.e. what you're reading right now!), and emoji! You can read more about RDMD in our docs: rdmd.readme.io"},{"_id":"60231e0409f34c005e4dc876","term":"API Explorer","definition":"Our interactive, OpenAPI-based API reference section. Users can construct and send API requests and view code samples in a language of their choice—all without leaving the docs!"},{"_id":"6063c8810f5a29000f35b3f9","term":"API Reference","definition":"The API reference section of your ReadMe documentation contains information about each of your endpoints and the data that is sent and received. Users can construct and send API requests and view code samples in a language of their choice—all without leaving the docs!"},{"_id":"612d776812676f005baabd10","term":"dereferenced","definition":"The act of dereferencing all `$ref` pointers within an OpenAPI definition, replacing each reference with the value or schema that it resolves to."},{"_id":"6206b7c1ea0c3b0046a1de0c","term":"Enterprise Group","definition":"An Enterprise Group refers to the parent dashboard where all global settings are managed, including adding and removing Teammates and End Users, and managing all child projects."},{"_id":"6206b7d64516a0048e3d346c","term":"Enterprise Group Owner","definition":"There is one owner per Enterprise Group, referred to as “Owner” in the Enterprise Group dashboard. The Enterprise Group Owner has the same access privileges as an Enterprise Group Admin. Additionally, ReadMe Product Experience Managers will contact Enterprise Group Owners as the primary point of contact for decisions and updates related to renewals, beta programs, and new feature releases."},{"_id":"6206bb05eb045403e8f2320e","term":"Enterprise Group Admin","definition":"An Enterprise Group Admin is referred to as “Admin” in the Enterprise Group dashboard. Enterprise Group Admins can invite, remove, and choose the permission level of other Teammates and End Users. They can also add and remove projects from the Enterprise Group, and access any related project via the project’s dashboard."},{"_id":"6206bc6653a2eb002c07a928","term":"Project Admin","definition":"A Project Admin is the default role when you invite a team member to a ReadMe project. A Project Admin has access to a project’s dashboard and can make most team- and project-management related changes with the exception of upgrading your plan, cloning or deleting a project, and transferring project ownership, which only Project Owners can do."},{"_id":"6206bc77c66af9003f0d3ea7","term":"Project Owner","definition":"There can only be one Project Owner per ReadMe project. This role has all of the privileges of a Project Admin, with the additional abilities to upgrade your plan, clone or delete a project, and transfer project ownership."},{"_id":"6206bcae37c9d902c95e84b6","term":"Viewer","definition":"When you invite a Teammate to an Enterprise Group you have the ability to set their access to “Viewer”. The Viewer role has access to view the hubs of all child projects within an Enterprise Group, but has no access to the dashboards of the child projects or to the Enterprise Group dashboard."},{"_id":"62153fd7c4e9aa00950ea1b2","term":"variables","definition":"The variables feature allows you to assign a specific variable (e.g. name) to automatically propagate default values, across all of your documentation. We recommend using this feature for product names and links to allow for simpler bulk editing. Additionally, you can use variables to pass in user data so that aspects of your documentation are personalized for logged in users, such as their name or API key. In order to pass in personalized user data, you first need to set up custom login, which integrates with either JWT or Webhooks. You can set up variables for your project in the Variable Defaults section (within Configuration) of your dashboard."},{"_id":"62153fe068bc3e0058bb1af1","term":"dashboard","definition":"The dashboard, or dash, refers to the admin panel of ReadMe’s platform where all of your projects and settings are housed. Only Project Admins have access to the dashboard. The dashboard is where Admins can edit projects, create and edit documentation, and more."},{"_id":"6217d529a29ea90056b28f2b","term":"hype train","definition":"A 🚆 full of hype"},{"_id":"622fb5f271f5f406608a919f","term":"Custom","definition":"When you invite a Teammate to an Enterprise Group you have the ability to set their access to “Custom”. From there, you’ll set permission access on a per project basis as either No Access, Viewer (only hub-side access to the project), or Admin (dashboard- and hub-side access to the project)."},{"_id":"6230bd1b776d1d033e134034","term":"Teammates","definition":"Teammates are members of your team who manage (e.g. write, edit, update) documentation related to your Enterprise Group projects. Teammates can have one of three permissions: Admin, Viewer, or Custom."},{"_id":"6230bd51fb5b3d005587bca8","term":"End Users","definition":"End Users are consumers of your ReadMe projects’ private documentation whom you’d like to grant hub-side access to. As an Enterprise customer, you can invite End Users, define project access, and configure login methods within your Enterprise Group dashboard."},{"_id":"62583c1c51d83c0353152996","term":"hub","definition":"The hub is the end user-facing side of your project, or documentation site. This is where individuals can view and interact with your documentation. For example when you set a page in your dashboard “live”, this becomes visible on the hub-side of your project. Your hub—or hubs if you have multiple projects—is updated through your project’s dashboard. Your hub is visible to anyone with the URL for your documentation, unless you set your project to private."},{"_id":"64da475bf12f5d0b6eb764fb","term":"Slug","definition":"A URL slug last identifying string of a specific page.\n\nThe slug for https://docs.readme.com/main/docs/intro-to-readme is \"intro-to-readme\""},{"_id":"64da47a94a89fd11c7884cec","term":"dash","definition":"The Dashboard, or Dash, refers to the admin panel of ReadMe’s platform where all of your projects and settings are housed. Only Project Owners and Admins have access to the Dashboard. The Dashboard is where Admins can edit projects, create and edit documentation, and more."},{"_id":"64da49a3af7e2f00190b8748","term":"Glossary","definition":"Glossary terms allow users to provide additional context to specific words or phrases when a viewer hovers over that term. Terms are defined in plaintext under Project Dashboard > Glossary. When editing content, type \"<<\" to insert a Glossary term!"}],"variables":{"user":{},"defaults":[{"source":"security","_id":"6391241e050251002a8e3d28","name":"apiKey","type":"http","scheme":"basic","apiSetting":"5f7cee46dd6cb1037e316143"},{"source":"","_id":"649b525defea78003e22657d","name":"user","default":"API_KEY"},{"source":"","_id":"6352dfca576cb4000f2e14ef","name":"ReadMe","default":"Default Value"},{"source":"","_id":"63d2fc41cba521006b5197ea","name":"id","default":"README_API_KEY"},{"source":"","_id":"63efced04cc2e710b54258b1","name":"email","default":"user@example.com"},{"source":"","_id":"649f33f4cae212001dcd4573","name":"dasdf","default":"aSD"}]},"mdx":false,"dehydrated":{"toc":"<nav><ul class=\"toc-list\"><li><a class=\"tocHeader\" href=\"#\"><i class=\"icon icon-text-align-left\"></i>Table of Contents</a></li><li class=\"toc-children\"><ul>\n<li>\n<a href=\"#overview\">Overview</a>\n</li>\n<li>\n<a href=\"#expressjs-integration\">Express.js Integration</a>\n<ul>\n<li><a href=\"#log-reference\"><code>log</code> Reference</a></li>\n<li><a href=\"#grouping-function\">Grouping Function</a></li>\n<li><a href=\"#additional-express-options\">Additional Express Options</a></li>\n<li><a href=\"#documentation-url\">Documentation URL</a></li>\n</ul>\n</li>\n<li>\n<a href=\"#security\">Security</a>\n</li>\n<li>\n<a href=\"#sample-applications\">Sample Applications</a>\n</li>\n<li>\n<a href=\"#faq\">FAQ</a>\n<ul>\n<li><a href=\"#are-there-any-limitations\">Are there any limitations?</a></li>\n<li><a href=\"#how-can-i-upgrade-to-v60\">How can I upgrade to v6.0?</a></li>\n</ul>\n</li>\n</ul></li></ul></nav>","body":"<blockquote class=\"callout callout_default\" theme=\"🚀\"><h2 class=\"callout-heading\"><span class=\"callout-icon\">🚀</span><p>Upgrading to v6.0?</p></h2><p>Please see our <a href=\"#how-can-i-upgrade-to-v60\" target=\"\" title=\"\">upgrade path documentation</a>.</p></blockquote>\n<blockquote class=\"callout callout_warn\" theme=\"🚧\"><h2 class=\"callout-heading\"><span class=\"callout-icon\">🚧</span><p>Any issues?</p></h2><p>Integrations can be tricky! <a href=\"https://docs.readme.com/guides/docs/contact-support\" target=\"\" title=\"\">Contact support</a> if you have any questions/issues.</p></blockquote>\n<h2 class=\"heading heading-2 header-scroll\" align=\"\"><div class=\"heading-anchor anchor waypoint\" id=\"overview\"></div><div class=\"heading-text\"><div id=\"section-overview\" class=\"heading-anchor_backwardsCompatibility\"></div>Overview</div><a aria-label=\"Skip link to Overview\" class=\"heading-anchor-icon fa fa-anchor\" href=\"#overview\"></a></h2>\n<p>If you&#x27;re a developer, it takes a few small steps to send your API logs to <a href=\"http://readme.com/\" target=\"\" title=\"\">ReadMe</a> so your team can get deep insights into your API&#x27;s usage with <a href=\"https://readme.com/metrics\" target=\"\" title=\"\">ReadMe Metrics</a>. Here&#x27;s an overview of how the integration works:</p>\n<ul>\n<li>You add the Node.js SDK to your server manually or via the included <a href=\"https://expressjs.com/\" target=\"\" title=\"\">Express.js</a> middleware.</li>\n<li>The Node.js SDK sends ReadMe the details of your API&#x27;s incoming requests and outgoing responses, with the option for you to redact any private parameters or headers.</li>\n<li>ReadMe uses these request and response details to populate Metrics charts which can be used to analyze specific API calls or monitor aggregate usage data.</li>\n</ul>\n<h2 class=\"heading heading-2 header-scroll\" align=\"\"><div class=\"heading-anchor anchor waypoint\" id=\"expressjs-integration\"></div><div class=\"heading-text\"><div id=\"section-express-js-integration\" class=\"heading-anchor_backwardsCompatibility\"></div>Express.js Integration</div><a aria-label=\"Skip link to Express.js Integration\" class=\"heading-anchor-icon fa fa-anchor\" href=\"#expressjs-integration\"></a></h2>\n<blockquote class=\"callout callout_info\" theme=\"ℹ️\"><h2 class=\"callout-heading empty\"><span class=\"callout-icon\">ℹ️</span></h2><p><strong>Note:</strong> If you&#x27;re not using <a href=\"https://expressjs.com/\" target=\"\" title=\"\">Express.js</a>, check out our example integrations for <a href=\"https://hapi.dev/\" target=\"\" title=\"\">hapi</a> or <a href=\"https://www.fastify.io/\" target=\"\" title=\"\">Fastify</a> <a href=\"https://github.com/readmeio/metrics-sdks/tree/main/packages/node/examples\" target=\"\" title=\"\">here</a>.</p></blockquote>\n<ol>\n<li>Locate the file in your organization&#x27;s API codebase that contains your Express server; often this file is named <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">express.js</code>, <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">app.js</code>, or <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">server.js</code>. You can also search your codebase for <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">express()</code> as that&#x27;s where Express will be usually instantiated from.</li>\n<li>From the directory of this codebase, run the following command in your command line to install the <a href=\"https://www.npmjs.com/package/readmeio\" target=\"\" title=\"\"><button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">readmeio</code> package from <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">npm</code></a>:</li>\n</ol>\n<div class=\"CodeTabs CodeTabs_initial theme-light\"><div class=\"CodeTabs-toolbar\" role=\"tablist\"><button aria-selected=\"true\" class=\"CodeTabs_active\" role=\"tab\" type=\"button\">Bash</button></div><div class=\"CodeTabs-inner\" role=\"tabpanel\"><pre><button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang-bash theme-light\" data-lang=\"bash\" name=\"\" tabindex=\"0\">npm install readmeio --save\n</code></pre></div></div>\n<ol start=\"3\">\n<li>Load the <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">readmeio</code> module into your Express server. Usually near the beginning of the file, you will see several <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">import</code> or <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">require</code> statements. Add the following statement to that group:</li>\n</ol>\n<h4 class=\"heading heading-4 header-scroll\" align=\"\"><div class=\"heading-anchor anchor waypoint\" id=\"typescript\"></div><div class=\"heading-text\"><div id=\"section-typescript\" class=\"heading-anchor_backwardsCompatibility\"></div>Typescript</div><a aria-label=\"Skip link to Typescript\" class=\"heading-anchor-icon fa fa-anchor\" href=\"#typescript\"></a></h4>\n<div class=\"CodeTabs CodeTabs_initial theme-light\"><div class=\"CodeTabs-toolbar\" role=\"tablist\"><button aria-selected=\"true\" class=\"CodeTabs_active\" role=\"tab\" type=\"button\">ts</button></div><div class=\"CodeTabs-inner\" role=\"tabpanel\"><pre><button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang-ts theme-light\" data-lang=\"ts\" name=\"\" tabindex=\"0\">import * as readme from &#x27;readmeio&#x27;;\n</code></pre></div></div>\n<h4 class=\"heading heading-4 header-scroll\" align=\"\"><div class=\"heading-anchor anchor waypoint\" id=\"nodejs\"></div><div class=\"heading-text\"><div id=\"section-node-js\" class=\"heading-anchor_backwardsCompatibility\"></div>Node.js</div><a aria-label=\"Skip link to Node.js\" class=\"heading-anchor-icon fa fa-anchor\" href=\"#nodejs\"></a></h4>\n<div class=\"CodeTabs CodeTabs_initial theme-light\"><div class=\"CodeTabs-toolbar\" role=\"tablist\"><button aria-selected=\"true\" class=\"CodeTabs_active\" role=\"tab\" type=\"button\">JavaScript</button></div><div class=\"CodeTabs-inner\" role=\"tabpanel\"><pre><button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang-js theme-light\" data-lang=\"js\" name=\"\" tabindex=\"0\">const readme = require(&#x27;readmeio&#x27;);\n</code></pre></div></div>\n<ol start=\"4\">\n<li>Configure the following middleware function:</li>\n</ol>\n<div class=\"CodeTabs CodeTabs_initial theme-light\"><div class=\"CodeTabs-toolbar\" role=\"tablist\"><button aria-selected=\"true\" class=\"CodeTabs_active\" role=\"tab\" type=\"button\">JavaScript</button></div><div class=\"CodeTabs-inner\" role=\"tabpanel\"><pre><button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang-js theme-light\" data-lang=\"js\" name=\"\" tabindex=\"0\">app.use((req, res, next) =&gt; {\n readme.log(readmeAPIKey, req, res, {\n // You might extract this from a header or parameter.\n apiKey: req.&lt;apiKey&gt;,\n\n // You might extract these from user data associated with the API key.\n label: req.&lt;userNameToShowInDashboard&gt;,\n email: req.&lt;userEmailAddress&gt;,\n });\n\n return next();\n});\n</code></pre></div></div>\n<p>For more details about the parameters you can provide to the <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">express</code> function, refer to the <a href=\"https://docs.readme.com/docs/sending-logs-to-readme-with-nodejs#express-middleware-reference\" target=\"\" title=\"\">Express.js documentation</a>.</p>\n<ol start=\"5\">\n<li>Test a request:</li>\n</ol>\n<div class=\"CodeTabs CodeTabs_initial theme-light\"><div class=\"CodeTabs-toolbar\" role=\"tablist\"><button aria-selected=\"true\" class=\"CodeTabs_active\" role=\"tab\" type=\"button\">Bash</button></div><div class=\"CodeTabs-inner\" role=\"tabpanel\"><pre><button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang-bash theme-light\" data-lang=\"bash\" name=\"\" tabindex=\"0\">curl -i {my api url}\n</code></pre></div></div>\n<p>You should see a response header <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">x-documentation-url</code>. This header contains a URL to a detailed log of the API request/response. For info on configuring this header, check out the <a href=\"https://docs.readme.com/docs/sending-logs-to-readme-with-nodejs#documentation-url\" target=\"\" title=\"\">Documentation URL</a> docs.</p>\n<h3 class=\"heading heading-3 header-scroll\" align=\"\"><div class=\"heading-anchor anchor waypoint\" id=\"log-reference\"></div><div class=\"heading-text\"><div id=\"section-log-reference\" class=\"heading-anchor_backwardsCompatibility\"></div><button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">log</code> Reference</div><a aria-label=\"Skip link to [object Object]\" class=\"heading-anchor-icon fa fa-anchor\" href=\"#log-reference\"></a></h3>\n<p>The <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">log</code> function accepts the following parameters:</p>\n<blockquote>\n<p>Note that this middleware is not likely to be sensitive to order. If you are new to Express, see <a href=\"https://stormpath.com/blog/how-to-write-middleware-for-express-apps\" target=\"\" title=\"\">How to Write Middleware for Express.js Apps</a>.</p>\n</blockquote>\n<!-- -->\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<div class=\"rdmd-table\"><div class=\"rdmd-table-inner\"><table><thead><tr><th style=\"text-align:left\">Parameter</th><th style=\"text-align:left\">Required?</th><th style=\"text-align:left\">Description</th></tr></thead><tbody><tr><td style=\"text-align:left\"><button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">readmeAPIKey</code></td><td style=\"text-align:left\">yes</td><td style=\"text-align:left\">The API key for your ReadMe project. This ensures your requests end up in your dashboard. You can read more about the API key in <a href=\"https://docs.readme.com/reference/authentication\" target=\"\" title=\"\">our docs</a>.</td></tr><tr><td style=\"text-align:left\"><button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">req</code></td><td style=\"text-align:left\">yes</td><td style=\"text-align:left\">The incoming <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">Request</code> object from Express.</td></tr><tr><td style=\"text-align:left\"><button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">res</code></td><td style=\"text-align:left\">yes</td><td style=\"text-align:left\">The outgoing <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">Response</code> object from Express.</td></tr><tr><td style=\"text-align:left\"><button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">groupFn</code></td><td style=\"text-align:left\">yes</td><td style=\"text-align:left\">A function that helps translate incoming request data to our metrics grouping data. You can read more under <a href=\"#grouping-function\" target=\"\" title=\"\">Grouping Function</a>.</td></tr><tr><td style=\"text-align:left\"><button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">options</code></td><td style=\"text-align:left\">no</td><td style=\"text-align:left\">Additional options. You can read more under <a href=\"#additional-express-options\" target=\"\" title=\"\">Additional Express Options</a></td></tr></tbody></table></div></div>\n<!-- -->\n<h4 class=\"heading heading-4 header-scroll\" align=\"\"><div class=\"heading-anchor anchor waypoint\" id=\"example\"></div><div class=\"heading-text\"><div id=\"section-example\" class=\"heading-anchor_backwardsCompatibility\"></div>Example</div><a aria-label=\"Skip link to Example\" class=\"heading-anchor-icon fa fa-anchor\" href=\"#example\"></a></h4>\n<div class=\"CodeTabs CodeTabs_initial theme-light\"><div class=\"CodeTabs-toolbar\" role=\"tablist\"><button aria-selected=\"true\" class=\"CodeTabs_active\" role=\"tab\" type=\"button\">JavaScript</button></div><div class=\"CodeTabs-inner\" role=\"tabpanel\"><pre><button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang-js theme-light\" data-lang=\"js\" name=\"\" tabindex=\"0\">readme.log(readmeAPIKey, req, res, groupFn, options);\n</code></pre></div></div>\n<h3 class=\"heading heading-3 header-scroll\" align=\"\"><div class=\"heading-anchor anchor waypoint\" id=\"grouping-function\"></div><div class=\"heading-text\"><div id=\"section-grouping-function\" class=\"heading-anchor_backwardsCompatibility\"></div>Grouping Function</div><a aria-label=\"Skip link to Grouping Function\" class=\"heading-anchor-icon fa fa-anchor\" href=\"#grouping-function\"></a></h3>\n<p>The grouping function is a function your script should include that extracts identifying information out of the <a href=\"https://expressjs.com/en/4x/api.html#req\" target=\"\" title=\"\"><button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">req</code></a> object. While only <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">apiKey</code> is required, we recommend providing all three values to get the most out of the metrics dashboard.</p>\n<p>Return data:</p>\n<!-- -->\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<div class=\"rdmd-table\"><div class=\"rdmd-table-inner\"><table><thead><tr><th style=\"text-align:left\">Field</th><th style=\"text-align:left\">Required?</th><th style=\"text-align:left\">Type</th><th style=\"text-align:left\">Usage</th></tr></thead><tbody><tr><td style=\"text-align:left\"><button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">apiKey</code></td><td style=\"text-align:left\">yes</td><td style=\"text-align:left\">string</td><td style=\"text-align:left\">API Key used to make the request. Note that this is different from the <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">readmeAPIKey</code> described above and should be a value from your API that is unique to each of your users.</td></tr><tr><td style=\"text-align:left\"><button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">label</code></td><td style=\"text-align:left\">no</td><td style=\"text-align:left\">string</td><td style=\"text-align:left\">This will be the user&#x27;s display name in the API Metrics Dashboard, since it&#x27;s much easier to remember a name than an API key.</td></tr><tr><td style=\"text-align:left\"><button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">email</code></td><td style=\"text-align:left\">no</td><td style=\"text-align:left\">string</td><td style=\"text-align:left\">Email of the user that is making the call.</td></tr></tbody></table></div></div>\n<!-- -->\n<h4 class=\"heading heading-4 header-scroll\" align=\"\"><div class=\"heading-anchor anchor waypoint\" id=\"example-1\"></div><div class=\"heading-text\"><div id=\"section-example\" class=\"heading-anchor_backwardsCompatibility\"></div>Example</div><a aria-label=\"Skip link to Example\" class=\"heading-anchor-icon fa fa-anchor\" href=\"#example-1\"></a></h4>\n<div class=\"CodeTabs CodeTabs_initial theme-light\"><div class=\"CodeTabs-toolbar\" role=\"tablist\"><button aria-selected=\"true\" class=\"CodeTabs_active\" role=\"tab\" type=\"button\">JavaScript</button></div><div class=\"CodeTabs-inner\" role=\"tabpanel\"><pre><button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang-js theme-light\" data-lang=\"js\" name=\"\" tabindex=\"0\">app.use((req, res, next) =&gt; {\n readme.log(readmeAPIKey, req, res, {\n // You might extract this from a header or parameter.\n apiKey: req.&lt;apiKey&gt;,\n\n // You might extract these from user data associated with the API key.\n label: req.&lt;userNameToShowInDashboard&gt;,\n email: req.&lt;userEmailAddress&gt;,\n });\n\n return next();\n});\n</code></pre></div></div>\n<h3 class=\"heading heading-3 header-scroll\" align=\"\"><div class=\"heading-anchor anchor waypoint\" id=\"additional-express-options\"></div><div class=\"heading-text\"><div id=\"section-additional-express-options\" class=\"heading-anchor_backwardsCompatibility\"></div>Additional Express Options</div><a aria-label=\"Skip link to Additional Express Options\" class=\"heading-anchor-icon fa fa-anchor\" href=\"#additional-express-options\"></a></h3>\n<!-- -->\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n<div class=\"rdmd-table\"><div class=\"rdmd-table-inner\"><table><thead><tr><th style=\"text-align:left\">Option</th><th style=\"text-align:left\">Type</th><th style=\"text-align:left\">Description</th></tr></thead><tbody><tr><td style=\"text-align:left\"><button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">allowlist</code></td><td style=\"text-align:left\">Array of strings</td><td style=\"text-align:left\">If included, <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">denylist</code> will be ignored and all parameters but those in this list will be redacted.</td></tr><tr><td style=\"text-align:left\"><button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">baseLogUrl</code></td><td style=\"text-align:left\">string</td><td style=\"text-align:left\">This value is used when building the x-documentation-url header (see docs <a href=\"#documentation-url\" target=\"\" title=\"\">below</a>). It is your ReadMe documentation&#x27;s base URL (e.g. <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">https://example.readme.com</code>). If not provided, we will make one API call a day to determine your base URL (more info in <a href=\"https://docs.readme.com/docs/sending-logs-to-readme-with-nodejs#documentation-url\" target=\"\" title=\"\">Documentation URL</a>. If provided, we will use that value and never look it up automatically.</td></tr><tr><td style=\"text-align:left\"><button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">bufferLength</code></td><td style=\"text-align:left\">number</td><td style=\"text-align:left\">Defaults to <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">1</code>. This value should be a number representing the amount of requests to group up before sending them over the network. Increasing this value will increase performance but delay the time until logs show up in the dashboard. The default value is 1.</td></tr><tr><td style=\"text-align:left\"><button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">denylist</code></td><td style=\"text-align:left\">Array of strings</td><td style=\"text-align:left\">An array of parameter names that will be redacted from the query parameters, request body (when JSON or form-encoded), response body (when JSON) and headers. For nested request parameters use dot notation (e.g. <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">a.b.c</code> to redact the field <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">c</code> within <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">{ a: { b: { c: &#x27;foo&#x27; }}}</code>).</td></tr><tr><td style=\"text-align:left\"><button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">development</code></td><td style=\"text-align:left\">bool</td><td style=\"text-align:left\">Defaults to false. When <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">true</code>, the log will be marked as a development log. This is great for separating staging or test data from data coming from customers.</td></tr><tr><td style=\"text-align:left\"><button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">fireAndForget</code></td><td style=\"text-align:left\">bool</td><td style=\"text-align:left\">Defaults to <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">true</code>. When <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">false</code>, the server will wait for the response from the metrics call. This will be slower, but the response is useful in debugging problems.</td></tr></tbody></table></div></div>\n<!-- -->\n<h4 class=\"heading heading-4 header-scroll\" align=\"\"><div class=\"heading-anchor anchor waypoint\" id=\"example-2\"></div><div class=\"heading-text\"><div id=\"section-example\" class=\"heading-anchor_backwardsCompatibility\"></div>Example</div><a aria-label=\"Skip link to Example\" class=\"heading-anchor-icon fa fa-anchor\" href=\"#example-2\"></a></h4>\n<div class=\"CodeTabs CodeTabs_initial theme-light\"><div class=\"CodeTabs-toolbar\" role=\"tablist\"><button aria-selected=\"true\" class=\"CodeTabs_active\" role=\"tab\" type=\"button\">JavaScript</button></div><div class=\"CodeTabs-inner\" role=\"tabpanel\"><pre><button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang-js theme-light\" data-lang=\"js\" name=\"\" tabindex=\"0\">{\n denyList: [&#x27;password&#x27;, &#x27;secret&#x27;],\n development: true,\n fireAndForget: true,\n bufferLength: 1,\n baseLogUrl: &quot;https://example.readme.com&quot;\n}\n</code></pre></div></div>\n<h3 class=\"heading heading-3 header-scroll\" align=\"\"><div class=\"heading-anchor anchor waypoint\" id=\"documentation-url\"></div><div class=\"heading-text\"><div id=\"section-documentation-url\" class=\"heading-anchor_backwardsCompatibility\"></div>Documentation URL</div><a aria-label=\"Skip link to Documentation URL\" class=\"heading-anchor-icon fa fa-anchor\" href=\"#documentation-url\"></a></h3>\n<p>With the middleware loaded, all requests that funneled through it will receive a <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">x-documentation-url</code> header applied to the response. The value of this header will be the URL on ReadMe Metrics with which you can view the log for that request.</p>\n<p>Note that in order to generate this URL, an API request is made to ReadMe once a day, and cached to a local file in <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">node_modules/.cache/readmeio</code>, to retrieve your projects baseUrl. If this request to ReadMe fails, the <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">x-documentation-url</code> header will not be added to responses.</p>\n<p>If you wish to not rely on this cache, you can opt to supply a <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">baseLogUrl</code> option into the middleware, which should evaluate to the public-facing URL of your ReadMe project.</p>\n<h2 class=\"heading heading-2 header-scroll\" align=\"\"><div class=\"heading-anchor anchor waypoint\" id=\"security\"></div><div class=\"heading-text\"><div id=\"section-security\" class=\"heading-anchor_backwardsCompatibility\"></div>Security</div><a aria-label=\"Skip link to Security\" class=\"heading-anchor-icon fa fa-anchor\" href=\"#security\"></a></h2>\n<p>By default API keys sent the grouping function and <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">Authorization</code> headers are encrypted into an integrity hash using the <a href=\"https://npm.im/ssri\" target=\"\" title=\"\">ssri</a> library. In order for us to safely utilize this data later in your ReadMe dashboards, and allow you to do user tracing, we pluck the last 4 characters off of the end of the encrypted string and save that with the integrity hash.</p>\n<p>For example if the API key is <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">1999e4893f732ba38b948dbe8d34ed48cd54f058</code> we will include <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">f058</code> on the end of the hash, resulting in ReadMe Metrics recording the following in our database:</p>\n<blockquote>\n<p>sha512-/0bFzsk3a5wrmdTxA6qstL9TExGVTr9BUgZvhIjVrTa2M/KsNkW+AF8wJtgYd1OIvHc5qGgB9WfUbCA8PPbE8w==?f058</p>\n</blockquote>\n<h2 class=\"heading heading-2 header-scroll\" align=\"\"><div class=\"heading-anchor anchor waypoint\" id=\"sample-applications\"></div><div class=\"heading-text\"><div id=\"section-sample-applications\" class=\"heading-anchor_backwardsCompatibility\"></div>Sample Applications</div><a aria-label=\"Skip link to Sample Applications\" class=\"heading-anchor-icon fa fa-anchor\" href=\"#sample-applications\"></a></h2>\n<ul>\n<li><a href=\"https://github.com/readmeio/metrics-sdks/tree/main/packages/node/examples/express\" target=\"\" title=\"\">Express</a></li>\n<li><a href=\"https://github.com/readmeio/metrics-sdks/tree/main/packages/node/examples/fastify\" target=\"\" title=\"\">Fastify</a></li>\n<li><a href=\"https://github.com/readmeio/metrics-sdks/tree/main/packages/node/examples/hapi\" target=\"\" title=\"\">Hapi</a></li>\n</ul>\n<h2 class=\"heading heading-2 header-scroll\" align=\"\"><div class=\"heading-anchor anchor waypoint\" id=\"faq\"></div><div class=\"heading-text\"><div id=\"section-faq\" class=\"heading-anchor_backwardsCompatibility\"></div>FAQ</div><a aria-label=\"Skip link to FAQ\" class=\"heading-anchor-icon fa fa-anchor\" href=\"#faq\"></a></h2>\n<h3 class=\"heading heading-3 header-scroll\" align=\"\"><div class=\"heading-anchor anchor waypoint\" id=\"are-there-any-limitations\"></div><div class=\"heading-text\"><div id=\"section-are-there-any-limitations\" class=\"heading-anchor_backwardsCompatibility\"></div>Are there any limitations?</div><a aria-label=\"Skip link to Are there any limitations?\" class=\"heading-anchor-icon fa fa-anchor\" href=\"#are-there-any-limitations\"></a></h3>\n<ul>\n<li>Though we offer <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">allowlist</code> and <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">denylist</code> options for suppressing data you send to API Metrics, they are only supported on JSON and form-encoded request bodies. If you need to suppression support for other request body types you can parse the request body yourself and supply that modified payload into the <a href=\"#log-reference\" target=\"\" title=\"\"><button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">log</code> function</a> where you&#x27;d send us <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">req</code>.</li>\n</ul>\n<h3 class=\"heading heading-3 header-scroll\" align=\"\"><div class=\"heading-anchor anchor waypoint\" id=\"how-can-i-upgrade-to-v60\"></div><div class=\"heading-text\"><div id=\"section-how-can-i-upgrade-to-v-6-0\" class=\"heading-anchor_backwardsCompatibility\"></div>How can I upgrade to v6.0?</div><a aria-label=\"Skip link to How can I upgrade to v6.0?\" class=\"heading-anchor-icon fa fa-anchor\" href=\"#how-can-i-upgrade-to-v60\"></a></h3>\n<blockquote class=\"callout callout_info\" theme=\"ℹ️\"><h2 class=\"callout-heading empty\"><span class=\"callout-icon\">ℹ️</span></h2><p>If you are already using <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">readme.log()</code> as your entry point for recording API Metrics you don&#x27;t need to do change anything.</p></blockquote>\n<p>With the v6 release of our Node SDK we&#x27;ve heavily simplified how the library can be implemented across every available JS web framework out there.</p>\n<p>Given a <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">readme.express()</code> code snippet that looks like the following:</p>\n<div class=\"CodeTabs CodeTabs_initial theme-light\"><div class=\"CodeTabs-toolbar\" role=\"tablist\"><button aria-selected=\"true\" class=\"CodeTabs_active\" role=\"tab\" type=\"button\">JavaScript</button></div><div class=\"CodeTabs-inner\" role=\"tabpanel\"><pre><button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang-js theme-light\" data-lang=\"js\" name=\"\" tabindex=\"0\">app.use(\n readme.express(readmeAPIKey, req =&gt; ({\n apiKey: req.&lt;apiKey&gt;,\n label: req.&lt;userNameToShowInDashboard&gt;,\n email: req.&lt;userEmailAddress&gt;,\n }))\n);\n</code></pre></div></div>\n<p>You should change your implementation to use our new <button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang- theme-light\" data-lang=\"\" name=\"\" tabindex=\"0\">readme.log()</code> method, resulting in something that looks like this:</p>\n<div class=\"CodeTabs CodeTabs_initial theme-light\"><div class=\"CodeTabs-toolbar\" role=\"tablist\"><button aria-selected=\"true\" class=\"CodeTabs_active\" role=\"tab\" type=\"button\">JavaScript</button></div><div class=\"CodeTabs-inner\" role=\"tabpanel\"><pre><button aria-label=\"Copy Code\" class=\"rdmd-code-copy fa\"></button><code class=\"rdmd-code lang-js theme-light\" data-lang=\"js\" name=\"\" tabindex=\"0\">app.use((req, res, next) =&gt; {\n readme.log(readmeAPIKey, req, res, {\n apiKey: req.&lt;apiKey&gt;,\n label: req.&lt;userNameToShowInDashboard&gt;,\n email: req.&lt;userEmailAddress&gt;,\n });\n\n return next();\n});\n</code></pre></div></div>"}},"doc":{"metadata":{"image":[],"title":"","description":"","keywords":"","robots":"index"},"mdx":{"altBody":"","status":"rdmd"},"api":{"method":"get","url":"","auth":"required","results":{"codes":[{"name":"","code":"{}","language":"json","status":200},{"name":"","code":"{}","language":"json","status":400}]},"params":[]},"next":{"description":"","pages":[]},"algolia":{"recordCount":17,"publishPending":false,"translationFailure":false,"updatedAt":"2024-03-13T19:58:02.717Z"},"title":"Node.js Setup","icon":"","updates":["61655e28dc15050224fac3bd","65e3966faa2af200294882a0"],"type":"basic","slug":"sending-logs-to-readme-with-nodejs","excerpt":"","body":"> 🚀 Upgrading to v6.0?\n>\n> Please see our [upgrade path documentation](#how-can-i-upgrade-to-v60).\n\n> 🚧 Any issues?\n>\n> Integrations can be tricky! [Contact support](https://docs.readme.com/guides/docs/contact-support) if you have any questions/issues.\n\n## Overview\n\nIf you're a developer, it takes a few small steps to send your API logs to [ReadMe](http://readme.com/) so your team can get deep insights into your API's usage with [ReadMe Metrics](https://readme.com/metrics). Here's an overview of how the integration works:\n\n- You add the Node.js SDK to your server manually or via the included [Express.js](https://expressjs.com/) middleware.\n- The Node.js SDK sends ReadMe the details of your API's incoming requests and outgoing responses, with the option for you to redact any private parameters or headers.\n- ReadMe uses these request and response details to populate Metrics charts which can be used to analyze specific API calls or monitor aggregate usage data.\n\n## Express.js Integration\n\n> ℹ️\n>\n> **Note:** If you're not using [Express.js](https://expressjs.com/), check out our example integrations for [hapi](https://hapi.dev/) or [Fastify](https://www.fastify.io/) [here](https://github.com/readmeio/metrics-sdks/tree/main/packages/node/examples).\n\n1. Locate the file in your organization's API codebase that contains your Express server; often this file is named `express.js`, `app.js`, or `server.js`. You can also search your codebase for `express()` as that's where Express will be usually instantiated from.\n2. From the directory of this codebase, run the following command in your command line to install the [`readmeio` package from `npm`](https://www.npmjs.com/package/readmeio):\n\n```bash\nnpm install readmeio --save\n```\n\n3. Load the `readmeio` module into your Express server. Usually near the beginning of the file, you will see several `import` or `require` statements. Add the following statement to that group:\n\n#### Typescript\n\n```ts\nimport * as readme from 'readmeio';\n```\n\n#### Node.js\n\n```js\nconst readme = require('readmeio');\n```\n\n4. Configure the following middleware function:\n\n```js\napp.use((req, res, next) => {\n readme.log(readmeAPIKey, req, res, {\n // You might extract this from a header or parameter.\n apiKey: req.<apiKey>,\n\n // You might extract these from user data associated with the API key.\n label: req.<userNameToShowInDashboard>,\n email: req.<userEmailAddress>,\n });\n\n return next();\n});\n```\n\nFor more details about the parameters you can provide to the `express` function, refer to the [Express.js documentation](https://docs.readme.com/docs/sending-logs-to-readme-with-nodejs#express-middleware-reference).\n\n5. Test a request:\n\n```bash\ncurl -i {my api url}\n```\n\nYou should see a response header `x-documentation-url`. This header contains a URL to a detailed log of the API request/response. For info on configuring this header, check out the [Documentation URL](https://docs.readme.com/docs/sending-logs-to-readme-with-nodejs#documentation-url) docs.\n\n### `log` Reference\n\nThe `log` function accepts the following parameters:\n\n> Note that this middleware is not likely to be sensitive to order. If you are new to Express, see [How to Write Middleware for Express.js Apps](https://stormpath.com/blog/how-to-write-middleware-for-express-apps).\n\n<!-- prettier-ignore-start -->\n| Parameter | Required? | Description |\n| :--- | :--- | :--- |\n| `readmeAPIKey` | yes | The API key for your ReadMe project. This ensures your requests end up in your dashboard. You can read more about the API key in [our docs](https://docs.readme.com/reference/authentication). |\n| `req` | yes | The incoming `Request` object from Express. |\n| `res` | yes | The outgoing `Response` object from Express. |\n| `groupFn` | yes | A function that helps translate incoming request data to our metrics grouping data. You can read more under [Grouping Function](#grouping-function).\n| `options` | no | Additional options. You can read more under [Additional Express Options](#additional-express-options)\n<!-- prettier-ignore-end -->\n\n#### Example\n\n```js\nreadme.log(readmeAPIKey, req, res, groupFn, options);\n```\n\n### Grouping Function\n\nThe grouping function is a function your script should include that extracts identifying information out of the [`req`](https://expressjs.com/en/4x/api.html#req) object. While only `apiKey` is required, we recommend providing all three values to get the most out of the metrics dashboard.\n\nReturn data:\n\n<!-- prettier-ignore-start -->\n| Field | Required? | Type | Usage |\n| :--- | :--- | :--- | :--- |\n| `apiKey` | yes | string | API Key used to make the request. Note that this is different from the `readmeAPIKey` described above and should be a value from your API that is unique to each of your users. |\n| `label` | no | string | This will be the user's display name in the API Metrics Dashboard, since it's much easier to remember a name than an API key. |\n| `email` | no | string | Email of the user that is making the call. |\n<!-- prettier-ignore-end -->\n\n#### Example\n\n```js\napp.use((req, res, next) => {\n readme.log(readmeAPIKey, req, res, {\n // You might extract this from a header or parameter.\n apiKey: req.<apiKey>,\n\n // You might extract these from user data associated with the API key.\n label: req.<userNameToShowInDashboard>,\n email: req.<userEmailAddress>,\n });\n\n return next();\n});\n```\n\n### Additional Express Options\n\n<!-- prettier-ignore-start -->\n| Option | Type | Description |\n| :--- | :--- | :--- |\n| `allowlist` | Array of strings | If included, `denylist` will be ignored and all parameters but those in this list will be redacted. |\n| `baseLogUrl` | string | This value is used when building the x-documentation-url header (see docs [below](#documentation-url)). It is your ReadMe documentation's base URL (e.g. `https://example.readme.com`). If not provided, we will make one API call a day to determine your base URL (more info in [Documentation URL](https://docs.readme.com/docs/sending-logs-to-readme-with-nodejs#documentation-url). If provided, we will use that value and never look it up automatically. |\n| `bufferLength` | number | Defaults to `1`. This value should be a number representing the amount of requests to group up before sending them over the network. Increasing this value will increase performance but delay the time until logs show up in the dashboard. The default value is 1. |\n| `denylist` | Array of strings | An array of parameter names that will be redacted from the query parameters, request body (when JSON or form-encoded), response body (when JSON) and headers. For nested request parameters use dot notation (e.g. `a.b.c` to redact the field `c` within `{ a: { b: { c: 'foo' }}}`). |\n| `development` | bool | Defaults to false. When `true`, the log will be marked as a development log. This is great for separating staging or test data from data coming from customers. |\n| `fireAndForget` | bool | Defaults to `true`. When `false`, the server will wait for the response from the metrics call. This will be slower, but the response is useful in debugging problems. |\n<!-- prettier-ignore-end -->\n\n#### Example\n\n```js\n{\n denyList: ['password', 'secret'],\n development: true,\n fireAndForget: true,\n bufferLength: 1,\n baseLogUrl: \"https://example.readme.com\"\n}\n```\n\n### Documentation URL\n\nWith the middleware loaded, all requests that funneled through it will receive a `x-documentation-url` header applied to the response. The value of this header will be the URL on ReadMe Metrics with which you can view the log for that request.\n\nNote that in order to generate this URL, an API request is made to ReadMe once a day, and cached to a local file in `node_modules/.cache/readmeio`, to retrieve your projects baseUrl. If this request to ReadMe fails, the `x-documentation-url` header will not be added to responses.\n\nIf you wish to not rely on this cache, you can opt to supply a `baseLogUrl` option into the middleware, which should evaluate to the public-facing URL of your ReadMe project.\n\n## Security\n\nBy default API keys sent the grouping function and `Authorization` headers are encrypted into an integrity hash using the [ssri](https://npm.im/ssri) library. In order for us to safely utilize this data later in your ReadMe dashboards, and allow you to do user tracing, we pluck the last 4 characters off of the end of the encrypted string and save that with the integrity hash.\n\nFor example if the API key is `1999e4893f732ba38b948dbe8d34ed48cd54f058` we will include `f058` on the end of the hash, resulting in ReadMe Metrics recording the following in our database:\n\n> sha512-/0bFzsk3a5wrmdTxA6qstL9TExGVTr9BUgZvhIjVrTa2M/KsNkW+AF8wJtgYd1OIvHc5qGgB9WfUbCA8PPbE8w==?f058\n\n## Sample Applications\n\n- [Express](https://github.com/readmeio/metrics-sdks/tree/main/packages/node/examples/express)\n- [Fastify](https://github.com/readmeio/metrics-sdks/tree/main/packages/node/examples/fastify)\n- [Hapi](https://github.com/readmeio/metrics-sdks/tree/main/packages/node/examples/hapi)\n\n## FAQ\n\n### Are there any limitations?\n\n- Though we offer `allowlist` and `denylist` options for suppressing data you send to API Metrics, they are only supported on JSON and form-encoded request bodies. If you need to suppression support for other request body types you can parse the request body yourself and supply that modified payload into the [`log` function](#log-reference) where you'd send us `req`.\n\n### How can I upgrade to v6.0?\n\n> ℹ️\n>\n> If you are already using `readme.log()` as your entry point for recording API Metrics you don't need to do change anything.\n\nWith the v6 release of our Node SDK we've heavily simplified how the library can be implemented across every available JS web framework out there.\n\nGiven a `readme.express()` code snippet that looks like the following:\n\n```js\napp.use(\n readme.express(readmeAPIKey, req => ({\n apiKey: req.<apiKey>,\n label: req.<userNameToShowInDashboard>,\n email: req.<userEmailAddress>,\n }))\n);\n```\n\nYou should change your implementation to use our new `readme.log()` method, resulting in something that looks like this:\n\n```js\napp.use((req, res, next) => {\n readme.log(readmeAPIKey, req, res, {\n apiKey: req.<apiKey>,\n label: req.<userNameToShowInDashboard>,\n email: req.<userEmailAddress>,\n });\n\n return next();\n});\n```","order":0,"isReference":false,"deprecated":false,"hidden":false,"sync_unique":"","link_url":"","link_external":false,"reusableContent":[],"previousSlug":"nodejs-setup","slugUpdatedAt":"2022-08-09T01:00:39.943Z","revision":30,"_id":"62056dee230e07007218bee0","pendingAlgoliaPublish":false,"createdAt":"2020-10-06T22:32:50.273Z","updatedAt":"2024-06-10T16:25:58.273Z","user":"5af39863989da435b05d284e","parentDoc":"662176fe39c00000450dea4c","category":{"title":"📊 developer dashboard","slug":"developer-metrics","order":3,"reference":false,"_id":"62056dee230e07007218be10","isAPI":false,"project":"5f7ce9e3a5504d0414d025d0","version":"62056dee230e07007218bf4c","createdAt":"2020-10-06T22:29:27.499Z","__v":0,"type":"guide","id":"62056dee230e07007218be10"},"project":"5f7ce9e3a5504d0414d025d0","version":{"version":"2.0","version_clean":"2.0.0","codename":"product-guides","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["62056dee230e07007218be04","5f7ce9e3a5504d0414d024c0","62056dee230e07007218be05","5730e2e9053a062b00cf4754","5730e2e9053a062b00cf4755","62056dee230e07007218be06","62056dee230e07007218be07","5730e2e9053a062b00cf4758","5730e2e9053a062b00cf4759","5730e2e9053a062b00cf475a","62056dee230e07007218be08","62056dee230e07007218be09","5730e2e9053a062b00cf475d","62056dee230e07007218be0a","5730e2e9053a062b00cf475f","5f7ce9e3a5504d0414d024c7","57e31e95611a860e00f97e22","582fa20c4479222092198d40","5849c782fcabe31900998f6e","58b9e83068a4a5190011dcb2","58bdec0f455ca125001d9505","5a6bbecf2116e20022de8b19","5a7c96d2324bc1001f64ad8b","5a7c9d777dce000013d8b96f","5a81e7ff761cf30012731823","5a81e886bf4a2b0012592b49","5a81eaa5761cf3001273183d","62056dee230e07007218be0b","5a95f47858371e001fd651bb","5a95f53b5c3020002b02aa8c","5a95f57c4091e600125d0249","5a95f5984c0ecf0046a28ba3","5a95f6754091e600125d0252","5a95f6b94091e600125d025b","5a95f7104c0ecf0046a28bce","5a95f7954c0ecf0046a28c57","5a95f7d15c3020002b02aacf","5af6287d426c9d000377c583","5afdf7d37506a80003730d40","5b359df811baf70003a14454","62056dee230e07007218be0c","5bbbb66b8dac1100048174f0","5bbbb6768dac1100048174f3","62056dee230e07007218be0d","5c6f5766877e850021140a1a","5ca51733d177a40373ab97f9","5cc26539681cf8001b9ce9f3","5d0aa5163fd65b0019f2d14e","5d0bba3dd628fd0051fbb232","5d0bba522df6470020205266","5d0bce567f3ac6000f0ef6a3","5d1a4e276ffc8100194874f2","5d3213a673f65d0012b11fb0","5d5b7af3e33f0b005608b793","5d5b7b1d68f1dc00113744d4","5d5b7b9f0c74ae001e8e2186","5d5b7beffe91cc002f6d67eb","5d5b7c21fbd0f80012334964","5d5b7c2df20ff50052c02fec","5dc9f8a8ea4314002f5575ff","5dcdad4c3fd5ca0052534ac4","5e1e2350f309936b889b2448","5f7ce9e3a5504d0414d024fd","62056dee230e07007218be0e","62056dee230e07007218be0f","62056dee230e07007218be10","5f7cf1a9cb79be02e1a588c9","62056dee230e07007218be11","5f9c861053998401d1c2c222","5fc55b794fd67b00645d25e2","62056dee230e07007218be12","61084e16a18107003124ef8f","62056dee230e07007218be13","61e1f0d7a8a68f007059c4cb","61e1f0fc0106310039807732","62292aea889520008ed0113b","6233cab9410abc001c9822eb","6234eb59f6eccc02f76cb807","624cb20585a75d004c978f57","624e2238df4eb60013286917","633470b833bb8d04e657051a","6376ba4d127d990003112b72","63e43d347c3efc02c02c5986","6442d3485ae2d10e2654d2f3","64f8c3b94e8f64001f07ea58","650b7bdc6fa4eb0074722335","65848b391e628e004514a0df","65848bb94819f1004aa6338e","658493ce0d7680006b35bd9d","6732850c3cee9b006fe502ba"],"pdfStatus":"complete","_id":"62056dee230e07007218bf4c","createdAt":"2016-05-09T19:20:09.413Z","project":"5f7ce9e3a5504d0414d025d0","releaseDate":"2016-05-09T19:20:09.413Z","__v":0,"forked_from":"5f7ce9e3a5504d0414d0243f","updatedAt":"2024-11-11T22:28:28.339Z"},"__v":3,"lastUpdatedHash":"cf32d968772d78df9cade5f445c4d28a1362abd6","isApi":false,"tutorials":[],"id":"62056dee230e07007218bee0"},"hideTOC":false,"meta":{"_id":"62056dee230e07007218bee0","description":"🚀 Upgrading to v6.0?: Please see our upgrade path documentation . 🚧 Any issues?: Integrations can be tricky! Contact support if you have any questions/issues. Overview If you're a developer, it takes a few small steps to send your API logs to ReadMe so your team can get deep insights into your API...","hidden":false,"image":[],"keywords":"","metaTitle":"Node.js Setup","parent":"662176fe39c00000450dea4c","robots":"index","slug":"sending-logs-to-readme-with-nodejs","title":"Node.js Setup","type":"docs"},"slugUrl":"/main/docs/sending-logs-to-readme-with-nodejs","config":{"algoliaIndex":"readme_search_v2","amplitude":{"apiKey":"dc8065a65ef83d6ad23e37aaf014fc84","enabled":true},"asset_url":"https://cdn.readme.io","domain":"readme.io","domainFull":"https://dash.readme.com","encryptedLocalStorageKey":"ekfls-2024-05","fullstory":{"enabled":true,"orgId":"FSV9A"},"metrics":{"billingCronEnabled":"true","dashUrl":"https://m.readme.io","defaultUrl":"https://m.readme.io","exportMaxRetries":12,"wsUrl":"wss://m.readme.io"},"proxyUrl":"https://try.readme.io","readmeRecaptchaSiteKey":"6LesVBYpAAAAAESOCHOyo2kF9SZXPVb54Nwf3i2x","releaseVersion":"5.235.0","sentry":{"dsn":"https://3bbe57a973254129bcb93e47dc0cc46f@o343074.ingest.sentry.io/2052166","enabled":true,"tracesSampleRate":0},"shMigration":{"promoVideo":"","forceWaitlist":false},"sslBaseDomain":"readmessl.com","sslGenerationService":"ssl.readmessl.com","stripePk":"pk_live_5103PML2qXbDukVh7GDAkQoR4NSuLqy8idd5xtdm9407XdPR6o3bo663C1ruEGhXJjpnb2YCpj8EU1UvQYanuCjtr00t1DRCf2a","superHub":{"newProjectsEnabled":true},"wootric":{"accountToken":"NPS-122b75a4","enabled":true}},"context":{"labs":{},"user":{},"terms":[{"_id":"621044ddeed2f80083ac6d97","term":"Enterprise group","definition":"An Enterprise Group refers to the parent dashboard where all global settings are managed, including adding and removing Teammates and End Users, and managing all child projects."},{"_id":"621044f40a103000a83239db","term":"Enterprise group Owner","definition":"There is one owner per Enterprise Group, referred to as “Owner” in the Enterprise Group dashboard. The Enterprise Group Owner has the same access privileges as an Enterprise group Admin. Additionally, ReadMe Product Experience Managers will contact Enterprise group Owners as the primary point of contact for decisions and updates related to renewals, beta programs, and new feature releases."},{"_id":"6210456696b020001ae688e8","term":"Enterprise group Admin","definition":"An Enterprise group Admin is referred to as “Admin” in the Enterprise Group dashboard. Enterprise group Admins can invite, remove, and choose the permission level of other Teammates and End Users. They can also add and remove projects from the Enterprise group, and access any related project via the project’s dashboard."},{"_id":"6210457691c8d40013dcbfd5","term":"Project Admin","definition":"A Project Admin is the default role when you invite a team member to a ReadMe project. A Project Admin has access to a project’s dashboard and can make most team- and project-management related changes with the exception of upgrading your plan, cloning or deleting a project, and transferring project ownership, which only Project Owners can do."},{"_id":"621045878fefbb00a4567123","term":"Project Owner","definition":"There can only be one Project Owner per ReadMe project. This role has all of the privileges of a Project Admin, with the additional abilities to upgrade your plan, clone or delete a project, and transfer project ownership."},{"_id":"621045cf9b3c01001a609907","term":"Teammates","definition":"Teammates are members of your team who manage (e.g. write, edit, update) documentation related to your Enterprise Group projects. Teammates can have one of three permissions: Admin, Viewer, or Some Projects."},{"_id":"621045db6d2803001a066199","term":"Viewer","definition":"When you invite a Teammate to an Enterprise Group you have the ability to set their access to “Viewer”. The Viewer role has access to view the hubs of all child projects within an Enterprise Group, but has no access to the dashboards of the child projects or the Enterprise Group dashboard."},{"_id":"621045f2ddd9a6007632ed4c","term":"End Users","definition":"End Users are consumers of your ReadMe projects’ documentation whom you’d like to grant hub-side access to. As an Enterprise customer, you can invite End Users, define project access, and configure login methods within your Enterprise Group dashboard."},{"_id":"621045feb3162a0020eca3c8","term":"Some Projects","definition":"When you invite a Teammate to an Enterprise Group you have the ability to set their access to “Some Projects”. From there, you’ll set permission access on a per project basis as either No Access, Viewer (only hub-side access to the project), or Admin (dashboard- and hub-side access to the project)."},{"_id":"6215351976fb85003c868c8b","term":"dashboard","definition":"The dashboard or dash refers to the admin panel of ReadMe’s platform where all of your projects and settings are housed. Only Project Admins have access to the dashboard. The dashboard is where Admins can edit projects, create and edit documentation, and more."},{"_id":"621535251676400014e8f933","term":"hub","definition":"The hub is the end user-facing side of your project—where individuals can view and interact with your documentation. For example when you set a page in your dashboard “live”, this becomes visible on the hub-side of your project. Your hub—or hubs if you have multiple projects—is updated through your project’s dashboard. Your hub is visible to anyone with the URL for your documentation, unless you set your project to private."},{"_id":"62153f32e7fa6c00264fdf08","term":"variables","definition":"The variables feature allows you to assign a specific variable (e.g. name) to automatically propagate default values, across all of your documentation. We recommend using this feature for product names and links to allow for simpler bulk editing. Additionally, you can use variables to pass in user data so that aspects of your documentation are personalized for logged in users, such as their name or API key. In order to pass in personalized user data, you first need to set up custom login, which integrates with either JWT or Webhooks. You can set up variables for your project in the Variable Defaults section (within Configuration) of your dashboard."},{"_id":"5b57804ec6af890003de66cf","term":"Page","definition":"Also known as an article"},{"_id":"5b57805e60a07d00037870db","term":"Subpage","definition":"Under a Page"},{"_id":"5b5780787baf140003ef762b","term":"Changelog","definition":"Place where you can go see changes"},{"_id":"5b57808aa599780003538deb","term":"Discussions","definition":"Forum where your customers can share their concerns"},{"_id":"5b5780a17baf140003ef762d","term":"Documentation","definition":"Section where the documentation lives"},{"_id":"5b5780b7a599780003538ded","term":"Reference","definition":"The API Explorer"},{"_id":"5b57f37a0c8f760003f3023c","term":"pop up","definition":"You have to have explicitly use a glossary term by typing \"<<\" in the ReadMe editor. The glossary feature will not find and replace all words that match your glossary term."},{"_id":"5de95d1041cd310027f8c4fb","term":"internal","definition":"Your administrators that can access the dashboard of your projects"},{"_id":"5de95d159e4c7e002f220927","term":"external","definition":"Your members that have access to the hubs"},{"_id":"5deaf50c2aa750006dbd2f3a","term":"login mechanisms","definition":"ReadMe's login mechanisms. We can support Custom OAuth, Custom JWT, SAML, Local ReadMe, and No Login"},{"_id":"6011e68de8693f0014d8d932","term":"RDMD","definition":"Our custom ReadMe-flavored Markdown engine. It's based on remark (meaning it supports all the Markdown syntax you know and love) and adds some custom syntax to support ReadMe features such as variables, glossary (i.e. what you're reading right now!), and emoji! You can read more about RDMD in our docs: rdmd.readme.io"},{"_id":"60231e0409f34c005e4dc876","term":"API Explorer","definition":"Our interactive, OpenAPI-based API reference section. Users can construct and send API requests and view code samples in a language of their choice—all without leaving the docs!"},{"_id":"6063c8810f5a29000f35b3f9","term":"API Reference","definition":"The API reference section of your ReadMe documentation contains information about each of your endpoints and the data that is sent and received. Users can construct and send API requests and view code samples in a language of their choice—all without leaving the docs!"},{"_id":"612d776812676f005baabd10","term":"dereferenced","definition":"The act of dereferencing all `$ref` pointers within an OpenAPI definition, replacing each reference with the value or schema that it resolves to."},{"_id":"6206b7c1ea0c3b0046a1de0c","term":"Enterprise Group","definition":"An Enterprise Group refers to the parent dashboard where all global settings are managed, including adding and removing Teammates and End Users, and managing all child projects."},{"_id":"6206b7d64516a0048e3d346c","term":"Enterprise Group Owner","definition":"There is one owner per Enterprise Group, referred to as “Owner” in the Enterprise Group dashboard. The Enterprise Group Owner has the same access privileges as an Enterprise Group Admin. Additionally, ReadMe Product Experience Managers will contact Enterprise Group Owners as the primary point of contact for decisions and updates related to renewals, beta programs, and new feature releases."},{"_id":"6206bb05eb045403e8f2320e","term":"Enterprise Group Admin","definition":"An Enterprise Group Admin is referred to as “Admin” in the Enterprise Group dashboard. Enterprise Group Admins can invite, remove, and choose the permission level of other Teammates and End Users. They can also add and remove projects from the Enterprise Group, and access any related project via the project’s dashboard."},{"_id":"6206bc6653a2eb002c07a928","term":"Project Admin","definition":"A Project Admin is the default role when you invite a team member to a ReadMe project. A Project Admin has access to a project’s dashboard and can make most team- and project-management related changes with the exception of upgrading your plan, cloning or deleting a project, and transferring project ownership, which only Project Owners can do."},{"_id":"6206bc77c66af9003f0d3ea7","term":"Project Owner","definition":"There can only be one Project Owner per ReadMe project. This role has all of the privileges of a Project Admin, with the additional abilities to upgrade your plan, clone or delete a project, and transfer project ownership."},{"_id":"6206bcae37c9d902c95e84b6","term":"Viewer","definition":"When you invite a Teammate to an Enterprise Group you have the ability to set their access to “Viewer”. The Viewer role has access to view the hubs of all child projects within an Enterprise Group, but has no access to the dashboards of the child projects or to the Enterprise Group dashboard."},{"_id":"62153fd7c4e9aa00950ea1b2","term":"variables","definition":"The variables feature allows you to assign a specific variable (e.g. name) to automatically propagate default values, across all of your documentation. We recommend using this feature for product names and links to allow for simpler bulk editing. Additionally, you can use variables to pass in user data so that aspects of your documentation are personalized for logged in users, such as their name or API key. In order to pass in personalized user data, you first need to set up custom login, which integrates with either JWT or Webhooks. You can set up variables for your project in the Variable Defaults section (within Configuration) of your dashboard."},{"_id":"62153fe068bc3e0058bb1af1","term":"dashboard","definition":"The dashboard, or dash, refers to the admin panel of ReadMe’s platform where all of your projects and settings are housed. Only Project Admins have access to the dashboard. The dashboard is where Admins can edit projects, create and edit documentation, and more."},{"_id":"6217d529a29ea90056b28f2b","term":"hype train","definition":"A 🚆 full of hype"},{"_id":"622fb5f271f5f406608a919f","term":"Custom","definition":"When you invite a Teammate to an Enterprise Group you have the ability to set their access to “Custom”. From there, you’ll set permission access on a per project basis as either No Access, Viewer (only hub-side access to the project), or Admin (dashboard- and hub-side access to the project)."},{"_id":"6230bd1b776d1d033e134034","term":"Teammates","definition":"Teammates are members of your team who manage (e.g. write, edit, update) documentation related to your Enterprise Group projects. Teammates can have one of three permissions: Admin, Viewer, or Custom."},{"_id":"6230bd51fb5b3d005587bca8","term":"End Users","definition":"End Users are consumers of your ReadMe projects’ private documentation whom you’d like to grant hub-side access to. As an Enterprise customer, you can invite End Users, define project access, and configure login methods within your Enterprise Group dashboard."},{"_id":"62583c1c51d83c0353152996","term":"hub","definition":"The hub is the end user-facing side of your project, or documentation site. This is where individuals can view and interact with your documentation. For example when you set a page in your dashboard “live”, this becomes visible on the hub-side of your project. Your hub—or hubs if you have multiple projects—is updated through your project’s dashboard. Your hub is visible to anyone with the URL for your documentation, unless you set your project to private."},{"_id":"64da475bf12f5d0b6eb764fb","term":"Slug","definition":"A URL slug last identifying string of a specific page.\n\nThe slug for https://docs.readme.com/main/docs/intro-to-readme is \"intro-to-readme\""},{"_id":"64da47a94a89fd11c7884cec","term":"dash","definition":"The Dashboard, or Dash, refers to the admin panel of ReadMe’s platform where all of your projects and settings are housed. Only Project Owners and Admins have access to the Dashboard. The Dashboard is where Admins can edit projects, create and edit documentation, and more."},{"_id":"64da49a3af7e2f00190b8748","term":"Glossary","definition":"Glossary terms allow users to provide additional context to specific words or phrases when a viewer hovers over that term. Terms are defined in plaintext under Project Dashboard > Glossary. When editing content, type \"<<\" to insert a Glossary term!"}],"variables":{"user":{},"defaults":[{"source":"security","_id":"6391241e050251002a8e3d28","name":"apiKey","type":"http","scheme":"basic","apiSetting":"5f7cee46dd6cb1037e316143"},{"source":"","_id":"649b525defea78003e22657d","name":"user","default":"API_KEY"},{"source":"","_id":"6352dfca576cb4000f2e14ef","name":"ReadMe","default":"Default Value"},{"source":"","_id":"63d2fc41cba521006b5197ea","name":"id","default":"README_API_KEY"},{"source":"","_id":"63efced04cc2e710b54258b1","name":"email","default":"user@example.com"},{"source":"","_id":"649f33f4cae212001dcd4573","name":"dasdf","default":"aSD"}]},"project":{"_id":"5f7ce9e3a5504d0414d025d0","appearance":{"rdmd":{"callouts":{"useIconFont":false},"theme":{"background":"","border":"","markdownEdge":"","markdownFont":"","markdownFontSize":"","markdownLineHeight":null,"markdownRadius":"","markdownText":"","markdownTitle":"","markdownTitleFont":"","mdCodeBackground":"","mdCodeFont":"","mdCodeRadius":"","mdCodeTabs":"","mdCodeText":"","tableEdges":"","tableHead":"","tableHeadText":"","tableRow":"","tableStripe":"","tableText":"","text":"","title":""}},"main_body":{"type":"all-docs"},"colors":{"highlight":"","main":"#018EF5","main_alt":"","header_text":"","body_highlight":"","custom_login_link_color":""},"typography":{"headline":"Open+Sans:400:sans-serif","body":"Open+Sans:400:sans-serif","typekit":false,"tk_key":"","tk_headline":"scriptalert2script","tk_body":"scriptalert3script"},"header":{"style":"solid","img":[],"img_size":"auto","img_pos":"tl"},"body":{"style":"overlap"},"global_landing_page":{"html":"","redirect":""},"referenceLayout":"row","link_logo_to_url":true,"theme":"solid","overlay":"triangles","landing":true,"sticky":false,"hide_logo":false,"childrenAsPills":false,"subheaderStyle":"links","splitReferenceDocs":true,"logo":["https://files.readme.io/3977150-small-readme-blue.png","readme-blue.png",442,80,"#000000","https://files.readme.io/80be47c-readme-blue.png"],"logo_white":["https://files.readme.io/7f72f63-small-readme-white_1.png","readme-white (1).png",464,80,"#ffffff","https://files.readme.io/100ba28-readme-white_1.png"],"logo_white_use":true,"favicon":[],"stylesheet":"/** Collapsing sidebars, CSS; added by ReadMe.io **/\n\n.theme-solid .sidebar-nav ul li a {\n padding-left: 10px;\n}\n.section-left .sidebar-nav h4:hover {\n cursor: pointer;\n color: #111; \n}\n\n.header h1.navbar-brand {\n width: 150px !important;\n}\n\n.header .searchbox.focus input {\n width: 180px;\n}\n\n\n/* Homepage */\n.support { \n position: relative;\n height: 288px;\n padding: 25px 40px 20px 70px;\n}\n\n.page-home #header {\n \t\tmargin-bottom: 25px;\n}\n\n.support img {\n width: 1070px;\n position: absolute;\n left: 0;\n top: 0; \n}\nheader .support h2 {\n\t\tdisplay: none;\n}\n\nheader .support p {\n color: #fff;\n margin: 53px 0 25px;\n line-height: 1.6em;\n \tfont-weight: 500;\n font-size: 17px;\n color: rgba(255,255,255,0.8);\n}\nheader .support p strong {\n color: #fff;\n}\n\n.theme-solid header .support a.btn {\n background: #fff;\n color: #1c84cc;\n font-weight: bold;\n box-shadow: 0 2px 2px rgba(0,0,0,0.1); \n font-size: 13px;\n text-transform: uppercase;\n font-weight: 700;\n transition: 0.15s ease-out;\n \tpadding: 6px 20px 10px;\n}\n.theme-solid header .support a.btn:hover {\n box-shadow: 0 2px 2px rgba(0,0,0,0.3);\n}\n.theme-solid header .support a.btn:active {\n box-shadow: 0 0;\n \tposition: relative;\n top: 1px;\n}\n.theme-solid header .support a .fa {\n display: inline-block;\n text-align: left;\n color: #1c84cc;\n transition: 0.15s ease-out;\n width: 0px;\n overflow: hidden;\n opacity: 0;\n top: 4px;\n position: relative;\n font-size: 18px;\n transform: scale(0.6);\n}\n.theme-solid header .support a.btn:hover .fa {\n width: 28px;\n opacity: 1;\n transform: scale(1);\n}\n\nh1.navbar-brand {\n\tmargin-left: 16px !important;\n}\n.header .nav.navbar-nav.pull-right {\n right: -9px;\n}\n.container.body-container {\n\tpadding-left: 0;\n padding-right: 0;\n}","stylesheet_hub2":"/* ================\n Globals\n ================ */\nbody {\n --font-brand: 'Marfa', var(--font-family);\n --font-brand-mono: 'Marfa Mono', var(--font-family-mono);\n --GridGap: var(--lg);\n}\n\n@media (max-width: 450px) {\n body {\n --GridGap: var(--md);\n }\n}\n\n.Main {\n display: flex;\n flex-direction: column;\n gap: var(--GridGap);\n\tpadding: var(--GridGap);\n}\n\n.Main.Main {\n width: auto;\n}\n \n.Main ol,\n.Main ul {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.Main figure {\n margin: 0;\n}\n\n.flex {\n display: flex;\n}\n\n.flex_col {\n flex-direction: column;\n}\n\n.flex_center {\n align-items: center;\n}\n\n.flex_grow {\n flex: 1 1;\n}\n\n.flex_shrink {\n flex: 0 0;\n}\n\n@font-face {\n font-display: block;\n font-family: Marfa;\n font-weight: 400;\n src: url('//readme.com/static/fonts/ABCMarfa-Regular.woff2') format('woff2');\n}\n\n@font-face {\n font-display: block;\n font-family: Marfa;\n font-weight: 600;\n src: url('//readme.com/static/fonts/ABCMarfa-Bold.woff2') format('woff2');\n}\n\n@font-face {\n font-display: block;\n font-family: 'Marfa Mono';\n font-weight: 400;\n src: url('//readme.com/static/fonts/ABCMarfaMono-Regular.woff2') format('woff2');\n}\n\n/* ================\n Overwrite Nav\n ================ */\n.rm-Header nav[class*=\"Header-left\"] {\n visibility: hidden;\n}\n\n/* ================\n Hide Search Filters\n ================ */\n.rm-SearchModal details {\n /* display: none; */\n}\n\n/* ================\n Header\n ================ */\nbody .ThemeContext_line .rm-Header {\n --Header-background: var(--color-primary);\n --Header-border-color: rgba(0,0,0,0.1);\n --Header-border-width: 1px;\n --Header-button-color: var(--white);\n --Header-button-hover: rgba(255,255,255,0.2);\n --Header-button-active: rgba(255,255,255,0.75);\n --Header-button-focus: rgba(255,255,255,0.075);\n --Header-jumpTo-background: var(--color-primary-inverse);\n --Header-jumpTo-color: var(--color-primary);\n --Header-logo-height: var(--header-logo-height);\n}\n\n@media (max-width: 768px) {\n body .ThemeContext_line .rm-Header {\n --Header-border-color: transparent;\n\t}\n\n .rm-Header-top.rm-Header-top {\n border: 0;\n }\n \n .rm-Header {\n overflow: hidden;\n }\n\n .hub-is-home .rm-Header-bottom {\n overflow: auto;\n }\n}\n\n[data-color-mode=\"dark\"] .rm-Header {\n box-shadow: 0 1px 0 rgba(0,0,0,0.1);\n}\n\n@media (prefers-color-scheme: dark) {\n [data-color-mode=\"auto\"] .rm-Header {\n\t\tbox-shadow: 0 1px 0 rgba(0,0,0,0.1);\n }\n}\n\n/* ================\n The Hero Section\n ================ */\n.Hero {\n background: var(--color-primary);\n padding: var(--xl) var(--lg);\n}\n\n.Hero-h1,\n.Hero-p {\n font-family: var(--font-brand);\n margin: 0 auto;\n text-align: center;\n}\n\n.Hero-h1 {\n color: var(--white);\n font-size: 70px !important;\n font-weight: var(--font-weight-bold) !important;\n line-height: 1.2;\n max-width: 650px;\n}\n\n@media (max-width: 1220px) {\n\t.Hero-h1 {\n\t font-size: 64px !important;\n }\n}\n\n\n@media (max-width: 990px) {\n\t.Hero-h1 {\n\t font-size: 52px !important;\n max-width: 500px;\n }\n}\n\n@media (max-width: 450px) {\n .Hero-h1 {\n\t font-size: 42px !important;\n }\n}\n\n.Hero-p {\n color: var(--blue100) !important;\n font-size: 20px;\n font-weight: 400;\n line-height: 1.4;\n max-width: 400px;\n}\n\n.Hero-banner {\n\t align-items: center;\n\t display: flex;\n flex-direction: column;\n\t gap: 0.75em;\n\t margin-left: auto;\n margin-right: auto;\n\t margin-bottom: 2em;\n max-width: 300px;\n padding-bottom: 2em;\n text-align: center;\n}\n .Hero-banner-text {\n\t color: var(--white);\n\t font-family: var(--font-body);\n\t font-size: 1.25em;\n\t font-weight: var(--font-weight);\n\t max-width: 30ch;\n}\n .Hero-banner-text-hover {\n\t box-shadow: 0 2px 0 rgba(0, 0, 0, );\n\t font-style: italic;\n\t font-weight: 800;\n\t position: relative;\n\t text-decoration: none;\n}\n\n .Hero-banner-text-hover:hover, .Hero-banner-text-hover:active, .Hero-banner-text-hover:focus {\n\t animation: banner-text 1s infinite;\n\t box-shadow: none;\n}\n @media (prefers-reduced-motion) {\n\t .Hero-banner-text-hover:hover, .Hero-banner-text-hover:active, .Hero-banner-text-hover:focus {\n\t\t animation: banner-text 1s steps(1, end) infinite;\n\t}\n}\n @keyframes banner-text {\n\t 0% {\n\t\t text-shadow: none;\n\t}\n\t 33% {\n\t\t text-shadow: -2px 2px 0 var(--green), -4px 4px 0 var(--yellow), -6px 6px 0 var(--red);\n\t}\n\t 66% {\n\t\t text-shadow: 2px 2px 0 var(--green), 4px 4px 0 var(--yellow), 6px 6px 0 var(--red);\n\t}\n\t 100% {\n\t\t text-shadow: none;\n\t}\n}\n .Hero-banner-new {\n\t position: relative;\n}\n .Hero-banner-new-label {\n\t --Banner-playState: running;\n\t height: 2.5em;\n\t position: relative;\n\t width: 2.5em;\n}\n .Hero-banner-new-svg {\n\t animation: rotate 2s linear infinite var(--Banner-playState);\n\t height: 2.5em;\n\t position: absolute;\n\t width: 2.5em;\n\t z-index: 1;\n}\n @media (prefers-reduced-motion) {\n\t .Hero-banner-new-svg {\n\t\t animation: none;\n\t}\n}\n @keyframes rotate {\n\t 0% {\n\t\t transform: rotate(0deg);\n\t}\n\t 100% {\n\t\t transform: rotate(360deg);\n\t}\n}\n .Hero-banner-new-svg.blue {\n\t fill: var(--white);\n\t left: 0;\n\t right: 0;\n\t z-index: 5;\n}\n .Hero-banner-new-svg.green {\n\t bottom: -0.1em;\n\t fill: var(--green);\n\t left: -0.1em;\n\t z-index: 4;\n}\n .Hero-banner-new-svg.yellow {\n\t bottom: -0.2em;\n\t fill: var(--yellow);\n\t left: -0.2em;\n\t z-index: 3;\n}\n .Hero-banner-new-svg.red {\n\t bottom: -0.3em;\n\t fill: var(--red);\n\t left: -0.3em;\n\t z-index: 2;\n}\n .Hero-banner-new-text {\n\t align-items: center;\n\t color: var(--blue);\n\t display: flex;\n\t font-family: var(--font-body);\n\t font-size: 0.65em;\n\t font-weight: 800;\n\t inset: 0;\n\t justify-content: center;\n\t margin: auto;\n\t position: absolute;\n\t text-align: center;\n\t transform: rotate(-20deg) translateX(0.05em);\n\t z-index: 6;\n}\n .Hero-banner em {\n\t font-style: italic;\n}\n .Hero-banner a {\n\t color: currentcolor;\n}\n\n/* ================\n Tile Grid\n ================ */\n.Section {\n --Tile-padding: var(--lg);\n --Tile-color: var(--color-text-default);\n --Tile-heading-margin: var(--Tile-padding);\n --Tile-heading-color: var(--color-text-minimum);\n \n border-radius: 15px;\n}\n\n.Section_product .TileGrid {\n grid-template-columns: repeat(4, 1fr);\n grid-template-rows: repeat(3, auto);\n}\n \n@media (max-width: 1260px) {\n .Section_product .TileGrid {\n grid-template-columns: repeat(3, 1fr);\n grid-template-rows: repeat(4, 1fr);\n }\n}\n\n@media (max-width: 960px) {\n .Section_product .TileGrid {\n grid-template-columns: repeat(2, 1fr);\n grid-template-rows: repeat(5, 1fr);\n }\n}\n\n@media (max-width: 675px) {\n .Section_product .TileGrid {\n grid-template-columns: 1fr;\n grid-template-rows: auto;\n }\n \n .Section_product .TileGrid-item {\n }\n}\n\n.Section_product .TileGrid-item:nth-child(1) { grid-area: 1 / 1 / 3 / 2 }\n.Section_product .TileGrid-item:nth-child(2) { grid-area: 1 / 2 / 2 / 3 }\n.Section_product .TileGrid-item:nth-child(3) { grid-area: 1 / 3 / 2 / 4 }\n.Section_product .TileGrid-item:nth-child(4) { grid-area: 1 / 4 / 2 / 5 }\n.Section_product .TileGrid-item:nth-child(5) { grid-area: 2 / 2 / 3 / 3 }\n.Section_product .TileGrid-item:nth-child(6) { grid-area: 2 / 3 / 3 / 4 }\n.Section_product .TileGrid-item:nth-child(7) { grid-area: 2 / 4 / 3 / 5 }\n.Section_product .TileGrid-item:nth-child(8) { grid-area: 3 / 2 / 4 / 5 }\n\n@media (max-width: 1260px) {\n .Section_product .TileGrid-item:nth-child(1) { grid-area: 1 / 1 / 2 / 4 }\n .Section_product .TileGrid-item:nth-child(1) a { height: auto }\n .Section_product .TileGrid-item:nth-child(2) { grid-area: 2 / 1 / 3 / 2 }\n .Section_product .TileGrid-item:nth-child(3) { grid-area: 2 / 2 / 3 / 3 }\n .Section_product .TileGrid-item:nth-child(4) { grid-area: 2 / 3 / 3 / 4 }\n .Section_product .TileGrid-item:nth-child(5) { grid-area: 3 / 1 / 4 / 2 }\n .Section_product .TileGrid-item:nth-child(6) { grid-area: 3 / 2 / 4 / 3 }\n .Section_product .TileGrid-item:nth-child(7) { grid-area: 3 / 3 / 4 / 4 }\n .Section_product .TileGrid-item:nth-child(8) { grid-area: 4 / 1 / 5 / 4 }\n}\n\n@media (max-width: 960px) {\n .Section_product .TileGrid-item:nth-child(2) { grid-area: 2 / 1 / 3 / 2 }\n .Section_product .TileGrid-item:nth-child(3) { grid-area: 2 / 2 / 3 / 3 }\n .Section_product .TileGrid-item:nth-child(4) { grid-area: 3 / 1 / 4 / 2 }\n .Section_product .TileGrid-item:nth-child(5) { grid-area: 3 / 2 / 4 / 3 }\n .Section_product .TileGrid-item:nth-child(6) { grid-area: 4 / 1 / 5 / 2 }\n .Section_product .TileGrid-item:nth-child(7) { grid-area: 4 / 2 / 5 / 3 }\n .Section_product .TileGrid-item:nth-child(8) { grid-area: 5 / 1 / 6 / 3 }\n}\n\n@media (max-width: 675px) {\n .Section_product .TileGrid-item.TileGrid-item {\n grid-area: unset;\n }\n}\n\n.Section_dark {\n background: #001242;\n}\n\n.Section_enterprise {\n --Tile-color: var(--white);\n --Tile-heading-margin: var(--md);\n --Tile-heading-color: var(--white);\n\n padding: var(--Tile-padding);\n}\n\n@media (max-width: 500px) {\n .Section_enterprise {\n\t padding: var(--md);\n }\n}\n\n.Section_enterprise .TileGrid {\n grid-template-columns: repeat(4, 1fr);\n}\n\n@media (max-width: 1280px) {\n .Section_enterprise .TileGrid {\n\t grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@media (max-width: 715px) {\n .Section_enterprise .TileGrid {\n\t grid-template-columns: 1fr;\n }\n}\n\n.Section_enterprise .Tile-heading {\n opacity: 0.5;\n}\n\n.TileGrid {\n display: grid;\n grid-gap: var(--sm);\n}\n\n.Tile-heading {\n color: var(--Tile-heading-color);\n font-size: 14px;\n font-weight: var(--font-weight-bold) !important;\n margin-bottom: var(--md);\n margin-left: var(--Tile-heading-margin);\n}\n\n/* ================\n Tiles\n ================ */\n.Tile {\n border: 1px solid transparent;\n border-radius: 15px;\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n padding: var(--md);\n position: relative;\n transition: box-shadow var(--transition-slow);\n}\n\n.Tile:hover .Tile-title,\n.Tile:active .Tile-title,\n.Tile:focus-visible .Tile-title {\n color: var(--blue);\n}\n\n.Tile:hover .icon-arrow-right2,\n.Tile:active .icon-arrow-right2,\n.Tile:focus-visible .icon-arrow-right2 {\n color: var(--blue);\n transform: translateX(2px);\n}\n\n.Tile:focus,\n.Tile:focus-visible {\n outline: 0;\n}\n\n.Tile_outline {\n border-color: var(--color-border-default);\n padding: var(--Tile-padding);\n}\n\n.Tile_outline:hover {\n border-color: var(--color-input-border-hover);\n}\n\n.Tile_outline:active,\n.Tile_outline:focus-visible {\n border-color: var(--color-input-border-active);\n box-shadow: 0 0 0 3px var(--color-input-border-focus);\n}\n\n.Tile_sm .Tile-title {\n font-size: 16px;\n margin-top: 0;\n}\n\n.Tile_sm .Tile-description {\n font-size: 14px;\n}\n\n.Tile-title {\n align-items: center;\n color: var(--Tile-color);\n display: flex;\n font-family: var(--font-brand) !important;\n font-size: 22px;\n font-weight: var(--font-weight-bold);\n gap: var(--sm);\n margin-top: 15px;\n}\n\n@media (max-width: 450px) {\n .Tile-title {\n display: block;\n }\n}\n\n.Tile-title > span {\n flex: 0 0 auto;\n}\n\n.Tile-title > .icon-arrow-right2 {\n font-size: 16px;\n opacity: 0.5;\n transition: transform var(--transition-slow) var(--transition-timing);\n}\n\n.Tile-description {\n color: var(--Tile-color);\n font-size: 15px;\n line-height: 1.4;\n margin-top: 5px;\n}\n\n.Tile-image {\n bottom: 0;\n height: auto;\n position: absolute;\n right: 0;\n width: 100%;\n}\n\n/* everything for the big tile */\n@media (max-width: 1260px) {\n .Tile_lg {\n flex-direction: row;\n gap: var(--md);\n justify-content: space-between;\n\t\tpadding: var(--md) 0 0 var(--md);\n }\n \n .Tile_lg .flex {\n flex: 1 1 auto;\n max-width: 380px;\n }\n \n .Tile-image {\n max-height: 180px;\n max-width: 400px;\n position: unset;\n width: auto;\n }\n}\n\n@media (max-width: 650px) {\n .Tile_lg {\n align-items: flex-end;\n flex-direction: column;\n }\n \n .Tile_lg .flex {\n max-width: none;\n padding-right: var(--md);\n }\n \n .Tile-image {\n max-width: 100%;\n }\n}\n\n/* ================\n Tile Icon\n ================ */\n.TileIcon {\n align-items: center;\n border: 1px solid var(--color-border-default);\n border-radius: var(--border-radius-lg);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05), inset 0 -1px 2px rgba(0, 0, 0, 0.2), inset 0 1px 1px rgba(255, 255, 255, 0.2);\n color: var(--white);\n display: inline-flex;\n font-size: 24px;\n height: var(--button-md);\n justify-content: center;\n width: var(--button-md);\n}\n\n.TileIcon_sm {\n font-size: 16px;\n height: 24px;\n width: 24px;\n}\n\n.TileIcon_green {\n background: linear-gradient(180deg, #59D4A4 0%, #12CA93 100%);\n}\n\n.TileIcon_red {\n background: linear-gradient(180deg, #F17C81 0%, #E95F6A 100%);\n}\n\n.TileIcon_yellow {\n background: linear-gradient(180deg, #FFD885 0%, #F7C543 100%);\n}\n\n.TileIcon_blue {\n background: linear-gradient(180deg, #619EFE 0%, #118CFD 100%);\n}\n\n.TileIcon_purple {\n background: linear-gradient(180deg, #9987C9 0%, #8470BE 100%);\n}\n\n.TileIcon_orange {\n background: linear-gradient(180deg, #FFAA7B 0%, #FE8C4E 100%);\n}\n\n.TileIcon_gray {\n background: linear-gradient(180deg, #ADB4C1 0%, #939EAE 100%);\n}\n\n/* ================\n ReadMe API\n ================ */\n.ReadMeAPI {\n overflow: hidden;\n padding-bottom: var(--xxl);\n padding-top: var(--xl);\n position: relative;\n}\n\n.ReadMeAPI-container {\n margin-left: auto;\n margin-right: auto;\n\tmax-width: 960px;\n padding-left: var(--lg);\n padding-right: var(--lg);\n}\n\n.ReadMeAPI-h2 {\n color: var(--white);\n font-family: var(--font-brand);\n font-size: 42px;\n font-weight: var(--font-weight-bold) !important;\n line-height: 1.2;\n margin-bottom: 0;\n margin-top: 0;\n}\n\n@media (max-width: 650px) {\n\t.ReadMeAPI-h2 {\n\t font-size: 30px;\n }\n}\n\n\n@media (max-width: 500px) {\n .ReadMeAPI-h2 {\n font-size: 28px;\n -webkit-hyphens: auto;\n hyphens: auto;\n\t\toverflow-wrap: break-word;\n }\n}\n\n.ReadMeAPI-h2 .yellow {\n color: var(--yellow);\n}\n\n.ReadMeAPI-a {\n color: var(--white);\n display: inline-flex;\n\tfont-family: var(--font-brand);\n font-size: 24px;\n gap: var(--xs);\n margin-top: var(--md);\n opacity: 0.75;\n}\n\n.ReadMeAPI-a:hover,\n.ReadMeAPI-a:active,\n.ReadMeAPI-a:focus-within {\n color: var(--white);\n opacity: 1;\n}\n\n.ReadMeAPI-a:hover .icon-arrow-right2,\n.ReadMeAPI-a:active .icon-arrow-right2,\n.ReadMeAPI-a:focus-within .icon-arrow-right2 {\n transform: translateX(2px);\n}\n\n.ReadMeAPI-a .icon-arrow-right2 {\n opacity: 0.5;\n transition: transform var(--transition-slow) var(--transition-timing);\n}\n\n.ReadMeAPI-figure {\n bottom: -48px;\n display: flex;\n gap: var(--md);\n left: -10%;\n position: absolute;\n}\n\n.ReadMeAPI-svg {\n background: linear-gradient(180deg, #002077 0%, #002077 100%);\n border: 1px solid rgba(0, 0, 0, 0.1);\n border-radius: 15px;\n box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.05), inset 0px -1px 2px rgba(0, 0, 0, 0.2), inset 0px 1px 1px rgba(255, 255, 255, 0.2);\n height: 110px;\n width: 406px;\n}\n\n/* ================\n Eyebrow Text\n ================ */\n.Eyebrow {\n background: var(--yellow);\n border-radius: var(--border-radius);\n color: #001242;\n display: table;\n font-family: var(--font-brand-mono);\n font-weight: var(--font-weight);\n font-size: 14px;\n line-height: 1;\n margin-bottom: var(--md);\n padding: var(--xs) var(--sm);\n}\n\n/* ================\n Cards\n ================ */\n.Card {\n align-items: center;\n border: 1px solid var(--color-border-default);\n border-radius: 15px;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n overflow: hidden;\n padding: var(--lg);\n}\n\n.Card .TileIcon + .Card-heading {\n margin-top: var(--md);\n}\n\n.Card-heading {\n color: var(--color-text-default);\n font-size: 26px;\n font-weight: var(--font-weight-bold) !important;\n margin: 0;\n}\n\n.Card-heading,\n.Card-description {\n font-family: var(--font-brand); \n text-align: center;\n}\n\n.Card-link {\n color: var(--blue);\n font-size: 16px;\n font-weight: var(--font-weight-bold);\n gap: var(--xs);\n margin-top: var(--md);\n}\n\n.Card-link:hover,\n.Card-link:active,\n.Card-link:focus-visible {\n color: var(--blue) !important;\n}\n\n.Card-link:hover .icon-arrow-right2,\n.Card-link:active .icon-arrow-right2,\n.Card-link:focus-visible .icon-arrow-right2 {\n transform: translateX(2px);\n}\n\n.Card-link .icon-arrow-right2 {\n opacity: 0.5;\n transition: transform var(--transition-slow) var(--transition-timing);\n}\n\n.Card-description {\n color: var(--color-text-minimum) !important;\n font-size: 18px;\n font-weight: var(--font-weight);\n line-height: 1.4;\n margin: var(--xs) auto 0;\n max-width: 400px;\n}\n\n/* ================\n Community & Changelog\n ================ */\n@media (max-width: 1100px) {\n .CommunityChangelog {\n flex-direction: column;\n\t}\n}\n\n/* ================\n Community\n ================ */\n.Community {\n display: flex;\n flex-direction: column;\n gap: var(--sm);\n margin-left: auto;\n margin-right: auto;\n max-width: 300px;\n padding-top: 170px;\n position: relative;\n width: 100%;\n}\n\n@media (max-width: 500px) {\n .Community { \n\t max-width: 250px;\n }\n}\n\n.Community::before {\n background: url(//files.readme.io/6d9a6e6-bubs.png);\n background-position: center;\n background-repeat: no-repeat;\n background-size: 500px;\n content: '';\n height: 100%;\n left: -100px;\n position: absolute;\n top: 30px;\n width: 500px\n}\n\n@media (max-width: 1100px) {\n .Community {\n padding-top: 140px;\n }\n \n .Community::before {\n top: 0;\n }\n}\n\n.Community-from p,\n.Community-to p {\n margin: 0;\n}\n\na.Community-to {\n font-weight: var(--font-weight-bold);\n}\n\na.Community-to:hover,\na.Community-to:active,\na.Community-to:focus-visible {\n color: var(--white);\n}\n\na.Community-to:hover .icon-arrow-right2,\na.Community-to:active .icon-arrow-right2,\na.Community-to:focus-visible .icon-arrow-right2 {\n transform: translateX(2px);\n}\n\n.Community-to .icon-arrow-right2 {\n color: var(--white);\n display: inline-block;\n opacity: 0.5;\n transition: transform var(--transition-slow) var(--transition-timing);\n}\n\n.Community-from,\n.Community-to {\n border-radius: 1.15rem;\n line-height: 1.25;\n max-width: 75%;\n padding: 0.5rem .875rem;\n position: relative;\n width: fit-content;\n word-wrap: break-word;\n}\n\n.Community-from::before,\n.Community-to::before,\n.Community-from::after,\n.Community-to::after {\n bottom: -0.1rem;\n content: '';\n height: 1rem;\n position: absolute;\n}\n\n.Community-to {\n align-self: flex-end;\n background-color: #248bf5;\n color: var(--white); \n}\n\n.Community-to::before {\n border-bottom-left-radius: 0.8rem 0.7rem;\n border-right: 1rem solid #248bf5;\n right: -0.35rem;\n transform: translate(0, -0.1rem);\n}\n\n.Community-to::after {\n background-color: var(--color-bg-page);\n border-bottom-left-radius: 0.5rem;\n right: -40px;\n transform:translate(-30px, -2px);\n width: 10px;\n}\n\n.Community-from {\n align-items: flex-start;\n background-color: #e5e5ea;\n color: var(--gray0);\n}\n\n.Community-from::before {\n border-bottom-right-radius: 0.8rem 0.7rem;\n border-left: 1rem solid #e5e5ea;\n left: -0.35rem;\n transform: translate(0, -0.1rem);\n}\n\n.Community-from::after {\n background-color: #f0f0f0;\n border-bottom-right-radius: 0.5rem;\n left: 20px;\n transform: translate(-30px, -2px);\n width: 10px;\n}\n\n.Community-avatar {\n bottom: -2px;\n height: 50px;\n left: -60px;\n position: absolute;\n width: 50px;\n}\n\n/* ================\n Changelogs\n ================ */\n.Changelogs {\n margin-top: var(--md);\n}\n\n.ChangelogPost {\n padding-bottom: var(--md);\n padding-top: var(--md);\n}\n\n.ChangelogPost + .ChangelogPost {\n border-top: 1px solid var(--color-border-default);\n}\n\n.ChangelogPost-tag {\n color: var(--color-text-muted);\n font-size: 14px;\n font-weight: var(--font-weight-bold);\n}\n\n.ChangelogPost-link {\n align-items: center;\n color: var(--color-text-default);\n display: flex;\n\tfont-size: 20px;\n font-weight: var(--font-weight-bold);\n gap: var(--xs);\n margin-top: var(--sm);\n}\n\n.ChangelogPost-link:hover,\n.ChangelogPost-link:active,\n.ChangelogPost-link:focus-visible {\n color: var(--blue);\n}\n\n.ChangelogPost-link:hover .icon-arrow-right2,\n.ChangelogPost-link:active .icon-arrow-right2,\n.ChangelogPost-link:focus-visible .icon-arrow-right2 {\n opacity: 0.5;\n transform: none;\n}\n\n.ChangelogPost-link .icon-arrow-right2 {\n\tfont-size: 16px;\n\topacity: 0;\n transform: translateX(-2px);\n transition: opacity var(--transition-slow), transform var(--transition-slow);\n}\n\n.ChangelogPost-date {\n color: var(--color-text-minimum);\n font-size: 14px;\n font-weight: var(--font-weight);\n margin-top: var(--xs);\n}\n\n/* ================\n Bonus Cards (Case Studies, Pricing, Careers)\n ================ */\n@media (max-width: 1100px) {\n .BonusCards {\n flex-direction: column;\n\t}\n}\n\n/* ================\n Footer\n ================ */\n.Footer {\n align-items: flex-start;\n gap: var(--xxl);\n padding: var(--GridGap);\n}\n\n@media (max-width: 1220px) {\n .Footer { \n\t gap: var(--lg);\n }\n}\n\n@media (max-width: 850px) {\n .Footer { \n\t\tflex-direction: column;\n }\n}\n\n.Footer-logo {\n height: 30px;\n width: fit-content;\n}\n\n.Footer-heading {\n color: var(--color-text-default);\n font-family: var(--font-brand);\n font-size: 64px;\n font-weight: var(--font-weight-bold) !important;\n line-height: 1;\n margin-bottom: 0;\n margin-top: var(--lg);\n}\n\n@media (max-width: 1220px) {\n .Footer-heading {\n\t font-size: 52px;\n }\n}\n\n\n@media (max-width: 990px) {\n .Footer-heading {\n\t font-size: 42px;\n }\n}\n\n.Footer-heading-highlight {\n color: var(--blue);\n}\n\n.Footer-description {\n color: var(--color-text-default) !important;\n font-family: var(--font-brand);\n font-size: 20px;\n line-height: 1.4;\n margin-bottom: 0;\n margin-top: var(--md);\n}\n\n.Footer-links {\n background: #e7f3ff;\n border-radius: var(--border-radius-lg);\n color: var(--blue);\n font-family: var(--font-brand);\n font-size: 14px;\n gap: var(--sm);\n margin-top: var(--lg);\n padding: var(--sm);\n width: fit-content;\n}\n\n.Footer-links .Button {\n font-family: var(--font-brand);\n}\n\n.Footer-links .Button_primary_text {\n color: var(--gray20);\n font-weight: var(--font-weight-bold);\n padding-left: 0;\n}\n\n.Footer-escape {\n color: var(--blue);\n font-weight: var(--font-weight-bold);\n margin-top: var(--lg);\n width: fit-content;\n}\n\n.Footer-escape .icon-arrow-right2 {\n opacity: 0.5;\n}\n\n.Footer-owlberts {\n height: 470px;\n width: auto;\n}\n\n@media (max-width: 1220px) {\n .Footer-owlberts {\n\t height: 400px;\n }\n}\n\n@media (max-width: 990px) {\n .Footer-owlberts {\n\t height: 350px;\n }\n}\n\n@media (max-width: 500px) {\n\t.Footer-owlberts {\n height: auto;\n\t\tmax-width: 100%;\n width: 100%;\n }\n}\n.markdown-body .callout[theme=\"🥳\"] {\n --background: #C878E1;\n --border: #375CD7;\n --text: #f5fffa;\n}\n\n.markdown-body .callout[theme=\"🚀\"] {\n --background: #;\n --border: #;\n --text: #;\n}\n\n.markdown-body .callout[theme=\"🎉\"] {\n --background: #;\n --border: #;\n --text: #;\n}\n\n.rm-Changelog .markdown-body p:first-of-type {\n font-size: 1.25em;\n margin: 30px 0;\n}\n\n.rm-Changelog .markdown-body h2 + p {\n font-size: 1.25em;\n}\n\n.rm-Changelog .markdown-body h3 {\n margin-top: 30px;\n}","javascript":"/* Collapsing sidebars, JavaScript; added by ReadMe.io */\n\n$('.sidebar-nav ul').each(function() {\n var $active = $('li.active', $(this));\n if(!$active.length) {\n $(this).hide();\n }\n});\n\n$('.sidebar-nav h4').click(function() {\n $(this).next('ul').slideToggle();\n});\n\n$('.sidebar-nav').find('a.active').closest('ul').css('display','block'); // optional, keeps the active documentation page's parent category expanded","javascript_hub2":"/* eslint-disable\n */\n\n// Commenting out the scripts below, don't think they work anymore\n/*\n$(window).on('pageLoad', function(e, state){\n $('*:contains(\":oid:\"):last').html(`'${makeid(12)}'`);\n});\n\n$('*:contains(\":oid:\"):last').html(`'${makeid(12)}'`);\n\nfunction makeid(length) {\n var result = '';\n var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n var charactersLength = characters.length;\n for ( var i = 0; i < length; i++ ) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n}\n*/\n\nfunction getScript(source, callback) {\n var script = document.createElement(\"script\");\n var prior = document.getElementsByTagName(\"script\")[0];\n script.async = 1;\n\n script.onload = script.onreadystatechange = function (_, isAbort) {\n if (isAbort || !script.readyState || /loaded|complete/.test(script.readyState)) {\n script.onload = script.onreadystatechange = null;\n script = undefined;\n\n if (!isAbort && callback) setTimeout(callback, 0);\n }\n };\n\n script.src = source;\n prior.parentNode.insertBefore(script, prior);\n}\n\n/* Hacky script for loading Twitter widget\n */\nfunction loadTwitterWidget() {\n var hasTwitterWidget = document.getElementsByClassName(\"twitter-tweet\");\n if (hasTwitterWidget.length > 0) {\n getScript(\"https://platform.twitter.com/widgets.js\", () => {});\n }\n}\n\nfunction custom404Stuff() {\n // the search bar takes a bit to show up, so we need to wait for it\n setTimeout(() => {\n const helpTextKBD = document.getElementById(\"search-key-404-clone\");\n const helpInnerText = document.querySelector(\"#SearchBert + kbd\")?.innerText;\n if (helpTextKBD && helpInnerText) {\n const newText = helpInnerText.replace(\"\\n\", \"\");\n console.debug(\"updating 404 text for this element:\",helpTextKBD,\"to this text:\",helpInnerText);\n helpTextKBD.innerText = newText;\n }\n }, 250)\n\n}\n\nfunction rebaseMobileSearchButton() {\n var searchButton = $(\".rm-Header-top .rm-SearchToggle\");\n var menuHolder = $(\".rm-Flyout > div\");\n if (searchButton.length && menuHolder.length) {\n searchButton.appendTo(menuHolder);\n }\n}\n\n/* *********************\n Populate marketing site URL in GLP logo\n ********************* */\nfunction updateGLPLogoLink() {\n if (location.pathname !== \"/\") return;\n document.querySelector('a.rm-Logo:not([class^=\"Mobile\"])').href = \"https://readme.com\";\n}\n\n/* *********************\n Load Changelog from RSS feed\n ********************* */\n\nfunction loadChangelogPosts() {\n if (location.pathname !== \"/\") return;\n const changelogRss = \"/main/changelog.rss\";\n\n const changelogIcon = {\n added: { color: \"green\", icon: \"plus1\" },\n improved: { color: \"purple\", icon: \"heart1\" },\n fixed: { color: \"blue\", icon: \"check1\" },\n deprecated: { color: \"yellow\", icon: \"alert-triangle\" },\n };\n\n const parser = new RSSParser({ customFields: { item: [\"type\"] } });\n parser.parseURL(changelogRss, function (err, feed) {\n if (err) throw err;\n const parent = document.getElementById(\"changelogs-target\");\n const changelogEntries = [];\n\n for (let i = 0; i <= 2; i += 1) {\n const entry = feed.items[i];\n\n const changelogPost = document.createElement(\"li\");\n changelogPost.className = \"flex flex_col ChangelogPost\";\n\n if (entry.type) {\n const changelogType = document.createElement(\"div\");\n changelogType.className = \"flex flex_center ChangelogPost-tag\";\n changelogType.style = \"gap: var(--xs)\";\n\n const typeIcon = document.createElement(\"span\");\n const { color, icon } = changelogIcon[entry.type];\n typeIcon.className = `TileIcon TileIcon_sm TileIcon_${color} icon icon-${icon}`;\n\n const typeText = document.createElement(\"span\");\n typeText.innerText = entry.type;\n typeText.style = \"text-transform: capitalize;\";\n\n changelogType.appendChild(typeIcon);\n changelogType.appendChild(typeText);\n changelogPost.appendChild(changelogType);\n }\n\n const changelogTitle = document.createElement(\"a\");\n changelogTitle.className = \"ChangelogPost-link\";\n changelogTitle.href = entry.link;\n changelogTitle.innerText = entry.title;\n\n const changelogTitleArrow = document.createElement(\"i\");\n changelogTitleArrow.className = \"icon icon-arrow-right2\";\n changelogTitle.appendChild(changelogTitleArrow);\n changelogPost.appendChild(changelogTitle);\n\n const changelogDate = document.createElement(\"span\");\n changelogDate.className = \"ChangelogPost-date\";\n changelogDate.innerText = timeago.format(entry.isoDate);\n changelogPost.appendChild(changelogDate);\n\n changelogEntries.push(changelogPost);\n }\n\n while (parent.firstChild) {\n parent.removeChild(parent.firstChild);\n }\n\n changelogEntries.forEach(function (entry) {\n parent.appendChild(entry);\n });\n });\n}\n\n/* *********************\n Generate Nav\n ********************* */\nconst links = [\n {\n href: \"https://docs.readme.com\",\n icon: \"icon-landing-page-2\",\n text: \"Home\",\n },\n {\n href: \"https://docs.readme.com/main/docs\",\n icon: \"icon-guides\",\n text: \"Product Guides\",\n },\n {\n href: \"https://docs.readme.com/ent/docs\",\n icon: \"icon-guides\",\n text: \"Enterprise Guides\",\n },\n {\n href: \"https://docs.readme.com/main/recipes\",\n icon: \"icon-recipes\",\n text: \"Recipes\",\n },\n {\n href: \"https://docs.readme.com/main/reference\",\n icon: \"icon-references\",\n text: \"API Reference\",\n },\n {\n href: \"https://docs.readme.com/main/changelog\",\n icon: \"icon-changelog\",\n text: \"Changelog\",\n },\n {\n href: \"https://docs.readme.com/main/discuss\",\n icon: \"icon-discussions\",\n text: \"Discussions\",\n },\n {\n href: \"https://docs.readme.com/rdmd/docs\",\n icon: \"icon-markdown\",\n text: \"ReadMe Markdown\",\n },\n];\n\nfunction populateMainNav() {\n const mainNav = document.querySelector('.rm-Header nav:first-child');\n const mobileNav = document.querySelector(\".rm-Flyout > div\");\n\n // Completely replaces nav\n function cleanUpdate() {\n // Create new links\n let mainLinkEls = \"\";\n let mobileLinkEls = \"\";\n links.map(({ href, icon, text }) => {\n // determine if link is active\n let isActive = false;\n const hrefUrl = new URL(href);\n if (location.pathname.includes(hrefUrl.pathname)) isActive = true;\n // landing page quirk\n if (hrefUrl.pathname === \"/\" && location.pathname !== \"/\") isActive = false;\n\n mainLinkEls += `<a class=\"Button Button_md Button_slate_text rm-Header-bottom-link ${\n isActive ? \"active\" : \"\"\n }\" href=${hrefUrl.pathname}><i class=${icon}></i><span>${text}</span></a>`;\n mobileLinkEls += `<a class=\"NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- ${\n isActive ? \"active\" : \"\"\n }\" href=${\n hrefUrl.pathname\n } target=\"_self\"><i class=\"NavItem-item-anchorzz3banOxXKjr ${icon}\"></i><span class=\"NavItem-textSlZuuL489uiw\">${text}</span></a>`;\n });\n\n // Replace main nav\n mainNav.innerHTML = mainLinkEls;\n\n // Add standard links (customer stories, logo, etc.) onto mobile nav\n mobileLinkEls += '<hr class=\"MobileFlyout-divider10xf7R2X1MeW\">';\n mobileLinkEls +=\n '<a class=\"NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- NavItem_dropdown-muted1xJVuczwGc74\" href=\"https://readme.com/customers\" rel=\"noopener\" target=\"_blank\" to=\"https://readme.com/customers\">Customer Stories</a>';\n mobileLinkEls +=\n '<a class=\"NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- NavItem_dropdown-muted1xJVuczwGc74\" href=\"https://readme.com/pricing\" rel=\"noopener\" target=\"_blank\" to=\"https://readme.com/pricing\">Pricing</a>';\n // TODO: figure out how to add nav item for user controls\n mobileLinkEls += \"\";\n mobileLinkEls +=\n '<a class=\"MobileFlyout-logo3Lq1eTlk1K76 Header-logo1Xy41PtkzbdG rm-Logo\" href=\"https://readme.com\" target=\"_self\"><img alt=\"ReadMe Logo\" class=\"Header-logo-img3YvV4lcGKkeb rm-Logo-img\" src=\"https://files.readme.io/68da258-644ef91-readme-white_1.svg\"></a>';\n\n // Replace mobile nav\n mobileNav.innerHTML = mobileLinkEls;\n }\n\n console.debug(\"about to update nav for \", location.pathname);\n\n if (location.pathname.startsWith(\"/main\")) {\n // for the main project, we take a more surgical approach to constructing the nav\n try {\n // Rename guides node, create home and enterprise nodes and insert them\n function insertNavLinks(navNode) {\n // if we've already inserted the nav links, don't do anything\n if (navNode.firstChild.innerText.trim() === \"Home\") return;\n\n navNode.firstChild.childNodes[1].innerText = \"Product Guides\";\n const baseNode = navNode.firstChild.cloneNode(true);\n\n links.map((link, i) => {\n const hrefUrl = new URL(link.href);\n // don't create nodes for existing main project\n if (hrefUrl.pathname.startsWith(\"/main\")) return true;\n\n const newNode = baseNode.cloneNode(true);\n newNode.classList.remove(\"active\");\n newNode.removeAttribute(\"aria-current\");\n newNode.href = hrefUrl.pathname;\n newNode.childNodes[1].innerText = link.text;\n newNode.firstChild.classList.replace(\"icon-guides\", link.icon);\n\n const nodeToInsertBefore = navNode.childNodes[i] || null;\n navNode.insertBefore(newNode, nodeToInsertBefore);\n });\n }\n\n console.debug(\"surgical nav bar update\");\n insertNavLinks(mainNav);\n insertNavLinks(mobileNav);\n } catch (e) {\n console.debug(\"clean nav bar update due to surgical update error\");\n cleanUpdate();\n }\n } else {\n console.debug(\"clean nav bar update due to non-main project route\");\n cleanUpdate();\n }\n\n mainNav.style.visibility = \"visible\";\n}\n\n$(window).on(\"pageLoad\", function (e, state) {\n console.debug(\"pageLoad event for\", window.location.pathname, state);\n loadTwitterWidget();\n // rebaseMobileSearchButton();\n loadChangelogPosts();\n populateMainNav();\n updateGLPLogoLink();\n custom404Stuff();\n});\n","html_promo":"<div class=\"support\"><img src=\"https://files.readme.io/563527b-rr-owlbert.png\"><div class=\"col-sm-9\"><h2>ReadMe Documentation</h2><p>Welcome to the <strong>ReadMe Documentation</strong>, where you'll find comprehensive guides and community support to help you start working with ReadMe as quickly as possible!</p><a href=\"/docs\" class=\"btn btn-lg btn-primary\"><i class=\"fa fa-rocket\"></i>Get Started</a></div></div>","html_body":"<div>Hello</div>","html_footer":"","html_head":"<!-- Slack App Suggestions Tag -->\n<meta name=\"slack-app-id\" content=\"AQBR3NZUY\">\n<!-- Top-level OG image attributes (applied on every page) -->\n<meta property=\"og:image\" content=\"https://readme.com/static/og_images/index.png\">\n<meta property=\"og:image:secure_url\" content=\"https://readme.com/static/og_images/index.png\">\n<meta name=\"twitter:image\" content=\"https://readme.com/static/og_images/index.png\">\n<meta property=\"og:image:width\" content=\"1200\">\n<meta property=\"og:image:height\" content=\"630\">\n<meta name=\"author\" content=\"ReadMe\">\n\n<script\n src=\"https://code.jquery.com/jquery-3.6.0.min.js\"\n integrity=\"sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=\"\n crossorigin=\"anonymous\"></script>\n<script>\n$.noConflict();\n</script>\n<!-- RSS feed parsing script -->\n<script src=\"//unpkg.com/rss-parser@3.12.0/dist/rss-parser.min.js\"></script>\n<script src=\"//unpkg.com/timeago.js@4.0.2/dist/timeago.min.js\"></script>\n","html_footer_meta":"<!--\n<script\n src=\"https://code.jquery.com/jquery-2.1.4.min.js\"\n crossorigin=\"anonymous\"></script>\n<script>\n$.noConflict();\n</script>\n-->\n","html_hidelinks":false,"showVersion":false,"hideTableOfContents":false,"nextStepsLabel":"What's Next","promos":[{"extras":{"type":"html","buttonPrimary":"get-started","buttonSecondary":"none"},"title":"The ReadMe Developer Hub","text":"","_id":"542334961972e21d7dae4e01"}],"sidebarStyle":"ellipses","showMetricsInReference":true,"referenceSimpleMode":true,"stylesheet_hub3":"","loginLogo":[],"logo_large":false,"colorScheme":"system","changelog":{"layoutExpanded":true,"showAuthor":false,"showExactDate":true},"allowApiExplorerJsonEditor":false},"child":{"_id":"5f7ce9e3a5504d0414d025d0","appearance":{"rdmd":{"callouts":{"useIconFont":false},"theme":{"background":"","border":"","markdownEdge":"","markdownFont":"","markdownFontSize":"","markdownLineHeight":null,"markdownRadius":"","markdownText":"","markdownTitle":"","markdownTitleFont":"","mdCodeBackground":"","mdCodeFont":"","mdCodeRadius":"","mdCodeTabs":"","mdCodeText":"","tableEdges":"","tableHead":"","tableHeadText":"","tableRow":"","tableStripe":"","tableText":"","text":"","title":""}},"main_body":{"type":"all-docs"},"colors":{"highlight":"","main":"#018EF5","main_alt":"","header_text":"","body_highlight":"","custom_login_link_color":""},"typography":{"headline":"Open+Sans:400:sans-serif","body":"Open+Sans:400:sans-serif","typekit":false,"tk_key":"","tk_headline":"scriptalert2script","tk_body":"scriptalert3script"},"header":{"style":"solid","img":[],"img_size":"auto","img_pos":"tl"},"body":{"style":"overlap"},"global_landing_page":{"html":"","redirect":""},"referenceLayout":"row","link_logo_to_url":true,"theme":"solid","overlay":"triangles","landing":true,"sticky":false,"hide_logo":false,"childrenAsPills":false,"subheaderStyle":"links","splitReferenceDocs":true,"logo":["https://files.readme.io/3977150-small-readme-blue.png","readme-blue.png",442,80,"#000000","https://files.readme.io/80be47c-readme-blue.png"],"logo_white":["https://files.readme.io/7f72f63-small-readme-white_1.png","readme-white (1).png",464,80,"#ffffff","https://files.readme.io/100ba28-readme-white_1.png"],"logo_white_use":true,"favicon":[],"stylesheet":"/** Collapsing sidebars, CSS; added by ReadMe.io **/\n\n.theme-solid .sidebar-nav ul li a {\n padding-left: 10px;\n}\n.section-left .sidebar-nav h4:hover {\n cursor: pointer;\n color: #111; \n}\n\n.header h1.navbar-brand {\n width: 150px !important;\n}\n\n.header .searchbox.focus input {\n width: 180px;\n}\n\n\n/* Homepage */\n.support { \n position: relative;\n height: 288px;\n padding: 25px 40px 20px 70px;\n}\n\n.page-home #header {\n \t\tmargin-bottom: 25px;\n}\n\n.support img {\n width: 1070px;\n position: absolute;\n left: 0;\n top: 0; \n}\nheader .support h2 {\n\t\tdisplay: none;\n}\n\nheader .support p {\n color: #fff;\n margin: 53px 0 25px;\n line-height: 1.6em;\n \tfont-weight: 500;\n font-size: 17px;\n color: rgba(255,255,255,0.8);\n}\nheader .support p strong {\n color: #fff;\n}\n\n.theme-solid header .support a.btn {\n background: #fff;\n color: #1c84cc;\n font-weight: bold;\n box-shadow: 0 2px 2px rgba(0,0,0,0.1); \n font-size: 13px;\n text-transform: uppercase;\n font-weight: 700;\n transition: 0.15s ease-out;\n \tpadding: 6px 20px 10px;\n}\n.theme-solid header .support a.btn:hover {\n box-shadow: 0 2px 2px rgba(0,0,0,0.3);\n}\n.theme-solid header .support a.btn:active {\n box-shadow: 0 0;\n \tposition: relative;\n top: 1px;\n}\n.theme-solid header .support a .fa {\n display: inline-block;\n text-align: left;\n color: #1c84cc;\n transition: 0.15s ease-out;\n width: 0px;\n overflow: hidden;\n opacity: 0;\n top: 4px;\n position: relative;\n font-size: 18px;\n transform: scale(0.6);\n}\n.theme-solid header .support a.btn:hover .fa {\n width: 28px;\n opacity: 1;\n transform: scale(1);\n}\n\nh1.navbar-brand {\n\tmargin-left: 16px !important;\n}\n.header .nav.navbar-nav.pull-right {\n right: -9px;\n}\n.container.body-container {\n\tpadding-left: 0;\n padding-right: 0;\n}","stylesheet_hub2":".markdown-body .callout[theme=\"🥳\"] {\n --background: #C878E1;\n --border: #375CD7;\n --text: #f5fffa;\n}\n\n.markdown-body .callout[theme=\"🚀\"] {\n --background: #;\n --border: #;\n --text: #;\n}\n\n.markdown-body .callout[theme=\"🎉\"] {\n --background: #;\n --border: #;\n --text: #;\n}\n\n.rm-Changelog .markdown-body p:first-of-type {\n font-size: 1.25em;\n margin: 30px 0;\n}\n\n.rm-Changelog .markdown-body h2 + p {\n font-size: 1.25em;\n}\n\n.rm-Changelog .markdown-body h3 {\n margin-top: 30px;\n}","javascript":"/* Collapsing sidebars, JavaScript; added by ReadMe.io */\n\n$('.sidebar-nav ul').each(function() {\n var $active = $('li.active', $(this));\n if(!$active.length) {\n $(this).hide();\n }\n});\n\n$('.sidebar-nav h4').click(function() {\n $(this).next('ul').slideToggle();\n});\n\n$('.sidebar-nav').find('a.active').closest('ul').css('display','block'); // optional, keeps the active documentation page's parent category expanded","javascript_hub2":"","html_promo":"<div class=\"support\"><img src=\"https://files.readme.io/563527b-rr-owlbert.png\"><div class=\"col-sm-9\"><h2>ReadMe Documentation</h2><p>Welcome to the <strong>ReadMe Documentation</strong>, where you'll find comprehensive guides and community support to help you start working with ReadMe as quickly as possible!</p><a href=\"/docs\" class=\"btn btn-lg btn-primary\"><i class=\"fa fa-rocket\"></i>Get Started</a></div></div>","html_body":"<div>Hello</div>","html_footer":"","html_head":"","html_footer_meta":"","html_hidelinks":false,"showVersion":false,"hideTableOfContents":false,"nextStepsLabel":"What's Next","promos":[{"extras":{"type":"html","buttonPrimary":"get-started","buttonSecondary":"none"},"title":"The ReadMe Developer Hub","text":"","_id":"542334961972e21d7dae4e01"}],"sidebarStyle":"ellipses","showMetricsInReference":true,"referenceSimpleMode":true,"stylesheet_hub3":"","loginLogo":[],"logo_large":false,"colorScheme":"system","changelog":{"layoutExpanded":true,"showAuthor":false,"showExactDate":true},"allowApiExplorerJsonEditor":false},"custom_domain":"","childrenProjects":[],"derivedPlan":"enterprise","description":"Beautiful documentation made easy.","error404":"404","experiments":["64cd2000e0b0c1b1fa55712d"],"first_page":"docs","flags":{"allow_hub2":false,"enterprise":true,"alwaysShowDocPublishStatus":false,"hub2":true,"migrationRun":true,"migrationSwaggerRun":true,"oauth":false,"swagger":true,"correctnewlines":false,"rdmdCompatibilityMode":false,"speedyRender":false,"allowXFrame":true,"cookieAuthentication":false,"hideGoogleAnalytics":false,"newEditor":true,"oldMarkdown":false,"newMarkdownBetaProgram":false,"newApiExplorer":true,"disableAnonForum":true,"directGoogleToStableVersion":false,"translation":false,"staging":false,"newSearch":true,"tutorials":true,"allowApiExplorerJsonEditor":false,"useReactApp":true,"newHeader":false,"referenceRedesign":true,"auth0Oauth":false,"graphql":false,"singleProjectEnterprise":false,"dashReact":false,"allowReferenceUpgrade":true,"metricsV2":true,"newEditorDash":true,"enableRealtimeExperiences":false,"reviewWorkflow":true,"star":true,"allowDarkMode":true,"forceDarkMode":false,"useReactGLP":false,"disablePasswordlessLogin":false,"personalizedDocs":true,"myDevelopers":true,"superHub":false,"developerDashboard":true,"allowReusableOTPs":false,"dashHomeRefresh":true,"owlbotAi":true,"apiV2":true,"git":{"read":false,"write":false},"superHubBeta":true,"dashQuickstart":false,"disableAutoTranslate":false,"customBlocks":false,"devDashHub":false,"disableSAMLScoping":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"apiAccessRevoked":false,"passwordlessLogin":"default","disableSignups":false,"billingRedesignEnabled":true,"developerPortal":false,"mdx":false,"superHubDevelopment":false,"annualBillingEnabled":true,"devDashBillingRedesignEnabled":false,"enableOidc":false,"customComponents":false,"disableDiscussionSpamRecaptchaBypass":false,"developerViewUsersData":true,"changelogRssAlwaysPublic":false,"bidiSync":false,"superHubMigrationSelfServeFlow":false},"fullBaseUrl":"https://developers.readme.io/","git":{"migration":{"createRepository":{},"transformation":{},"migratingPages":{},"enableSuperhub":{}},"sync":{"connectedRepository":{"organization":{},"privacy":{}},"installationRequest":{},"github":[]}},"glossaryTerms":[{"_id":"5b57804ec6af890003de66cf","term":"Page","definition":"Also known as an article"},{"_id":"5b57805e60a07d00037870db","term":"Subpage","definition":"Under a Page"},{"_id":"5b5780787baf140003ef762b","term":"Changelog","definition":"Place where you can go see changes"},{"_id":"5b57808aa599780003538deb","term":"Discussions","definition":"Forum where your customers can share their concerns"},{"_id":"5b5780a17baf140003ef762d","term":"Documentation","definition":"Section where the documentation lives"},{"_id":"5b5780b7a599780003538ded","term":"Reference","definition":"The API Explorer"},{"_id":"5b57f37a0c8f760003f3023c","term":"pop up","definition":"You have to have explicitly use a glossary term by typing \"<<\" in the ReadMe editor. The glossary feature will not find and replace all words that match your glossary term."},{"_id":"5de95d1041cd310027f8c4fb","term":"internal","definition":"Your administrators that can access the dashboard of your projects"},{"_id":"5de95d159e4c7e002f220927","term":"external","definition":"Your members that have access to the hubs"},{"_id":"5deaf50c2aa750006dbd2f3a","term":"login mechanisms","definition":"ReadMe's login mechanisms. We can support Custom OAuth, Custom JWT, SAML, Local ReadMe, and No Login"},{"_id":"6011e68de8693f0014d8d932","term":"RDMD","definition":"Our custom ReadMe-flavored Markdown engine. It's based on remark (meaning it supports all the Markdown syntax you know and love) and adds some custom syntax to support ReadMe features such as variables, glossary (i.e. what you're reading right now!), and emoji! You can read more about RDMD in our docs: rdmd.readme.io"},{"_id":"60231e0409f34c005e4dc876","term":"API Explorer","definition":"Our interactive, OpenAPI-based API reference section. Users can construct and send API requests and view code samples in a language of their choice—all without leaving the docs!"},{"_id":"6063c8810f5a29000f35b3f9","term":"API Reference","definition":"The API reference section of your ReadMe documentation contains information about each of your endpoints and the data that is sent and received. Users can construct and send API requests and view code samples in a language of their choice—all without leaving the docs!"},{"_id":"612d776812676f005baabd10","term":"dereferenced","definition":"The act of dereferencing all `$ref` pointers within an OpenAPI definition, replacing each reference with the value or schema that it resolves to."},{"_id":"6206b7c1ea0c3b0046a1de0c","term":"Enterprise Group","definition":"An Enterprise Group refers to the parent dashboard where all global settings are managed, including adding and removing Teammates and End Users, and managing all child projects."},{"_id":"6206b7d64516a0048e3d346c","term":"Enterprise Group Owner","definition":"There is one owner per Enterprise Group, referred to as “Owner” in the Enterprise Group dashboard. The Enterprise Group Owner has the same access privileges as an Enterprise Group Admin. Additionally, ReadMe Product Experience Managers will contact Enterprise Group Owners as the primary point of contact for decisions and updates related to renewals, beta programs, and new feature releases."},{"_id":"6206bb05eb045403e8f2320e","term":"Enterprise Group Admin","definition":"An Enterprise Group Admin is referred to as “Admin” in the Enterprise Group dashboard. Enterprise Group Admins can invite, remove, and choose the permission level of other Teammates and End Users. They can also add and remove projects from the Enterprise Group, and access any related project via the project’s dashboard."},{"_id":"6206bc6653a2eb002c07a928","term":"Project Admin","definition":"A Project Admin is the default role when you invite a team member to a ReadMe project. A Project Admin has access to a project’s dashboard and can make most team- and project-management related changes with the exception of upgrading your plan, cloning or deleting a project, and transferring project ownership, which only Project Owners can do."},{"_id":"6206bc77c66af9003f0d3ea7","term":"Project Owner","definition":"There can only be one Project Owner per ReadMe project. This role has all of the privileges of a Project Admin, with the additional abilities to upgrade your plan, clone or delete a project, and transfer project ownership."},{"_id":"6206bcae37c9d902c95e84b6","term":"Viewer","definition":"When you invite a Teammate to an Enterprise Group you have the ability to set their access to “Viewer”. The Viewer role has access to view the hubs of all child projects within an Enterprise Group, but has no access to the dashboards of the child projects or to the Enterprise Group dashboard."},{"_id":"62153fd7c4e9aa00950ea1b2","term":"variables","definition":"The variables feature allows you to assign a specific variable (e.g. name) to automatically propagate default values, across all of your documentation. We recommend using this feature for product names and links to allow for simpler bulk editing. Additionally, you can use variables to pass in user data so that aspects of your documentation are personalized for logged in users, such as their name or API key. In order to pass in personalized user data, you first need to set up custom login, which integrates with either JWT or Webhooks. You can set up variables for your project in the Variable Defaults section (within Configuration) of your dashboard."},{"_id":"62153fe068bc3e0058bb1af1","term":"dashboard","definition":"The dashboard, or dash, refers to the admin panel of ReadMe’s platform where all of your projects and settings are housed. Only Project Admins have access to the dashboard. The dashboard is where Admins can edit projects, create and edit documentation, and more."},{"_id":"6217d529a29ea90056b28f2b","term":"hype train","definition":"A 🚆 full of hype"},{"_id":"622fb5f271f5f406608a919f","term":"Custom","definition":"When you invite a Teammate to an Enterprise Group you have the ability to set their access to “Custom”. From there, you’ll set permission access on a per project basis as either No Access, Viewer (only hub-side access to the project), or Admin (dashboard- and hub-side access to the project)."},{"_id":"6230bd1b776d1d033e134034","term":"Teammates","definition":"Teammates are members of your team who manage (e.g. write, edit, update) documentation related to your Enterprise Group projects. Teammates can have one of three permissions: Admin, Viewer, or Custom."},{"_id":"6230bd51fb5b3d005587bca8","term":"End Users","definition":"End Users are consumers of your ReadMe projects’ private documentation whom you’d like to grant hub-side access to. As an Enterprise customer, you can invite End Users, define project access, and configure login methods within your Enterprise Group dashboard."},{"_id":"62583c1c51d83c0353152996","term":"hub","definition":"The hub is the end user-facing side of your project, or documentation site. This is where individuals can view and interact with your documentation. For example when you set a page in your dashboard “live”, this becomes visible on the hub-side of your project. Your hub—or hubs if you have multiple projects—is updated through your project’s dashboard. Your hub is visible to anyone with the URL for your documentation, unless you set your project to private."},{"_id":"64da475bf12f5d0b6eb764fb","term":"Slug","definition":"A URL slug last identifying string of a specific page.\n\nThe slug for https://docs.readme.com/main/docs/intro-to-readme is \"intro-to-readme\""},{"_id":"64da47a94a89fd11c7884cec","term":"dash","definition":"The Dashboard, or Dash, refers to the admin panel of ReadMe’s platform where all of your projects and settings are housed. Only Project Owners and Admins have access to the Dashboard. The Dashboard is where Admins can edit projects, create and edit documentation, and more."},{"_id":"64da49a3af7e2f00190b8748","term":"Glossary","definition":"Glossary terms allow users to provide additional context to specific words or phrases when a viewer hovers over that term. Terms are defined in plaintext under Project Dashboard > Glossary. When editing content, type \"<<\" to insert a Glossary term!"}],"graphqlSchema":"https://test.com","gracePeriod":{"enabled":false,"endsAt":null},"shouldGateDash":false,"hasOneChild":false,"healthCheck":{"settings":{"page":"nz3r09cr7dk1","status":false,"url":""},"provider":"statusPage"},"intercom_secure_emailonly":false,"intercom":"m6855w1q","is_active":true,"internal":"","jwtExpirationTime":0,"landing_bottom":[{"pageType":"Documentation","alignment":"left","type":"docs"},{"type":"html","alignment":"left","html":""}],"mdxMigrationStatus":"rdmd","metrics":{"monthlyLimit":50000000,"thumbsEnabled":true,"planLimit":20000000,"realtime":{"dashEnabled":true,"hubEnabled":true},"monthlyPurchaseLimit":0,"meteredBilling":{}},"modules":{"landing":false,"docs":true,"examples":true,"reference":true,"changelog":true,"discuss":true,"suggested_edits":true,"logs":false,"custompages":true,"tutorials":true,"graphql":false},"name":"ReadMe","nav_names":{"docs":"","reference":"","changelog":"","discuss":"","tutorials":"","recipes":""},"oauth_url":"","onboardingCompleted":{"api":true,"appearance":true,"documentation":true,"domain":true,"jwt":true,"logs":true,"metricsSDK":true},"owlbot":{"enabled":true,"isPaying":false,"lastIndexed":"2024-11-27T15:43:52.894Z","customization":{"answerLength":"long","customTone":"","defaultAnswer":"","forbiddenWords":"","tone":"neutral"},"copilot":{"enabled":true,"hasBeenUsed":false,"installedCustomPage":""}},"owner":{"id":null,"email":null,"name":null},"plan":"enterprise","planOverride":"enterprise","planSchedule":{"stripeScheduleId":null,"changeDate":null,"nextPlan":null},"planStatus":"","planTrial":"enterprise","readmeScore":{"components":{"newDesign":{"enabled":true,"points":25},"reference":{"enabled":true,"points":50},"tryItNow":{"enabled":true,"points":35},"syncingOAS":{"enabled":false,"points":10},"customLogin":{"enabled":true,"points":25},"metrics":{"enabled":true,"points":40},"recipes":{"enabled":true,"points":15},"pageVoting":{"enabled":true,"points":1},"suggestedEdits":{"enabled":true,"points":10},"support":{"enabled":true,"points":5},"htmlLanding":{"enabled":true,"points":5},"guides":{"enabled":true,"points":10},"changelog":{"enabled":true,"points":5},"glossary":{"enabled":true,"points":1},"variables":{"enabled":true,"points":1},"integrations":{"enabled":true,"points":2}},"percentScore":100,"totalScore":230},"reCaptchaSiteKey":"6LdHWIgcAAAAAEDbyrvc-xSVdHo2tRjrkamgjjof","reference":{"alwaysUseDefaults":false,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":true,"enableOAuthFlows":false},"seo":{"overwrite_title_tag":false},"stable":{"_id":"62056dee230e07007218bf4c","version":"2.0","version_clean":"2.0.0","codename":"product-guides","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["62056dee230e07007218be04","5f7ce9e3a5504d0414d024c0","62056dee230e07007218be05","5730e2e9053a062b00cf4754","5730e2e9053a062b00cf4755","62056dee230e07007218be06","62056dee230e07007218be07","5730e2e9053a062b00cf4758","5730e2e9053a062b00cf4759","5730e2e9053a062b00cf475a","62056dee230e07007218be08","62056dee230e07007218be09","5730e2e9053a062b00cf475d","62056dee230e07007218be0a","5730e2e9053a062b00cf475f","5f7ce9e3a5504d0414d024c7","57e31e95611a860e00f97e22","582fa20c4479222092198d40","5849c782fcabe31900998f6e","58b9e83068a4a5190011dcb2","58bdec0f455ca125001d9505","5a6bbecf2116e20022de8b19","5a7c96d2324bc1001f64ad8b","5a7c9d777dce000013d8b96f","5a81e7ff761cf30012731823","5a81e886bf4a2b0012592b49","5a81eaa5761cf3001273183d","62056dee230e07007218be0b","5a95f47858371e001fd651bb","5a95f53b5c3020002b02aa8c","5a95f57c4091e600125d0249","5a95f5984c0ecf0046a28ba3","5a95f6754091e600125d0252","5a95f6b94091e600125d025b","5a95f7104c0ecf0046a28bce","5a95f7954c0ecf0046a28c57","5a95f7d15c3020002b02aacf","5af6287d426c9d000377c583","5afdf7d37506a80003730d40","5b359df811baf70003a14454","62056dee230e07007218be0c","5bbbb66b8dac1100048174f0","5bbbb6768dac1100048174f3","62056dee230e07007218be0d","5c6f5766877e850021140a1a","5ca51733d177a40373ab97f9","5cc26539681cf8001b9ce9f3","5d0aa5163fd65b0019f2d14e","5d0bba3dd628fd0051fbb232","5d0bba522df6470020205266","5d0bce567f3ac6000f0ef6a3","5d1a4e276ffc8100194874f2","5d3213a673f65d0012b11fb0","5d5b7af3e33f0b005608b793","5d5b7b1d68f1dc00113744d4","5d5b7b9f0c74ae001e8e2186","5d5b7beffe91cc002f6d67eb","5d5b7c21fbd0f80012334964","5d5b7c2df20ff50052c02fec","5dc9f8a8ea4314002f5575ff","5dcdad4c3fd5ca0052534ac4","5e1e2350f309936b889b2448","5f7ce9e3a5504d0414d024fd","62056dee230e07007218be0e","62056dee230e07007218be0f","62056dee230e07007218be10","5f7cf1a9cb79be02e1a588c9","62056dee230e07007218be11","5f9c861053998401d1c2c222","5fc55b794fd67b00645d25e2","62056dee230e07007218be12","61084e16a18107003124ef8f","62056dee230e07007218be13","61e1f0d7a8a68f007059c4cb","61e1f0fc0106310039807732","62292aea889520008ed0113b","6233cab9410abc001c9822eb","6234eb59f6eccc02f76cb807","624cb20585a75d004c978f57","624e2238df4eb60013286917","633470b833bb8d04e657051a","6376ba4d127d990003112b72","63e43d347c3efc02c02c5986","6442d3485ae2d10e2654d2f3","64f8c3b94e8f64001f07ea58","650b7bdc6fa4eb0074722335","65848b391e628e004514a0df","65848bb94819f1004aa6338e","658493ce0d7680006b35bd9d","6732850c3cee9b006fe502ba"],"createdAt":"2016-05-09T19:20:09.413Z","project":"5f7ce9e3a5504d0414d025d0","releaseDate":"2016-05-09T19:20:09.413Z","__v":0,"pdfStatus":"complete","forked_from":"5f7ce9e3a5504d0414d0243f","updatedAt":"2024-11-11T22:28:28.339Z"},"subdomain":"developers","subpath":"main","superHubWaitlist":false,"topnav":{"left":[{"type":"url","text":"Customer Stories","url":"https://readme.com/customers"},{"type":"url","text":"ReadMe Blog","url":"https://blog.readme.com"}],"right":[{"type":"user"}],"edited":true,"bottom":[]},"trial":{"trialDeadlineEnabled":false,"trialEndsAt":"2020-10-20T22:04:19.564Z"},"translate":{"provider":"transifex","show_widget":false,"key_public":"","org_name":"","project_name":"","languages":[]},"url":"https://readme.com","versions":[{"_id":"5f7ce9e3a5504d0414d0243f","codename":"Hub 2 (Pre-Docs Migration)","createdAt":"2016-05-09T19:20:09.413Z","is_deprecated":true,"project":"5f7ce9e3a5504d0414d025d0","releaseDate":"2016-05-09T19:20:09.413Z","__v":51,"is_beta":false,"is_hidden":true,"is_stable":false,"version":"2.0-archive","version_clean":"2.0.0-archive","categories":["5f7ce9e3a5504d0414d024bf","5f7ce9e3a5504d0414d024c0","5f7ce9e3a5504d0414d024c1","5730e2e9053a062b00cf4754","5730e2e9053a062b00cf4755","5f7ce9e3a5504d0414d024c2","5f7ce9e3a5504d0414d024c3","5730e2e9053a062b00cf4758","5730e2e9053a062b00cf4759","5730e2e9053a062b00cf475a","5f7ce9e3a5504d0414d024c4","5f7ce9e3a5504d0414d024c5","5730e2e9053a062b00cf475d","5f7ce9e3a5504d0414d024c6","5730e2e9053a062b00cf475f","5f7ce9e3a5504d0414d024c7","57e31e95611a860e00f97e22","582fa20c4479222092198d40","5849c782fcabe31900998f6e","58b9e83068a4a5190011dcb2","58bdec0f455ca125001d9505","5a6bbecf2116e20022de8b19","5a7c96d2324bc1001f64ad8b","5a7c9d777dce000013d8b96f","5a81e7ff761cf30012731823","5a81e886bf4a2b0012592b49","5a81eaa5761cf3001273183d","5f7ce9e3a5504d0414d024c8","5a95f47858371e001fd651bb","5a95f53b5c3020002b02aa8c","5a95f57c4091e600125d0249","5a95f5984c0ecf0046a28ba3","5a95f6754091e600125d0252","5a95f6b94091e600125d025b","5a95f7104c0ecf0046a28bce","5a95f7954c0ecf0046a28c57","5a95f7d15c3020002b02aacf","5af6287d426c9d000377c583","5afdf7d37506a80003730d40","5b359df811baf70003a14454","5f7ce9e3a5504d0414d024c9","5bbbb66b8dac1100048174f0","5bbbb6768dac1100048174f3","5f7ce9e3a5504d0414d024e8","5c6f5766877e850021140a1a","5ca51733d177a40373ab97f9","5cc26539681cf8001b9ce9f3","5d0aa5163fd65b0019f2d14e","5d0bba3dd628fd0051fbb232","5d0bba522df6470020205266","5d0bce567f3ac6000f0ef6a3","5d1a4e276ffc8100194874f2","5d3213a673f65d0012b11fb0","5d5b7af3e33f0b005608b793","5d5b7b1d68f1dc00113744d4","5d5b7b9f0c74ae001e8e2186","5d5b7beffe91cc002f6d67eb","5d5b7c21fbd0f80012334964","5d5b7c2df20ff50052c02fec","5dc9f8a8ea4314002f5575ff","5dcdad4c3fd5ca0052534ac4","5e1e2350f309936b889b2448","5f7ce9e3a5504d0414d024fd","5f7ceacf43621b0311080a59","5f7cee46dd6cb1037e316144","5f7cefc76b6e5e04c3a4c74c","5f7cf1a9cb79be02e1a588c9","5f88bd664649f900680641fb","5f9c861053998401d1c2c222","5fc55b794fd67b00645d25e2","60189781b18d9a0012221411","61084e16a18107003124ef8f","61e1ef1e337b90003a9e11a5","61e1f0d7a8a68f007059c4cb","61e1f0fc0106310039807732","62743670700ba00042a2b1ce","62b38d3d7447ac00937a7e04","62e2da409b967b0014077fe7","62ec4ff01f323202a13f419c","62ec516e5ad03d02680c2d9f","6320f56b35e026000f45ad58","636e6642417174009d9b563d"],"pdfStatus":"complete"},{"_id":"5f7ce9e3a5504d0414d0243e","version":"1.0-legacy","codename":"Hub 1","hasDoc":true,"__v":28,"is_beta":false,"is_stable":false,"project":"5f7ce9e3a5504d0414d025d0","releaseDate":"2014-09-24T21:16:06.446Z","version_clean":"1.0.0-legacy","categories":["5f7ce9e3a5504d0414d0246a","5f7ce9e3a5504d0414d0246b","54dbf493cb6515210029556f","55dbb7ecb035900d0063fc9f","5f7ce9e3a5504d0414d0246c","5f7ce9e3a5504d0414d0246d","5f7ce9e3a5504d0414d0246e","5f7ce9e3a5504d0414d0246f","5f7ce9e3a5504d0414d02470","5f7ce9e3a5504d0414d02471","5f7ce9e3a5504d0414d02472","5f7ce9e3a5504d0414d02473","5f7ce9e3a5504d0414d02474","5f7ce9e3a5504d0414d02475","5f7ce9e3a5504d0414d02476","5f7ce9e3a5504d0414d02477","56eb18818e83410e000238d4","57206b8e5be73c17009601f3","57218435e1805f0e0042201d","5721845eecb38d0e00d80e0a","5f7ce9e3a5504d0414d024be","5a7c9d447dce000013d8b966","5bce1907c732630004f41da7","5cd20b75a35909003956cdb8","5cd20bcfa78471006231a32b","5d5b7b118fab3d00188e3cdf","5d5b7b2e99c1310020e150e9","5d5b7d8db0a1f80107d077d8","6376ba4d127d990003112b73"],"is_hidden":false,"createdAt":"2014-09-24T21:16:06.446Z","hasReference":false,"is_deprecated":true,"pdfStatus":"complete"},{"_id":"62056dee230e07007218bf4c","version":"2.0","version_clean":"2.0.0","codename":"product-guides","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["62056dee230e07007218be04","5f7ce9e3a5504d0414d024c0","62056dee230e07007218be05","5730e2e9053a062b00cf4754","5730e2e9053a062b00cf4755","62056dee230e07007218be06","62056dee230e07007218be07","5730e2e9053a062b00cf4758","5730e2e9053a062b00cf4759","5730e2e9053a062b00cf475a","62056dee230e07007218be08","62056dee230e07007218be09","5730e2e9053a062b00cf475d","62056dee230e07007218be0a","5730e2e9053a062b00cf475f","5f7ce9e3a5504d0414d024c7","57e31e95611a860e00f97e22","582fa20c4479222092198d40","5849c782fcabe31900998f6e","58b9e83068a4a5190011dcb2","58bdec0f455ca125001d9505","5a6bbecf2116e20022de8b19","5a7c96d2324bc1001f64ad8b","5a7c9d777dce000013d8b96f","5a81e7ff761cf30012731823","5a81e886bf4a2b0012592b49","5a81eaa5761cf3001273183d","62056dee230e07007218be0b","5a95f47858371e001fd651bb","5a95f53b5c3020002b02aa8c","5a95f57c4091e600125d0249","5a95f5984c0ecf0046a28ba3","5a95f6754091e600125d0252","5a95f6b94091e600125d025b","5a95f7104c0ecf0046a28bce","5a95f7954c0ecf0046a28c57","5a95f7d15c3020002b02aacf","5af6287d426c9d000377c583","5afdf7d37506a80003730d40","5b359df811baf70003a14454","62056dee230e07007218be0c","5bbbb66b8dac1100048174f0","5bbbb6768dac1100048174f3","62056dee230e07007218be0d","5c6f5766877e850021140a1a","5ca51733d177a40373ab97f9","5cc26539681cf8001b9ce9f3","5d0aa5163fd65b0019f2d14e","5d0bba3dd628fd0051fbb232","5d0bba522df6470020205266","5d0bce567f3ac6000f0ef6a3","5d1a4e276ffc8100194874f2","5d3213a673f65d0012b11fb0","5d5b7af3e33f0b005608b793","5d5b7b1d68f1dc00113744d4","5d5b7b9f0c74ae001e8e2186","5d5b7beffe91cc002f6d67eb","5d5b7c21fbd0f80012334964","5d5b7c2df20ff50052c02fec","5dc9f8a8ea4314002f5575ff","5dcdad4c3fd5ca0052534ac4","5e1e2350f309936b889b2448","5f7ce9e3a5504d0414d024fd","62056dee230e07007218be0e","62056dee230e07007218be0f","62056dee230e07007218be10","5f7cf1a9cb79be02e1a588c9","62056dee230e07007218be11","5f9c861053998401d1c2c222","5fc55b794fd67b00645d25e2","62056dee230e07007218be12","61084e16a18107003124ef8f","62056dee230e07007218be13","61e1f0d7a8a68f007059c4cb","61e1f0fc0106310039807732","62292aea889520008ed0113b","6233cab9410abc001c9822eb","6234eb59f6eccc02f76cb807","624cb20585a75d004c978f57","624e2238df4eb60013286917","633470b833bb8d04e657051a","6376ba4d127d990003112b72","63e43d347c3efc02c02c5986","6442d3485ae2d10e2654d2f3","64f8c3b94e8f64001f07ea58","650b7bdc6fa4eb0074722335","65848b391e628e004514a0df","65848bb94819f1004aa6338e","658493ce0d7680006b35bd9d","6732850c3cee9b006fe502ba"],"createdAt":"2016-05-09T19:20:09.413Z","project":"5f7ce9e3a5504d0414d025d0","releaseDate":"2016-05-09T19:20:09.413Z","__v":0,"pdfStatus":"complete","forked_from":"5f7ce9e3a5504d0414d0243f","updatedAt":"2024-11-11T22:28:28.339Z"}],"variableDefaults":[{"source":"security","_id":"6391241e050251002a8e3d28","name":"apiKey","type":"http","scheme":"basic","apiSetting":"5f7cee46dd6cb1037e316143"},{"source":"","_id":"649b525defea78003e22657d","name":"user","default":"API_KEY"},{"source":"","_id":"6352dfca576cb4000f2e14ef","name":"ReadMe","default":"Default Value"},{"source":"","_id":"63d2fc41cba521006b5197ea","name":"id","default":"README_API_KEY"},{"source":"","_id":"63efced04cc2e710b54258b1","name":"email","default":"user@example.com"}],"webhookEnabled":true},"custom_domain":"docs.readme.com","childrenProjects":[],"derivedPlan":"enterprise","description":"Beautiful documentation made easy.","error404":"404","experiments":["64cd2000e0b0c1b1fa55712d"],"first_page":"docs","flags":{"allow_hub2":false,"enterprise":true,"alwaysShowDocPublishStatus":false,"hub2":true,"migrationRun":true,"migrationSwaggerRun":true,"oauth":false,"swagger":true,"correctnewlines":false,"rdmdCompatibilityMode":false,"speedyRender":false,"allowXFrame":true,"newEditor":true,"newEditorDash":true,"oldMarkdown":false,"newMarkdownBetaProgram":true,"useReactApp":true,"disableAnonForum":true,"directGoogleToStableVersion":false,"translation":false,"staging":false,"newSearch":true,"graphql":false,"allowApiExplorerJsonEditor":false,"singleProjectEnterprise":false,"dashReact":true,"metricsV2":true,"enableRealtimeExperiences":false,"reviewWorkflow":true,"star":true,"allowDarkMode":true,"forceDarkMode":false,"useReactGLP":true,"disablePasswordlessLogin":false,"personalizedDocs":true,"myDevelopers":true,"superHub":false,"allowReusableOTPs":false,"developerDashboard":true,"dashHomeRefresh":true,"owlbotAi":true,"apiV2":true,"dashQuickstart":false,"git":{"read":false,"write":false},"superHubBeta":true,"disableAutoTranslate":false,"customBlocks":false,"devDashHub":false,"disableSAMLScoping":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"apiAccessRevoked":false,"passwordlessLogin":"default","disableSignups":false,"billingRedesignEnabled":true,"developerPortal":false,"mdx":false,"superHubDevelopment":false,"annualBillingEnabled":true,"devDashBillingRedesignEnabled":false,"enableOidc":false,"customComponents":false,"disableDiscussionSpamRecaptchaBypass":false,"developerViewUsersData":true,"changelogRssAlwaysPublic":false,"bidiSync":false,"superHubMigrationSelfServeFlow":false,"cookieAuthentication":false,"hideGoogleAnalytics":false,"newApiExplorer":true,"tutorials":true,"newHeader":false,"referenceRedesign":true,"auth0Oauth":false,"allowReferenceUpgrade":true},"fullBaseUrl":"https://docs.readme.com/main","git":{"migration":{"createRepository":{},"transformation":{},"migratingPages":{},"enableSuperhub":{}},"sync":{"connectedRepository":{"organization":{},"privacy":{}},"installationRequest":{},"github":[]}},"glossaryTerms":[{"_id":"621044ddeed2f80083ac6d97","term":"Enterprise group","definition":"An Enterprise Group refers to the parent dashboard where all global settings are managed, including adding and removing Teammates and End Users, and managing all child projects."},{"_id":"621044f40a103000a83239db","term":"Enterprise group Owner","definition":"There is one owner per Enterprise Group, referred to as “Owner” in the Enterprise Group dashboard. The Enterprise Group Owner has the same access privileges as an Enterprise group Admin. Additionally, ReadMe Product Experience Managers will contact Enterprise group Owners as the primary point of contact for decisions and updates related to renewals, beta programs, and new feature releases."},{"_id":"6210456696b020001ae688e8","term":"Enterprise group Admin","definition":"An Enterprise group Admin is referred to as “Admin” in the Enterprise Group dashboard. Enterprise group Admins can invite, remove, and choose the permission level of other Teammates and End Users. They can also add and remove projects from the Enterprise group, and access any related project via the project’s dashboard."},{"_id":"6210457691c8d40013dcbfd5","term":"Project Admin","definition":"A Project Admin is the default role when you invite a team member to a ReadMe project. A Project Admin has access to a project’s dashboard and can make most team- and project-management related changes with the exception of upgrading your plan, cloning or deleting a project, and transferring project ownership, which only Project Owners can do."},{"_id":"621045878fefbb00a4567123","term":"Project Owner","definition":"There can only be one Project Owner per ReadMe project. This role has all of the privileges of a Project Admin, with the additional abilities to upgrade your plan, clone or delete a project, and transfer project ownership."},{"_id":"621045cf9b3c01001a609907","term":"Teammates","definition":"Teammates are members of your team who manage (e.g. write, edit, update) documentation related to your Enterprise Group projects. Teammates can have one of three permissions: Admin, Viewer, or Some Projects."},{"_id":"621045db6d2803001a066199","term":"Viewer","definition":"When you invite a Teammate to an Enterprise Group you have the ability to set their access to “Viewer”. The Viewer role has access to view the hubs of all child projects within an Enterprise Group, but has no access to the dashboards of the child projects or the Enterprise Group dashboard."},{"_id":"621045f2ddd9a6007632ed4c","term":"End Users","definition":"End Users are consumers of your ReadMe projects’ documentation whom you’d like to grant hub-side access to. As an Enterprise customer, you can invite End Users, define project access, and configure login methods within your Enterprise Group dashboard."},{"_id":"621045feb3162a0020eca3c8","term":"Some Projects","definition":"When you invite a Teammate to an Enterprise Group you have the ability to set their access to “Some Projects”. From there, you’ll set permission access on a per project basis as either No Access, Viewer (only hub-side access to the project), or Admin (dashboard- and hub-side access to the project)."},{"_id":"6215351976fb85003c868c8b","term":"dashboard","definition":"The dashboard or dash refers to the admin panel of ReadMe’s platform where all of your projects and settings are housed. Only Project Admins have access to the dashboard. The dashboard is where Admins can edit projects, create and edit documentation, and more."},{"_id":"621535251676400014e8f933","term":"hub","definition":"The hub is the end user-facing side of your project—where individuals can view and interact with your documentation. For example when you set a page in your dashboard “live”, this becomes visible on the hub-side of your project. Your hub—or hubs if you have multiple projects—is updated through your project’s dashboard. Your hub is visible to anyone with the URL for your documentation, unless you set your project to private."},{"_id":"62153f32e7fa6c00264fdf08","term":"variables","definition":"The variables feature allows you to assign a specific variable (e.g. name) to automatically propagate default values, across all of your documentation. We recommend using this feature for product names and links to allow for simpler bulk editing. Additionally, you can use variables to pass in user data so that aspects of your documentation are personalized for logged in users, such as their name or API key. In order to pass in personalized user data, you first need to set up custom login, which integrates with either JWT or Webhooks. You can set up variables for your project in the Variable Defaults section (within Configuration) of your dashboard."},{"_id":"5b57804ec6af890003de66cf","term":"Page","definition":"Also known as an article"},{"_id":"5b57805e60a07d00037870db","term":"Subpage","definition":"Under a Page"},{"_id":"5b5780787baf140003ef762b","term":"Changelog","definition":"Place where you can go see changes"},{"_id":"5b57808aa599780003538deb","term":"Discussions","definition":"Forum where your customers can share their concerns"},{"_id":"5b5780a17baf140003ef762d","term":"Documentation","definition":"Section where the documentation lives"},{"_id":"5b5780b7a599780003538ded","term":"Reference","definition":"The API Explorer"},{"_id":"5b57f37a0c8f760003f3023c","term":"pop up","definition":"You have to have explicitly use a glossary term by typing \"<<\" in the ReadMe editor. The glossary feature will not find and replace all words that match your glossary term."},{"_id":"5de95d1041cd310027f8c4fb","term":"internal","definition":"Your administrators that can access the dashboard of your projects"},{"_id":"5de95d159e4c7e002f220927","term":"external","definition":"Your members that have access to the hubs"},{"_id":"5deaf50c2aa750006dbd2f3a","term":"login mechanisms","definition":"ReadMe's login mechanisms. We can support Custom OAuth, Custom JWT, SAML, Local ReadMe, and No Login"},{"_id":"6011e68de8693f0014d8d932","term":"RDMD","definition":"Our custom ReadMe-flavored Markdown engine. It's based on remark (meaning it supports all the Markdown syntax you know and love) and adds some custom syntax to support ReadMe features such as variables, glossary (i.e. what you're reading right now!), and emoji! You can read more about RDMD in our docs: rdmd.readme.io"},{"_id":"60231e0409f34c005e4dc876","term":"API Explorer","definition":"Our interactive, OpenAPI-based API reference section. Users can construct and send API requests and view code samples in a language of their choice—all without leaving the docs!"},{"_id":"6063c8810f5a29000f35b3f9","term":"API Reference","definition":"The API reference section of your ReadMe documentation contains information about each of your endpoints and the data that is sent and received. Users can construct and send API requests and view code samples in a language of their choice—all without leaving the docs!"},{"_id":"612d776812676f005baabd10","term":"dereferenced","definition":"The act of dereferencing all `$ref` pointers within an OpenAPI definition, replacing each reference with the value or schema that it resolves to."},{"_id":"6206b7c1ea0c3b0046a1de0c","term":"Enterprise Group","definition":"An Enterprise Group refers to the parent dashboard where all global settings are managed, including adding and removing Teammates and End Users, and managing all child projects."},{"_id":"6206b7d64516a0048e3d346c","term":"Enterprise Group Owner","definition":"There is one owner per Enterprise Group, referred to as “Owner” in the Enterprise Group dashboard. The Enterprise Group Owner has the same access privileges as an Enterprise Group Admin. Additionally, ReadMe Product Experience Managers will contact Enterprise Group Owners as the primary point of contact for decisions and updates related to renewals, beta programs, and new feature releases."},{"_id":"6206bb05eb045403e8f2320e","term":"Enterprise Group Admin","definition":"An Enterprise Group Admin is referred to as “Admin” in the Enterprise Group dashboard. Enterprise Group Admins can invite, remove, and choose the permission level of other Teammates and End Users. They can also add and remove projects from the Enterprise Group, and access any related project via the project’s dashboard."},{"_id":"6206bc6653a2eb002c07a928","term":"Project Admin","definition":"A Project Admin is the default role when you invite a team member to a ReadMe project. A Project Admin has access to a project’s dashboard and can make most team- and project-management related changes with the exception of upgrading your plan, cloning or deleting a project, and transferring project ownership, which only Project Owners can do."},{"_id":"6206bc77c66af9003f0d3ea7","term":"Project Owner","definition":"There can only be one Project Owner per ReadMe project. This role has all of the privileges of a Project Admin, with the additional abilities to upgrade your plan, clone or delete a project, and transfer project ownership."},{"_id":"6206bcae37c9d902c95e84b6","term":"Viewer","definition":"When you invite a Teammate to an Enterprise Group you have the ability to set their access to “Viewer”. The Viewer role has access to view the hubs of all child projects within an Enterprise Group, but has no access to the dashboards of the child projects or to the Enterprise Group dashboard."},{"_id":"62153fd7c4e9aa00950ea1b2","term":"variables","definition":"The variables feature allows you to assign a specific variable (e.g. name) to automatically propagate default values, across all of your documentation. We recommend using this feature for product names and links to allow for simpler bulk editing. Additionally, you can use variables to pass in user data so that aspects of your documentation are personalized for logged in users, such as their name or API key. In order to pass in personalized user data, you first need to set up custom login, which integrates with either JWT or Webhooks. You can set up variables for your project in the Variable Defaults section (within Configuration) of your dashboard."},{"_id":"62153fe068bc3e0058bb1af1","term":"dashboard","definition":"The dashboard, or dash, refers to the admin panel of ReadMe’s platform where all of your projects and settings are housed. Only Project Admins have access to the dashboard. The dashboard is where Admins can edit projects, create and edit documentation, and more."},{"_id":"6217d529a29ea90056b28f2b","term":"hype train","definition":"A 🚆 full of hype"},{"_id":"622fb5f271f5f406608a919f","term":"Custom","definition":"When you invite a Teammate to an Enterprise Group you have the ability to set their access to “Custom”. From there, you’ll set permission access on a per project basis as either No Access, Viewer (only hub-side access to the project), or Admin (dashboard- and hub-side access to the project)."},{"_id":"6230bd1b776d1d033e134034","term":"Teammates","definition":"Teammates are members of your team who manage (e.g. write, edit, update) documentation related to your Enterprise Group projects. Teammates can have one of three permissions: Admin, Viewer, or Custom."},{"_id":"6230bd51fb5b3d005587bca8","term":"End Users","definition":"End Users are consumers of your ReadMe projects’ private documentation whom you’d like to grant hub-side access to. As an Enterprise customer, you can invite End Users, define project access, and configure login methods within your Enterprise Group dashboard."},{"_id":"62583c1c51d83c0353152996","term":"hub","definition":"The hub is the end user-facing side of your project, or documentation site. This is where individuals can view and interact with your documentation. For example when you set a page in your dashboard “live”, this becomes visible on the hub-side of your project. Your hub—or hubs if you have multiple projects—is updated through your project’s dashboard. Your hub is visible to anyone with the URL for your documentation, unless you set your project to private."},{"_id":"64da475bf12f5d0b6eb764fb","term":"Slug","definition":"A URL slug last identifying string of a specific page.\n\nThe slug for https://docs.readme.com/main/docs/intro-to-readme is \"intro-to-readme\""},{"_id":"64da47a94a89fd11c7884cec","term":"dash","definition":"The Dashboard, or Dash, refers to the admin panel of ReadMe’s platform where all of your projects and settings are housed. Only Project Owners and Admins have access to the Dashboard. The Dashboard is where Admins can edit projects, create and edit documentation, and more."},{"_id":"64da49a3af7e2f00190b8748","term":"Glossary","definition":"Glossary terms allow users to provide additional context to specific words or phrases when a viewer hovers over that term. Terms are defined in plaintext under Project Dashboard > Glossary. When editing content, type \"<<\" to insert a Glossary term!"}],"graphqlSchema":"https://test.com","gracePeriod":{"enabled":false,"endsAt":null},"shouldGateDash":false,"hasOneChild":false,"healthCheck":{"settings":{"page":"nz3r09cr7dk1","status":false,"url":""},"provider":"statusPage"},"intercom_secure_emailonly":false,"intercom":"m6855w1q","is_active":true,"internal":"","jwtExpirationTime":0,"landing_bottom":[{"pageType":"Documentation","alignment":"left","type":"docs"},{"type":"html","alignment":"left","html":""}],"mdxMigrationStatus":"rdmd","metrics":{"monthlyLimit":50000000,"thumbsEnabled":true,"planLimit":20000000,"realtime":{"dashEnabled":true,"hubEnabled":true},"monthlyPurchaseLimit":0,"meteredBilling":{}},"modules":{"landing":false,"docs":true,"examples":true,"reference":true,"changelog":true,"discuss":true,"suggested_edits":true,"logs":false,"custompages":true,"tutorials":true,"graphql":false},"name":"ReadMe","nav_names":{"docs":"","reference":"","changelog":"","discuss":"","tutorials":"","recipes":""},"oauth_url":"","onboardingCompleted":{"api":true,"appearance":true,"documentation":true,"domain":true,"jwt":true,"logs":true,"metricsSDK":true},"owlbot":{"enabled":true,"isPaying":false,"lastIndexed":"2024-11-27T15:43:52.894Z","customization":{"answerLength":"long","customTone":"","defaultAnswer":"","forbiddenWords":"","tone":"neutral"},"copilot":{"enabled":true,"hasBeenUsed":false,"installedCustomPage":""}},"owner":{"id":null,"email":null,"name":null},"plan":"enterprise","planOverride":"business","planSchedule":{"stripeScheduleId":null,"changeDate":null,"nextPlan":null},"planStatus":"","planTrial":"enterprise","readmeScore":{"components":{"newDesign":{"enabled":true,"points":25},"reference":{"enabled":true,"points":50},"tryItNow":{"enabled":true,"points":35},"syncingOAS":{"enabled":false,"points":10},"customLogin":{"enabled":true,"points":25},"metrics":{"enabled":true,"points":40},"recipes":{"enabled":true,"points":15},"pageVoting":{"enabled":true,"points":1},"suggestedEdits":{"enabled":true,"points":10},"support":{"enabled":true,"points":5},"htmlLanding":{"enabled":true,"points":5},"guides":{"enabled":true,"points":10},"changelog":{"enabled":true,"points":5},"glossary":{"enabled":true,"points":1},"variables":{"enabled":true,"points":1},"integrations":{"enabled":true,"points":2}},"percentScore":100,"totalScore":230},"reCaptchaSiteKey":"6LdHWIgcAAAAAEDbyrvc-xSVdHo2tRjrkamgjjof","reference":{"alwaysUseDefaults":false,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":true,"enableOAuthFlows":false},"seo":{"overwrite_title_tag":false},"siblings":[{"_id":"5f7ce9e3a5504d0414d025d0","modules":{"landing":false,"docs":true,"examples":true,"reference":true,"changelog":true,"discuss":true,"suggested_edits":true,"logs":false,"custompages":true,"tutorials":true,"graphql":false},"nav_names":{"docs":"","reference":"","changelog":"","discuss":"","tutorials":"","recipes":""},"name":"ReadMe","subdomain":"developers","description":"Beautiful documentation made easy.","robotsAllow":true,"is_active":true,"internal":"","stable":"62056dee230e07007218bf4c","owner":"5490112a5d87f80b00a035f8","subpath":"main"},{"_id":"6205993d7fb8d70029bba49b","modules":{"landing":false,"docs":true,"examples":true,"reference":false,"graphql":false,"changelog":false,"discuss":false,"suggested_edits":true,"logs":false,"custompages":true,"tutorials":false},"nav_names":{"docs":"","reference":"","changelog":"","discuss":"","tutorials":"","recipes":""},"name":"Enterprise","subpath":"ent","subdomain":"enterprise-docs","description":"Beautiful documentation made easy.","robotsAllow":true,"is_active":true,"internal":"","stable":"6205993d7fb8d70029bba049","owner":"5250b3ad5ac09b3564000005"},{"_id":"5d8907e71937f80012277b72","owner":"5250b3ad5ac09b3564000005","nav_names":{"discuss":"","changelog":"","reference":"","docs":"","tutorials":"","recipes":""},"modules":{"logs":false,"suggested_edits":true,"discuss":false,"changelog":false,"reference":false,"examples":true,"docs":true,"landing":false,"custompages":true,"tutorials":false,"graphql":false},"internal":"","is_active":true,"robotsAllow":true,"description":"","subdomain":"rdmd","name":"ReadMe Markdown","stable":"5fdf7610134322007389a71b","subpath":""}],"stable":{"_id":"62056dee230e07007218bf4c","version":"2.0","version_clean":"2.0.0","codename":"product-guides","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["62056dee230e07007218be04","5f7ce9e3a5504d0414d024c0","62056dee230e07007218be05","5730e2e9053a062b00cf4754","5730e2e9053a062b00cf4755","62056dee230e07007218be06","62056dee230e07007218be07","5730e2e9053a062b00cf4758","5730e2e9053a062b00cf4759","5730e2e9053a062b00cf475a","62056dee230e07007218be08","62056dee230e07007218be09","5730e2e9053a062b00cf475d","62056dee230e07007218be0a","5730e2e9053a062b00cf475f","5f7ce9e3a5504d0414d024c7","57e31e95611a860e00f97e22","582fa20c4479222092198d40","5849c782fcabe31900998f6e","58b9e83068a4a5190011dcb2","58bdec0f455ca125001d9505","5a6bbecf2116e20022de8b19","5a7c96d2324bc1001f64ad8b","5a7c9d777dce000013d8b96f","5a81e7ff761cf30012731823","5a81e886bf4a2b0012592b49","5a81eaa5761cf3001273183d","62056dee230e07007218be0b","5a95f47858371e001fd651bb","5a95f53b5c3020002b02aa8c","5a95f57c4091e600125d0249","5a95f5984c0ecf0046a28ba3","5a95f6754091e600125d0252","5a95f6b94091e600125d025b","5a95f7104c0ecf0046a28bce","5a95f7954c0ecf0046a28c57","5a95f7d15c3020002b02aacf","5af6287d426c9d000377c583","5afdf7d37506a80003730d40","5b359df811baf70003a14454","62056dee230e07007218be0c","5bbbb66b8dac1100048174f0","5bbbb6768dac1100048174f3","62056dee230e07007218be0d","5c6f5766877e850021140a1a","5ca51733d177a40373ab97f9","5cc26539681cf8001b9ce9f3","5d0aa5163fd65b0019f2d14e","5d0bba3dd628fd0051fbb232","5d0bba522df6470020205266","5d0bce567f3ac6000f0ef6a3","5d1a4e276ffc8100194874f2","5d3213a673f65d0012b11fb0","5d5b7af3e33f0b005608b793","5d5b7b1d68f1dc00113744d4","5d5b7b9f0c74ae001e8e2186","5d5b7beffe91cc002f6d67eb","5d5b7c21fbd0f80012334964","5d5b7c2df20ff50052c02fec","5dc9f8a8ea4314002f5575ff","5dcdad4c3fd5ca0052534ac4","5e1e2350f309936b889b2448","5f7ce9e3a5504d0414d024fd","62056dee230e07007218be0e","62056dee230e07007218be0f","62056dee230e07007218be10","5f7cf1a9cb79be02e1a588c9","62056dee230e07007218be11","5f9c861053998401d1c2c222","5fc55b794fd67b00645d25e2","62056dee230e07007218be12","61084e16a18107003124ef8f","62056dee230e07007218be13","61e1f0d7a8a68f007059c4cb","61e1f0fc0106310039807732","62292aea889520008ed0113b","6233cab9410abc001c9822eb","6234eb59f6eccc02f76cb807","624cb20585a75d004c978f57","624e2238df4eb60013286917","633470b833bb8d04e657051a","6376ba4d127d990003112b72","63e43d347c3efc02c02c5986","6442d3485ae2d10e2654d2f3","64f8c3b94e8f64001f07ea58","650b7bdc6fa4eb0074722335","65848b391e628e004514a0df","65848bb94819f1004aa6338e","658493ce0d7680006b35bd9d","6732850c3cee9b006fe502ba"],"createdAt":"2016-05-09T19:20:09.413Z","project":"5f7ce9e3a5504d0414d025d0","releaseDate":"2016-05-09T19:20:09.413Z","__v":0,"pdfStatus":"complete","forked_from":"5f7ce9e3a5504d0414d0243f","updatedAt":"2024-11-11T22:28:28.339Z"},"subdomain":"developers","subpath":"main","superHubWaitlist":false,"topnav":{"left":[{"type":"url","text":"Customer Stories","url":"https://readme.com/customers"},{"type":"url","text":"ReadMe Blog","url":"https://blog.readme.com"}],"right":[{"type":"user","text":"User","url":"/login?redirect_uri=/docs/sending-logs-to-readme-with-nodejs"}],"edited":true,"bottom":[]},"trial":{"trialDeadlineEnabled":false,"trialEndsAt":"2020-10-20T22:04:19.564Z"},"translate":{"provider":"transifex","show_widget":false,"key_public":"","org_name":"","project_name":"","languages":[]},"url":"https://readme.com","versions":[{"_id":"5f7ce9e3a5504d0414d0243e","version":"1.0-legacy","codename":"Hub 1","hasDoc":true,"__v":28,"is_beta":false,"is_stable":false,"project":"5f7ce9e3a5504d0414d025d0","releaseDate":"2014-09-24T21:16:06.446Z","version_clean":"1.0.0-legacy","categories":["5f7ce9e3a5504d0414d0246a","5f7ce9e3a5504d0414d0246b","54dbf493cb6515210029556f","55dbb7ecb035900d0063fc9f","5f7ce9e3a5504d0414d0246c","5f7ce9e3a5504d0414d0246d","5f7ce9e3a5504d0414d0246e","5f7ce9e3a5504d0414d0246f","5f7ce9e3a5504d0414d02470","5f7ce9e3a5504d0414d02471","5f7ce9e3a5504d0414d02472","5f7ce9e3a5504d0414d02473","5f7ce9e3a5504d0414d02474","5f7ce9e3a5504d0414d02475","5f7ce9e3a5504d0414d02476","5f7ce9e3a5504d0414d02477","56eb18818e83410e000238d4","57206b8e5be73c17009601f3","57218435e1805f0e0042201d","5721845eecb38d0e00d80e0a","5f7ce9e3a5504d0414d024be","5a7c9d447dce000013d8b966","5bce1907c732630004f41da7","5cd20b75a35909003956cdb8","5cd20bcfa78471006231a32b","5d5b7b118fab3d00188e3cdf","5d5b7b2e99c1310020e150e9","5d5b7d8db0a1f80107d077d8","6376ba4d127d990003112b73"],"is_hidden":false,"createdAt":"2014-09-24T21:16:06.446Z","hasReference":false,"is_deprecated":true,"pdfStatus":"complete"},{"_id":"5f7ce9e3a5504d0414d0243f","codename":"Hub 2 (Pre-Docs Migration)","createdAt":"2016-05-09T19:20:09.413Z","is_deprecated":true,"project":"5f7ce9e3a5504d0414d025d0","releaseDate":"2016-05-09T19:20:09.413Z","__v":51,"is_beta":false,"is_hidden":true,"is_stable":false,"version":"2.0-archive","version_clean":"2.0.0-archive","categories":["5f7ce9e3a5504d0414d024bf","5f7ce9e3a5504d0414d024c0","5f7ce9e3a5504d0414d024c1","5730e2e9053a062b00cf4754","5730e2e9053a062b00cf4755","5f7ce9e3a5504d0414d024c2","5f7ce9e3a5504d0414d024c3","5730e2e9053a062b00cf4758","5730e2e9053a062b00cf4759","5730e2e9053a062b00cf475a","5f7ce9e3a5504d0414d024c4","5f7ce9e3a5504d0414d024c5","5730e2e9053a062b00cf475d","5f7ce9e3a5504d0414d024c6","5730e2e9053a062b00cf475f","5f7ce9e3a5504d0414d024c7","57e31e95611a860e00f97e22","582fa20c4479222092198d40","5849c782fcabe31900998f6e","58b9e83068a4a5190011dcb2","58bdec0f455ca125001d9505","5a6bbecf2116e20022de8b19","5a7c96d2324bc1001f64ad8b","5a7c9d777dce000013d8b96f","5a81e7ff761cf30012731823","5a81e886bf4a2b0012592b49","5a81eaa5761cf3001273183d","5f7ce9e3a5504d0414d024c8","5a95f47858371e001fd651bb","5a95f53b5c3020002b02aa8c","5a95f57c4091e600125d0249","5a95f5984c0ecf0046a28ba3","5a95f6754091e600125d0252","5a95f6b94091e600125d025b","5a95f7104c0ecf0046a28bce","5a95f7954c0ecf0046a28c57","5a95f7d15c3020002b02aacf","5af6287d426c9d000377c583","5afdf7d37506a80003730d40","5b359df811baf70003a14454","5f7ce9e3a5504d0414d024c9","5bbbb66b8dac1100048174f0","5bbbb6768dac1100048174f3","5f7ce9e3a5504d0414d024e8","5c6f5766877e850021140a1a","5ca51733d177a40373ab97f9","5cc26539681cf8001b9ce9f3","5d0aa5163fd65b0019f2d14e","5d0bba3dd628fd0051fbb232","5d0bba522df6470020205266","5d0bce567f3ac6000f0ef6a3","5d1a4e276ffc8100194874f2","5d3213a673f65d0012b11fb0","5d5b7af3e33f0b005608b793","5d5b7b1d68f1dc00113744d4","5d5b7b9f0c74ae001e8e2186","5d5b7beffe91cc002f6d67eb","5d5b7c21fbd0f80012334964","5d5b7c2df20ff50052c02fec","5dc9f8a8ea4314002f5575ff","5dcdad4c3fd5ca0052534ac4","5e1e2350f309936b889b2448","5f7ce9e3a5504d0414d024fd","5f7ceacf43621b0311080a59","5f7cee46dd6cb1037e316144","5f7cefc76b6e5e04c3a4c74c","5f7cf1a9cb79be02e1a588c9","5f88bd664649f900680641fb","5f9c861053998401d1c2c222","5fc55b794fd67b00645d25e2","60189781b18d9a0012221411","61084e16a18107003124ef8f","61e1ef1e337b90003a9e11a5","61e1f0d7a8a68f007059c4cb","61e1f0fc0106310039807732","62743670700ba00042a2b1ce","62b38d3d7447ac00937a7e04","62e2da409b967b0014077fe7","62ec4ff01f323202a13f419c","62ec516e5ad03d02680c2d9f","6320f56b35e026000f45ad58","636e6642417174009d9b563d"],"pdfStatus":"complete"},{"_id":"62056dee230e07007218bf4c","version":"2.0","version_clean":"2.0.0","codename":"product-guides","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["62056dee230e07007218be04","5f7ce9e3a5504d0414d024c0","62056dee230e07007218be05","5730e2e9053a062b00cf4754","5730e2e9053a062b00cf4755","62056dee230e07007218be06","62056dee230e07007218be07","5730e2e9053a062b00cf4758","5730e2e9053a062b00cf4759","5730e2e9053a062b00cf475a","62056dee230e07007218be08","62056dee230e07007218be09","5730e2e9053a062b00cf475d","62056dee230e07007218be0a","5730e2e9053a062b00cf475f","5f7ce9e3a5504d0414d024c7","57e31e95611a860e00f97e22","582fa20c4479222092198d40","5849c782fcabe31900998f6e","58b9e83068a4a5190011dcb2","58bdec0f455ca125001d9505","5a6bbecf2116e20022de8b19","5a7c96d2324bc1001f64ad8b","5a7c9d777dce000013d8b96f","5a81e7ff761cf30012731823","5a81e886bf4a2b0012592b49","5a81eaa5761cf3001273183d","62056dee230e07007218be0b","5a95f47858371e001fd651bb","5a95f53b5c3020002b02aa8c","5a95f57c4091e600125d0249","5a95f5984c0ecf0046a28ba3","5a95f6754091e600125d0252","5a95f6b94091e600125d025b","5a95f7104c0ecf0046a28bce","5a95f7954c0ecf0046a28c57","5a95f7d15c3020002b02aacf","5af6287d426c9d000377c583","5afdf7d37506a80003730d40","5b359df811baf70003a14454","62056dee230e07007218be0c","5bbbb66b8dac1100048174f0","5bbbb6768dac1100048174f3","62056dee230e07007218be0d","5c6f5766877e850021140a1a","5ca51733d177a40373ab97f9","5cc26539681cf8001b9ce9f3","5d0aa5163fd65b0019f2d14e","5d0bba3dd628fd0051fbb232","5d0bba522df6470020205266","5d0bce567f3ac6000f0ef6a3","5d1a4e276ffc8100194874f2","5d3213a673f65d0012b11fb0","5d5b7af3e33f0b005608b793","5d5b7b1d68f1dc00113744d4","5d5b7b9f0c74ae001e8e2186","5d5b7beffe91cc002f6d67eb","5d5b7c21fbd0f80012334964","5d5b7c2df20ff50052c02fec","5dc9f8a8ea4314002f5575ff","5dcdad4c3fd5ca0052534ac4","5e1e2350f309936b889b2448","5f7ce9e3a5504d0414d024fd","62056dee230e07007218be0e","62056dee230e07007218be0f","62056dee230e07007218be10","5f7cf1a9cb79be02e1a588c9","62056dee230e07007218be11","5f9c861053998401d1c2c222","5fc55b794fd67b00645d25e2","62056dee230e07007218be12","61084e16a18107003124ef8f","62056dee230e07007218be13","61e1f0d7a8a68f007059c4cb","61e1f0fc0106310039807732","62292aea889520008ed0113b","6233cab9410abc001c9822eb","6234eb59f6eccc02f76cb807","624cb20585a75d004c978f57","624e2238df4eb60013286917","633470b833bb8d04e657051a","6376ba4d127d990003112b72","63e43d347c3efc02c02c5986","6442d3485ae2d10e2654d2f3","64f8c3b94e8f64001f07ea58","650b7bdc6fa4eb0074722335","65848b391e628e004514a0df","65848bb94819f1004aa6338e","658493ce0d7680006b35bd9d","6732850c3cee9b006fe502ba"],"createdAt":"2016-05-09T19:20:09.413Z","project":"5f7ce9e3a5504d0414d025d0","releaseDate":"2016-05-09T19:20:09.413Z","__v":0,"pdfStatus":"complete","forked_from":"5f7ce9e3a5504d0414d0243f","updatedAt":"2024-11-11T22:28:28.339Z"}],"variableDefaults":[{"source":"","_id":"649f33f4cae212001dcd4573","name":"dasdf","default":"aSD"},{"source":"security","_id":"6391241e050251002a8e3d28","name":"apiKey","type":"http","scheme":"basic","apiSetting":"5f7cee46dd6cb1037e316143"},{"source":"","_id":"649b525defea78003e22657d","name":"user","default":"API_KEY"},{"source":"","_id":"6352dfca576cb4000f2e14ef","name":"ReadMe","default":"Default Value"},{"source":"","_id":"63d2fc41cba521006b5197ea","name":"id","default":"README_API_KEY"},{"source":"","_id":"63efced04cc2e710b54258b1","name":"email","default":"user@example.com"}],"webhookEnabled":true,"parent":{"_id":"62059a520d12cc006cca892d","appearance":{"rdmd":{"callouts":{"useIconFont":false},"theme":{"background":"","border":"","markdownEdge":"","markdownFont":"","markdownFontSize":"","markdownLineHeight":"","markdownRadius":"","markdownText":"","markdownTitle":"","markdownTitleFont":"","mdCodeBackground":"","mdCodeFont":"","mdCodeRadius":"","mdCodeTabs":"","mdCodeText":"","tableEdges":"","tableHead":"","tableHeadText":"","tableRow":"","tableStripe":"","tableText":"","text":"","title":""}},"main_body":{"type":"links"},"colors":{"highlight":"","main":"#018EF5","main_alt":"","header_text":"","body_highlight":"","custom_login_link_color":"#018ef5"},"typography":{"headline":"Open+Sans:400:sans-serif","body":"Open+Sans:400:sans-serif","typekit":false,"tk_key":"","tk_headline":"","tk_body":""},"header":{"style":"solid","img":[],"img_size":"auto","img_pos":"tl"},"body":{"style":"none"},"global_landing_page":{"html":"<!-- =========\n The Hero\n========== -->\n<section class=\"flex flex_col Hero\">\n <aside class=\"Hero-banner\">\n <div class=\"Hero-banner-new\">\n <div class=\"Hero-banner-new-label\">\n <svg class=\"Hero-banner-new-svg blue\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path d=\"M289.9 18.4c-18.7-18.7-49.1-18.7-67.9 0L176.5 64 112 64c-26.5 0-48 21.5-48 48l0 64.5L18.4 222.1c-18.7 18.7-18.7 49.1 0 67.9L64 335.5 64 400c0 26.5 21.5 48 48 48l64.5 0 45.6 45.6c18.7 18.7 49.1 18.7 67.9 0L335.5 448l64.5 0c26.5 0 48-21.5 48-48l0-64.5 45.6-45.6c18.7-18.7 18.7-49.1 0-67.9L448 176.5l0-64.5c0-26.5-21.5-48-48-48l-64.5 0L289.9 18.4z\"></path></svg>\n <svg class=\"Hero-banner-new-svg green\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path d=\"M289.9 18.4c-18.7-18.7-49.1-18.7-67.9 0L176.5 64 112 64c-26.5 0-48 21.5-48 48l0 64.5L18.4 222.1c-18.7 18.7-18.7 49.1 0 67.9L64 335.5 64 400c0 26.5 21.5 48 48 48l64.5 0 45.6 45.6c18.7 18.7 49.1 18.7 67.9 0L335.5 448l64.5 0c26.5 0 48-21.5 48-48l0-64.5 45.6-45.6c18.7-18.7 18.7-49.1 0-67.9L448 176.5l0-64.5c0-26.5-21.5-48-48-48l-64.5 0L289.9 18.4z\"></path></svg>\n <svg class=\"Hero-banner-new-svg yellow\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path d=\"M289.9 18.4c-18.7-18.7-49.1-18.7-67.9 0L176.5 64 112 64c-26.5 0-48 21.5-48 48l0 64.5L18.4 222.1c-18.7 18.7-18.7 49.1 0 67.9L64 335.5 64 400c0 26.5 21.5 48 48 48l64.5 0 45.6 45.6c18.7 18.7 49.1 18.7 67.9 0L335.5 448l64.5 0c26.5 0 48-21.5 48-48l0-64.5 45.6-45.6c18.7-18.7 18.7-49.1 0-67.9L448 176.5l0-64.5c0-26.5-21.5-48-48-48l-64.5 0L289.9 18.4z\"></path></svg>\n <svg class=\"Hero-banner-new-svg red\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\"><path d=\"M289.9 18.4c-18.7-18.7-49.1-18.7-67.9 0L176.5 64 112 64c-26.5 0-48 21.5-48 48l0 64.5L18.4 222.1c-18.7 18.7-18.7 49.1 0 67.9L64 335.5 64 400c0 26.5 21.5 48 48 48l64.5 0 45.6 45.6c18.7 18.7 49.1 18.7 67.9 0L335.5 448l64.5 0c26.5 0 48-21.5 48-48l0-64.5 45.6-45.6c18.7-18.7 18.7-49.1 0-67.9L448 176.5l0-64.5c0-26.5-21.5-48-48-48l-64.5 0L289.9 18.4z\"></path></svg>\n <div class=\"Hero-banner-new-text\">NEW</div>\n </div>\n </div>\n <div class=\"Hero-banner-text\">Edit in GitHub, write MDX, a new editing experience, & more!\n <br />\n <a class=\"Hero-banner-text-hover\" href=\"https://docs.readme.com/main/docs/welcome-to-readme-refactored\">Read the docs.</a>\n </div>\n </aside>\n <h1 class=\"Hero-h1\">Getting Started With ReadMe</h1>\n <p class=\"Hero-p\">Our knowledge base of everything you’ll need to build your beautiful, interactive, and personalized developer hub.\n</section>\n\n<!-- =========\n Content\n========== -->\n<main class=\"rm-Container Main\" id=\"content\">\n <!-- =============\n Product Guides\n ============== -->\n <section class=\"Section Section_product\">\n <h2 class=\"Tile-heading\">PRODUCT GUIDES</h2>\n <ol class=\"TileGrid\">\n<li class=\"TileGrid-item\">\n <a class=\"Tile Tile_outline Tile_lg\" href=\"/main/docs/intro-to-readme\">\n <span class=\"flex flex_col\">\n <span class=\"TileIcon TileIcon_md TileIcon_green icon icon-clock\"></span>\n <span class=\"Tile-title\">\n <span>Quick Start</span>\n <i class=\"icon icon-arrow-right2\"></i>\n </span>\n <span class=\"Tile-description\">Welcome! Get started with an overview of ReadMe basics and an intro to your dashboard</span>\n </span>\n <img alt=\"ReadMe documentation with color input picker and Owlbert (ReadMe mascot) overlayed\" class=\"Tile-image\" src=\"//files.readme.io/cb05aad-quickstart.png\">\n </a>\n<li class=\"TileGrid-item\">\n <a class=\"Tile\" href=\"/main/docs/project-setup-overview\">\n <span class=\"TileIcon TileIcon_md TileIcon_red icon icon-configuration\"></span>\n <span class=\"Tile-title\">\n <span>Project Setup</span>\n <i class=\"icon icon-arrow-right2\"></i>\n </span>\n <span class=\"Tile-description\">Learn how to set up your project, API, & API importing and user login\n options</span>\n </a>\n<li class=\"TileGrid-item\">\n <a class=\"Tile\" href=\"/main/docs/writing-managing-docs\">\n <span class=\"TileIcon TileIcon_md TileIcon_yellow icon icon-guides\"></span>\n <span class=\"Tile-title\">\n <span>Documentation</span>\n <i class=\"icon icon-arrow-right2\"></i>\n </span>\n <span class=\"Tile-description\">Discover helpful resources on structuring, writing, and maintaining your docs</span>\n </a>\n<li class=\"TileGrid-item\">\n <a class=\"Tile\" href=\"/main/docs/developer-dashboard\">\n <span class=\"TileIcon TileIcon_md TileIcon_blue icon icon-api-metrics\"></span>\n <span class=\"Tile-title\">\n <span>Developer Dashboard</span>\n <i class=\"icon icon-arrow-right2\"></i>\n </span>\n <span class=\"Tile-description\">Surface API keys in the hub and understand your API’s performance</span>\n </a>\n<li class=\"TileGrid-item\">\n <a class=\"Tile\" href=\"/main/docs/supporting-your-developers\">\n <span class=\"TileIcon TileIcon_md TileIcon_purple icon icon-references\"></span>\n <span class=\"Tile-title\">\n <span>Developer Community</span>\n <i class=\"icon icon-arrow-right2\"></i>\n </span>\n <span class=\"Tile-description\">Connect with your developers to build community and keep them in the loop</span>\n </a>\n<li class=\"TileGrid-item\">\n <a class=\"Tile\" href=\"/main/docs/making-your-hub-shine\">\n <span class=\"TileIcon TileIcon_md TileIcon_orange icon icon-brush-2\"></span>\n <span class=\"Tile-title\">\n <span>Project Customization</span>\n <i class=\"icon icon-arrow-right2\"></i>\n </span>\n <span class=\"Tile-description\">Tips to make your hub shine, including customizing your hub design & navigation</span>\n </a>\n<li class=\"TileGrid-item\">\n <a class=\"Tile\" href=\"/main/docs/your-account\">\n <span class=\"TileIcon TileIcon_md TileIcon_gray icon icon-user1\"></span>\n <span class=\"Tile-title\">\n <span>Account & Settings</span>\n <i class=\"icon icon-arrow-right2\"></i>\n </span>\n <span class=\"Tile-description\">Looking for resources on managing your account, plan, or team? It’s all here</span>\n </a>\n<li class=\"TileGrid-item\">\n <a class=\"Tile Tile_sm\" href=\"/main/docs/need-more-support\">\n <span class=\"Tile-title\">\n <span>Technical Support</span>\n <i class=\"icon icon-arrow-right2\"></i>\n </span>\n <span class=\"Tile-description\">Can’t find what you’re looking for? Read FAQs, reach out to support, & share requests here</span>\n </a>\n </ol>\n </section>\n \n <!-- =============\n Enterprise Guides\n ============== -->\n <section class=\"Section Section_dark Section_enterprise\">\n <h2 class=\"Tile-heading\">ENTERPRISE GUIDES</h2>\n <ol class=\"TileGrid\">\n<li class=\"TileGrid-item\">\n <a class=\"Tile\" href=\"/ent/docs\">\n <span class=\"TileIcon TileIcon_md TileIcon_blue icon icon-briefcase\"></span>\n <span class=\"Tile-title\">\n <span>Enterprise Overview</span>\n <i class=\"icon icon-arrow-right2\"></i>\n </span>\n <span class=\"Tile-description\">Welcome to ReadMe Enterprise! Discover features & tips to launch your Enterprise group</span>\n </a>\n<li class=\"TileGrid-item\">\n <a class=\"Tile\" href=\"/ent/docs/enterprise-group-overview\">\n <span class=\"TileIcon TileIcon_md TileIcon_blue icon icon-apilogs\"></span>\n <span class=\"Tile-title\">\n <span>Group Management</span>\n <i class=\"icon icon-arrow-right2\"></i>\n </span>\n <span class=\"Tile-description\">Resources on setting up and managing Enterprise Group-level features</span>\n </a>\n<li class=\"TileGrid-item\">\n <a class=\"Tile\" href=\"/ent/docs/user-management-overview\">\n <span class=\"TileIcon TileIcon_md TileIcon_blue icon icon-users-2\"></span>\n <span class=\"Tile-title\">\n <span>User Management</span>\n <i class=\"icon icon-arrow-right2\"></i>\n </span>\n <span class=\"Tile-description\">Questions about user authentication or permission levels? It’s all here</span>\n </a>\n<li class=\"TileGrid-item\">\n <a class=\"Tile\" href=\"/ent/docs/enterprise-workflow-overview\">\n <span class=\"TileIcon TileIcon_md TileIcon_blue icon icon-shuffle1\"></span>\n <span class=\"Tile-title\">\n <span>Enterprise Workflow</span>\n <i class=\"icon icon-arrow-right2\"></i>\n </span>\n <span class=\"Tile-description\">Learn about best practices for managing and staging content across Enterprise projects</span>\n </a>\n </ol>\n </section>\n \n <!-- =============\n ReadMe API\n ============== -->\n <section class=\"Section Section_dark ReadMeAPI\">\n <div class=\"ReadMeAPI-container\">\n <aside class=\"Eyebrow\">ReadMe API</aside>\n <h2 class=\"ReadMeAPI-h2\">\n Programmatically update documentation in your hub with <span class=\"yellow\">ReadMe’s API</span>. Learn how to authenticate and get started quickly.\n </h2>\n <a class=\"flex flex_center ReadMeAPI-a\" href=\"/main/reference\">\n Check Out Our API Reference\n <i class=\"icon icon-arrow-right2\"></i>\n </a>\n </div>\n <figure class=\"ReadMeAPI-figure\">\n <svg class=\"ReadMeAPI-svg\"><use href=\"#code-1\" /></svg>\n <svg class=\"ReadMeAPI-svg\"><use href=\"#code-2\" /></svg>\n <svg class=\"ReadMeAPI-svg\"><use href=\"#code-1\" /></svg>\n <svg class=\"ReadMeAPI-svg\"><use href=\"#code-2\" /></svg>\n </figure>\n </section>\n\n <div class=\"flex CommunityChangelog\" style=\"gap: var(--GridGap);\">\n <!-- =============\n Community\n ============== -->\n <section class=\"flex_grow Section Section_discussion Card\">\n <h2 class=\"Card-heading\">Community Discussions</h2>\n <p class=\"Card-description\">Ask questions, share thoughts, and connect with other ReadMe users!\n <div class=\"Community\">\n\t\t\t\t<div class=\"Community-from\">\n <img alt=\"Avatar of Owlivia, the owl\" class=\"Community-avatar\" src=\"//files.readme.io/76a91a5-owlivia.png\">\n How do I send a hoot to the parliament?\n </div>\n <a class=\"Community-to\" href=\"/main/discuss\">\n <span>Join the Discussion</span>\n <i class=\"icon icon-arrow-right2\"></i>\n </a>\n </div>\n </section>\n\n <!-- =============\n Changelog\n ============== -->\n <section class=\"flex_grow Section Card\">\n <h2 class=\"Card-heading\">Our Changelog</h2>\n <a class=\"flex flex_center Card-description Card-link\" href=\"/main/changelog\">\n <span>All Changelog Posts</span>\n <i class=\"icon icon-arrow-right2\"></i>\n </a>\n <ol class=\"Changelogs\" id=\"changelogs-target\">\nLoading Changelog Posts...\n </ol>\n </section>\n </div>\n \n <!-- =============\n Case Studies, Pricing, and Careers\n ============== -->\n <div class=\"flex BonusCards\" style=\"gap: var(--GridGap);\">\n <section class=\"flex_grow Section Card\">\n <span class=\"TileIcon TileIcon_md TileIcon_yellow icon icon-sparkles\"></span>\n <h2 class=\"Card-heading\">Get Inspired</h2>\n <p class=\"Card-description\">Thousands of companies use ReadMe to power their developer hubs. Allow our happy customers to inspire you!</p>\n <a class=\"flex flex_center Card-link\" href=\"//readme.com/customers\">\n <span>Read Stories</span>\n <i class=\"icon icon-arrow-right2\"></i>\n </a>\n </section>\n <section class=\"flex_grow Section Card\">\n <span class=\"TileIcon TileIcon_md TileIcon_green icon icon-table\"></span>\n <h2 class=\"Card-heading\">Plans & Pricing</h2>\n <p class=\"Card-description\">Not sure which ReadMe plan suits you best? Take a look at all of our plans and what features are included in each. </p>\n <a class=\"flex flex_center Card-link\" href=\"//readme.com/pricing\">\n <span>See Plans</span>\n <i class=\"icon icon-arrow-right2\"></i>\n </a>\n </section>\n <section class=\"flex_grow Section Card\">\n <span class=\"TileIcon TileIcon_md TileIcon_purple icon icon-smile\"></span>\n <h2 class=\"Card-heading\">We’re Hiring!</h2>\n <p class=\"Card-description\">We’re a tight-knit and fun-loving team of humans (and one adorable owl) working on a product we care about.</p>\n <a class=\"flex flex_center Card-link\" href=\"//readme.com/careers\">\n <span>Explore Jobs</span>\n <i class=\"icon icon-arrow-right2\"></i>\n </a>\n </section>\n </div>\n</main>\n\n<!-- =============\n Footer\n ============== -->\n<div class=\"rm-Container\">\n <footer class=\"flex Footer\">\n <div class=\"flex flex_col\">\n <img alt=\"ReadMe logo\" class=\"Footer-logo\" src=\"//files.readme.io/5bd683b-logo.svg\">\n <h2 class=\"Footer-heading\">Ready for a <span class=\"Footer-heading-highlight\">developer hub</span> developers love?</h2>\n <p class=\"Footer-description\">Sign up for a free 14-day trial of the full platform. Your API Reference is free forever.</p>\n <div class=\"flex flex_center Footer-links\">\n <a class=\"Button Button_sm Button_primary\" href=\"//dash.readme.com/signup\">Get Started</a>\n or\n <a class=\"Button Button_sm Button_primary_text\" href=\"//readme.com/enterprise\">Request a Demo</a>\n </div>\n <a class=\"Footer-escape\" href=\"//readme.com\">\n To ReadMe.com\n <span class=\"icon icon-arrow-right2\"></span>\n </a>\n </div>\n <img alt=\"3 owls have a party\" class=\"Footer-owlberts\" src=\"//files.readme.io/9dbe441-footer-owls.png\">\n </footer>\n</div>\n\n<!-- =============\n SVG Graphics\n ============== -->\n<svg xmlns=\"http://www.w3.org/2000/svg\" style=\"display: none;\">\n <symbol id=\"code-1\" width=\"400\" height=\"104\" viewBox=\"0 0 400 104\" fill=\"none\">\n\t\t<g clip-path=\"url(#clip0_1464_34845)\"><path d=\"M26.4395 28.6699C26.2812 27.2871 25.3145 26.4844 23.8262 26.4844C22.0508 26.4844 21.0254 27.5449 21.0254 29.4082V30.1934C21.0254 32.0566 22.0508 33.123 23.8262 33.123C25.3145 33.123 26.2812 32.3203 26.4395 30.9609H25.2793C25.1621 31.6816 24.5996 32.1094 23.8145 32.1094C22.7773 32.1094 22.2031 31.3828 22.2031 30.0703V29.5312C22.2031 28.2188 22.7773 27.4922 23.8145 27.4922C24.5938 27.4922 25.168 27.9316 25.2793 28.6699H26.4395ZM33.8105 26.6133H32.6387V30.3574C32.6387 31.3887 31.9824 32.0742 31.0039 32.0742C30.0605 32.0742 29.6211 31.5586 29.6211 30.4688V26.6133H28.4434V30.7559C28.4434 32.291 29.1934 33.123 30.582 33.123C31.5371 33.123 32.2578 32.6777 32.5918 31.8926H32.6738V33H33.8105V26.6133ZM38.334 30.1523C38.334 28.5879 39.1367 27.6914 40.5781 27.6914C40.9297 27.6914 41.3457 27.7676 41.6328 27.873V26.584C41.4219 26.4961 41.0762 26.4492 40.7129 26.4492C39.4883 26.4492 38.7441 27.041 38.4922 28.2422H38.3281V26.6133H35.8027V27.5156H37.1914V32.0977H35.9258V33H40.2734V32.0977H38.334V30.1523ZM48.7637 33V32.0508H46.7129V24.123H43.4492V25.0781H45.541V32.0508H43.4023V33H48.7637ZM75.4238 30.1523C75.4238 28.5879 76.2266 27.6914 77.668 27.6914C78.0195 27.6914 78.4355 27.7676 78.7227 27.873V26.584C78.5117 26.4961 78.166 26.4492 77.8027 26.4492C76.5781 26.4492 75.834 27.041 75.582 28.2422H75.418V26.6133H72.8926V27.5156H74.2812V32.0977H73.0156V33H77.3633V32.0977H75.4238V30.1523ZM84.6758 31.3125C84.5176 31.834 83.9492 32.1562 83.1934 32.1562C82.1855 32.1562 81.5352 31.4648 81.5352 30.3867V30.0996H85.8184V29.4082C85.8184 27.5918 84.8047 26.4902 83.1348 26.4902C81.4766 26.4902 80.3809 27.5977 80.3809 29.2793V30.252C80.3809 32.0684 81.4062 33.123 83.1992 33.123C84.5762 33.123 85.6309 32.3848 85.8008 31.3125H84.6758ZM83.123 27.4512C84.0898 27.4512 84.6641 28.1367 84.6641 29.2734H81.5352C81.5352 28.1309 82.1328 27.4512 83.123 27.4512ZM89.9727 26.5137C88.502 26.5137 87.5645 27.5625 87.5645 29.2266V30.3926C87.5645 32.0566 88.502 33.1055 89.9727 33.1055C90.8984 33.1055 91.5664 32.7012 91.8242 31.9863H91.9355V35.1445H93.1426V26.6133H91.9648V27.627H91.8535C91.5547 26.9004 90.8984 26.5137 89.9727 26.5137ZM90.3652 27.5566C91.3438 27.5566 91.9648 28.248 91.9648 29.3438V30.2988C91.9648 31.4004 91.3438 32.0918 90.3652 32.0918C89.3809 32.0918 88.7539 31.3945 88.7539 30.2988V29.3438C88.7539 28.248 89.3809 27.5566 90.3652 27.5566ZM100.572 26.6133H99.4004V30.3574C99.4004 31.3887 98.7441 32.0742 97.7656 32.0742C96.8223 32.0742 96.3828 31.5586 96.3828 30.4688V26.6133H95.2051V30.7559C95.2051 32.291 95.9551 33.123 97.3438 33.123C98.2988 33.123 99.0195 32.6777 99.3535 31.8926H99.4355V33H100.572V26.6133ZM106.93 31.3125C106.771 31.834 106.203 32.1562 105.447 32.1562C104.439 32.1562 103.789 31.4648 103.789 30.3867V30.0996H108.072V29.4082C108.072 27.5918 107.059 26.4902 105.389 26.4902C103.73 26.4902 102.635 27.5977 102.635 29.2793V30.252C102.635 32.0684 103.66 33.123 105.453 33.123C106.83 33.123 107.885 32.3848 108.055 31.3125H106.93ZM105.377 27.4512C106.344 27.4512 106.918 28.1367 106.918 29.2734H103.789C103.789 28.1309 104.387 27.4512 105.377 27.4512ZM110.322 28.377C110.322 29.3086 110.902 29.8945 112.068 30.1582L113.023 30.375C113.797 30.5508 114.084 30.791 114.084 31.2598C114.084 31.8164 113.568 32.1738 112.766 32.1738C111.992 32.1738 111.465 31.8633 111.336 31.3184H110.152C110.258 32.4434 111.23 33.1172 112.736 33.1172C114.295 33.1172 115.297 32.3438 115.297 31.1309C115.297 30.1934 114.729 29.6543 113.469 29.373L112.543 29.168C111.799 29.0039 111.488 28.752 111.488 28.2949C111.488 27.7676 111.975 27.416 112.725 27.416C113.428 27.416 113.926 27.7383 114.031 28.2598H115.156C115.051 27.1523 114.137 26.4844 112.742 26.4844C111.277 26.4844 110.322 27.2344 110.322 28.377ZM118.982 24.8672V26.6484H117.295V27.6152H118.982V31.0664C118.982 32.4375 119.697 33.0234 121.332 33.0234C121.578 33.0234 122.504 33 122.633 32.9766V32.0156C122.492 32.0332 121.713 32.0449 121.414 32.0449C120.6 32.0449 120.16 31.6992 120.16 31.0664V27.6152H122.668V26.6484H120.143V24.8672H118.982ZM136.854 30.3633C136.854 31.4121 136.191 32.0566 135.119 32.0566C133.842 32.0566 133.18 31.2012 133.18 29.5547V27.9902C133.18 26.3496 133.842 25.4883 135.107 25.4883C136.109 25.4883 136.812 26.1855 136.859 27.2344H138.09C138.049 25.459 136.924 24.3691 135.131 24.3691C133.115 24.3691 131.949 25.6992 131.949 27.9902V29.5547C131.949 31.8457 133.115 33.1758 135.131 33.1758C136.889 33.1758 138.09 32.0684 138.09 30.4336V28.6465H135.02V29.6309H136.854V30.3633ZM145.068 31.916H141.207V29.209H144.852V28.1895H141.207V25.6289H145.068V24.5449H139.982V33H145.068V31.916ZM150.424 33V25.6289H152.938V24.5449H146.691V25.6289H149.205V33H150.424ZM78.3184 43.6133H77.1465V47.3574C77.1465 48.3887 76.4902 49.0742 75.5117 49.0742C74.5684 49.0742 74.1289 48.5586 74.1289 47.4688V43.6133H72.9512V47.7559C72.9512 49.291 73.7012 50.123 75.0898 50.123C76.0449 50.123 76.7656 49.6777 77.0996 48.8926H77.1816V50H78.3184V43.6133ZM82.8418 47.1523C82.8418 45.5879 83.6445 44.6914 85.0859 44.6914C85.4375 44.6914 85.8535 44.7676 86.1406 44.873V43.584C85.9297 43.4961 85.584 43.4492 85.2207 43.4492C83.9961 43.4492 83.252 44.041 83 45.2422H82.8359V43.6133H80.3105V44.5156H81.6992V49.0977H80.4336V50H84.7812V49.0977H82.8418V47.1523ZM93.2715 50V49.0508H91.2207V41.123H87.957V42.0781H90.0488V49.0508H87.9102V50H93.2715ZM102.611 50H103.789V46.2676C103.789 45.2363 104.445 44.5508 105.436 44.5508C106.379 44.5508 106.83 45.0723 106.83 46.1562V50H108.002V45.8691C108.002 44.3398 107.246 43.502 105.857 43.502C104.891 43.502 104.164 43.9473 103.836 44.7324H103.748V41.123H102.611V50ZM111.564 41.8672V43.6484H109.877V44.6152H111.564V48.0664C111.564 49.4375 112.279 50.0234 113.914 50.0234C114.16 50.0234 115.086 50 115.215 49.9766V49.0156C115.074 49.0332 114.295 49.0449 113.996 49.0449C113.182 49.0449 112.742 48.6992 112.742 48.0664V44.6152H115.25V43.6484H112.725V41.8672H111.564ZM118.982 41.8672V43.6484H117.295V44.6152H118.982V48.0664C118.982 49.4375 119.697 50.0234 121.332 50.0234C121.578 50.0234 122.504 50 122.633 49.9766V49.0156C122.492 49.0332 121.713 49.0449 121.414 49.0449C120.6 49.0449 120.16 48.6992 120.16 48.0664V44.6152H122.668V43.6484H120.143V41.8672H118.982ZM128.059 43.5137C127.133 43.5137 126.477 43.9004 126.178 44.627H126.066V43.6133H124.889V52.1445H126.096V48.9863H126.207C126.465 49.7012 127.133 50.1055 128.059 50.1055C129.529 50.1055 130.467 49.0566 130.467 47.3926V46.2266C130.467 44.5625 129.529 43.5137 128.059 43.5137ZM127.666 44.5566C128.65 44.5566 129.277 45.248 129.277 46.3438V47.2988C129.277 48.3945 128.65 49.0918 127.666 49.0918C126.688 49.0918 126.066 48.4004 126.066 47.2988V46.3438C126.066 45.248 126.688 44.5566 127.666 44.5566ZM132.576 45.377C132.576 46.3086 133.156 46.8945 134.322 47.1582L135.277 47.375C136.051 47.5508 136.338 47.791 136.338 48.2598C136.338 48.8164 135.822 49.1738 135.02 49.1738C134.246 49.1738 133.719 48.8633 133.59 48.3184H132.406C132.512 49.4434 133.484 50.1172 134.99 50.1172C136.549 50.1172 137.551 49.3438 137.551 48.1309C137.551 47.1934 136.982 46.6543 135.723 46.373L134.797 46.168C134.053 46.0039 133.742 45.752 133.742 45.2949C133.742 44.7676 134.229 44.416 134.979 44.416C135.682 44.416 136.18 44.7383 136.285 45.2598H137.41C137.305 44.1523 136.391 43.4844 134.996 43.4844C133.531 43.4844 132.576 44.2344 132.576 45.377ZM72.9395 67H74.1172V63.2676C74.1172 62.2363 74.7734 61.5508 75.7637 61.5508C76.707 61.5508 77.1582 62.0723 77.1582 63.1562V67H78.3301V62.8691C78.3301 61.3398 77.5742 60.502 76.1855 60.502C75.2188 60.502 74.4922 60.9473 74.1641 61.7324H74.0762V58.123H72.9395V67ZM84.6758 65.3125C84.5176 65.834 83.9492 66.1562 83.1934 66.1562C82.1855 66.1562 81.5352 65.4648 81.5352 64.3867V64.0996H85.8184V63.4082C85.8184 61.5918 84.8047 60.4902 83.1348 60.4902C81.4766 60.4902 80.3809 61.5977 80.3809 63.2793V64.252C80.3809 66.0684 81.4062 67.123 83.1992 67.123C84.5762 67.123 85.6309 66.3848 85.8008 65.3125H84.6758ZM83.123 61.4512C84.0898 61.4512 84.6641 62.1367 84.6641 63.2734H81.5352C81.5352 62.1309 82.1328 61.4512 83.123 61.4512ZM89.7617 67.1055C90.6641 67.1055 91.3496 66.7305 91.6543 66.0742H91.7656V67.0059H92.8848V62.6406C92.8848 61.2988 92.0059 60.5254 90.4648 60.5254C89.0938 60.5254 88.0918 61.2402 87.9746 62.2949H89.123C89.2754 61.791 89.7617 61.498 90.4414 61.498C91.2617 61.498 91.7188 61.9082 91.7188 62.6406V63.2031L90.043 63.291C88.5547 63.3789 87.7344 64.0469 87.7344 65.1836C87.7344 66.3379 88.543 67.1055 89.7617 67.1055ZM90.125 66.127C89.375 66.127 88.9062 65.7461 88.9062 65.1309C88.9062 64.5098 89.3516 64.1582 90.2012 64.1113L91.7188 64.0352V64.709C91.7188 65.5234 91.0391 66.127 90.125 66.127ZM97.3965 67.1055C98.3164 67.1055 98.9727 66.7129 99.2773 65.9922H99.3887V67H100.566V58.123H99.3594V61.627H99.248C98.9902 60.9121 98.3164 60.5078 97.3965 60.5078C95.9258 60.5078 94.9883 61.5566 94.9883 63.2266V64.3867C94.9883 66.0566 95.9258 67.1055 97.3965 67.1055ZM97.7832 66.0625C96.7988 66.0625 96.1777 65.3711 96.1777 64.2754V63.3203C96.1777 62.2246 96.7988 61.5273 97.7832 61.5273C98.7676 61.5273 99.3887 62.2188 99.3887 63.3203V64.2754C99.3887 65.3711 98.7676 66.0625 97.7832 66.0625ZM106.93 65.3125C106.771 65.834 106.203 66.1562 105.447 66.1562C104.439 66.1562 103.789 65.4648 103.789 64.3867V64.0996H108.072V63.4082C108.072 61.5918 107.059 60.4902 105.389 60.4902C103.73 60.4902 102.635 61.5977 102.635 63.2793V64.252C102.635 66.0684 103.66 67.123 105.453 67.123C106.83 67.123 107.885 66.3848 108.055 65.3125H106.93ZM105.377 61.4512C106.344 61.4512 106.918 62.1367 106.918 63.2734H103.789C103.789 62.1309 104.387 61.4512 105.377 61.4512ZM112.514 64.1523C112.514 62.5879 113.316 61.6914 114.758 61.6914C115.109 61.6914 115.525 61.7676 115.812 61.873V60.584C115.602 60.4961 115.256 60.4492 114.893 60.4492C113.668 60.4492 112.924 61.041 112.672 62.2422H112.508V60.6133H109.982V61.5156H111.371V66.0977H110.105V67H114.453V66.0977H112.514V64.1523ZM72.9395 84H74.1172V80.2676C74.1172 79.2363 74.7734 78.5508 75.7637 78.5508C76.707 78.5508 77.1582 79.0723 77.1582 80.1562V84H78.3301V79.8691C78.3301 78.3398 77.5742 77.502 76.1855 77.502C75.2188 77.502 74.4922 77.9473 74.1641 78.7324H74.0762V75.123H72.9395V84ZM84.6758 82.3125C84.5176 82.834 83.9492 83.1562 83.1934 83.1562C82.1855 83.1562 81.5352 82.4648 81.5352 81.3867V81.0996H85.8184V80.4082C85.8184 78.5918 84.8047 77.4902 83.1348 77.4902C81.4766 77.4902 80.3809 78.5977 80.3809 80.2793V81.252C80.3809 83.0684 81.4062 84.123 83.1992 84.123C84.5762 84.123 85.6309 83.3848 85.8008 82.3125H84.6758ZM83.123 78.4512C84.0898 78.4512 84.6641 79.1367 84.6641 80.2734H81.5352C81.5352 79.1309 82.1328 78.4512 83.123 78.4512ZM89.7617 84.1055C90.6641 84.1055 91.3496 83.7305 91.6543 83.0742H91.7656V84.0059H92.8848V79.6406C92.8848 78.2988 92.0059 77.5254 90.4648 77.5254C89.0938 77.5254 88.0918 78.2402 87.9746 79.2949H89.123C89.2754 78.791 89.7617 78.498 90.4414 78.498C91.2617 78.498 91.7188 78.9082 91.7188 79.6406V80.2031L90.043 80.291C88.5547 80.3789 87.7344 81.0469 87.7344 82.1836C87.7344 83.3379 88.543 84.1055 89.7617 84.1055ZM90.125 83.127C89.375 83.127 88.9062 82.7461 88.9062 82.1309C88.9062 81.5098 89.3516 81.1582 90.2012 81.1113L91.7188 81.0352V81.709C91.7188 82.5234 91.0391 83.127 90.125 83.127ZM97.3965 84.1055C98.3164 84.1055 98.9727 83.7129 99.2773 82.9922H99.3887V84H100.566V75.123H99.3594V78.627H99.248C98.9902 77.9121 98.3164 77.5078 97.3965 77.5078C95.9258 77.5078 94.9883 78.5566 94.9883 80.2266V81.3867C94.9883 83.0566 95.9258 84.1055 97.3965 84.1055ZM97.7832 83.0625C96.7988 83.0625 96.1777 82.3711 96.1777 81.2754V80.3203C96.1777 79.2246 96.7988 78.5273 97.7832 78.5273C98.7676 78.5273 99.3887 79.2188 99.3887 80.3203V81.2754C99.3887 82.3711 98.7676 83.0625 97.7832 83.0625ZM106.93 82.3125C106.771 82.834 106.203 83.1562 105.447 83.1562C104.439 83.1562 103.789 82.4648 103.789 81.3867V81.0996H108.072V80.4082C108.072 78.5918 107.059 77.4902 105.389 77.4902C103.73 77.4902 102.635 78.5977 102.635 80.2793V81.252C102.635 83.0684 103.66 84.123 105.453 84.123C106.83 84.123 107.885 83.3848 108.055 82.3125H106.93ZM105.377 78.4512C106.344 78.4512 106.918 79.1367 106.918 80.2734H103.789C103.789 79.1309 104.387 78.4512 105.377 78.4512ZM112.514 81.1523C112.514 79.5879 113.316 78.6914 114.758 78.6914C115.109 78.6914 115.525 78.7676 115.812 78.873V77.584C115.602 77.4961 115.256 77.4492 114.893 77.4492C113.668 77.4492 112.924 78.041 112.672 79.2422H112.508V77.6133H109.982V78.5156H111.371V83.0977H110.105V84H114.453V83.0977H112.514V81.1523Z\" fill=\"#9EFFFF\"/><path d=\"M166.121 33.9375H167.275L163.203 23.6074H162.025L166.121 33.9375ZM142.396 45.5703C143.018 45.5703 143.521 45.0547 143.521 44.4277C143.521 43.7949 143.018 43.2793 142.396 43.2793C141.781 43.2793 141.271 43.7949 141.271 44.4277C141.271 45.0547 141.781 45.5703 142.396 45.5703ZM142.396 50.0586C143.018 50.0586 143.521 49.5371 143.521 48.9102C143.521 48.2773 143.018 47.7617 142.396 47.7617C141.781 47.7617 141.271 48.2773 141.271 48.9102C141.271 49.5371 141.781 50.0586 142.396 50.0586ZM329.316 67.9375H330.471L326.398 57.6074H325.221L329.316 67.9375Z\" fill=\"white\"/><path d=\"M63.8984 29.7832V28.7168H57.6992V29.7832H63.8984ZM71.3164 29.7832V28.7168H65.1172V29.7832H71.3164ZM63.8984 46.7832V45.7168H57.6992V46.7832H63.8984ZM71.3164 46.7832V45.7168H65.1172V46.7832H71.3164ZM63.8984 63.7832V62.7168H57.6992V63.7832H63.8984ZM71.3164 63.7832V62.7168H65.1172V63.7832H71.3164ZM63.8984 80.7832V79.7168H57.6992V80.7832H63.8984ZM71.3164 80.7832V79.7168H65.1172V80.7832H71.3164Z\" fill=\"#FF9D00\"/><path d=\"M148.344 50.9375L152.439 40.6074H151.262L147.189 50.9375H148.344ZM155.762 50.9375L159.857 40.6074H158.68L154.607 50.9375H155.762ZM164.158 50.1055C165.078 50.1055 165.734 49.7129 166.039 48.9922H166.15V50H167.328V41.123H166.121V44.627H166.01C165.752 43.9121 165.078 43.5078 164.158 43.5078C162.688 43.5078 161.75 44.5566 161.75 46.2266V47.3867C161.75 49.0566 162.688 50.1055 164.158 50.1055ZM164.545 49.0625C163.561 49.0625 162.939 48.3711 162.939 47.2754V46.3203C162.939 45.2246 163.561 44.5273 164.545 44.5273C165.529 44.5273 166.15 45.2188 166.15 46.3203V47.2754C166.15 48.3711 165.529 49.0625 164.545 49.0625ZM171.359 50.1055C172.262 50.1055 172.947 49.7305 173.252 49.0742H173.363V50.0059H174.482V45.6406C174.482 44.2988 173.604 43.5254 172.062 43.5254C170.691 43.5254 169.689 44.2402 169.572 45.2949H170.721C170.873 44.791 171.359 44.498 172.039 44.498C172.859 44.498 173.316 44.9082 173.316 45.6406V46.2031L171.641 46.291C170.152 46.3789 169.332 47.0469 169.332 48.1836C169.332 49.3379 170.141 50.1055 171.359 50.1055ZM171.723 49.127C170.973 49.127 170.504 48.7461 170.504 48.1309C170.504 47.5098 170.949 47.1582 171.799 47.1113L173.316 47.0352V47.709C173.316 48.5234 172.637 49.127 171.723 49.127ZM177.084 45.377C177.084 46.3086 177.664 46.8945 178.83 47.1582L179.785 47.375C180.559 47.5508 180.846 47.791 180.846 48.2598C180.846 48.8164 180.33 49.1738 179.527 49.1738C178.754 49.1738 178.227 48.8633 178.098 48.3184H176.914C177.02 49.4434 177.992 50.1172 179.498 50.1172C181.057 50.1172 182.059 49.3438 182.059 48.1309C182.059 47.1934 181.49 46.6543 180.23 46.373L179.305 46.168C178.561 46.0039 178.25 45.752 178.25 45.2949C178.25 44.7676 178.736 44.416 179.486 44.416C180.189 44.416 180.688 44.7383 180.793 45.2598H181.918C181.812 44.1523 180.898 43.4844 179.504 43.4844C178.039 43.4844 177.084 44.2344 177.084 45.377ZM184.209 50H185.387V46.2676C185.387 45.2363 186.043 44.5508 187.033 44.5508C187.977 44.5508 188.428 45.0723 188.428 46.1562V50H189.6V45.8691C189.6 44.3398 188.844 43.502 187.455 43.502C186.488 43.502 185.762 43.9473 185.434 44.7324H185.346V41.123H184.209V50ZM194.322 50.0586C194.943 50.0586 195.447 49.5371 195.447 48.9102C195.447 48.2773 194.943 47.7617 194.322 47.7617C193.701 47.7617 193.197 48.2773 193.197 48.9102C193.197 49.5371 193.701 50.0586 194.322 50.0586ZM201.529 47.1523C201.529 45.5879 202.332 44.6914 203.773 44.6914C204.125 44.6914 204.541 44.7676 204.828 44.873V43.584C204.617 43.4961 204.271 43.4492 203.908 43.4492C202.684 43.4492 201.939 44.041 201.688 45.2422H201.523V43.6133H198.998V44.5156H200.387V49.0977H199.121V50H203.469V49.0977H201.529V47.1523ZM210.781 48.3125C210.623 48.834 210.055 49.1562 209.299 49.1562C208.291 49.1562 207.641 48.4648 207.641 47.3867V47.0996H211.924V46.4082C211.924 44.5918 210.91 43.4902 209.24 43.4902C207.582 43.4902 206.486 44.5977 206.486 46.2793V47.252C206.486 49.0684 207.512 50.123 209.305 50.123C210.682 50.123 211.736 49.3848 211.906 48.3125H210.781ZM209.229 44.4512C210.195 44.4512 210.77 45.1367 210.77 46.2734H207.641C207.641 45.1309 208.238 44.4512 209.229 44.4512ZM215.867 50.1055C216.77 50.1055 217.455 49.7305 217.76 49.0742H217.871V50.0059H218.99V45.6406C218.99 44.2988 218.111 43.5254 216.57 43.5254C215.199 43.5254 214.197 44.2402 214.08 45.2949H215.229C215.381 44.791 215.867 44.498 216.547 44.498C217.367 44.498 217.824 44.9082 217.824 45.6406V46.2031L216.148 46.291C214.66 46.3789 213.84 47.0469 213.84 48.1836C213.84 49.3379 214.648 50.1055 215.867 50.1055ZM216.23 49.127C215.48 49.127 215.012 48.7461 215.012 48.1309C215.012 47.5098 215.457 47.1582 216.307 47.1113L217.824 47.0352V47.709C217.824 48.5234 217.145 49.127 216.23 49.127ZM223.502 50.1055C224.422 50.1055 225.078 49.7129 225.383 48.9922H225.494V50H226.672V41.123H225.465V44.627H225.354C225.096 43.9121 224.422 43.5078 223.502 43.5078C222.031 43.5078 221.094 44.5566 221.094 46.2266V47.3867C221.094 49.0566 222.031 50.1055 223.502 50.1055ZM223.889 49.0625C222.904 49.0625 222.283 48.3711 222.283 47.2754V46.3203C222.283 45.2246 222.904 44.5273 223.889 44.5273C224.873 44.5273 225.494 45.2188 225.494 46.3203V47.2754C225.494 48.3711 224.873 49.0625 223.889 49.0625ZM234.535 45.2246C234.535 44.0938 234.084 43.4902 233.223 43.4902C232.59 43.4902 232.098 43.8828 231.945 44.5156H231.816C231.682 43.8652 231.266 43.4902 230.668 43.4902C230.059 43.4902 229.607 43.877 229.455 44.5391H229.326V43.6133H228.289V50H229.32V45.6699C229.32 44.9668 229.643 44.5332 230.158 44.5332C230.645 44.5332 230.908 44.8965 230.908 45.582V50H231.934V45.6699C231.934 44.9668 232.25 44.5332 232.754 44.5332C233.234 44.5332 233.504 44.9023 233.504 45.5879V50H234.535V45.2246ZM240.453 48.3125C240.295 48.834 239.727 49.1562 238.971 49.1562C237.963 49.1562 237.312 48.4648 237.312 47.3867V47.0996H241.596V46.4082C241.596 44.5918 240.582 43.4902 238.912 43.4902C237.254 43.4902 236.158 44.5977 236.158 46.2793V47.252C236.158 49.0684 237.184 50.123 238.977 50.123C240.354 50.123 241.408 49.3848 241.578 48.3125H240.453ZM238.9 44.4512C239.867 44.4512 240.441 45.1367 240.441 46.2734H237.312C237.312 45.1309 237.91 44.4512 238.9 44.4512ZM246.248 50.0586C246.869 50.0586 247.373 49.5371 247.373 48.9102C247.373 48.2773 246.869 47.7617 246.248 47.7617C245.627 47.7617 245.123 48.2773 245.123 48.9102C245.123 49.5371 245.627 50.0586 246.248 50.0586ZM256.396 45.6699C256.238 44.2871 255.271 43.4844 253.783 43.4844C252.008 43.4844 250.982 44.5449 250.982 46.4082V47.1934C250.982 49.0566 252.008 50.123 253.783 50.123C255.271 50.123 256.238 49.3203 256.396 47.9609H255.236C255.119 48.6816 254.557 49.1094 253.771 49.1094C252.734 49.1094 252.16 48.3828 252.16 47.0703V46.5312C252.16 45.2188 252.734 44.4922 253.771 44.4922C254.551 44.4922 255.125 44.9316 255.236 45.6699H256.396ZM261.084 50.123C262.807 50.123 263.902 49.0215 263.902 47.293V46.3262C263.902 44.5918 262.807 43.4961 261.084 43.4961C259.361 43.4961 258.266 44.5918 258.266 46.3262V47.293C258.266 49.0215 259.361 50.123 261.084 50.123ZM261.084 44.4922C262.104 44.4922 262.742 45.2246 262.742 46.4082V47.2109C262.742 48.3945 262.104 49.127 261.084 49.127C260.064 49.127 259.426 48.3945 259.426 47.2109V46.4082C259.426 45.2246 260.064 44.4922 261.084 44.4922ZM271.625 45.2246C271.625 44.0938 271.174 43.4902 270.312 43.4902C269.68 43.4902 269.188 43.8828 269.035 44.5156H268.906C268.771 43.8652 268.355 43.4902 267.758 43.4902C267.148 43.4902 266.697 43.877 266.545 44.5391H266.416V43.6133H265.379V50H266.41V45.6699C266.41 44.9668 266.732 44.5332 267.248 44.5332C267.734 44.5332 267.998 44.8965 267.998 45.582V50H269.023V45.6699C269.023 44.9668 269.34 44.5332 269.844 44.5332C270.324 44.5332 270.594 44.9023 270.594 45.5879V50H271.625V45.2246ZM274.449 50.9375L278.545 40.6074H277.367L273.295 50.9375H274.449ZM282.629 50.1055C283.531 50.1055 284.217 49.7305 284.521 49.0742H284.633V50.0059H285.752V45.6406C285.752 44.2988 284.873 43.5254 283.332 43.5254C281.961 43.5254 280.959 44.2402 280.842 45.2949H281.99C282.143 44.791 282.629 44.498 283.309 44.498C284.129 44.498 284.586 44.9082 284.586 45.6406V46.2031L282.91 46.291C281.422 46.3789 280.602 47.0469 280.602 48.1836C280.602 49.3379 281.41 50.1055 282.629 50.1055ZM282.992 49.127C282.242 49.127 281.773 48.7461 281.773 48.1309C281.773 47.5098 282.219 47.1582 283.068 47.1113L284.586 47.0352V47.709C284.586 48.5234 283.906 49.127 282.992 49.127ZM291.254 43.5137C290.328 43.5137 289.672 43.9004 289.373 44.627H289.262V43.6133H288.084V52.1445H289.291V48.9863H289.402C289.66 49.7012 290.328 50.1055 291.254 50.1055C292.725 50.1055 293.662 49.0566 293.662 47.3926V46.2266C293.662 44.5625 292.725 43.5137 291.254 43.5137ZM290.861 44.5566C291.846 44.5566 292.473 45.248 292.473 46.3438V47.2988C292.473 48.3945 291.846 49.0918 290.861 49.0918C289.883 49.0918 289.262 48.4004 289.262 47.2988V46.3438C289.262 45.248 289.883 44.5566 290.861 44.5566ZM298.279 42.1191C298.807 42.1191 299.188 41.7559 299.188 41.252C299.188 40.7422 298.807 40.3789 298.279 40.3789C297.758 40.3789 297.371 40.7422 297.371 41.252C297.371 41.7559 297.758 42.1191 298.279 42.1191ZM300.975 50V49.0508H298.912V43.6133H295.66V44.5625H297.764V49.0508H295.613V50H300.975ZM304.121 50.9375L308.217 40.6074H307.039L302.967 50.9375H304.121ZM310.051 43.6133L312.359 50H313.666L315.969 43.6133H314.721L313.062 48.7988H312.98L311.311 43.6133H310.051ZM323.645 50V48.9629H321.33V41.5449H320.135L317.686 43.1504V44.3809L320.035 42.8516H320.129V48.9629H317.703V50H323.645ZM326.375 50.9375L330.471 40.6074H329.293L325.221 50.9375H326.375ZM334.771 50.1055C335.691 50.1055 336.348 49.7129 336.652 48.9922H336.764V50H337.941V41.123H336.734V44.627H336.623C336.365 43.9121 335.691 43.5078 334.771 43.5078C333.301 43.5078 332.363 44.5566 332.363 46.2266V47.3867C332.363 49.0566 333.301 50.1055 334.771 50.1055ZM335.158 49.0625C334.174 49.0625 333.553 48.3711 333.553 47.2754V46.3203C333.553 45.2246 334.174 44.5273 335.158 44.5273C336.143 44.5273 336.764 45.2188 336.764 46.3203V47.2754C336.764 48.3711 336.143 49.0625 335.158 49.0625ZM342.682 50.123C344.404 50.123 345.5 49.0215 345.5 47.293V46.3262C345.5 44.5918 344.404 43.4961 342.682 43.4961C340.959 43.4961 339.863 44.5918 339.863 46.3262V47.293C339.863 49.0215 340.959 50.123 342.682 50.123ZM342.682 44.4922C343.701 44.4922 344.34 45.2246 344.34 46.4082V47.2109C344.34 48.3945 343.701 49.127 342.682 49.127C341.662 49.127 341.023 48.3945 341.023 47.2109V46.4082C341.023 45.2246 341.662 44.4922 342.682 44.4922ZM352.83 45.6699C352.672 44.2871 351.705 43.4844 350.217 43.4844C348.441 43.4844 347.416 44.5449 347.416 46.4082V47.1934C347.416 49.0566 348.441 50.123 350.217 50.123C351.705 50.123 352.672 49.3203 352.83 47.9609H351.67C351.553 48.6816 350.99 49.1094 350.205 49.1094C349.168 49.1094 348.594 48.3828 348.594 47.0703V46.5312C348.594 45.2188 349.168 44.4922 350.205 44.4922C350.984 44.4922 351.559 44.9316 351.67 45.6699H352.83ZM355.115 45.377C355.115 46.3086 355.695 46.8945 356.861 47.1582L357.816 47.375C358.59 47.5508 358.877 47.791 358.877 48.2598C358.877 48.8164 358.361 49.1738 357.559 49.1738C356.785 49.1738 356.258 48.8633 356.129 48.3184H354.945C355.051 49.4434 356.023 50.1172 357.529 50.1172C359.088 50.1172 360.09 49.3438 360.09 48.1309C360.09 47.1934 359.521 46.6543 358.262 46.373L357.336 46.168C356.592 46.0039 356.281 45.752 356.281 45.2949C356.281 44.7676 356.768 44.416 357.518 44.416C358.221 44.416 358.719 44.7383 358.824 45.2598H359.949C359.844 44.1523 358.93 43.4844 357.535 43.4844C356.07 43.4844 355.115 44.2344 355.115 45.377ZM363.465 50.9375L367.561 40.6074H366.383L362.311 50.9375H363.465ZM369.951 45.377C369.951 46.3086 370.531 46.8945 371.697 47.1582L372.652 47.375C373.426 47.5508 373.713 47.791 373.713 48.2598C373.713 48.8164 373.197 49.1738 372.395 49.1738C371.621 49.1738 371.094 48.8633 370.965 48.3184H369.781C369.887 49.4434 370.859 50.1172 372.365 50.1172C373.924 50.1172 374.926 49.3438 374.926 48.1309C374.926 47.1934 374.357 46.6543 373.098 46.373L372.172 46.168C371.428 46.0039 371.117 45.752 371.117 45.2949C371.117 44.7676 371.604 44.416 372.354 44.416C373.057 44.416 373.555 44.7383 373.66 45.2598H374.785C374.68 44.1523 373.766 43.4844 372.371 43.4844C370.906 43.4844 369.951 44.2344 369.951 45.377ZM382.572 50V49.0508H380.521V41.123H377.258V42.0781H379.35V49.0508H377.211V50H382.572ZM389.873 43.6133H388.701V47.3574C388.701 48.3887 388.045 49.0742 387.066 49.0742C386.123 49.0742 385.684 48.5586 385.684 47.4688V43.6133H384.506V47.7559C384.506 49.291 385.256 50.123 386.645 50.123C387.6 50.123 388.32 49.6777 388.654 48.8926H388.736V50H389.873V43.6133ZM394.426 52.3965C396.195 52.3965 397.256 51.4941 397.256 49.9941V43.6133H396.096V44.627H395.984C395.727 43.9297 395.023 43.5078 394.098 43.5078C392.592 43.5078 391.637 44.5566 391.637 46.2266V47.3164C391.637 48.9805 392.586 50.0352 394.057 50.0352C394.994 50.0352 395.715 49.6074 395.967 48.9219H396.078V49.9883C396.078 50.9492 395.498 51.4766 394.443 51.4766C393.635 51.4766 393.031 51.1543 392.908 50.6562H391.748C391.871 51.7344 392.891 52.3965 394.426 52.3965ZM392.832 47.2051V46.3203C392.832 45.2305 393.465 44.5273 394.455 44.5273C395.439 44.5273 396.078 45.2246 396.078 46.3203V47.2051C396.078 48.2949 395.439 48.998 394.455 48.998C393.465 48.998 392.832 48.2949 392.832 47.2051ZM410.914 50.9375H412.068L407.996 40.6074H406.818L410.914 50.9375Z\" fill=\"#B362FF\"/><path d=\"M128.17 62.4238V58.5449H126.951V62.4238H128.17ZM137.029 67H138.324L135.658 58.5449H134.299L131.633 67H132.863L133.543 64.668H136.355L137.029 67ZM134.932 59.8984H134.973L136.068 63.6777H133.83L134.932 59.8984ZM145.127 62.6699C144.969 61.2871 144.002 60.4844 142.514 60.4844C140.738 60.4844 139.713 61.5449 139.713 63.4082V64.1934C139.713 66.0566 140.738 67.123 142.514 67.123C144.002 67.123 144.969 66.3203 145.127 64.9609H143.967C143.85 65.6816 143.287 66.1094 142.502 66.1094C141.465 66.1094 140.891 65.3828 140.891 64.0703V63.5312C140.891 62.2188 141.465 61.4922 142.502 61.4922C143.281 61.4922 143.855 61.9316 143.967 62.6699H145.127ZM152.545 62.6699C152.387 61.2871 151.42 60.4844 149.932 60.4844C148.156 60.4844 147.131 61.5449 147.131 63.4082V64.1934C147.131 66.0566 148.156 67.123 149.932 67.123C151.42 67.123 152.387 66.3203 152.545 64.9609H151.385C151.268 65.6816 150.705 66.1094 149.92 66.1094C148.883 66.1094 148.309 65.3828 148.309 64.0703V63.5312C148.309 62.2188 148.883 61.4922 149.92 61.4922C150.699 61.4922 151.273 61.9316 151.385 62.6699H152.545ZM158.855 65.3125C158.697 65.834 158.129 66.1562 157.373 66.1562C156.365 66.1562 155.715 65.4648 155.715 64.3867V64.0996H159.998V63.4082C159.998 61.5918 158.984 60.4902 157.314 60.4902C155.656 60.4902 154.561 61.5977 154.561 63.2793V64.252C154.561 66.0684 155.586 67.123 157.379 67.123C158.756 67.123 159.811 66.3848 159.98 65.3125H158.855ZM157.303 61.4512C158.27 61.4512 158.844 62.1367 158.844 63.2734H155.715C155.715 62.1309 156.312 61.4512 157.303 61.4512ZM165.148 60.5137C164.223 60.5137 163.566 60.9004 163.268 61.627H163.156V60.6133H161.979V69.1445H163.186V65.9863H163.297C163.555 66.7012 164.223 67.1055 165.148 67.1055C166.619 67.1055 167.557 66.0566 167.557 64.3926V63.2266C167.557 61.5625 166.619 60.5137 165.148 60.5137ZM164.756 61.5566C165.74 61.5566 166.367 62.248 166.367 63.3438V64.2988C166.367 65.3945 165.74 66.0918 164.756 66.0918C163.777 66.0918 163.156 65.4004 163.156 64.2988V63.3438C163.156 62.248 163.777 61.5566 164.756 61.5566ZM170.908 58.8672V60.6484H169.221V61.6152H170.908V65.0664C170.908 66.4375 171.623 67.0234 173.258 67.0234C173.504 67.0234 174.43 67 174.559 66.9766V66.0156C174.418 66.0332 173.639 66.0449 173.34 66.0449C172.525 66.0449 172.086 65.6992 172.086 65.0664V61.6152H174.594V60.6484H172.068V58.8672H170.908ZM179.486 62.5703C180.107 62.5703 180.611 62.0547 180.611 61.4277C180.611 60.7949 180.107 60.2793 179.486 60.2793C178.871 60.2793 178.361 60.7949 178.361 61.4277C178.361 62.0547 178.871 62.5703 179.486 62.5703ZM179.486 67.0586C180.107 67.0586 180.611 66.5371 180.611 65.9102C180.611 65.2773 180.107 64.7617 179.486 64.7617C178.871 64.7617 178.361 65.2773 178.361 65.9102C178.361 66.5371 178.871 67.0586 179.486 67.0586ZM193.613 67.1055C194.516 67.1055 195.201 66.7305 195.506 66.0742H195.617V67.0059H196.736V62.6406C196.736 61.2988 195.857 60.5254 194.316 60.5254C192.945 60.5254 191.943 61.2402 191.826 62.2949H192.975C193.127 61.791 193.613 61.498 194.293 61.498C195.113 61.498 195.57 61.9082 195.57 62.6406V63.2031L193.895 63.291C192.406 63.3789 191.586 64.0469 191.586 65.1836C191.586 66.3379 192.395 67.1055 193.613 67.1055ZM193.977 66.127C193.227 66.127 192.758 65.7461 192.758 65.1309C192.758 64.5098 193.203 64.1582 194.053 64.1113L195.57 64.0352V64.709C195.57 65.5234 194.891 66.127 193.977 66.127ZM202.238 60.5137C201.312 60.5137 200.656 60.9004 200.357 61.627H200.246V60.6133H199.068V69.1445H200.275V65.9863H200.387C200.645 66.7012 201.312 67.1055 202.238 67.1055C203.709 67.1055 204.646 66.0566 204.646 64.3926V63.2266C204.646 61.5625 203.709 60.5137 202.238 60.5137ZM201.846 61.5566C202.83 61.5566 203.457 62.248 203.457 63.3438V64.2988C203.457 65.3945 202.83 66.0918 201.846 66.0918C200.867 66.0918 200.246 65.4004 200.246 64.2988V63.3438C200.246 62.248 200.867 61.5566 201.846 61.5566ZM209.656 60.5137C208.73 60.5137 208.074 60.9004 207.775 61.627H207.664V60.6133H206.486V69.1445H207.693V65.9863H207.805C208.062 66.7012 208.73 67.1055 209.656 67.1055C211.127 67.1055 212.064 66.0566 212.064 64.3926V63.2266C212.064 61.5625 211.127 60.5137 209.656 60.5137ZM209.264 61.5566C210.248 61.5566 210.875 62.248 210.875 63.3438V64.2988C210.875 65.3945 210.248 66.0918 209.264 66.0918C208.285 66.0918 207.664 65.4004 207.664 64.2988V63.3438C207.664 62.248 208.285 61.5566 209.264 61.5566ZM219.377 67V66.0508H217.326V58.123H214.062V59.0781H216.154V66.0508H214.016V67H219.377ZM224.1 59.1191C224.627 59.1191 225.008 58.7559 225.008 58.252C225.008 57.7422 224.627 57.3789 224.1 57.3789C223.578 57.3789 223.191 57.7422 223.191 58.252C223.191 58.7559 223.578 59.1191 224.1 59.1191ZM226.795 67V66.0508H224.732V60.6133H221.48V61.5625H223.584V66.0508H221.434V67H226.795ZM234.143 62.6699C233.984 61.2871 233.018 60.4844 231.529 60.4844C229.754 60.4844 228.729 61.5449 228.729 63.4082V64.1934C228.729 66.0566 229.754 67.123 231.529 67.123C233.018 67.123 233.984 66.3203 234.143 64.9609H232.982C232.865 65.6816 232.303 66.1094 231.518 66.1094C230.48 66.1094 229.906 65.3828 229.906 64.0703V63.5312C229.906 62.2188 230.48 61.4922 231.518 61.4922C232.297 61.4922 232.871 61.9316 232.982 62.6699H234.143ZM238.121 67.1055C239.023 67.1055 239.709 66.7305 240.014 66.0742H240.125V67.0059H241.244V62.6406C241.244 61.2988 240.365 60.5254 238.824 60.5254C237.453 60.5254 236.451 61.2402 236.334 62.2949H237.482C237.635 61.791 238.121 61.498 238.801 61.498C239.621 61.498 240.078 61.9082 240.078 62.6406V63.2031L238.402 63.291C236.914 63.3789 236.094 64.0469 236.094 65.1836C236.094 66.3379 236.902 67.1055 238.121 67.1055ZM238.484 66.127C237.734 66.127 237.266 65.7461 237.266 65.1309C237.266 64.5098 237.711 64.1582 238.561 64.1113L240.078 64.0352V64.709C240.078 65.5234 239.398 66.127 238.484 66.127ZM245.088 58.8672V60.6484H243.4V61.6152H245.088V65.0664C245.088 66.4375 245.803 67.0234 247.438 67.0234C247.684 67.0234 248.609 67 248.738 66.9766V66.0156C248.598 66.0332 247.818 66.0449 247.52 66.0449C246.705 66.0449 246.266 65.6992 246.266 65.0664V61.6152H248.773V60.6484H246.248V58.8672H245.088ZM253.771 59.1191C254.299 59.1191 254.68 58.7559 254.68 58.252C254.68 57.7422 254.299 57.3789 253.771 57.3789C253.25 57.3789 252.863 57.7422 252.863 58.252C252.863 58.7559 253.25 59.1191 253.771 59.1191ZM256.467 67V66.0508H254.404V60.6133H251.152V61.5625H253.256V66.0508H251.105V67H256.467ZM261.084 67.123C262.807 67.123 263.902 66.0215 263.902 64.293V63.3262C263.902 61.5918 262.807 60.4961 261.084 60.4961C259.361 60.4961 258.266 61.5918 258.266 63.3262V64.293C258.266 66.0215 259.361 67.123 261.084 67.123ZM261.084 61.4922C262.104 61.4922 262.742 62.2246 262.742 63.4082V64.2109C262.742 65.3945 262.104 66.127 261.084 66.127C260.064 66.127 259.426 65.3945 259.426 64.2109V63.4082C259.426 62.2246 260.064 61.4922 261.084 61.4922ZM265.818 67H266.99V63.2559C266.99 62.2246 267.646 61.5391 268.625 61.5391C269.568 61.5391 270.008 62.0547 270.008 63.1504V67H271.186V62.8574C271.186 61.3223 270.436 60.4902 269.047 60.4902C268.092 60.4902 267.371 60.9355 267.037 61.7266H266.955V60.6133H265.818V67ZM274.449 67.9375L278.545 57.6074H277.367L273.295 67.9375H274.449ZM284.146 59.1191C284.668 59.1191 285.049 58.7559 285.049 58.252C285.049 57.7422 284.668 57.3789 284.146 57.3789C283.619 57.3789 283.238 57.7422 283.238 58.252C283.238 58.7559 283.619 59.1191 284.146 59.1191ZM284.803 60.6133H280.824V61.5625H283.654V66.8242C283.654 67.6621 283.309 67.9434 282.236 67.9434C281.914 67.9434 280.953 67.9316 280.701 67.9082V68.9336C281.047 68.9629 281.908 68.9746 282.277 68.9746C284.088 68.9746 284.803 68.3945 284.803 66.9062V60.6133ZM288.354 62.377C288.354 63.3086 288.934 63.8945 290.1 64.1582L291.055 64.375C291.828 64.5508 292.115 64.791 292.115 65.2598C292.115 65.8164 291.6 66.1738 290.797 66.1738C290.023 66.1738 289.496 65.8633 289.367 65.3184H288.184C288.289 66.4434 289.262 67.1172 290.768 67.1172C292.326 67.1172 293.328 66.3438 293.328 65.1309C293.328 64.1934 292.76 63.6543 291.5 63.373L290.574 63.168C289.83 63.0039 289.52 62.752 289.52 62.2949C289.52 61.7676 290.006 61.416 290.756 61.416C291.459 61.416 291.957 61.7383 292.062 62.2598H293.188C293.082 61.1523 292.168 60.4844 290.773 60.4844C289.309 60.4844 288.354 61.2344 288.354 62.377ZM298.174 67.123C299.896 67.123 300.992 66.0215 300.992 64.293V63.3262C300.992 61.5918 299.896 60.4961 298.174 60.4961C296.451 60.4961 295.355 61.5918 295.355 63.3262V64.293C295.355 66.0215 296.451 67.123 298.174 67.123ZM298.174 61.4922C299.193 61.4922 299.832 62.2246 299.832 63.4082V64.2109C299.832 65.3945 299.193 66.127 298.174 66.127C297.154 66.127 296.516 65.3945 296.516 64.2109V63.4082C296.516 62.2246 297.154 61.4922 298.174 61.4922ZM302.908 67H304.08V63.2559C304.08 62.2246 304.736 61.5391 305.715 61.5391C306.658 61.5391 307.098 62.0547 307.098 63.1504V67H308.275V62.8574C308.275 61.3223 307.525 60.4902 306.137 60.4902C305.182 60.4902 304.461 60.9355 304.127 61.7266H304.045V60.6133H302.908V67ZM313.619 62.4238V58.5449H312.4V62.4238H313.619ZM128.17 79.4238V75.5449H126.951V79.4238H128.17ZM137.029 84H138.324L135.658 75.5449H134.299L131.633 84H132.863L133.543 81.668H136.355L137.029 84ZM134.932 76.8984H134.973L136.068 80.6777H133.83L134.932 76.8984ZM145.08 77.6133H143.908V81.3574C143.908 82.3887 143.252 83.0742 142.273 83.0742C141.33 83.0742 140.891 82.5586 140.891 81.4688V77.6133H139.713V81.7559C139.713 83.291 140.463 84.123 141.852 84.123C142.807 84.123 143.527 83.6777 143.861 82.8926H143.943V84H145.08V77.6133ZM148.654 75.8672V77.6484H146.967V78.6152H148.654V82.0664C148.654 83.4375 149.369 84.0234 151.004 84.0234C151.25 84.0234 152.176 84 152.305 83.9766V83.0156C152.164 83.0332 151.385 83.0449 151.086 83.0449C150.271 83.0449 149.832 82.6992 149.832 82.0664V78.6152H152.34V77.6484H149.814V75.8672H148.654ZM154.537 84H155.715V80.2676C155.715 79.2363 156.371 78.5508 157.361 78.5508C158.305 78.5508 158.756 79.0723 158.756 80.1562V84H159.928V79.8691C159.928 78.3398 159.172 77.502 157.783 77.502C156.816 77.502 156.09 77.9473 155.762 78.7324H155.674V75.123H154.537V84ZM164.65 84.123C166.373 84.123 167.469 83.0215 167.469 81.293V80.3262C167.469 78.5918 166.373 77.4961 164.65 77.4961C162.928 77.4961 161.832 78.5918 161.832 80.3262V81.293C161.832 83.0215 162.928 84.123 164.65 84.123ZM164.65 78.4922C165.67 78.4922 166.309 79.2246 166.309 80.4082V81.2109C166.309 82.3945 165.67 83.127 164.65 83.127C163.631 83.127 162.992 82.3945 162.992 81.2109V80.4082C162.992 79.2246 163.631 78.4922 164.65 78.4922ZM171.857 81.1523C171.857 79.5879 172.66 78.6914 174.102 78.6914C174.453 78.6914 174.869 78.7676 175.156 78.873V77.584C174.945 77.4961 174.6 77.4492 174.236 77.4492C173.012 77.4492 172.268 78.041 172.016 79.2422H171.852V77.6133H169.326V78.5156H170.715V83.0977H169.449V84H173.797V83.0977H171.857V81.1523ZM179.592 76.1191C180.119 76.1191 180.5 75.7559 180.5 75.252C180.5 74.7422 180.119 74.3789 179.592 74.3789C179.07 74.3789 178.684 74.7422 178.684 75.252C178.684 75.7559 179.07 76.1191 179.592 76.1191ZM182.287 84V83.0508H180.225V77.6133H176.973V78.5625H179.076V83.0508H176.926V84H182.287ZM184.373 84H189.436V83.0273H185.873V82.9395L189.4 78.4453V77.6133H184.396V78.5859H187.994V78.6738L184.373 83.2266V84ZM193.613 84.1055C194.516 84.1055 195.201 83.7305 195.506 83.0742H195.617V84.0059H196.736V79.6406C196.736 78.2988 195.857 77.5254 194.316 77.5254C192.945 77.5254 191.943 78.2402 191.826 79.2949H192.975C193.127 78.791 193.613 78.498 194.293 78.498C195.113 78.498 195.57 78.9082 195.57 79.6406V80.2031L193.895 80.291C192.406 80.3789 191.586 81.0469 191.586 82.1836C191.586 83.3379 192.395 84.1055 193.613 84.1055ZM193.977 83.127C193.227 83.127 192.758 82.7461 192.758 82.1309C192.758 81.5098 193.203 81.1582 194.053 81.1113L195.57 81.0352V81.709C195.57 82.5234 194.891 83.127 193.977 83.127ZM200.58 75.8672V77.6484H198.893V78.6152H200.58V82.0664C200.58 83.4375 201.295 84.0234 202.93 84.0234C203.176 84.0234 204.102 84 204.23 83.9766V83.0156C204.09 83.0332 203.311 83.0449 203.012 83.0449C202.197 83.0449 201.758 82.6992 201.758 82.0664V78.6152H204.266V77.6484H201.74V75.8672H200.58ZM209.264 76.1191C209.791 76.1191 210.172 75.7559 210.172 75.252C210.172 74.7422 209.791 74.3789 209.264 74.3789C208.742 74.3789 208.355 74.7422 208.355 75.252C208.355 75.7559 208.742 76.1191 209.264 76.1191ZM211.959 84V83.0508H209.896V77.6133H206.645V78.5625H208.748V83.0508H206.598V84H211.959ZM216.576 84.123C218.299 84.123 219.395 83.0215 219.395 81.293V80.3262C219.395 78.5918 218.299 77.4961 216.576 77.4961C214.854 77.4961 213.758 78.5918 213.758 80.3262V81.293C213.758 83.0215 214.854 84.123 216.576 84.123ZM216.576 78.4922C217.596 78.4922 218.234 79.2246 218.234 80.4082V81.2109C218.234 82.3945 217.596 83.127 216.576 83.127C215.557 83.127 214.918 82.3945 214.918 81.2109V80.4082C214.918 79.2246 215.557 78.4922 216.576 78.4922ZM221.311 84H222.482V80.2559C222.482 79.2246 223.139 78.5391 224.117 78.5391C225.061 78.5391 225.5 79.0547 225.5 80.1504V84H226.678V79.8574C226.678 78.3223 225.928 77.4902 224.539 77.4902C223.584 77.4902 222.863 77.9355 222.529 78.7266H222.447V77.6133H221.311V84ZM231.412 79.5703C232.033 79.5703 232.537 79.0547 232.537 78.4277C232.537 77.7949 232.033 77.2793 231.412 77.2793C230.797 77.2793 230.287 77.7949 230.287 78.4277C230.287 79.0547 230.797 79.5703 231.412 79.5703ZM231.412 84.0586C232.033 84.0586 232.537 83.5371 232.537 82.9102C232.537 82.2773 232.033 81.7617 231.412 81.7617C230.797 81.7617 230.287 82.2773 230.287 82.9102C230.287 83.5371 230.797 84.0586 231.412 84.0586ZM246.453 84C248.27 84 249.359 83.1094 249.359 81.627C249.359 80.5078 248.598 79.6699 247.461 79.5703V79.4824C248.328 79.3359 248.938 78.5684 248.938 77.6367C248.938 76.3301 247.994 75.5449 246.412 75.5449H243.564V84H246.453ZM244.766 76.541H246.113C247.139 76.541 247.713 77.0156 247.713 77.8535C247.713 78.6855 247.098 79.1484 245.979 79.1484H244.766V76.541ZM244.766 82.9922V80.1035H246.119C247.42 80.1035 248.094 80.5898 248.094 81.5332C248.094 82.5059 247.438 82.9922 246.148 82.9922H244.766ZM252.957 84.1055C253.859 84.1055 254.545 83.7305 254.85 83.0742H254.961V84.0059H256.08V79.6406C256.08 78.2988 255.201 77.5254 253.66 77.5254C252.289 77.5254 251.287 78.2402 251.17 79.2949H252.318C252.471 78.791 252.957 78.498 253.637 78.498C254.457 78.498 254.914 78.9082 254.914 79.6406V80.2031L253.238 80.291C251.75 80.3789 250.93 81.0469 250.93 82.1836C250.93 83.3379 251.738 84.1055 252.957 84.1055ZM253.32 83.127C252.57 83.127 252.102 82.7461 252.102 82.1309C252.102 81.5098 252.547 81.1582 253.396 81.1113L254.914 81.0352V81.709C254.914 82.5234 254.234 83.127 253.32 83.127ZM258.682 79.377C258.682 80.3086 259.262 80.8945 260.428 81.1582L261.383 81.375C262.156 81.5508 262.443 81.791 262.443 82.2598C262.443 82.8164 261.928 83.1738 261.125 83.1738C260.352 83.1738 259.824 82.8633 259.695 82.3184H258.512C258.617 83.4434 259.59 84.1172 261.096 84.1172C262.654 84.1172 263.656 83.3438 263.656 82.1309C263.656 81.1934 263.088 80.6543 261.828 80.373L260.902 80.168C260.158 80.0039 259.848 79.752 259.848 79.2949C259.848 78.7676 260.334 78.416 261.084 78.416C261.787 78.416 262.285 78.7383 262.391 79.2598H263.516C263.41 78.1523 262.496 77.4844 261.102 77.4844C259.637 77.4844 258.682 78.2344 258.682 79.377ZM268.607 76.1191C269.135 76.1191 269.516 75.7559 269.516 75.252C269.516 74.7422 269.135 74.3789 268.607 74.3789C268.086 74.3789 267.699 74.7422 267.699 75.252C267.699 75.7559 268.086 76.1191 268.607 76.1191ZM271.303 84V83.0508H269.24V77.6133H265.988V78.5625H268.092V83.0508H265.941V84H271.303ZM278.65 79.6699C278.492 78.2871 277.525 77.4844 276.037 77.4844C274.262 77.4844 273.236 78.5449 273.236 80.4082V81.1934C273.236 83.0566 274.262 84.123 276.037 84.123C277.525 84.123 278.492 83.3203 278.65 81.9609H277.49C277.373 82.6816 276.811 83.1094 276.025 83.1094C274.988 83.1094 274.414 82.3828 274.414 81.0703V80.5312C274.414 79.2188 274.988 78.4922 276.025 78.4922C276.805 78.4922 277.379 78.9316 277.49 79.6699H278.65ZM290.762 84.1875C292.654 84.1875 293.709 82.6113 293.709 79.7754C293.709 76.9336 292.654 75.3574 290.762 75.3574C288.869 75.3574 287.814 76.9336 287.814 79.7754C287.814 82.6113 288.869 84.1875 290.762 84.1875ZM289.016 79.7754C289.016 77.5664 289.619 76.4004 290.762 76.4004C291.523 76.4004 292.045 76.9219 292.309 77.9238L289.039 80.502C289.021 80.2734 289.016 80.0332 289.016 79.7754ZM290.762 83.1504C290 83.1504 289.479 82.6289 289.215 81.6328L292.479 79.0371C292.496 79.2715 292.502 79.5117 292.502 79.7754C292.502 81.9785 291.898 83.1504 290.762 83.1504ZM298.209 78.8262L299.352 84H300.471L301.883 75.5449H300.746L300.289 78.8027L299.832 82.2773H299.756L298.695 77.4785H297.652L296.592 82.2773H296.516L296.059 78.8027L295.602 75.5449H294.465L295.877 84H296.996L298.139 78.8262H298.209ZM308.498 82.8984H304.578V75.5449H303.371V84H308.498V82.8984ZM313.215 84C315.031 84 316.121 83.1094 316.121 81.627C316.121 80.5078 315.359 79.6699 314.223 79.5703V79.4824C315.09 79.3359 315.699 78.5684 315.699 77.6367C315.699 76.3301 314.756 75.5449 313.174 75.5449H310.326V84H313.215ZM311.527 76.541H312.875C313.9 76.541 314.475 77.0156 314.475 77.8535C314.475 78.6855 313.859 79.1484 312.74 79.1484H311.527V76.541ZM311.527 82.9922V80.1035H312.881C314.182 80.1035 314.855 80.5898 314.855 81.5332C314.855 82.5059 314.199 82.9922 312.91 82.9922H311.527ZM319.396 80.1387H320.375C321.488 80.1387 322.197 80.7246 322.197 81.6445C322.197 82.5469 321.506 83.1152 320.404 83.1152C319.391 83.1152 318.682 82.5645 318.6 81.7031H317.457C317.533 83.1973 318.717 84.1758 320.439 84.1758C322.186 84.1758 323.422 83.1504 323.422 81.6914C323.422 80.5488 322.748 79.7695 321.617 79.623V79.5293C322.531 79.3184 323.076 78.5859 323.076 77.5781C323.076 76.2773 321.975 75.3691 320.398 75.3691C318.77 75.3691 317.709 76.2949 317.621 77.7949H318.758C318.834 76.9277 319.438 76.3945 320.357 76.3945C321.277 76.3945 321.887 76.9277 321.887 77.7539C321.887 78.5859 321.254 79.166 320.34 79.166H319.396V80.1387ZM328.074 80.7012L329.621 84H330.992L329.281 80.4727C330.23 80.1445 330.834 79.2305 330.834 78.1289C330.834 76.5293 329.768 75.5449 328.039 75.5449H325.133V84H326.346V80.7012H328.074ZM326.346 76.582H327.91C328.982 76.582 329.604 77.1562 329.604 78.1523C329.604 79.1484 328.977 79.7168 327.869 79.7168H326.346V76.582ZM335.873 84V76.6289H338.387V75.5449H332.141V76.6289H334.654V84H335.873ZM343.291 79.4238V75.5449H342.072V79.4238H343.291Z\" fill=\"#A5FF90\"/></g><defs><clipPath id=\"clip0_1464_34845\"><rect width=\"400\" height=\"104\" rx=\"15\" fill=\"white\"/></clipPath></defs>\n </symbol>\n <symbol id=\"code-2\" width=\"400\" height=\"104\" viewBox=\"0 0 400 104\" fill=\"none\">\n\t\t<g clip-path=\"url(#clip0_1464_34847)\"><path d=\"M26.4395 28.6699C26.2812 27.2871 25.3145 26.4844 23.8262 26.4844C22.0508 26.4844 21.0254 27.5449 21.0254 29.4082V30.1934C21.0254 32.0566 22.0508 33.123 23.8262 33.123C25.3145 33.123 26.2812 32.3203 26.4395 30.9609H25.2793C25.1621 31.6816 24.5996 32.1094 23.8145 32.1094C22.7773 32.1094 22.2031 31.3828 22.2031 30.0703V29.5312C22.2031 28.2188 22.7773 27.4922 23.8145 27.4922C24.5938 27.4922 25.168 27.9316 25.2793 28.6699H26.4395ZM33.8105 26.6133H32.6387V30.3574C32.6387 31.3887 31.9824 32.0742 31.0039 32.0742C30.0605 32.0742 29.6211 31.5586 29.6211 30.4688V26.6133H28.4434V30.7559C28.4434 32.291 29.1934 33.123 30.582 33.123C31.5371 33.123 32.2578 32.6777 32.5918 31.8926H32.6738V33H33.8105V26.6133ZM38.334 30.1523C38.334 28.5879 39.1367 27.6914 40.5781 27.6914C40.9297 27.6914 41.3457 27.7676 41.6328 27.873V26.584C41.4219 26.4961 41.0762 26.4492 40.7129 26.4492C39.4883 26.4492 38.7441 27.041 38.4922 28.2422H38.3281V26.6133H35.8027V27.5156H37.1914V32.0977H35.9258V33H40.2734V32.0977H38.334V30.1523ZM48.7637 33V32.0508H46.7129V24.123H43.4492V25.0781H45.541V32.0508H43.4023V33H48.7637ZM75.4238 30.1523C75.4238 28.5879 76.2266 27.6914 77.668 27.6914C78.0195 27.6914 78.4355 27.7676 78.7227 27.873V26.584C78.5117 26.4961 78.166 26.4492 77.8027 26.4492C76.5781 26.4492 75.834 27.041 75.582 28.2422H75.418V26.6133H72.8926V27.5156H74.2812V32.0977H73.0156V33H77.3633V32.0977H75.4238V30.1523ZM84.6758 31.3125C84.5176 31.834 83.9492 32.1562 83.1934 32.1562C82.1855 32.1562 81.5352 31.4648 81.5352 30.3867V30.0996H85.8184V29.4082C85.8184 27.5918 84.8047 26.4902 83.1348 26.4902C81.4766 26.4902 80.3809 27.5977 80.3809 29.2793V30.252C80.3809 32.0684 81.4062 33.123 83.1992 33.123C84.5762 33.123 85.6309 32.3848 85.8008 31.3125H84.6758ZM83.123 27.4512C84.0898 27.4512 84.6641 28.1367 84.6641 29.2734H81.5352C81.5352 28.1309 82.1328 27.4512 83.123 27.4512ZM89.9727 26.5137C88.502 26.5137 87.5645 27.5625 87.5645 29.2266V30.3926C87.5645 32.0566 88.502 33.1055 89.9727 33.1055C90.8984 33.1055 91.5664 32.7012 91.8242 31.9863H91.9355V35.1445H93.1426V26.6133H91.9648V27.627H91.8535C91.5547 26.9004 90.8984 26.5137 89.9727 26.5137ZM90.3652 27.5566C91.3438 27.5566 91.9648 28.248 91.9648 29.3438V30.2988C91.9648 31.4004 91.3438 32.0918 90.3652 32.0918C89.3809 32.0918 88.7539 31.3945 88.7539 30.2988V29.3438C88.7539 28.248 89.3809 27.5566 90.3652 27.5566ZM100.572 26.6133H99.4004V30.3574C99.4004 31.3887 98.7441 32.0742 97.7656 32.0742C96.8223 32.0742 96.3828 31.5586 96.3828 30.4688V26.6133H95.2051V30.7559C95.2051 32.291 95.9551 33.123 97.3438 33.123C98.2988 33.123 99.0195 32.6777 99.3535 31.8926H99.4355V33H100.572V26.6133ZM106.93 31.3125C106.771 31.834 106.203 32.1562 105.447 32.1562C104.439 32.1562 103.789 31.4648 103.789 30.3867V30.0996H108.072V29.4082C108.072 27.5918 107.059 26.4902 105.389 26.4902C103.73 26.4902 102.635 27.5977 102.635 29.2793V30.252C102.635 32.0684 103.66 33.123 105.453 33.123C106.83 33.123 107.885 32.3848 108.055 31.3125H106.93ZM105.377 27.4512C106.344 27.4512 106.918 28.1367 106.918 29.2734H103.789C103.789 28.1309 104.387 27.4512 105.377 27.4512ZM110.322 28.377C110.322 29.3086 110.902 29.8945 112.068 30.1582L113.023 30.375C113.797 30.5508 114.084 30.791 114.084 31.2598C114.084 31.8164 113.568 32.1738 112.766 32.1738C111.992 32.1738 111.465 31.8633 111.336 31.3184H110.152C110.258 32.4434 111.23 33.1172 112.736 33.1172C114.295 33.1172 115.297 32.3438 115.297 31.1309C115.297 30.1934 114.729 29.6543 113.469 29.373L112.543 29.168C111.799 29.0039 111.488 28.752 111.488 28.2949C111.488 27.7676 111.975 27.416 112.725 27.416C113.428 27.416 113.926 27.7383 114.031 28.2598H115.156C115.051 27.1523 114.137 26.4844 112.742 26.4844C111.277 26.4844 110.322 27.2344 110.322 28.377ZM118.982 24.8672V26.6484H117.295V27.6152H118.982V31.0664C118.982 32.4375 119.697 33.0234 121.332 33.0234C121.578 33.0234 122.504 33 122.633 32.9766V32.0156C122.492 32.0332 121.713 32.0449 121.414 32.0449C120.6 32.0449 120.16 31.6992 120.16 31.0664V27.6152H122.668V26.6484H120.143V24.8672H118.982ZM136.854 30.3633C136.854 31.4121 136.191 32.0566 135.119 32.0566C133.842 32.0566 133.18 31.2012 133.18 29.5547V27.9902C133.18 26.3496 133.842 25.4883 135.107 25.4883C136.109 25.4883 136.812 26.1855 136.859 27.2344H138.09C138.049 25.459 136.924 24.3691 135.131 24.3691C133.115 24.3691 131.949 25.6992 131.949 27.9902V29.5547C131.949 31.8457 133.115 33.1758 135.131 33.1758C136.889 33.1758 138.09 32.0684 138.09 30.4336V28.6465H135.02V29.6309H136.854V30.3633ZM145.068 31.916H141.207V29.209H144.852V28.1895H141.207V25.6289H145.068V24.5449H139.982V33H145.068V31.916ZM150.424 33V25.6289H152.938V24.5449H146.691V25.6289H149.205V33H150.424ZM78.3184 43.6133H77.1465V47.3574C77.1465 48.3887 76.4902 49.0742 75.5117 49.0742C74.5684 49.0742 74.1289 48.5586 74.1289 47.4688V43.6133H72.9512V47.7559C72.9512 49.291 73.7012 50.123 75.0898 50.123C76.0449 50.123 76.7656 49.6777 77.0996 48.8926H77.1816V50H78.3184V43.6133ZM82.8418 47.1523C82.8418 45.5879 83.6445 44.6914 85.0859 44.6914C85.4375 44.6914 85.8535 44.7676 86.1406 44.873V43.584C85.9297 43.4961 85.584 43.4492 85.2207 43.4492C83.9961 43.4492 83.252 44.041 83 45.2422H82.8359V43.6133H80.3105V44.5156H81.6992V49.0977H80.4336V50H84.7812V49.0977H82.8418V47.1523ZM93.2715 50V49.0508H91.2207V41.123H87.957V42.0781H90.0488V49.0508H87.9102V50H93.2715ZM72.9395 67H74.1172V63.2676C74.1172 62.2363 74.7734 61.5508 75.7637 61.5508C76.707 61.5508 77.1582 62.0723 77.1582 63.1562V67H78.3301V62.8691C78.3301 61.3398 77.5742 60.502 76.1855 60.502C75.2188 60.502 74.4922 60.9473 74.1641 61.7324H74.0762V58.123H72.9395V67ZM84.6758 65.3125C84.5176 65.834 83.9492 66.1562 83.1934 66.1562C82.1855 66.1562 81.5352 65.4648 81.5352 64.3867V64.0996H85.8184V63.4082C85.8184 61.5918 84.8047 60.4902 83.1348 60.4902C81.4766 60.4902 80.3809 61.5977 80.3809 63.2793V64.252C80.3809 66.0684 81.4062 67.123 83.1992 67.123C84.5762 67.123 85.6309 66.3848 85.8008 65.3125H84.6758ZM83.123 61.4512C84.0898 61.4512 84.6641 62.1367 84.6641 63.2734H81.5352C81.5352 62.1309 82.1328 61.4512 83.123 61.4512ZM89.7617 67.1055C90.6641 67.1055 91.3496 66.7305 91.6543 66.0742H91.7656V67.0059H92.8848V62.6406C92.8848 61.2988 92.0059 60.5254 90.4648 60.5254C89.0938 60.5254 88.0918 61.2402 87.9746 62.2949H89.123C89.2754 61.791 89.7617 61.498 90.4414 61.498C91.2617 61.498 91.7188 61.9082 91.7188 62.6406V63.2031L90.043 63.291C88.5547 63.3789 87.7344 64.0469 87.7344 65.1836C87.7344 66.3379 88.543 67.1055 89.7617 67.1055ZM90.125 66.127C89.375 66.127 88.9062 65.7461 88.9062 65.1309C88.9062 64.5098 89.3516 64.1582 90.2012 64.1113L91.7188 64.0352V64.709C91.7188 65.5234 91.0391 66.127 90.125 66.127ZM97.3965 67.1055C98.3164 67.1055 98.9727 66.7129 99.2773 65.9922H99.3887V67H100.566V58.123H99.3594V61.627H99.248C98.9902 60.9121 98.3164 60.5078 97.3965 60.5078C95.9258 60.5078 94.9883 61.5566 94.9883 63.2266V64.3867C94.9883 66.0566 95.9258 67.1055 97.3965 67.1055ZM97.7832 66.0625C96.7988 66.0625 96.1777 65.3711 96.1777 64.2754V63.3203C96.1777 62.2246 96.7988 61.5273 97.7832 61.5273C98.7676 61.5273 99.3887 62.2188 99.3887 63.3203V64.2754C99.3887 65.3711 98.7676 66.0625 97.7832 66.0625ZM106.93 65.3125C106.771 65.834 106.203 66.1562 105.447 66.1562C104.439 66.1562 103.789 65.4648 103.789 64.3867V64.0996H108.072V63.4082C108.072 61.5918 107.059 60.4902 105.389 60.4902C103.73 60.4902 102.635 61.5977 102.635 63.2793V64.252C102.635 66.0684 103.66 67.123 105.453 67.123C106.83 67.123 107.885 66.3848 108.055 65.3125H106.93ZM105.377 61.4512C106.344 61.4512 106.918 62.1367 106.918 63.2734H103.789C103.789 62.1309 104.387 61.4512 105.377 61.4512ZM112.514 64.1523C112.514 62.5879 113.316 61.6914 114.758 61.6914C115.109 61.6914 115.525 61.7676 115.812 61.873V60.584C115.602 60.4961 115.256 60.4492 114.893 60.4492C113.668 60.4492 112.924 61.041 112.672 62.2422H112.508V60.6133H109.982V61.5156H111.371V66.0977H110.105V67H114.453V66.0977H112.514V64.1523Z\" fill=\"#9EFFFF\"/><path d=\"M166.121 33.9375H167.275L163.203 23.6074H162.025L166.121 33.9375ZM566.691 50.9375H567.846L563.773 40.6074H562.596L566.691 50.9375Z\" fill=\"white\"/><path d=\"M63.8984 29.7832V28.7168H57.6992V29.7832H63.8984ZM71.3164 29.7832V28.7168H65.1172V29.7832H71.3164ZM63.8984 46.7832V45.7168H57.6992V46.7832H63.8984ZM71.3164 46.7832V45.7168H65.1172V46.7832H71.3164ZM63.8984 63.7832V62.7168H57.6992V63.7832H63.8984ZM71.3164 63.7832V62.7168H65.1172V63.7832H71.3164Z\" fill=\"#FF9D00\"/><path d=\"M105.916 45.4238V41.5449H104.697V45.4238H105.916ZM110.029 50H111.207V46.2676C111.207 45.2363 111.863 44.5508 112.854 44.5508C113.797 44.5508 114.248 45.0723 114.248 46.1562V50H115.42V45.8691C115.42 44.3398 114.664 43.502 113.275 43.502C112.309 43.502 111.582 43.9473 111.254 44.7324H111.166V41.123H110.029V50ZM118.982 41.8672V43.6484H117.295V44.6152H118.982V48.0664C118.982 49.4375 119.697 50.0234 121.332 50.0234C121.578 50.0234 122.504 50 122.633 49.9766V49.0156C122.492 49.0332 121.713 49.0449 121.414 49.0449C120.6 49.0449 120.16 48.6992 120.16 48.0664V44.6152H122.668V43.6484H120.143V41.8672H118.982ZM126.4 41.8672V43.6484H124.713V44.6152H126.4V48.0664C126.4 49.4375 127.115 50.0234 128.75 50.0234C128.996 50.0234 129.922 50 130.051 49.9766V49.0156C129.91 49.0332 129.131 49.0449 128.832 49.0449C128.018 49.0449 127.578 48.6992 127.578 48.0664V44.6152H130.086V43.6484H127.561V41.8672H126.4ZM135.477 43.5137C134.551 43.5137 133.895 43.9004 133.596 44.627H133.484V43.6133H132.307V52.1445H133.514V48.9863H133.625C133.883 49.7012 134.551 50.1055 135.477 50.1055C136.947 50.1055 137.885 49.0566 137.885 47.3926V46.2266C137.885 44.5625 136.947 43.5137 135.477 43.5137ZM135.084 44.5566C136.068 44.5566 136.695 45.248 136.695 46.3438V47.2988C136.695 48.3945 136.068 49.0918 135.084 49.0918C134.105 49.0918 133.484 48.4004 133.484 47.2988V46.3438C133.484 45.248 134.105 44.5566 135.084 44.5566ZM139.994 45.377C139.994 46.3086 140.574 46.8945 141.74 47.1582L142.695 47.375C143.469 47.5508 143.756 47.791 143.756 48.2598C143.756 48.8164 143.24 49.1738 142.438 49.1738C141.664 49.1738 141.137 48.8633 141.008 48.3184H139.824C139.93 49.4434 140.902 50.1172 142.408 50.1172C143.967 50.1172 144.969 49.3438 144.969 48.1309C144.969 47.1934 144.4 46.6543 143.141 46.373L142.215 46.168C141.471 46.0039 141.16 45.752 141.16 45.2949C141.16 44.7676 141.646 44.416 142.396 44.416C143.1 44.416 143.598 44.7383 143.703 45.2598H144.828C144.723 44.1523 143.809 43.4844 142.414 43.4844C140.949 43.4844 139.994 44.2344 139.994 45.377ZM149.814 45.5703C150.436 45.5703 150.939 45.0547 150.939 44.4277C150.939 43.7949 150.436 43.2793 149.814 43.2793C149.199 43.2793 148.689 43.7949 148.689 44.4277C148.689 45.0547 149.199 45.5703 149.814 45.5703ZM149.814 50.0586C150.436 50.0586 150.939 49.5371 150.939 48.9102C150.939 48.2773 150.436 47.7617 149.814 47.7617C149.199 47.7617 148.689 48.2773 148.689 48.9102C148.689 49.5371 149.199 50.0586 149.814 50.0586ZM155.762 50.9375L159.857 40.6074H158.68L154.607 50.9375H155.762ZM163.18 50.9375L167.275 40.6074H166.098L162.025 50.9375H163.18ZM171.576 50.1055C172.496 50.1055 173.152 49.7129 173.457 48.9922H173.568V50H174.746V41.123H173.539V44.627H173.428C173.17 43.9121 172.496 43.5078 171.576 43.5078C170.105 43.5078 169.168 44.5566 169.168 46.2266V47.3867C169.168 49.0566 170.105 50.1055 171.576 50.1055ZM171.963 49.0625C170.979 49.0625 170.357 48.3711 170.357 47.2754V46.3203C170.357 45.2246 170.979 44.5273 171.963 44.5273C172.947 44.5273 173.568 45.2188 173.568 46.3203V47.2754C173.568 48.3711 172.947 49.0625 171.963 49.0625ZM178.777 50.1055C179.68 50.1055 180.365 49.7305 180.67 49.0742H180.781V50.0059H181.9V45.6406C181.9 44.2988 181.021 43.5254 179.48 43.5254C178.109 43.5254 177.107 44.2402 176.99 45.2949H178.139C178.291 44.791 178.777 44.498 179.457 44.498C180.277 44.498 180.734 44.9082 180.734 45.6406V46.2031L179.059 46.291C177.57 46.3789 176.75 47.0469 176.75 48.1836C176.75 49.3379 177.559 50.1055 178.777 50.1055ZM179.141 49.127C178.391 49.127 177.922 48.7461 177.922 48.1309C177.922 47.5098 178.367 47.1582 179.217 47.1113L180.734 47.0352V47.709C180.734 48.5234 180.055 49.127 179.141 49.127ZM184.502 45.377C184.502 46.3086 185.082 46.8945 186.248 47.1582L187.203 47.375C187.977 47.5508 188.264 47.791 188.264 48.2598C188.264 48.8164 187.748 49.1738 186.945 49.1738C186.172 49.1738 185.645 48.8633 185.516 48.3184H184.332C184.438 49.4434 185.41 50.1172 186.916 50.1172C188.475 50.1172 189.477 49.3438 189.477 48.1309C189.477 47.1934 188.908 46.6543 187.648 46.373L186.723 46.168C185.979 46.0039 185.668 45.752 185.668 45.2949C185.668 44.7676 186.154 44.416 186.904 44.416C187.607 44.416 188.105 44.7383 188.211 45.2598H189.336C189.23 44.1523 188.316 43.4844 186.922 43.4844C185.457 43.4844 184.502 44.2344 184.502 45.377ZM191.627 50H192.805V46.2676C192.805 45.2363 193.461 44.5508 194.451 44.5508C195.395 44.5508 195.846 45.0723 195.846 46.1562V50H197.018V45.8691C197.018 44.3398 196.262 43.502 194.873 43.502C193.906 43.502 193.18 43.9473 192.852 44.7324H192.764V41.123H191.627V50ZM201.74 50.0586C202.361 50.0586 202.865 49.5371 202.865 48.9102C202.865 48.2773 202.361 47.7617 201.74 47.7617C201.119 47.7617 200.615 48.2773 200.615 48.9102C200.615 49.5371 201.119 50.0586 201.74 50.0586ZM208.947 47.1523C208.947 45.5879 209.75 44.6914 211.191 44.6914C211.543 44.6914 211.959 44.7676 212.246 44.873V43.584C212.035 43.4961 211.689 43.4492 211.326 43.4492C210.102 43.4492 209.357 44.041 209.105 45.2422H208.941V43.6133H206.416V44.5156H207.805V49.0977H206.539V50H210.887V49.0977H208.947V47.1523ZM218.199 48.3125C218.041 48.834 217.473 49.1562 216.717 49.1562C215.709 49.1562 215.059 48.4648 215.059 47.3867V47.0996H219.342V46.4082C219.342 44.5918 218.328 43.4902 216.658 43.4902C215 43.4902 213.904 44.5977 213.904 46.2793V47.252C213.904 49.0684 214.93 50.123 216.723 50.123C218.1 50.123 219.154 49.3848 219.324 48.3125H218.199ZM216.646 44.4512C217.613 44.4512 218.188 45.1367 218.188 46.2734H215.059C215.059 45.1309 215.656 44.4512 216.646 44.4512ZM223.285 50.1055C224.188 50.1055 224.873 49.7305 225.178 49.0742H225.289V50.0059H226.408V45.6406C226.408 44.2988 225.529 43.5254 223.988 43.5254C222.617 43.5254 221.615 44.2402 221.498 45.2949H222.646C222.799 44.791 223.285 44.498 223.965 44.498C224.785 44.498 225.242 44.9082 225.242 45.6406V46.2031L223.566 46.291C222.078 46.3789 221.258 47.0469 221.258 48.1836C221.258 49.3379 222.066 50.1055 223.285 50.1055ZM223.648 49.127C222.898 49.127 222.43 48.7461 222.43 48.1309C222.43 47.5098 222.875 47.1582 223.725 47.1113L225.242 47.0352V47.709C225.242 48.5234 224.562 49.127 223.648 49.127ZM230.92 50.1055C231.84 50.1055 232.496 49.7129 232.801 48.9922H232.912V50H234.09V41.123H232.883V44.627H232.771C232.514 43.9121 231.84 43.5078 230.92 43.5078C229.449 43.5078 228.512 44.5566 228.512 46.2266V47.3867C228.512 49.0566 229.449 50.1055 230.92 50.1055ZM231.307 49.0625C230.322 49.0625 229.701 48.3711 229.701 47.2754V46.3203C229.701 45.2246 230.322 44.5273 231.307 44.5273C232.291 44.5273 232.912 45.2188 232.912 46.3203V47.2754C232.912 48.3711 232.291 49.0625 231.307 49.0625ZM241.953 45.2246C241.953 44.0938 241.502 43.4902 240.641 43.4902C240.008 43.4902 239.516 43.8828 239.363 44.5156H239.234C239.1 43.8652 238.684 43.4902 238.086 43.4902C237.477 43.4902 237.025 43.877 236.873 44.5391H236.744V43.6133H235.707V50H236.738V45.6699C236.738 44.9668 237.061 44.5332 237.576 44.5332C238.062 44.5332 238.326 44.8965 238.326 45.582V50H239.352V45.6699C239.352 44.9668 239.668 44.5332 240.172 44.5332C240.652 44.5332 240.922 44.9023 240.922 45.5879V50H241.953V45.2246ZM247.871 48.3125C247.713 48.834 247.145 49.1562 246.389 49.1562C245.381 49.1562 244.73 48.4648 244.73 47.3867V47.0996H249.014V46.4082C249.014 44.5918 248 43.4902 246.33 43.4902C244.672 43.4902 243.576 44.5977 243.576 46.2793V47.252C243.576 49.0684 244.602 50.123 246.395 50.123C247.771 50.123 248.826 49.3848 248.996 48.3125H247.871ZM246.318 44.4512C247.285 44.4512 247.859 45.1367 247.859 46.2734H244.73C244.73 45.1309 245.328 44.4512 246.318 44.4512ZM253.666 50.0586C254.287 50.0586 254.791 49.5371 254.791 48.9102C254.791 48.2773 254.287 47.7617 253.666 47.7617C253.045 47.7617 252.541 48.2773 252.541 48.9102C252.541 49.5371 253.045 50.0586 253.666 50.0586ZM263.814 45.6699C263.656 44.2871 262.689 43.4844 261.201 43.4844C259.426 43.4844 258.4 44.5449 258.4 46.4082V47.1934C258.4 49.0566 259.426 50.123 261.201 50.123C262.689 50.123 263.656 49.3203 263.814 47.9609H262.654C262.537 48.6816 261.975 49.1094 261.189 49.1094C260.152 49.1094 259.578 48.3828 259.578 47.0703V46.5312C259.578 45.2188 260.152 44.4922 261.189 44.4922C261.969 44.4922 262.543 44.9316 262.654 45.6699H263.814ZM268.502 50.123C270.225 50.123 271.32 49.0215 271.32 47.293V46.3262C271.32 44.5918 270.225 43.4961 268.502 43.4961C266.779 43.4961 265.684 44.5918 265.684 46.3262V47.293C265.684 49.0215 266.779 50.123 268.502 50.123ZM268.502 44.4922C269.521 44.4922 270.16 45.2246 270.16 46.4082V47.2109C270.16 48.3945 269.521 49.127 268.502 49.127C267.482 49.127 266.844 48.3945 266.844 47.2109V46.4082C266.844 45.2246 267.482 44.4922 268.502 44.4922ZM279.043 45.2246C279.043 44.0938 278.592 43.4902 277.73 43.4902C277.098 43.4902 276.605 43.8828 276.453 44.5156H276.324C276.189 43.8652 275.773 43.4902 275.176 43.4902C274.566 43.4902 274.115 43.877 273.963 44.5391H273.834V43.6133H272.797V50H273.828V45.6699C273.828 44.9668 274.15 44.5332 274.666 44.5332C275.152 44.5332 275.416 44.8965 275.416 45.582V50H276.441V45.6699C276.441 44.9668 276.758 44.5332 277.262 44.5332C277.742 44.5332 278.012 44.9023 278.012 45.5879V50H279.043V45.2246ZM281.867 50.9375L285.963 40.6074H284.785L280.713 50.9375H281.867ZM290.047 50.1055C290.949 50.1055 291.635 49.7305 291.939 49.0742H292.051V50.0059H293.17V45.6406C293.17 44.2988 292.291 43.5254 290.75 43.5254C289.379 43.5254 288.377 44.2402 288.26 45.2949H289.408C289.561 44.791 290.047 44.498 290.727 44.498C291.547 44.498 292.004 44.9082 292.004 45.6406V46.2031L290.328 46.291C288.84 46.3789 288.02 47.0469 288.02 48.1836C288.02 49.3379 288.828 50.1055 290.047 50.1055ZM290.41 49.127C289.66 49.127 289.191 48.7461 289.191 48.1309C289.191 47.5098 289.637 47.1582 290.486 47.1113L292.004 47.0352V47.709C292.004 48.5234 291.324 49.127 290.41 49.127ZM298.672 43.5137C297.746 43.5137 297.09 43.9004 296.791 44.627H296.68V43.6133H295.502V52.1445H296.709V48.9863H296.82C297.078 49.7012 297.746 50.1055 298.672 50.1055C300.143 50.1055 301.08 49.0566 301.08 47.3926V46.2266C301.08 44.5625 300.143 43.5137 298.672 43.5137ZM298.279 44.5566C299.264 44.5566 299.891 45.248 299.891 46.3438V47.2988C299.891 48.3945 299.264 49.0918 298.279 49.0918C297.301 49.0918 296.68 48.4004 296.68 47.2988V46.3438C296.68 45.248 297.301 44.5566 298.279 44.5566ZM305.697 42.1191C306.225 42.1191 306.605 41.7559 306.605 41.252C306.605 40.7422 306.225 40.3789 305.697 40.3789C305.176 40.3789 304.789 40.7422 304.789 41.252C304.789 41.7559 305.176 42.1191 305.697 42.1191ZM308.393 50V49.0508H306.33V43.6133H303.078V44.5625H305.182V49.0508H303.031V50H308.393ZM311.539 50.9375L315.635 40.6074H314.457L310.385 50.9375H311.539ZM317.469 43.6133L319.777 50H321.084L323.387 43.6133H322.139L320.48 48.7988H320.398L318.729 43.6133H317.469ZM331.062 50V48.9629H328.748V41.5449H327.553L325.104 43.1504V44.3809L327.453 42.8516H327.547V48.9629H325.121V50H331.062ZM333.793 50.9375L337.889 40.6074H336.711L332.639 50.9375H333.793ZM345.412 45.6699C345.254 44.2871 344.287 43.4844 342.799 43.4844C341.023 43.4844 339.998 44.5449 339.998 46.4082V47.1934C339.998 49.0566 341.023 50.123 342.799 50.123C344.287 50.123 345.254 49.3203 345.412 47.9609H344.252C344.135 48.6816 343.572 49.1094 342.787 49.1094C341.75 49.1094 341.176 48.3828 341.176 47.0703V46.5312C341.176 45.2188 341.75 44.4922 342.787 44.4922C343.566 44.4922 344.141 44.9316 344.252 45.6699H345.412ZM349.391 50.1055C350.293 50.1055 350.979 49.7305 351.283 49.0742H351.395V50.0059H352.514V45.6406C352.514 44.2988 351.635 43.5254 350.094 43.5254C348.723 43.5254 347.721 44.2402 347.604 45.2949H348.752C348.904 44.791 349.391 44.498 350.07 44.498C350.891 44.498 351.348 44.9082 351.348 45.6406V46.2031L349.672 46.291C348.184 46.3789 347.363 47.0469 347.363 48.1836C347.363 49.3379 348.172 50.1055 349.391 50.1055ZM349.754 49.127C349.004 49.127 348.535 48.7461 348.535 48.1309C348.535 47.5098 348.98 47.1582 349.83 47.1113L351.348 47.0352V47.709C351.348 48.5234 350.668 49.127 349.754 49.127ZM356.357 41.8672V43.6484H354.67V44.6152H356.357V48.0664C356.357 49.4375 357.072 50.0234 358.707 50.0234C358.953 50.0234 359.879 50 360.008 49.9766V49.0156C359.867 49.0332 359.088 49.0449 358.789 49.0449C357.975 49.0449 357.535 48.6992 357.535 48.0664V44.6152H360.043V43.6484H357.518V41.8672H356.357ZM366.559 48.3125C366.4 48.834 365.832 49.1562 365.076 49.1562C364.068 49.1562 363.418 48.4648 363.418 47.3867V47.0996H367.701V46.4082C367.701 44.5918 366.688 43.4902 365.018 43.4902C363.359 43.4902 362.264 44.5977 362.264 46.2793V47.252C362.264 49.0684 363.289 50.123 365.082 50.123C366.459 50.123 367.514 49.3848 367.684 48.3125H366.559ZM365.006 44.4512C365.973 44.4512 366.547 45.1367 366.547 46.2734H363.418C363.418 45.1309 364.016 44.4512 365.006 44.4512ZM372.172 52.3965C373.941 52.3965 375.002 51.4941 375.002 49.9941V43.6133H373.842V44.627H373.73C373.473 43.9297 372.77 43.5078 371.844 43.5078C370.338 43.5078 369.383 44.5566 369.383 46.2266V47.3164C369.383 48.9805 370.332 50.0352 371.803 50.0352C372.74 50.0352 373.461 49.6074 373.713 48.9219H373.824V49.9883C373.824 50.9492 373.244 51.4766 372.189 51.4766C371.381 51.4766 370.777 51.1543 370.654 50.6562H369.494C369.617 51.7344 370.637 52.3965 372.172 52.3965ZM370.578 47.2051V46.3203C370.578 45.2305 371.211 44.5273 372.201 44.5273C373.186 44.5273 373.824 45.2246 373.824 46.3203V47.2051C373.824 48.2949 373.186 48.998 372.201 48.998C371.211 48.998 370.578 48.2949 370.578 47.2051ZM379.771 50.123C381.494 50.123 382.59 49.0215 382.59 47.293V46.3262C382.59 44.5918 381.494 43.4961 379.771 43.4961C378.049 43.4961 376.953 44.5918 376.953 46.3262V47.293C376.953 49.0215 378.049 50.123 379.771 50.123ZM379.771 44.4922C380.791 44.4922 381.43 45.2246 381.43 46.4082V47.2109C381.43 48.3945 380.791 49.127 379.771 49.127C378.752 49.127 378.113 48.3945 378.113 47.2109V46.4082C378.113 45.2246 378.752 44.4922 379.771 44.4922ZM386.979 47.1523C386.979 45.5879 387.781 44.6914 389.223 44.6914C389.574 44.6914 389.99 44.7676 390.277 44.873V43.584C390.066 43.4961 389.721 43.4492 389.357 43.4492C388.133 43.4492 387.389 44.041 387.137 45.2422H386.973V43.6133H384.447V44.5156H385.836V49.0977H384.57V50H388.918V49.0977H386.979V47.1523ZM394.713 42.1191C395.24 42.1191 395.621 41.7559 395.621 41.252C395.621 40.7422 395.24 40.3789 394.713 40.3789C394.191 40.3789 393.805 40.7422 393.805 41.252C393.805 41.7559 394.191 42.1191 394.713 42.1191ZM397.408 50V49.0508H395.346V43.6133H392.094V44.5625H394.197V49.0508H392.047V50H397.408ZM403.648 48.3125C403.49 48.834 402.922 49.1562 402.166 49.1562C401.158 49.1562 400.508 48.4648 400.508 47.3867V47.0996H404.791V46.4082C404.791 44.5918 403.777 43.4902 402.107 43.4902C400.449 43.4902 399.354 44.5977 399.354 46.2793V47.252C399.354 49.0684 400.379 50.123 402.172 50.123C403.549 50.123 404.604 49.3848 404.773 48.3125H403.648ZM402.096 44.4512C403.062 44.4512 403.637 45.1367 403.637 46.2734H400.508C400.508 45.1309 401.105 44.4512 402.096 44.4512ZM407.041 45.377C407.041 46.3086 407.621 46.8945 408.787 47.1582L409.742 47.375C410.516 47.5508 410.803 47.791 410.803 48.2598C410.803 48.8164 410.287 49.1738 409.484 49.1738C408.711 49.1738 408.184 48.8633 408.055 48.3184H406.871C406.977 49.4434 407.949 50.1172 409.455 50.1172C411.014 50.1172 412.016 49.3438 412.016 48.1309C412.016 47.1934 411.447 46.6543 410.188 46.373L409.262 46.168C408.518 46.0039 408.207 45.752 408.207 45.2949C408.207 44.7676 408.693 44.416 409.443 44.416C410.146 44.416 410.645 44.7383 410.75 45.2598H411.875C411.77 44.1523 410.855 43.4844 409.461 43.4844C407.996 43.4844 407.041 44.2344 407.041 45.377ZM414.312 43.7832H415.479C415.537 43.0039 416.047 42.5293 416.838 42.5293C417.6 42.5293 418.127 42.9922 418.127 43.6777C418.127 44.2637 417.893 44.6094 417.195 45.043C416.41 45.5234 416.07 46.0449 416.088 46.877L416.094 47.3691H417.271V46.9883C417.271 46.3848 417.482 46.0684 418.209 45.6289C419.018 45.1367 419.416 44.4746 419.416 43.625C419.416 42.3477 418.373 41.4453 416.896 41.4453C415.361 41.4453 414.371 42.3418 414.312 43.7832ZM416.727 50.1289C417.213 50.1289 417.605 49.7363 417.605 49.2441C417.605 48.7578 417.213 48.3652 416.727 48.3652C416.234 48.3652 415.848 48.7578 415.848 49.2441C415.848 49.7363 416.234 50.1289 416.727 50.1289ZM424.777 43.5137C423.852 43.5137 423.195 43.9004 422.896 44.627H422.785V43.6133H421.607V52.1445H422.814V48.9863H422.926C423.184 49.7012 423.852 50.1055 424.777 50.1055C426.248 50.1055 427.186 49.0566 427.186 47.3926V46.2266C427.186 44.5625 426.248 43.5137 424.777 43.5137ZM424.385 44.5566C425.369 44.5566 425.996 45.248 425.996 46.3438V47.2988C425.996 48.3945 425.369 49.0918 424.385 49.0918C423.406 49.0918 422.785 48.4004 422.785 47.2988V46.3438C422.785 45.248 423.406 44.5566 424.385 44.5566ZM433.32 48.3125C433.162 48.834 432.594 49.1562 431.838 49.1562C430.83 49.1562 430.18 48.4648 430.18 47.3867V47.0996H434.463V46.4082C434.463 44.5918 433.449 43.4902 431.779 43.4902C430.121 43.4902 429.025 44.5977 429.025 46.2793V47.252C429.025 49.0684 430.051 50.123 431.844 50.123C433.221 50.123 434.275 49.3848 434.445 48.3125H433.32ZM431.768 44.4512C432.734 44.4512 433.309 45.1367 433.309 46.2734H430.18C430.18 45.1309 430.777 44.4512 431.768 44.4512ZM438.904 47.1523C438.904 45.5879 439.707 44.6914 441.148 44.6914C441.5 44.6914 441.916 44.7676 442.203 44.873V43.584C441.992 43.4961 441.646 43.4492 441.283 43.4492C440.059 43.4492 439.314 44.041 439.062 45.2422H438.898V43.6133H436.373V44.5156H437.762V49.0977H436.496V50H440.844V49.0977H438.904V47.1523ZM443.896 41.5449V50H445.121V47.0586H446.756C448.455 47.0586 449.568 45.9746 449.568 44.3047C449.568 42.6289 448.473 41.5449 446.791 41.5449H443.896ZM445.121 42.5879H446.492C447.682 42.5879 448.326 43.1855 448.326 44.3047C448.326 45.418 447.682 46.0215 446.492 46.0215H445.121V42.5879ZM453.242 50.1055C454.145 50.1055 454.83 49.7305 455.135 49.0742H455.246V50.0059H456.365V45.6406C456.365 44.2988 455.486 43.5254 453.945 43.5254C452.574 43.5254 451.572 44.2402 451.455 45.2949H452.604C452.756 44.791 453.242 44.498 453.922 44.498C454.742 44.498 455.199 44.9082 455.199 45.6406V46.2031L453.523 46.291C452.035 46.3789 451.215 47.0469 451.215 48.1836C451.215 49.3379 452.023 50.1055 453.242 50.1055ZM453.605 49.127C452.855 49.127 452.387 48.7461 452.387 48.1309C452.387 47.5098 452.832 47.1582 453.682 47.1113L455.199 47.0352V47.709C455.199 48.5234 454.52 49.127 453.605 49.127ZM461.188 52.3965C462.957 52.3965 464.018 51.4941 464.018 49.9941V43.6133H462.857V44.627H462.746C462.488 43.9297 461.785 43.5078 460.859 43.5078C459.354 43.5078 458.398 44.5566 458.398 46.2266V47.3164C458.398 48.9805 459.348 50.0352 460.818 50.0352C461.756 50.0352 462.477 49.6074 462.729 48.9219H462.84V49.9883C462.84 50.9492 462.26 51.4766 461.205 51.4766C460.396 51.4766 459.793 51.1543 459.67 50.6562H458.51C458.633 51.7344 459.652 52.3965 461.188 52.3965ZM459.594 47.2051V46.3203C459.594 45.2305 460.227 44.5273 461.217 44.5273C462.201 44.5273 462.84 45.2246 462.84 46.3203V47.2051C462.84 48.2949 462.201 48.998 461.217 48.998C460.227 48.998 459.594 48.2949 459.594 47.2051ZM470.41 48.3125C470.252 48.834 469.684 49.1562 468.928 49.1562C467.92 49.1562 467.27 48.4648 467.27 47.3867V47.0996H471.553V46.4082C471.553 44.5918 470.539 43.4902 468.869 43.4902C467.211 43.4902 466.115 44.5977 466.115 46.2793V47.252C466.115 49.0684 467.141 50.123 468.934 50.123C470.311 50.123 471.365 49.3848 471.535 48.3125H470.41ZM468.857 44.4512C469.824 44.4512 470.398 45.1367 470.398 46.2734H467.27C467.27 45.1309 467.867 44.4512 468.857 44.4512ZM479.305 45.4414V44.2988H473.105V45.4414H479.305ZM479.305 48.2012V47.0586H473.105V48.2012H479.305ZM486.84 50V48.9629H484.525V41.5449H483.33L480.881 43.1504V44.3809L483.23 42.8516H483.324V48.9629H480.898V50H486.84ZM491.047 50.1875C492.939 50.1875 493.994 48.6113 493.994 45.7754C493.994 42.9336 492.939 41.3574 491.047 41.3574C489.154 41.3574 488.1 42.9336 488.1 45.7754C488.1 48.6113 489.154 50.1875 491.047 50.1875ZM489.301 45.7754C489.301 43.5664 489.904 42.4004 491.047 42.4004C491.809 42.4004 492.33 42.9219 492.594 43.9238L489.324 46.502C489.307 46.2734 489.301 46.0332 489.301 45.7754ZM491.047 49.1504C490.285 49.1504 489.764 48.6289 489.5 47.6328L492.764 45.0371C492.781 45.2715 492.787 45.5117 492.787 45.7754C492.787 47.9785 492.184 49.1504 491.047 49.1504ZM500.627 50H501.939L500.604 48.377C501.002 47.7207 501.225 46.8535 501.254 45.8574V45.7168H500.287V45.7988C500.264 46.5254 500.164 47.0879 499.971 47.5332L498.266 45.4121C499.379 44.6855 499.812 44.0527 499.812 43.2148C499.812 42.125 499.021 41.3691 497.891 41.3691C496.736 41.3691 495.934 42.125 495.934 43.2148C495.934 43.8359 496.238 44.498 496.883 45.2656L496.596 45.459C495.588 46.1094 495.096 46.8828 495.096 47.8086C495.096 49.1855 496.145 50.1523 497.633 50.1523C498.529 50.1523 499.332 49.8242 499.982 49.1855L500.627 50ZM497.873 42.2949C498.412 42.2949 498.816 42.6992 498.816 43.2383C498.816 43.8184 498.535 44.2227 497.709 44.7676C497.152 44.123 496.93 43.6777 496.93 43.2383C496.93 42.6992 497.334 42.2949 497.873 42.2949ZM497.211 46.1328L497.428 45.9922L499.414 48.4531C499.01 48.9219 498.406 49.1738 497.709 49.1738C496.795 49.1738 496.18 48.5938 496.18 47.7383C496.18 47.0938 496.508 46.5723 497.211 46.1328ZM506.375 43.5137C505.449 43.5137 504.793 43.9004 504.494 44.627H504.383V43.6133H503.205V52.1445H504.412V48.9863H504.523C504.781 49.7012 505.449 50.1055 506.375 50.1055C507.846 50.1055 508.783 49.0566 508.783 47.3926V46.2266C508.783 44.5625 507.846 43.5137 506.375 43.5137ZM505.982 44.5566C506.967 44.5566 507.594 45.248 507.594 46.3438V47.2988C507.594 48.3945 506.967 49.0918 505.982 49.0918C505.004 49.0918 504.383 48.4004 504.383 47.2988V46.3438C504.383 45.248 505.004 44.5566 505.982 44.5566ZM512.586 50.1055C513.488 50.1055 514.174 49.7305 514.479 49.0742H514.59V50.0059H515.709V45.6406C515.709 44.2988 514.83 43.5254 513.289 43.5254C511.918 43.5254 510.916 44.2402 510.799 45.2949H511.947C512.1 44.791 512.586 44.498 513.266 44.498C514.086 44.498 514.543 44.9082 514.543 45.6406V46.2031L512.867 46.291C511.379 46.3789 510.559 47.0469 510.559 48.1836C510.559 49.3379 511.367 50.1055 512.586 50.1055ZM512.949 49.127C512.199 49.127 511.73 48.7461 511.73 48.1309C511.73 47.5098 512.176 47.1582 513.025 47.1113L514.543 47.0352V47.709C514.543 48.5234 513.863 49.127 512.949 49.127ZM520.531 52.3965C522.301 52.3965 523.361 51.4941 523.361 49.9941V43.6133H522.201V44.627H522.09C521.832 43.9297 521.129 43.5078 520.203 43.5078C518.697 43.5078 517.742 44.5566 517.742 46.2266V47.3164C517.742 48.9805 518.691 50.0352 520.162 50.0352C521.1 50.0352 521.82 49.6074 522.072 48.9219H522.184V49.9883C522.184 50.9492 521.604 51.4766 520.549 51.4766C519.74 51.4766 519.137 51.1543 519.014 50.6562H517.854C517.977 51.7344 518.996 52.3965 520.531 52.3965ZM518.938 47.2051V46.3203C518.938 45.2305 519.57 44.5273 520.561 44.5273C521.545 44.5273 522.184 45.2246 522.184 46.3203V47.2051C522.184 48.2949 521.545 48.998 520.561 48.998C519.57 48.998 518.938 48.2949 518.938 47.2051ZM529.754 48.3125C529.596 48.834 529.027 49.1562 528.271 49.1562C527.264 49.1562 526.613 48.4648 526.613 47.3867V47.0996H530.896V46.4082C530.896 44.5918 529.883 43.4902 528.213 43.4902C526.555 43.4902 525.459 44.5977 525.459 46.2793V47.252C525.459 49.0684 526.484 50.123 528.277 50.123C529.654 50.123 530.709 49.3848 530.879 48.3125H529.754ZM528.201 44.4512C529.168 44.4512 529.742 45.1367 529.742 46.2734H526.613C526.613 45.1309 527.211 44.4512 528.201 44.4512ZM538.648 45.4414V44.2988H532.449V45.4414H538.648ZM538.648 48.2012V47.0586H532.449V48.2012H538.648ZM546.184 50V48.9629H543.869V41.5449H542.674L540.225 43.1504V44.3809L542.574 42.8516H542.668V48.9629H540.242V50H546.184ZM550.994 45.4238V41.5449H549.775V45.4238H550.994ZM128.17 62.4238V58.5449H126.951V62.4238H128.17ZM134.27 67.1055C135.172 67.1055 135.857 66.7305 136.162 66.0742H136.273V67.0059H137.393V62.6406C137.393 61.2988 136.514 60.5254 134.973 60.5254C133.602 60.5254 132.6 61.2402 132.482 62.2949H133.631C133.783 61.791 134.27 61.498 134.949 61.498C135.77 61.498 136.227 61.9082 136.227 62.6406V63.2031L134.551 63.291C133.062 63.3789 132.242 64.0469 132.242 65.1836C132.242 66.3379 133.051 67.1055 134.27 67.1055ZM134.633 66.127C133.883 66.127 133.414 65.7461 133.414 65.1309C133.414 64.5098 133.859 64.1582 134.709 64.1113L136.227 64.0352V64.709C136.227 65.5234 135.547 66.127 134.633 66.127ZM145.08 60.6133H143.908V64.3574C143.908 65.3887 143.252 66.0742 142.273 66.0742C141.33 66.0742 140.891 65.5586 140.891 64.4688V60.6133H139.713V64.7559C139.713 66.291 140.463 67.123 141.852 67.123C142.807 67.123 143.527 66.6777 143.861 65.8926H143.943V67H145.08V60.6133ZM148.654 58.8672V60.6484H146.967V61.6152H148.654V65.0664C148.654 66.4375 149.369 67.0234 151.004 67.0234C151.25 67.0234 152.176 67 152.305 66.9766V66.0156C152.164 66.0332 151.385 66.0449 151.086 66.0449C150.271 66.0449 149.832 65.6992 149.832 65.0664V61.6152H152.34V60.6484H149.814V58.8672H148.654ZM154.537 67H155.715V63.2676C155.715 62.2363 156.371 61.5508 157.361 61.5508C158.305 61.5508 158.756 62.0723 158.756 63.1562V67H159.928V62.8691C159.928 61.3398 159.172 60.502 157.783 60.502C156.816 60.502 156.09 60.9473 155.762 61.7324H155.674V58.123H154.537V67ZM164.65 67.123C166.373 67.123 167.469 66.0215 167.469 64.293V63.3262C167.469 61.5918 166.373 60.4961 164.65 60.4961C162.928 60.4961 161.832 61.5918 161.832 63.3262V64.293C161.832 66.0215 162.928 67.123 164.65 67.123ZM164.65 61.4922C165.67 61.4922 166.309 62.2246 166.309 63.4082V64.2109C166.309 65.3945 165.67 66.127 164.65 66.127C163.631 66.127 162.992 65.3945 162.992 64.2109V63.4082C162.992 62.2246 163.631 61.4922 164.65 61.4922ZM171.857 64.1523C171.857 62.5879 172.66 61.6914 174.102 61.6914C174.453 61.6914 174.869 61.7676 175.156 61.873V60.584C174.945 60.4961 174.6 60.4492 174.236 60.4492C173.012 60.4492 172.268 61.041 172.016 62.2422H171.852V60.6133H169.326V61.5156H170.715V66.0977H169.449V67H173.797V66.0977H171.857V64.1523ZM179.592 59.1191C180.119 59.1191 180.5 58.7559 180.5 58.252C180.5 57.7422 180.119 57.3789 179.592 57.3789C179.07 57.3789 178.684 57.7422 178.684 58.252C178.684 58.7559 179.07 59.1191 179.592 59.1191ZM182.287 67V66.0508H180.225V60.6133H176.973V61.5625H179.076V66.0508H176.926V67H182.287ZM184.373 67H189.436V66.0273H185.873V65.9395L189.4 61.4453V60.6133H184.396V61.5859H187.994V61.6738L184.373 66.2266V67ZM193.613 67.1055C194.516 67.1055 195.201 66.7305 195.506 66.0742H195.617V67.0059H196.736V62.6406C196.736 61.2988 195.857 60.5254 194.316 60.5254C192.945 60.5254 191.943 61.2402 191.826 62.2949H192.975C193.127 61.791 193.613 61.498 194.293 61.498C195.113 61.498 195.57 61.9082 195.57 62.6406V63.2031L193.895 63.291C192.406 63.3789 191.586 64.0469 191.586 65.1836C191.586 66.3379 192.395 67.1055 193.613 67.1055ZM193.977 66.127C193.227 66.127 192.758 65.7461 192.758 65.1309C192.758 64.5098 193.203 64.1582 194.053 64.1113L195.57 64.0352V64.709C195.57 65.5234 194.891 66.127 193.977 66.127ZM200.58 58.8672V60.6484H198.893V61.6152H200.58V65.0664C200.58 66.4375 201.295 67.0234 202.93 67.0234C203.176 67.0234 204.102 67 204.23 66.9766V66.0156C204.09 66.0332 203.311 66.0449 203.012 66.0449C202.197 66.0449 201.758 65.6992 201.758 65.0664V61.6152H204.266V60.6484H201.74V58.8672H200.58ZM209.264 59.1191C209.791 59.1191 210.172 58.7559 210.172 58.252C210.172 57.7422 209.791 57.3789 209.264 57.3789C208.742 57.3789 208.355 57.7422 208.355 58.252C208.355 58.7559 208.742 59.1191 209.264 59.1191ZM211.959 67V66.0508H209.896V60.6133H206.645V61.5625H208.748V66.0508H206.598V67H211.959ZM216.576 67.123C218.299 67.123 219.395 66.0215 219.395 64.293V63.3262C219.395 61.5918 218.299 60.4961 216.576 60.4961C214.854 60.4961 213.758 61.5918 213.758 63.3262V64.293C213.758 66.0215 214.854 67.123 216.576 67.123ZM216.576 61.4922C217.596 61.4922 218.234 62.2246 218.234 63.4082V64.2109C218.234 65.3945 217.596 66.127 216.576 66.127C215.557 66.127 214.918 65.3945 214.918 64.2109V63.4082C214.918 62.2246 215.557 61.4922 216.576 61.4922ZM221.311 67H222.482V63.2559C222.482 62.2246 223.139 61.5391 224.117 61.5391C225.061 61.5391 225.5 62.0547 225.5 63.1504V67H226.678V62.8574C226.678 61.3223 225.928 60.4902 224.539 60.4902C223.584 60.4902 222.863 60.9355 222.529 61.7266H222.447V60.6133H221.311V67ZM231.412 62.5703C232.033 62.5703 232.537 62.0547 232.537 61.4277C232.537 60.7949 232.033 60.2793 231.412 60.2793C230.797 60.2793 230.287 60.7949 230.287 61.4277C230.287 62.0547 230.797 62.5703 231.412 62.5703ZM231.412 67.0586C232.033 67.0586 232.537 66.5371 232.537 65.9102C232.537 65.2773 232.033 64.7617 231.412 64.7617C230.797 64.7617 230.287 65.2773 230.287 65.9102C230.287 66.5371 230.797 67.0586 231.412 67.0586ZM246.453 67C248.27 67 249.359 66.1094 249.359 64.627C249.359 63.5078 248.598 62.6699 247.461 62.5703V62.4824C248.328 62.3359 248.938 61.5684 248.938 60.6367C248.938 59.3301 247.994 58.5449 246.412 58.5449H243.564V67H246.453ZM244.766 59.541H246.113C247.139 59.541 247.713 60.0156 247.713 60.8535C247.713 61.6855 247.098 62.1484 245.979 62.1484H244.766V59.541ZM244.766 65.9922V63.1035H246.119C247.42 63.1035 248.094 63.5898 248.094 64.5332C248.094 65.5059 247.438 65.9922 246.148 65.9922H244.766ZM252.957 67.1055C253.859 67.1055 254.545 66.7305 254.85 66.0742H254.961V67.0059H256.08V62.6406C256.08 61.2988 255.201 60.5254 253.66 60.5254C252.289 60.5254 251.287 61.2402 251.17 62.2949H252.318C252.471 61.791 252.957 61.498 253.637 61.498C254.457 61.498 254.914 61.9082 254.914 62.6406V63.2031L253.238 63.291C251.75 63.3789 250.93 64.0469 250.93 65.1836C250.93 66.3379 251.738 67.1055 252.957 67.1055ZM253.32 66.127C252.57 66.127 252.102 65.7461 252.102 65.1309C252.102 64.5098 252.547 64.1582 253.396 64.1113L254.914 64.0352V64.709C254.914 65.5234 254.234 66.127 253.32 66.127ZM258.682 62.377C258.682 63.3086 259.262 63.8945 260.428 64.1582L261.383 64.375C262.156 64.5508 262.443 64.791 262.443 65.2598C262.443 65.8164 261.928 66.1738 261.125 66.1738C260.352 66.1738 259.824 65.8633 259.695 65.3184H258.512C258.617 66.4434 259.59 67.1172 261.096 67.1172C262.654 67.1172 263.656 66.3438 263.656 65.1309C263.656 64.1934 263.088 63.6543 261.828 63.373L260.902 63.168C260.158 63.0039 259.848 62.752 259.848 62.2949C259.848 61.7676 260.334 61.416 261.084 61.416C261.787 61.416 262.285 61.7383 262.391 62.2598H263.516C263.41 61.1523 262.496 60.4844 261.102 60.4844C259.637 60.4844 258.682 61.2344 258.682 62.377ZM268.607 59.1191C269.135 59.1191 269.516 58.7559 269.516 58.252C269.516 57.7422 269.135 57.3789 268.607 57.3789C268.086 57.3789 267.699 57.7422 267.699 58.252C267.699 58.7559 268.086 59.1191 268.607 59.1191ZM271.303 67V66.0508H269.24V60.6133H265.988V61.5625H268.092V66.0508H265.941V67H271.303ZM278.65 62.6699C278.492 61.2871 277.525 60.4844 276.037 60.4844C274.262 60.4844 273.236 61.5449 273.236 63.4082V64.1934C273.236 66.0566 274.262 67.123 276.037 67.123C277.525 67.123 278.492 66.3203 278.65 64.9609H277.49C277.373 65.6816 276.811 66.1094 276.025 66.1094C274.988 66.1094 274.414 65.3828 274.414 64.0703V63.5312C274.414 62.2188 274.988 61.4922 276.025 61.4922C276.805 61.4922 277.379 61.9316 277.49 62.6699H278.65ZM290.762 67.1875C292.654 67.1875 293.709 65.6113 293.709 62.7754C293.709 59.9336 292.654 58.3574 290.762 58.3574C288.869 58.3574 287.814 59.9336 287.814 62.7754C287.814 65.6113 288.869 67.1875 290.762 67.1875ZM289.016 62.7754C289.016 60.5664 289.619 59.4004 290.762 59.4004C291.523 59.4004 292.045 59.9219 292.309 60.9238L289.039 63.502C289.021 63.2734 289.016 63.0332 289.016 62.7754ZM290.762 66.1504C290 66.1504 289.479 65.6289 289.215 64.6328L292.479 62.0371C292.496 62.2715 292.502 62.5117 292.502 62.7754C292.502 64.9785 291.898 66.1504 290.762 66.1504ZM298.209 61.8262L299.352 67H300.471L301.883 58.5449H300.746L300.289 61.8027L299.832 65.2773H299.756L298.695 60.4785H297.652L296.592 65.2773H296.516L296.059 61.8027L295.602 58.5449H294.465L295.877 67H296.996L298.139 61.8262H298.209ZM308.498 65.8984H304.578V58.5449H303.371V67H308.498V65.8984ZM313.215 67C315.031 67 316.121 66.1094 316.121 64.627C316.121 63.5078 315.359 62.6699 314.223 62.5703V62.4824C315.09 62.3359 315.699 61.5684 315.699 60.6367C315.699 59.3301 314.756 58.5449 313.174 58.5449H310.326V67H313.215ZM311.527 59.541H312.875C313.9 59.541 314.475 60.0156 314.475 60.8535C314.475 61.6855 313.859 62.1484 312.74 62.1484H311.527V59.541ZM311.527 65.9922V63.1035H312.881C314.182 63.1035 314.855 63.5898 314.855 64.5332C314.855 65.5059 314.199 65.9922 312.91 65.9922H311.527ZM319.396 63.1387H320.375C321.488 63.1387 322.197 63.7246 322.197 64.6445C322.197 65.5469 321.506 66.1152 320.404 66.1152C319.391 66.1152 318.682 65.5645 318.6 64.7031H317.457C317.533 66.1973 318.717 67.1758 320.439 67.1758C322.186 67.1758 323.422 66.1504 323.422 64.6914C323.422 63.5488 322.748 62.7695 321.617 62.623V62.5293C322.531 62.3184 323.076 61.5859 323.076 60.5781C323.076 59.2773 321.975 58.3691 320.398 58.3691C318.77 58.3691 317.709 59.2949 317.621 60.7949H318.758C318.834 59.9277 319.438 59.3945 320.357 59.3945C321.277 59.3945 321.887 59.9277 321.887 60.7539C321.887 61.5859 321.254 62.166 320.34 62.166H319.396V63.1387ZM328.074 63.7012L329.621 67H330.992L329.281 63.4727C330.23 63.1445 330.834 62.2305 330.834 61.1289C330.834 59.5293 329.768 58.5449 328.039 58.5449H325.133V67H326.346V63.7012H328.074ZM326.346 59.582H327.91C328.982 59.582 329.604 60.1562 329.604 61.1523C329.604 62.1484 328.977 62.7168 327.869 62.7168H326.346V59.582ZM335.873 67V59.6289H338.387V58.5449H332.141V59.6289H334.654V67H335.873ZM343.291 62.4238V58.5449H342.072V62.4238H343.291Z\" fill=\"#A5FF90\"/></g><defs><clipPath id=\"clip0_1464_34847\"><rect width=\"400\" height=\"104\" rx=\"15\" fill=\"white\"/></clipPath></defs>\n </symbol>\n</svg>","redirect":""},"referenceSimpleMode":true,"referenceLayout":"row","link_logo_to_url":false,"theme":"solid","overlay":"triangles","landing":true,"sticky":false,"hide_logo":false,"childrenAsPills":false,"subheaderStyle":"links","splitReferenceDocs":false,"showMetricsInReference":true,"logo":["https://files.readme.io/7a4b1f0-small-readme-blue.png","readme-blue.png",442,80,"#000000","https://files.readme.io/46db89c-readme-blue.png"],"logo_white":["https://files.readme.io/e1146f1-small-readme-white_1.png","readme-white (1).png",464,80,"#ffffff","https://files.readme.io/c014f6a-readme-white_1.png"],"logo_white_use":true,"favicon":[],"stylesheet":"","stylesheet_hub2":"/* ================\n Globals\n ================ */\nbody {\n --font-brand: 'Marfa', var(--font-family);\n --font-brand-mono: 'Marfa Mono', var(--font-family-mono);\n --GridGap: var(--lg);\n}\n\n@media (max-width: 450px) {\n body {\n --GridGap: var(--md);\n }\n}\n\n.Main {\n display: flex;\n flex-direction: column;\n gap: var(--GridGap);\n\tpadding: var(--GridGap);\n}\n\n.Main.Main {\n width: auto;\n}\n \n.Main ol,\n.Main ul {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.Main figure {\n margin: 0;\n}\n\n.flex {\n display: flex;\n}\n\n.flex_col {\n flex-direction: column;\n}\n\n.flex_center {\n align-items: center;\n}\n\n.flex_grow {\n flex: 1 1;\n}\n\n.flex_shrink {\n flex: 0 0;\n}\n\n@font-face {\n font-display: block;\n font-family: Marfa;\n font-weight: 400;\n src: url('//readme.com/static/fonts/ABCMarfa-Regular.woff2') format('woff2');\n}\n\n@font-face {\n font-display: block;\n font-family: Marfa;\n font-weight: 600;\n src: url('//readme.com/static/fonts/ABCMarfa-Bold.woff2') format('woff2');\n}\n\n@font-face {\n font-display: block;\n font-family: 'Marfa Mono';\n font-weight: 400;\n src: url('//readme.com/static/fonts/ABCMarfaMono-Regular.woff2') format('woff2');\n}\n\n/* ================\n Overwrite Nav\n ================ */\n.rm-Header nav[class*=\"Header-left\"] {\n visibility: hidden;\n}\n\n/* ================\n Hide Search Filters\n ================ */\n.rm-SearchModal details {\n /* display: none; */\n}\n\n/* ================\n Header\n ================ */\nbody .ThemeContext_line .rm-Header {\n --Header-background: var(--color-primary);\n --Header-border-color: rgba(0,0,0,0.1);\n --Header-border-width: 1px;\n --Header-button-color: var(--white);\n --Header-button-hover: rgba(255,255,255,0.2);\n --Header-button-active: rgba(255,255,255,0.75);\n --Header-button-focus: rgba(255,255,255,0.075);\n --Header-jumpTo-background: var(--color-primary-inverse);\n --Header-jumpTo-color: var(--color-primary);\n --Header-logo-height: var(--header-logo-height);\n}\n\n@media (max-width: 768px) {\n body .ThemeContext_line .rm-Header {\n --Header-border-color: transparent;\n\t}\n\n .rm-Header-top.rm-Header-top {\n border: 0;\n }\n \n .rm-Header {\n overflow: hidden;\n }\n\n .hub-is-home .rm-Header-bottom {\n overflow: auto;\n }\n}\n\n[data-color-mode=\"dark\"] .rm-Header {\n box-shadow: 0 1px 0 rgba(0,0,0,0.1);\n}\n\n@media (prefers-color-scheme: dark) {\n [data-color-mode=\"auto\"] .rm-Header {\n\t\tbox-shadow: 0 1px 0 rgba(0,0,0,0.1);\n }\n}\n\n/* ================\n The Hero Section\n ================ */\n.Hero {\n background: var(--color-primary);\n padding: var(--xl) var(--lg);\n}\n\n.Hero-h1,\n.Hero-p {\n font-family: var(--font-brand);\n margin: 0 auto;\n text-align: center;\n}\n\n.Hero-h1 {\n color: var(--white);\n font-size: 70px !important;\n font-weight: var(--font-weight-bold) !important;\n line-height: 1.2;\n max-width: 650px;\n}\n\n@media (max-width: 1220px) {\n\t.Hero-h1 {\n\t font-size: 64px !important;\n }\n}\n\n\n@media (max-width: 990px) {\n\t.Hero-h1 {\n\t font-size: 52px !important;\n max-width: 500px;\n }\n}\n\n@media (max-width: 450px) {\n .Hero-h1 {\n\t font-size: 42px !important;\n }\n}\n\n.Hero-p {\n color: var(--blue100) !important;\n font-size: 20px;\n font-weight: 400;\n line-height: 1.4;\n max-width: 400px;\n}\n\n.Hero-banner {\n\t align-items: center;\n\t display: flex;\n flex-direction: column;\n\t gap: 0.75em;\n\t margin-left: auto;\n margin-right: auto;\n\t margin-bottom: 2em;\n max-width: 300px;\n padding-bottom: 2em;\n text-align: center;\n}\n .Hero-banner-text {\n\t color: var(--white);\n\t font-family: var(--font-body);\n\t font-size: 1.25em;\n\t font-weight: var(--font-weight);\n\t max-width: 30ch;\n}\n .Hero-banner-text-hover {\n\t box-shadow: 0 2px 0 rgba(0, 0, 0, );\n\t font-style: italic;\n\t font-weight: 800;\n\t position: relative;\n\t text-decoration: none;\n}\n\n .Hero-banner-text-hover:hover, .Hero-banner-text-hover:active, .Hero-banner-text-hover:focus {\n\t animation: banner-text 1s infinite;\n\t box-shadow: none;\n}\n @media (prefers-reduced-motion) {\n\t .Hero-banner-text-hover:hover, .Hero-banner-text-hover:active, .Hero-banner-text-hover:focus {\n\t\t animation: banner-text 1s steps(1, end) infinite;\n\t}\n}\n @keyframes banner-text {\n\t 0% {\n\t\t text-shadow: none;\n\t}\n\t 33% {\n\t\t text-shadow: -2px 2px 0 var(--green), -4px 4px 0 var(--yellow), -6px 6px 0 var(--red);\n\t}\n\t 66% {\n\t\t text-shadow: 2px 2px 0 var(--green), 4px 4px 0 var(--yellow), 6px 6px 0 var(--red);\n\t}\n\t 100% {\n\t\t text-shadow: none;\n\t}\n}\n .Hero-banner-new {\n\t position: relative;\n}\n .Hero-banner-new-label {\n\t --Banner-playState: running;\n\t height: 2.5em;\n\t position: relative;\n\t width: 2.5em;\n}\n .Hero-banner-new-svg {\n\t animation: rotate 2s linear infinite var(--Banner-playState);\n\t height: 2.5em;\n\t position: absolute;\n\t width: 2.5em;\n\t z-index: 1;\n}\n @media (prefers-reduced-motion) {\n\t .Hero-banner-new-svg {\n\t\t animation: none;\n\t}\n}\n @keyframes rotate {\n\t 0% {\n\t\t transform: rotate(0deg);\n\t}\n\t 100% {\n\t\t transform: rotate(360deg);\n\t}\n}\n .Hero-banner-new-svg.blue {\n\t fill: var(--white);\n\t left: 0;\n\t right: 0;\n\t z-index: 5;\n}\n .Hero-banner-new-svg.green {\n\t bottom: -0.1em;\n\t fill: var(--green);\n\t left: -0.1em;\n\t z-index: 4;\n}\n .Hero-banner-new-svg.yellow {\n\t bottom: -0.2em;\n\t fill: var(--yellow);\n\t left: -0.2em;\n\t z-index: 3;\n}\n .Hero-banner-new-svg.red {\n\t bottom: -0.3em;\n\t fill: var(--red);\n\t left: -0.3em;\n\t z-index: 2;\n}\n .Hero-banner-new-text {\n\t align-items: center;\n\t color: var(--blue);\n\t display: flex;\n\t font-family: var(--font-body);\n\t font-size: 0.65em;\n\t font-weight: 800;\n\t inset: 0;\n\t justify-content: center;\n\t margin: auto;\n\t position: absolute;\n\t text-align: center;\n\t transform: rotate(-20deg) translateX(0.05em);\n\t z-index: 6;\n}\n .Hero-banner em {\n\t font-style: italic;\n}\n .Hero-banner a {\n\t color: currentcolor;\n}\n\n/* ================\n Tile Grid\n ================ */\n.Section {\n --Tile-padding: var(--lg);\n --Tile-color: var(--color-text-default);\n --Tile-heading-margin: var(--Tile-padding);\n --Tile-heading-color: var(--color-text-minimum);\n \n border-radius: 15px;\n}\n\n.Section_product .TileGrid {\n grid-template-columns: repeat(4, 1fr);\n grid-template-rows: repeat(3, auto);\n}\n \n@media (max-width: 1260px) {\n .Section_product .TileGrid {\n grid-template-columns: repeat(3, 1fr);\n grid-template-rows: repeat(4, 1fr);\n }\n}\n\n@media (max-width: 960px) {\n .Section_product .TileGrid {\n grid-template-columns: repeat(2, 1fr);\n grid-template-rows: repeat(5, 1fr);\n }\n}\n\n@media (max-width: 675px) {\n .Section_product .TileGrid {\n grid-template-columns: 1fr;\n grid-template-rows: auto;\n }\n \n .Section_product .TileGrid-item {\n }\n}\n\n.Section_product .TileGrid-item:nth-child(1) { grid-area: 1 / 1 / 3 / 2 }\n.Section_product .TileGrid-item:nth-child(2) { grid-area: 1 / 2 / 2 / 3 }\n.Section_product .TileGrid-item:nth-child(3) { grid-area: 1 / 3 / 2 / 4 }\n.Section_product .TileGrid-item:nth-child(4) { grid-area: 1 / 4 / 2 / 5 }\n.Section_product .TileGrid-item:nth-child(5) { grid-area: 2 / 2 / 3 / 3 }\n.Section_product .TileGrid-item:nth-child(6) { grid-area: 2 / 3 / 3 / 4 }\n.Section_product .TileGrid-item:nth-child(7) { grid-area: 2 / 4 / 3 / 5 }\n.Section_product .TileGrid-item:nth-child(8) { grid-area: 3 / 2 / 4 / 5 }\n\n@media (max-width: 1260px) {\n .Section_product .TileGrid-item:nth-child(1) { grid-area: 1 / 1 / 2 / 4 }\n .Section_product .TileGrid-item:nth-child(1) a { height: auto }\n .Section_product .TileGrid-item:nth-child(2) { grid-area: 2 / 1 / 3 / 2 }\n .Section_product .TileGrid-item:nth-child(3) { grid-area: 2 / 2 / 3 / 3 }\n .Section_product .TileGrid-item:nth-child(4) { grid-area: 2 / 3 / 3 / 4 }\n .Section_product .TileGrid-item:nth-child(5) { grid-area: 3 / 1 / 4 / 2 }\n .Section_product .TileGrid-item:nth-child(6) { grid-area: 3 / 2 / 4 / 3 }\n .Section_product .TileGrid-item:nth-child(7) { grid-area: 3 / 3 / 4 / 4 }\n .Section_product .TileGrid-item:nth-child(8) { grid-area: 4 / 1 / 5 / 4 }\n}\n\n@media (max-width: 960px) {\n .Section_product .TileGrid-item:nth-child(2) { grid-area: 2 / 1 / 3 / 2 }\n .Section_product .TileGrid-item:nth-child(3) { grid-area: 2 / 2 / 3 / 3 }\n .Section_product .TileGrid-item:nth-child(4) { grid-area: 3 / 1 / 4 / 2 }\n .Section_product .TileGrid-item:nth-child(5) { grid-area: 3 / 2 / 4 / 3 }\n .Section_product .TileGrid-item:nth-child(6) { grid-area: 4 / 1 / 5 / 2 }\n .Section_product .TileGrid-item:nth-child(7) { grid-area: 4 / 2 / 5 / 3 }\n .Section_product .TileGrid-item:nth-child(8) { grid-area: 5 / 1 / 6 / 3 }\n}\n\n@media (max-width: 675px) {\n .Section_product .TileGrid-item.TileGrid-item {\n grid-area: unset;\n }\n}\n\n.Section_dark {\n background: #001242;\n}\n\n.Section_enterprise {\n --Tile-color: var(--white);\n --Tile-heading-margin: var(--md);\n --Tile-heading-color: var(--white);\n\n padding: var(--Tile-padding);\n}\n\n@media (max-width: 500px) {\n .Section_enterprise {\n\t padding: var(--md);\n }\n}\n\n.Section_enterprise .TileGrid {\n grid-template-columns: repeat(4, 1fr);\n}\n\n@media (max-width: 1280px) {\n .Section_enterprise .TileGrid {\n\t grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@media (max-width: 715px) {\n .Section_enterprise .TileGrid {\n\t grid-template-columns: 1fr;\n }\n}\n\n.Section_enterprise .Tile-heading {\n opacity: 0.5;\n}\n\n.TileGrid {\n display: grid;\n grid-gap: var(--sm);\n}\n\n.Tile-heading {\n color: var(--Tile-heading-color);\n font-size: 14px;\n font-weight: var(--font-weight-bold) !important;\n margin-bottom: var(--md);\n margin-left: var(--Tile-heading-margin);\n}\n\n/* ================\n Tiles\n ================ */\n.Tile {\n border: 1px solid transparent;\n border-radius: 15px;\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n padding: var(--md);\n position: relative;\n transition: box-shadow var(--transition-slow);\n}\n\n.Tile:hover .Tile-title,\n.Tile:active .Tile-title,\n.Tile:focus-visible .Tile-title {\n color: var(--blue);\n}\n\n.Tile:hover .icon-arrow-right2,\n.Tile:active .icon-arrow-right2,\n.Tile:focus-visible .icon-arrow-right2 {\n color: var(--blue);\n transform: translateX(2px);\n}\n\n.Tile:focus,\n.Tile:focus-visible {\n outline: 0;\n}\n\n.Tile_outline {\n border-color: var(--color-border-default);\n padding: var(--Tile-padding);\n}\n\n.Tile_outline:hover {\n border-color: var(--color-input-border-hover);\n}\n\n.Tile_outline:active,\n.Tile_outline:focus-visible {\n border-color: var(--color-input-border-active);\n box-shadow: 0 0 0 3px var(--color-input-border-focus);\n}\n\n.Tile_sm .Tile-title {\n font-size: 16px;\n margin-top: 0;\n}\n\n.Tile_sm .Tile-description {\n font-size: 14px;\n}\n\n.Tile-title {\n align-items: center;\n color: var(--Tile-color);\n display: flex;\n font-family: var(--font-brand) !important;\n font-size: 22px;\n font-weight: var(--font-weight-bold);\n gap: var(--sm);\n margin-top: 15px;\n}\n\n@media (max-width: 450px) {\n .Tile-title {\n display: block;\n }\n}\n\n.Tile-title > span {\n flex: 0 0 auto;\n}\n\n.Tile-title > .icon-arrow-right2 {\n font-size: 16px;\n opacity: 0.5;\n transition: transform var(--transition-slow) var(--transition-timing);\n}\n\n.Tile-description {\n color: var(--Tile-color);\n font-size: 15px;\n line-height: 1.4;\n margin-top: 5px;\n}\n\n.Tile-image {\n bottom: 0;\n height: auto;\n position: absolute;\n right: 0;\n width: 100%;\n}\n\n/* everything for the big tile */\n@media (max-width: 1260px) {\n .Tile_lg {\n flex-direction: row;\n gap: var(--md);\n justify-content: space-between;\n\t\tpadding: var(--md) 0 0 var(--md);\n }\n \n .Tile_lg .flex {\n flex: 1 1 auto;\n max-width: 380px;\n }\n \n .Tile-image {\n max-height: 180px;\n max-width: 400px;\n position: unset;\n width: auto;\n }\n}\n\n@media (max-width: 650px) {\n .Tile_lg {\n align-items: flex-end;\n flex-direction: column;\n }\n \n .Tile_lg .flex {\n max-width: none;\n padding-right: var(--md);\n }\n \n .Tile-image {\n max-width: 100%;\n }\n}\n\n/* ================\n Tile Icon\n ================ */\n.TileIcon {\n align-items: center;\n border: 1px solid var(--color-border-default);\n border-radius: var(--border-radius-lg);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05), inset 0 -1px 2px rgba(0, 0, 0, 0.2), inset 0 1px 1px rgba(255, 255, 255, 0.2);\n color: var(--white);\n display: inline-flex;\n font-size: 24px;\n height: var(--button-md);\n justify-content: center;\n width: var(--button-md);\n}\n\n.TileIcon_sm {\n font-size: 16px;\n height: 24px;\n width: 24px;\n}\n\n.TileIcon_green {\n background: linear-gradient(180deg, #59D4A4 0%, #12CA93 100%);\n}\n\n.TileIcon_red {\n background: linear-gradient(180deg, #F17C81 0%, #E95F6A 100%);\n}\n\n.TileIcon_yellow {\n background: linear-gradient(180deg, #FFD885 0%, #F7C543 100%);\n}\n\n.TileIcon_blue {\n background: linear-gradient(180deg, #619EFE 0%, #118CFD 100%);\n}\n\n.TileIcon_purple {\n background: linear-gradient(180deg, #9987C9 0%, #8470BE 100%);\n}\n\n.TileIcon_orange {\n background: linear-gradient(180deg, #FFAA7B 0%, #FE8C4E 100%);\n}\n\n.TileIcon_gray {\n background: linear-gradient(180deg, #ADB4C1 0%, #939EAE 100%);\n}\n\n/* ================\n ReadMe API\n ================ */\n.ReadMeAPI {\n overflow: hidden;\n padding-bottom: var(--xxl);\n padding-top: var(--xl);\n position: relative;\n}\n\n.ReadMeAPI-container {\n margin-left: auto;\n margin-right: auto;\n\tmax-width: 960px;\n padding-left: var(--lg);\n padding-right: var(--lg);\n}\n\n.ReadMeAPI-h2 {\n color: var(--white);\n font-family: var(--font-brand);\n font-size: 42px;\n font-weight: var(--font-weight-bold) !important;\n line-height: 1.2;\n margin-bottom: 0;\n margin-top: 0;\n}\n\n@media (max-width: 650px) {\n\t.ReadMeAPI-h2 {\n\t font-size: 30px;\n }\n}\n\n\n@media (max-width: 500px) {\n .ReadMeAPI-h2 {\n font-size: 28px;\n -webkit-hyphens: auto;\n hyphens: auto;\n\t\toverflow-wrap: break-word;\n }\n}\n\n.ReadMeAPI-h2 .yellow {\n color: var(--yellow);\n}\n\n.ReadMeAPI-a {\n color: var(--white);\n display: inline-flex;\n\tfont-family: var(--font-brand);\n font-size: 24px;\n gap: var(--xs);\n margin-top: var(--md);\n opacity: 0.75;\n}\n\n.ReadMeAPI-a:hover,\n.ReadMeAPI-a:active,\n.ReadMeAPI-a:focus-within {\n color: var(--white);\n opacity: 1;\n}\n\n.ReadMeAPI-a:hover .icon-arrow-right2,\n.ReadMeAPI-a:active .icon-arrow-right2,\n.ReadMeAPI-a:focus-within .icon-arrow-right2 {\n transform: translateX(2px);\n}\n\n.ReadMeAPI-a .icon-arrow-right2 {\n opacity: 0.5;\n transition: transform var(--transition-slow) var(--transition-timing);\n}\n\n.ReadMeAPI-figure {\n bottom: -48px;\n display: flex;\n gap: var(--md);\n left: -10%;\n position: absolute;\n}\n\n.ReadMeAPI-svg {\n background: linear-gradient(180deg, #002077 0%, #002077 100%);\n border: 1px solid rgba(0, 0, 0, 0.1);\n border-radius: 15px;\n box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.05), inset 0px -1px 2px rgba(0, 0, 0, 0.2), inset 0px 1px 1px rgba(255, 255, 255, 0.2);\n height: 110px;\n width: 406px;\n}\n\n/* ================\n Eyebrow Text\n ================ */\n.Eyebrow {\n background: var(--yellow);\n border-radius: var(--border-radius);\n color: #001242;\n display: table;\n font-family: var(--font-brand-mono);\n font-weight: var(--font-weight);\n font-size: 14px;\n line-height: 1;\n margin-bottom: var(--md);\n padding: var(--xs) var(--sm);\n}\n\n/* ================\n Cards\n ================ */\n.Card {\n align-items: center;\n border: 1px solid var(--color-border-default);\n border-radius: 15px;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n overflow: hidden;\n padding: var(--lg);\n}\n\n.Card .TileIcon + .Card-heading {\n margin-top: var(--md);\n}\n\n.Card-heading {\n color: var(--color-text-default);\n font-size: 26px;\n font-weight: var(--font-weight-bold) !important;\n margin: 0;\n}\n\n.Card-heading,\n.Card-description {\n font-family: var(--font-brand); \n text-align: center;\n}\n\n.Card-link {\n color: var(--blue);\n font-size: 16px;\n font-weight: var(--font-weight-bold);\n gap: var(--xs);\n margin-top: var(--md);\n}\n\n.Card-link:hover,\n.Card-link:active,\n.Card-link:focus-visible {\n color: var(--blue) !important;\n}\n\n.Card-link:hover .icon-arrow-right2,\n.Card-link:active .icon-arrow-right2,\n.Card-link:focus-visible .icon-arrow-right2 {\n transform: translateX(2px);\n}\n\n.Card-link .icon-arrow-right2 {\n opacity: 0.5;\n transition: transform var(--transition-slow) var(--transition-timing);\n}\n\n.Card-description {\n color: var(--color-text-minimum) !important;\n font-size: 18px;\n font-weight: var(--font-weight);\n line-height: 1.4;\n margin: var(--xs) auto 0;\n max-width: 400px;\n}\n\n/* ================\n Community & Changelog\n ================ */\n@media (max-width: 1100px) {\n .CommunityChangelog {\n flex-direction: column;\n\t}\n}\n\n/* ================\n Community\n ================ */\n.Community {\n display: flex;\n flex-direction: column;\n gap: var(--sm);\n margin-left: auto;\n margin-right: auto;\n max-width: 300px;\n padding-top: 170px;\n position: relative;\n width: 100%;\n}\n\n@media (max-width: 500px) {\n .Community { \n\t max-width: 250px;\n }\n}\n\n.Community::before {\n background: url(//files.readme.io/6d9a6e6-bubs.png);\n background-position: center;\n background-repeat: no-repeat;\n background-size: 500px;\n content: '';\n height: 100%;\n left: -100px;\n position: absolute;\n top: 30px;\n width: 500px\n}\n\n@media (max-width: 1100px) {\n .Community {\n padding-top: 140px;\n }\n \n .Community::before {\n top: 0;\n }\n}\n\n.Community-from p,\n.Community-to p {\n margin: 0;\n}\n\na.Community-to {\n font-weight: var(--font-weight-bold);\n}\n\na.Community-to:hover,\na.Community-to:active,\na.Community-to:focus-visible {\n color: var(--white);\n}\n\na.Community-to:hover .icon-arrow-right2,\na.Community-to:active .icon-arrow-right2,\na.Community-to:focus-visible .icon-arrow-right2 {\n transform: translateX(2px);\n}\n\n.Community-to .icon-arrow-right2 {\n color: var(--white);\n display: inline-block;\n opacity: 0.5;\n transition: transform var(--transition-slow) var(--transition-timing);\n}\n\n.Community-from,\n.Community-to {\n border-radius: 1.15rem;\n line-height: 1.25;\n max-width: 75%;\n padding: 0.5rem .875rem;\n position: relative;\n width: fit-content;\n word-wrap: break-word;\n}\n\n.Community-from::before,\n.Community-to::before,\n.Community-from::after,\n.Community-to::after {\n bottom: -0.1rem;\n content: '';\n height: 1rem;\n position: absolute;\n}\n\n.Community-to {\n align-self: flex-end;\n background-color: #248bf5;\n color: var(--white); \n}\n\n.Community-to::before {\n border-bottom-left-radius: 0.8rem 0.7rem;\n border-right: 1rem solid #248bf5;\n right: -0.35rem;\n transform: translate(0, -0.1rem);\n}\n\n.Community-to::after {\n background-color: var(--color-bg-page);\n border-bottom-left-radius: 0.5rem;\n right: -40px;\n transform:translate(-30px, -2px);\n width: 10px;\n}\n\n.Community-from {\n align-items: flex-start;\n background-color: #e5e5ea;\n color: var(--gray0);\n}\n\n.Community-from::before {\n border-bottom-right-radius: 0.8rem 0.7rem;\n border-left: 1rem solid #e5e5ea;\n left: -0.35rem;\n transform: translate(0, -0.1rem);\n}\n\n.Community-from::after {\n background-color: #f0f0f0;\n border-bottom-right-radius: 0.5rem;\n left: 20px;\n transform: translate(-30px, -2px);\n width: 10px;\n}\n\n.Community-avatar {\n bottom: -2px;\n height: 50px;\n left: -60px;\n position: absolute;\n width: 50px;\n}\n\n/* ================\n Changelogs\n ================ */\n.Changelogs {\n margin-top: var(--md);\n}\n\n.ChangelogPost {\n padding-bottom: var(--md);\n padding-top: var(--md);\n}\n\n.ChangelogPost + .ChangelogPost {\n border-top: 1px solid var(--color-border-default);\n}\n\n.ChangelogPost-tag {\n color: var(--color-text-muted);\n font-size: 14px;\n font-weight: var(--font-weight-bold);\n}\n\n.ChangelogPost-link {\n align-items: center;\n color: var(--color-text-default);\n display: flex;\n\tfont-size: 20px;\n font-weight: var(--font-weight-bold);\n gap: var(--xs);\n margin-top: var(--sm);\n}\n\n.ChangelogPost-link:hover,\n.ChangelogPost-link:active,\n.ChangelogPost-link:focus-visible {\n color: var(--blue);\n}\n\n.ChangelogPost-link:hover .icon-arrow-right2,\n.ChangelogPost-link:active .icon-arrow-right2,\n.ChangelogPost-link:focus-visible .icon-arrow-right2 {\n opacity: 0.5;\n transform: none;\n}\n\n.ChangelogPost-link .icon-arrow-right2 {\n\tfont-size: 16px;\n\topacity: 0;\n transform: translateX(-2px);\n transition: opacity var(--transition-slow), transform var(--transition-slow);\n}\n\n.ChangelogPost-date {\n color: var(--color-text-minimum);\n font-size: 14px;\n font-weight: var(--font-weight);\n margin-top: var(--xs);\n}\n\n/* ================\n Bonus Cards (Case Studies, Pricing, Careers)\n ================ */\n@media (max-width: 1100px) {\n .BonusCards {\n flex-direction: column;\n\t}\n}\n\n/* ================\n Footer\n ================ */\n.Footer {\n align-items: flex-start;\n gap: var(--xxl);\n padding: var(--GridGap);\n}\n\n@media (max-width: 1220px) {\n .Footer { \n\t gap: var(--lg);\n }\n}\n\n@media (max-width: 850px) {\n .Footer { \n\t\tflex-direction: column;\n }\n}\n\n.Footer-logo {\n height: 30px;\n width: fit-content;\n}\n\n.Footer-heading {\n color: var(--color-text-default);\n font-family: var(--font-brand);\n font-size: 64px;\n font-weight: var(--font-weight-bold) !important;\n line-height: 1;\n margin-bottom: 0;\n margin-top: var(--lg);\n}\n\n@media (max-width: 1220px) {\n .Footer-heading {\n\t font-size: 52px;\n }\n}\n\n\n@media (max-width: 990px) {\n .Footer-heading {\n\t font-size: 42px;\n }\n}\n\n.Footer-heading-highlight {\n color: var(--blue);\n}\n\n.Footer-description {\n color: var(--color-text-default) !important;\n font-family: var(--font-brand);\n font-size: 20px;\n line-height: 1.4;\n margin-bottom: 0;\n margin-top: var(--md);\n}\n\n.Footer-links {\n background: #e7f3ff;\n border-radius: var(--border-radius-lg);\n color: var(--blue);\n font-family: var(--font-brand);\n font-size: 14px;\n gap: var(--sm);\n margin-top: var(--lg);\n padding: var(--sm);\n width: fit-content;\n}\n\n.Footer-links .Button {\n font-family: var(--font-brand);\n}\n\n.Footer-links .Button_primary_text {\n color: var(--gray20);\n font-weight: var(--font-weight-bold);\n padding-left: 0;\n}\n\n.Footer-escape {\n color: var(--blue);\n font-weight: var(--font-weight-bold);\n margin-top: var(--lg);\n width: fit-content;\n}\n\n.Footer-escape .icon-arrow-right2 {\n opacity: 0.5;\n}\n\n.Footer-owlberts {\n height: 470px;\n width: auto;\n}\n\n@media (max-width: 1220px) {\n .Footer-owlberts {\n\t height: 400px;\n }\n}\n\n@media (max-width: 990px) {\n .Footer-owlberts {\n\t height: 350px;\n }\n}\n\n@media (max-width: 500px) {\n\t.Footer-owlberts {\n height: auto;\n\t\tmax-width: 100%;\n width: 100%;\n }\n}","stylesheet_hub3":"","javascript":"","javascript_hub2":"/* eslint-disable\n */\n\n// Commenting out the scripts below, don't think they work anymore\n/*\n$(window).on('pageLoad', function(e, state){\n $('*:contains(\":oid:\"):last').html(`'${makeid(12)}'`);\n});\n\n$('*:contains(\":oid:\"):last').html(`'${makeid(12)}'`);\n\nfunction makeid(length) {\n var result = '';\n var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n var charactersLength = characters.length;\n for ( var i = 0; i < length; i++ ) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n}\n*/\n\nfunction getScript(source, callback) {\n var script = document.createElement(\"script\");\n var prior = document.getElementsByTagName(\"script\")[0];\n script.async = 1;\n\n script.onload = script.onreadystatechange = function (_, isAbort) {\n if (isAbort || !script.readyState || /loaded|complete/.test(script.readyState)) {\n script.onload = script.onreadystatechange = null;\n script = undefined;\n\n if (!isAbort && callback) setTimeout(callback, 0);\n }\n };\n\n script.src = source;\n prior.parentNode.insertBefore(script, prior);\n}\n\n/* Hacky script for loading Twitter widget\n */\nfunction loadTwitterWidget() {\n var hasTwitterWidget = document.getElementsByClassName(\"twitter-tweet\");\n if (hasTwitterWidget.length > 0) {\n getScript(\"https://platform.twitter.com/widgets.js\", () => {});\n }\n}\n\nfunction custom404Stuff() {\n // the search bar takes a bit to show up, so we need to wait for it\n setTimeout(() => {\n const helpTextKBD = document.getElementById(\"search-key-404-clone\");\n const helpInnerText = document.querySelector(\"#SearchBert + kbd\")?.innerText;\n if (helpTextKBD && helpInnerText) {\n const newText = helpInnerText.replace(\"\\n\", \"\");\n console.debug(\"updating 404 text for this element:\",helpTextKBD,\"to this text:\",helpInnerText);\n helpTextKBD.innerText = newText;\n }\n }, 250)\n\n}\n\nfunction rebaseMobileSearchButton() {\n var searchButton = $(\".rm-Header-top .rm-SearchToggle\");\n var menuHolder = $(\".rm-Flyout > div\");\n if (searchButton.length && menuHolder.length) {\n searchButton.appendTo(menuHolder);\n }\n}\n\n/* *********************\n Populate marketing site URL in GLP logo\n ********************* */\nfunction updateGLPLogoLink() {\n if (location.pathname !== \"/\") return;\n document.querySelector('a.rm-Logo:not([class^=\"Mobile\"])').href = \"https://readme.com\";\n}\n\n/* *********************\n Load Changelog from RSS feed\n ********************* */\n\nfunction loadChangelogPosts() {\n if (location.pathname !== \"/\") return;\n const changelogRss = \"/main/changelog.rss\";\n\n const changelogIcon = {\n added: { color: \"green\", icon: \"plus1\" },\n improved: { color: \"purple\", icon: \"heart1\" },\n fixed: { color: \"blue\", icon: \"check1\" },\n deprecated: { color: \"yellow\", icon: \"alert-triangle\" },\n };\n\n const parser = new RSSParser({ customFields: { item: [\"type\"] } });\n parser.parseURL(changelogRss, function (err, feed) {\n if (err) throw err;\n const parent = document.getElementById(\"changelogs-target\");\n const changelogEntries = [];\n\n for (let i = 0; i <= 2; i += 1) {\n const entry = feed.items[i];\n\n const changelogPost = document.createElement(\"li\");\n changelogPost.className = \"flex flex_col ChangelogPost\";\n\n if (entry.type) {\n const changelogType = document.createElement(\"div\");\n changelogType.className = \"flex flex_center ChangelogPost-tag\";\n changelogType.style = \"gap: var(--xs)\";\n\n const typeIcon = document.createElement(\"span\");\n const { color, icon } = changelogIcon[entry.type];\n typeIcon.className = `TileIcon TileIcon_sm TileIcon_${color} icon icon-${icon}`;\n\n const typeText = document.createElement(\"span\");\n typeText.innerText = entry.type;\n typeText.style = \"text-transform: capitalize;\";\n\n changelogType.appendChild(typeIcon);\n changelogType.appendChild(typeText);\n changelogPost.appendChild(changelogType);\n }\n\n const changelogTitle = document.createElement(\"a\");\n changelogTitle.className = \"ChangelogPost-link\";\n changelogTitle.href = entry.link;\n changelogTitle.innerText = entry.title;\n\n const changelogTitleArrow = document.createElement(\"i\");\n changelogTitleArrow.className = \"icon icon-arrow-right2\";\n changelogTitle.appendChild(changelogTitleArrow);\n changelogPost.appendChild(changelogTitle);\n\n const changelogDate = document.createElement(\"span\");\n changelogDate.className = \"ChangelogPost-date\";\n changelogDate.innerText = timeago.format(entry.isoDate);\n changelogPost.appendChild(changelogDate);\n\n changelogEntries.push(changelogPost);\n }\n\n while (parent.firstChild) {\n parent.removeChild(parent.firstChild);\n }\n\n changelogEntries.forEach(function (entry) {\n parent.appendChild(entry);\n });\n });\n}\n\n/* *********************\n Generate Nav\n ********************* */\nconst links = [\n {\n href: \"https://docs.readme.com\",\n icon: \"icon-landing-page-2\",\n text: \"Home\",\n },\n {\n href: \"https://docs.readme.com/main/docs\",\n icon: \"icon-guides\",\n text: \"Product Guides\",\n },\n {\n href: \"https://docs.readme.com/ent/docs\",\n icon: \"icon-guides\",\n text: \"Enterprise Guides\",\n },\n {\n href: \"https://docs.readme.com/main/recipes\",\n icon: \"icon-recipes\",\n text: \"Recipes\",\n },\n {\n href: \"https://docs.readme.com/main/reference\",\n icon: \"icon-references\",\n text: \"API Reference\",\n },\n {\n href: \"https://docs.readme.com/main/changelog\",\n icon: \"icon-changelog\",\n text: \"Changelog\",\n },\n {\n href: \"https://docs.readme.com/main/discuss\",\n icon: \"icon-discussions\",\n text: \"Discussions\",\n },\n {\n href: \"https://docs.readme.com/rdmd/docs\",\n icon: \"icon-markdown\",\n text: \"ReadMe Markdown\",\n },\n];\n\nfunction populateMainNav() {\n const mainNav = document.querySelector('.rm-Header nav:first-child');\n const mobileNav = document.querySelector(\".rm-Flyout > div\");\n\n // Completely replaces nav\n function cleanUpdate() {\n // Create new links\n let mainLinkEls = \"\";\n let mobileLinkEls = \"\";\n links.map(({ href, icon, text }) => {\n // determine if link is active\n let isActive = false;\n const hrefUrl = new URL(href);\n if (location.pathname.includes(hrefUrl.pathname)) isActive = true;\n // landing page quirk\n if (hrefUrl.pathname === \"/\" && location.pathname !== \"/\") isActive = false;\n\n mainLinkEls += `<a class=\"Button Button_md Button_slate_text rm-Header-bottom-link ${\n isActive ? \"active\" : \"\"\n }\" href=${hrefUrl.pathname}><i class=${icon}></i><span>${text}</span></a>`;\n mobileLinkEls += `<a class=\"NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- ${\n isActive ? \"active\" : \"\"\n }\" href=${\n hrefUrl.pathname\n } target=\"_self\"><i class=\"NavItem-item-anchorzz3banOxXKjr ${icon}\"></i><span class=\"NavItem-textSlZuuL489uiw\">${text}</span></a>`;\n });\n\n // Replace main nav\n mainNav.innerHTML = mainLinkEls;\n\n // Add standard links (customer stories, logo, etc.) onto mobile nav\n mobileLinkEls += '<hr class=\"MobileFlyout-divider10xf7R2X1MeW\">';\n mobileLinkEls +=\n '<a class=\"NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- NavItem_dropdown-muted1xJVuczwGc74\" href=\"https://readme.com/customers\" rel=\"noopener\" target=\"_blank\" to=\"https://readme.com/customers\">Customer Stories</a>';\n mobileLinkEls +=\n '<a class=\"NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- NavItem_dropdown-muted1xJVuczwGc74\" href=\"https://readme.com/pricing\" rel=\"noopener\" target=\"_blank\" to=\"https://readme.com/pricing\">Pricing</a>';\n // TODO: figure out how to add nav item for user controls\n mobileLinkEls += \"\";\n mobileLinkEls +=\n '<a class=\"MobileFlyout-logo3Lq1eTlk1K76 Header-logo1Xy41PtkzbdG rm-Logo\" href=\"https://readme.com\" target=\"_self\"><img alt=\"ReadMe Logo\" class=\"Header-logo-img3YvV4lcGKkeb rm-Logo-img\" src=\"https://files.readme.io/68da258-644ef91-readme-white_1.svg\"></a>';\n\n // Replace mobile nav\n mobileNav.innerHTML = mobileLinkEls;\n }\n\n console.debug(\"about to update nav for \", location.pathname);\n\n if (location.pathname.startsWith(\"/main\")) {\n // for the main project, we take a more surgical approach to constructing the nav\n try {\n // Rename guides node, create home and enterprise nodes and insert them\n function insertNavLinks(navNode) {\n // if we've already inserted the nav links, don't do anything\n if (navNode.firstChild.innerText.trim() === \"Home\") return;\n\n navNode.firstChild.childNodes[1].innerText = \"Product Guides\";\n const baseNode = navNode.firstChild.cloneNode(true);\n\n links.map((link, i) => {\n const hrefUrl = new URL(link.href);\n // don't create nodes for existing main project\n if (hrefUrl.pathname.startsWith(\"/main\")) return true;\n\n const newNode = baseNode.cloneNode(true);\n newNode.classList.remove(\"active\");\n newNode.removeAttribute(\"aria-current\");\n newNode.href = hrefUrl.pathname;\n newNode.childNodes[1].innerText = link.text;\n newNode.firstChild.classList.replace(\"icon-guides\", link.icon);\n\n const nodeToInsertBefore = navNode.childNodes[i] || null;\n navNode.insertBefore(newNode, nodeToInsertBefore);\n });\n }\n\n console.debug(\"surgical nav bar update\");\n insertNavLinks(mainNav);\n insertNavLinks(mobileNav);\n } catch (e) {\n console.debug(\"clean nav bar update due to surgical update error\");\n cleanUpdate();\n }\n } else {\n console.debug(\"clean nav bar update due to non-main project route\");\n cleanUpdate();\n }\n\n mainNav.style.visibility = \"visible\";\n}\n\n$(window).on(\"pageLoad\", function (e, state) {\n console.debug(\"pageLoad event for\", window.location.pathname, state);\n loadTwitterWidget();\n // rebaseMobileSearchButton();\n loadChangelogPosts();\n populateMainNav();\n updateGLPLogoLink();\n custom404Stuff();\n});","html_promo":"","html_body":"","html_footer":"","html_head":"<!-- Slack App Suggestions Tag -->\n<meta name=\"slack-app-id\" content=\"AQBR3NZUY\">\n<!-- Top-level OG image attributes (applied on every page) -->\n<meta property=\"og:image\" content=\"https://readme.com/static/og_images/index.png\">\n<meta property=\"og:image:secure_url\" content=\"https://readme.com/static/og_images/index.png\">\n<meta name=\"twitter:image\" content=\"https://readme.com/static/og_images/index.png\">\n<meta property=\"og:image:width\" content=\"1200\">\n<meta property=\"og:image:height\" content=\"630\">\n<meta name=\"author\" content=\"ReadMe\">\n\n<script\n src=\"https://code.jquery.com/jquery-3.6.0.min.js\"\n integrity=\"sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=\"\n crossorigin=\"anonymous\"></script>\n<script>\n$.noConflict();\n</script>\n<!-- RSS feed parsing script -->\n<script src=\"//unpkg.com/rss-parser@3.12.0/dist/rss-parser.min.js\"></script>\n<script src=\"//unpkg.com/timeago.js@4.0.2/dist/timeago.min.js\"></script>","html_footer_meta":"<!--\n<script\n src=\"https://code.jquery.com/jquery-2.1.4.min.js\"\n crossorigin=\"anonymous\"></script>\n<script>\n$.noConflict();\n</script>\n-->","html_hidelinks":false,"showVersion":true,"hideTableOfContents":false,"nextStepsLabel":"","promos":[],"loginLogo":["https://files.readme.io/8275bff-readme-blue.svg","readme-blue.svg",null,null,"#000000"],"colorScheme":"system","logo_large":false,"changelog":{"layoutExpanded":false,"showAuthor":true,"showExactDate":false},"allowApiExplorerJsonEditor":false},"child":{"_id":"5f7ce9e3a5504d0414d025d0","appearance":{"rdmd":{"callouts":{"useIconFont":false},"theme":{"background":"","border":"","markdownEdge":"","markdownFont":"","markdownFontSize":"","markdownLineHeight":null,"markdownRadius":"","markdownText":"","markdownTitle":"","markdownTitleFont":"","mdCodeBackground":"","mdCodeFont":"","mdCodeRadius":"","mdCodeTabs":"","mdCodeText":"","tableEdges":"","tableHead":"","tableHeadText":"","tableRow":"","tableStripe":"","tableText":"","text":"","title":""}},"main_body":{"type":"all-docs"},"colors":{"highlight":"","main":"#018EF5","main_alt":"","header_text":"","body_highlight":"","custom_login_link_color":""},"typography":{"headline":"Open+Sans:400:sans-serif","body":"Open+Sans:400:sans-serif","typekit":false,"tk_key":"","tk_headline":"scriptalert2script","tk_body":"scriptalert3script"},"header":{"style":"solid","img":[],"img_size":"auto","img_pos":"tl"},"body":{"style":"overlap"},"global_landing_page":{"html":"","redirect":""},"referenceLayout":"row","link_logo_to_url":true,"theme":"solid","overlay":"triangles","landing":true,"sticky":false,"hide_logo":false,"childrenAsPills":false,"subheaderStyle":"links","splitReferenceDocs":true,"logo":["https://files.readme.io/3977150-small-readme-blue.png","readme-blue.png",442,80,"#000000","https://files.readme.io/80be47c-readme-blue.png"],"logo_white":["https://files.readme.io/7f72f63-small-readme-white_1.png","readme-white (1).png",464,80,"#ffffff","https://files.readme.io/100ba28-readme-white_1.png"],"logo_white_use":true,"favicon":[],"stylesheet":"/** Collapsing sidebars, CSS; added by ReadMe.io **/\n\n.theme-solid .sidebar-nav ul li a {\n padding-left: 10px;\n}\n.section-left .sidebar-nav h4:hover {\n cursor: pointer;\n color: #111; \n}\n\n.header h1.navbar-brand {\n width: 150px !important;\n}\n\n.header .searchbox.focus input {\n width: 180px;\n}\n\n\n/* Homepage */\n.support { \n position: relative;\n height: 288px;\n padding: 25px 40px 20px 70px;\n}\n\n.page-home #header {\n \t\tmargin-bottom: 25px;\n}\n\n.support img {\n width: 1070px;\n position: absolute;\n left: 0;\n top: 0; \n}\nheader .support h2 {\n\t\tdisplay: none;\n}\n\nheader .support p {\n color: #fff;\n margin: 53px 0 25px;\n line-height: 1.6em;\n \tfont-weight: 500;\n font-size: 17px;\n color: rgba(255,255,255,0.8);\n}\nheader .support p strong {\n color: #fff;\n}\n\n.theme-solid header .support a.btn {\n background: #fff;\n color: #1c84cc;\n font-weight: bold;\n box-shadow: 0 2px 2px rgba(0,0,0,0.1); \n font-size: 13px;\n text-transform: uppercase;\n font-weight: 700;\n transition: 0.15s ease-out;\n \tpadding: 6px 20px 10px;\n}\n.theme-solid header .support a.btn:hover {\n box-shadow: 0 2px 2px rgba(0,0,0,0.3);\n}\n.theme-solid header .support a.btn:active {\n box-shadow: 0 0;\n \tposition: relative;\n top: 1px;\n}\n.theme-solid header .support a .fa {\n display: inline-block;\n text-align: left;\n color: #1c84cc;\n transition: 0.15s ease-out;\n width: 0px;\n overflow: hidden;\n opacity: 0;\n top: 4px;\n position: relative;\n font-size: 18px;\n transform: scale(0.6);\n}\n.theme-solid header .support a.btn:hover .fa {\n width: 28px;\n opacity: 1;\n transform: scale(1);\n}\n\nh1.navbar-brand {\n\tmargin-left: 16px !important;\n}\n.header .nav.navbar-nav.pull-right {\n right: -9px;\n}\n.container.body-container {\n\tpadding-left: 0;\n padding-right: 0;\n}","stylesheet_hub2":".markdown-body .callout[theme=\"🥳\"] {\n --background: #C878E1;\n --border: #375CD7;\n --text: #f5fffa;\n}\n\n.markdown-body .callout[theme=\"🚀\"] {\n --background: #;\n --border: #;\n --text: #;\n}\n\n.markdown-body .callout[theme=\"🎉\"] {\n --background: #;\n --border: #;\n --text: #;\n}\n\n.rm-Changelog .markdown-body p:first-of-type {\n font-size: 1.25em;\n margin: 30px 0;\n}\n\n.rm-Changelog .markdown-body h2 + p {\n font-size: 1.25em;\n}\n\n.rm-Changelog .markdown-body h3 {\n margin-top: 30px;\n}","javascript":"/* Collapsing sidebars, JavaScript; added by ReadMe.io */\n\n$('.sidebar-nav ul').each(function() {\n var $active = $('li.active', $(this));\n if(!$active.length) {\n $(this).hide();\n }\n});\n\n$('.sidebar-nav h4').click(function() {\n $(this).next('ul').slideToggle();\n});\n\n$('.sidebar-nav').find('a.active').closest('ul').css('display','block'); // optional, keeps the active documentation page's parent category expanded","javascript_hub2":"","html_promo":"<div class=\"support\"><img src=\"https://files.readme.io/563527b-rr-owlbert.png\"><div class=\"col-sm-9\"><h2>ReadMe Documentation</h2><p>Welcome to the <strong>ReadMe Documentation</strong>, where you'll find comprehensive guides and community support to help you start working with ReadMe as quickly as possible!</p><a href=\"/docs\" class=\"btn btn-lg btn-primary\"><i class=\"fa fa-rocket\"></i>Get Started</a></div></div>","html_body":"<div>Hello</div>","html_footer":"","html_head":"","html_footer_meta":"","html_hidelinks":false,"showVersion":false,"hideTableOfContents":false,"nextStepsLabel":"What's Next","promos":[{"extras":{"type":"html","buttonPrimary":"get-started","buttonSecondary":"none"},"title":"The ReadMe Developer Hub","text":"","_id":"542334961972e21d7dae4e01"}],"sidebarStyle":"ellipses","showMetricsInReference":true,"referenceSimpleMode":true,"stylesheet_hub3":"","loginLogo":[],"logo_large":false,"colorScheme":"system","changelog":{"layoutExpanded":true,"showAuthor":false,"showExactDate":true},"allowApiExplorerJsonEditor":false},"custom_domain":"","childrenProjects":[],"derivedPlan":"enterprise","description":"Beautiful documentation made easy.","error404":"404","experiments":["64cd2000e0b0c1b1fa55712d"],"first_page":"docs","flags":{"allow_hub2":false,"enterprise":true,"alwaysShowDocPublishStatus":false,"hub2":true,"migrationRun":true,"migrationSwaggerRun":true,"oauth":false,"swagger":true,"correctnewlines":false,"rdmdCompatibilityMode":false,"speedyRender":false,"allowXFrame":true,"cookieAuthentication":false,"hideGoogleAnalytics":false,"newEditor":true,"oldMarkdown":false,"newMarkdownBetaProgram":false,"newApiExplorer":true,"disableAnonForum":true,"directGoogleToStableVersion":false,"translation":false,"staging":false,"newSearch":true,"tutorials":true,"allowApiExplorerJsonEditor":false,"useReactApp":true,"newHeader":false,"referenceRedesign":true,"auth0Oauth":false,"graphql":false,"singleProjectEnterprise":false,"dashReact":false,"allowReferenceUpgrade":true,"metricsV2":true,"newEditorDash":true,"enableRealtimeExperiences":false,"reviewWorkflow":true,"star":true,"allowDarkMode":true,"forceDarkMode":false,"useReactGLP":false,"disablePasswordlessLogin":false,"personalizedDocs":true,"myDevelopers":true,"superHub":false,"developerDashboard":true,"allowReusableOTPs":false,"dashHomeRefresh":true,"owlbotAi":true,"apiV2":true,"git":{"read":false,"write":false},"superHubBeta":true,"dashQuickstart":false,"disableAutoTranslate":false,"customBlocks":false,"devDashHub":false,"disableSAMLScoping":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"apiAccessRevoked":false,"passwordlessLogin":"default","disableSignups":false,"billingRedesignEnabled":true,"developerPortal":false,"mdx":false,"superHubDevelopment":false,"annualBillingEnabled":true,"devDashBillingRedesignEnabled":false,"enableOidc":false,"customComponents":false,"disableDiscussionSpamRecaptchaBypass":false,"developerViewUsersData":true,"changelogRssAlwaysPublic":false,"bidiSync":false,"superHubMigrationSelfServeFlow":false},"fullBaseUrl":"https://developers.readme.io/","git":{"migration":{"createRepository":{},"transformation":{},"migratingPages":{},"enableSuperhub":{}},"sync":{"connectedRepository":{"organization":{},"privacy":{}},"installationRequest":{},"github":[]}},"glossaryTerms":[{"_id":"5b57804ec6af890003de66cf","term":"Page","definition":"Also known as an article"},{"_id":"5b57805e60a07d00037870db","term":"Subpage","definition":"Under a Page"},{"_id":"5b5780787baf140003ef762b","term":"Changelog","definition":"Place where you can go see changes"},{"_id":"5b57808aa599780003538deb","term":"Discussions","definition":"Forum where your customers can share their concerns"},{"_id":"5b5780a17baf140003ef762d","term":"Documentation","definition":"Section where the documentation lives"},{"_id":"5b5780b7a599780003538ded","term":"Reference","definition":"The API Explorer"},{"_id":"5b57f37a0c8f760003f3023c","term":"pop up","definition":"You have to have explicitly use a glossary term by typing \"<<\" in the ReadMe editor. The glossary feature will not find and replace all words that match your glossary term."},{"_id":"5de95d1041cd310027f8c4fb","term":"internal","definition":"Your administrators that can access the dashboard of your projects"},{"_id":"5de95d159e4c7e002f220927","term":"external","definition":"Your members that have access to the hubs"},{"_id":"5deaf50c2aa750006dbd2f3a","term":"login mechanisms","definition":"ReadMe's login mechanisms. We can support Custom OAuth, Custom JWT, SAML, Local ReadMe, and No Login"},{"_id":"6011e68de8693f0014d8d932","term":"RDMD","definition":"Our custom ReadMe-flavored Markdown engine. It's based on remark (meaning it supports all the Markdown syntax you know and love) and adds some custom syntax to support ReadMe features such as variables, glossary (i.e. what you're reading right now!), and emoji! You can read more about RDMD in our docs: rdmd.readme.io"},{"_id":"60231e0409f34c005e4dc876","term":"API Explorer","definition":"Our interactive, OpenAPI-based API reference section. Users can construct and send API requests and view code samples in a language of their choice—all without leaving the docs!"},{"_id":"6063c8810f5a29000f35b3f9","term":"API Reference","definition":"The API reference section of your ReadMe documentation contains information about each of your endpoints and the data that is sent and received. Users can construct and send API requests and view code samples in a language of their choice—all without leaving the docs!"},{"_id":"612d776812676f005baabd10","term":"dereferenced","definition":"The act of dereferencing all `$ref` pointers within an OpenAPI definition, replacing each reference with the value or schema that it resolves to."},{"_id":"6206b7c1ea0c3b0046a1de0c","term":"Enterprise Group","definition":"An Enterprise Group refers to the parent dashboard where all global settings are managed, including adding and removing Teammates and End Users, and managing all child projects."},{"_id":"6206b7d64516a0048e3d346c","term":"Enterprise Group Owner","definition":"There is one owner per Enterprise Group, referred to as “Owner” in the Enterprise Group dashboard. The Enterprise Group Owner has the same access privileges as an Enterprise Group Admin. Additionally, ReadMe Product Experience Managers will contact Enterprise Group Owners as the primary point of contact for decisions and updates related to renewals, beta programs, and new feature releases."},{"_id":"6206bb05eb045403e8f2320e","term":"Enterprise Group Admin","definition":"An Enterprise Group Admin is referred to as “Admin” in the Enterprise Group dashboard. Enterprise Group Admins can invite, remove, and choose the permission level of other Teammates and End Users. They can also add and remove projects from the Enterprise Group, and access any related project via the project’s dashboard."},{"_id":"6206bc6653a2eb002c07a928","term":"Project Admin","definition":"A Project Admin is the default role when you invite a team member to a ReadMe project. A Project Admin has access to a project’s dashboard and can make most team- and project-management related changes with the exception of upgrading your plan, cloning or deleting a project, and transferring project ownership, which only Project Owners can do."},{"_id":"6206bc77c66af9003f0d3ea7","term":"Project Owner","definition":"There can only be one Project Owner per ReadMe project. This role has all of the privileges of a Project Admin, with the additional abilities to upgrade your plan, clone or delete a project, and transfer project ownership."},{"_id":"6206bcae37c9d902c95e84b6","term":"Viewer","definition":"When you invite a Teammate to an Enterprise Group you have the ability to set their access to “Viewer”. The Viewer role has access to view the hubs of all child projects within an Enterprise Group, but has no access to the dashboards of the child projects or to the Enterprise Group dashboard."},{"_id":"62153fd7c4e9aa00950ea1b2","term":"variables","definition":"The variables feature allows you to assign a specific variable (e.g. name) to automatically propagate default values, across all of your documentation. We recommend using this feature for product names and links to allow for simpler bulk editing. Additionally, you can use variables to pass in user data so that aspects of your documentation are personalized for logged in users, such as their name or API key. In order to pass in personalized user data, you first need to set up custom login, which integrates with either JWT or Webhooks. You can set up variables for your project in the Variable Defaults section (within Configuration) of your dashboard."},{"_id":"62153fe068bc3e0058bb1af1","term":"dashboard","definition":"The dashboard, or dash, refers to the admin panel of ReadMe’s platform where all of your projects and settings are housed. Only Project Admins have access to the dashboard. The dashboard is where Admins can edit projects, create and edit documentation, and more."},{"_id":"6217d529a29ea90056b28f2b","term":"hype train","definition":"A 🚆 full of hype"},{"_id":"622fb5f271f5f406608a919f","term":"Custom","definition":"When you invite a Teammate to an Enterprise Group you have the ability to set their access to “Custom”. From there, you’ll set permission access on a per project basis as either No Access, Viewer (only hub-side access to the project), or Admin (dashboard- and hub-side access to the project)."},{"_id":"6230bd1b776d1d033e134034","term":"Teammates","definition":"Teammates are members of your team who manage (e.g. write, edit, update) documentation related to your Enterprise Group projects. Teammates can have one of three permissions: Admin, Viewer, or Custom."},{"_id":"6230bd51fb5b3d005587bca8","term":"End Users","definition":"End Users are consumers of your ReadMe projects’ private documentation whom you’d like to grant hub-side access to. As an Enterprise customer, you can invite End Users, define project access, and configure login methods within your Enterprise Group dashboard."},{"_id":"62583c1c51d83c0353152996","term":"hub","definition":"The hub is the end user-facing side of your project, or documentation site. This is where individuals can view and interact with your documentation. For example when you set a page in your dashboard “live”, this becomes visible on the hub-side of your project. Your hub—or hubs if you have multiple projects—is updated through your project’s dashboard. Your hub is visible to anyone with the URL for your documentation, unless you set your project to private."},{"_id":"64da475bf12f5d0b6eb764fb","term":"Slug","definition":"A URL slug last identifying string of a specific page.\n\nThe slug for https://docs.readme.com/main/docs/intro-to-readme is \"intro-to-readme\""},{"_id":"64da47a94a89fd11c7884cec","term":"dash","definition":"The Dashboard, or Dash, refers to the admin panel of ReadMe’s platform where all of your projects and settings are housed. Only Project Owners and Admins have access to the Dashboard. The Dashboard is where Admins can edit projects, create and edit documentation, and more."},{"_id":"64da49a3af7e2f00190b8748","term":"Glossary","definition":"Glossary terms allow users to provide additional context to specific words or phrases when a viewer hovers over that term. Terms are defined in plaintext under Project Dashboard > Glossary. When editing content, type \"<<\" to insert a Glossary term!"}],"graphqlSchema":"https://test.com","gracePeriod":{"enabled":false,"endsAt":null},"shouldGateDash":false,"hasOneChild":false,"healthCheck":{"settings":{"page":"nz3r09cr7dk1","status":false,"url":""},"provider":"statusPage"},"intercom_secure_emailonly":false,"intercom":"m6855w1q","is_active":true,"internal":"","jwtExpirationTime":0,"landing_bottom":[{"pageType":"Documentation","alignment":"left","type":"docs"},{"type":"html","alignment":"left","html":""}],"mdxMigrationStatus":"rdmd","metrics":{"monthlyLimit":50000000,"thumbsEnabled":true,"planLimit":20000000,"realtime":{"dashEnabled":true,"hubEnabled":true},"monthlyPurchaseLimit":0,"meteredBilling":{}},"modules":{"landing":false,"docs":true,"examples":true,"reference":true,"changelog":true,"discuss":true,"suggested_edits":true,"logs":false,"custompages":true,"tutorials":true,"graphql":false},"name":"ReadMe","nav_names":{"docs":"","reference":"","changelog":"","discuss":"","tutorials":"","recipes":""},"oauth_url":"","onboardingCompleted":{"api":true,"appearance":true,"documentation":true,"domain":true,"jwt":true,"logs":true,"metricsSDK":true},"owlbot":{"enabled":true,"isPaying":false,"lastIndexed":"2024-11-27T15:43:52.894Z","customization":{"answerLength":"long","customTone":"","defaultAnswer":"","forbiddenWords":"","tone":"neutral"},"copilot":{"enabled":true,"hasBeenUsed":false,"installedCustomPage":""}},"owner":{"id":null,"email":null,"name":null},"plan":"enterprise","planOverride":"enterprise","planSchedule":{"stripeScheduleId":null,"changeDate":null,"nextPlan":null},"planStatus":"","planTrial":"enterprise","readmeScore":{"components":{"newDesign":{"enabled":true,"points":25},"reference":{"enabled":true,"points":50},"tryItNow":{"enabled":true,"points":35},"syncingOAS":{"enabled":false,"points":10},"customLogin":{"enabled":true,"points":25},"metrics":{"enabled":true,"points":40},"recipes":{"enabled":true,"points":15},"pageVoting":{"enabled":true,"points":1},"suggestedEdits":{"enabled":true,"points":10},"support":{"enabled":true,"points":5},"htmlLanding":{"enabled":true,"points":5},"guides":{"enabled":true,"points":10},"changelog":{"enabled":true,"points":5},"glossary":{"enabled":true,"points":1},"variables":{"enabled":true,"points":1},"integrations":{"enabled":true,"points":2}},"percentScore":100,"totalScore":230},"reCaptchaSiteKey":"6LdHWIgcAAAAAEDbyrvc-xSVdHo2tRjrkamgjjof","reference":{"alwaysUseDefaults":false,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":true,"enableOAuthFlows":false},"seo":{"overwrite_title_tag":false},"stable":{"_id":"62056dee230e07007218bf4c","version":"2.0","version_clean":"2.0.0","codename":"product-guides","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["62056dee230e07007218be04","5f7ce9e3a5504d0414d024c0","62056dee230e07007218be05","5730e2e9053a062b00cf4754","5730e2e9053a062b00cf4755","62056dee230e07007218be06","62056dee230e07007218be07","5730e2e9053a062b00cf4758","5730e2e9053a062b00cf4759","5730e2e9053a062b00cf475a","62056dee230e07007218be08","62056dee230e07007218be09","5730e2e9053a062b00cf475d","62056dee230e07007218be0a","5730e2e9053a062b00cf475f","5f7ce9e3a5504d0414d024c7","57e31e95611a860e00f97e22","582fa20c4479222092198d40","5849c782fcabe31900998f6e","58b9e83068a4a5190011dcb2","58bdec0f455ca125001d9505","5a6bbecf2116e20022de8b19","5a7c96d2324bc1001f64ad8b","5a7c9d777dce000013d8b96f","5a81e7ff761cf30012731823","5a81e886bf4a2b0012592b49","5a81eaa5761cf3001273183d","62056dee230e07007218be0b","5a95f47858371e001fd651bb","5a95f53b5c3020002b02aa8c","5a95f57c4091e600125d0249","5a95f5984c0ecf0046a28ba3","5a95f6754091e600125d0252","5a95f6b94091e600125d025b","5a95f7104c0ecf0046a28bce","5a95f7954c0ecf0046a28c57","5a95f7d15c3020002b02aacf","5af6287d426c9d000377c583","5afdf7d37506a80003730d40","5b359df811baf70003a14454","62056dee230e07007218be0c","5bbbb66b8dac1100048174f0","5bbbb6768dac1100048174f3","62056dee230e07007218be0d","5c6f5766877e850021140a1a","5ca51733d177a40373ab97f9","5cc26539681cf8001b9ce9f3","5d0aa5163fd65b0019f2d14e","5d0bba3dd628fd0051fbb232","5d0bba522df6470020205266","5d0bce567f3ac6000f0ef6a3","5d1a4e276ffc8100194874f2","5d3213a673f65d0012b11fb0","5d5b7af3e33f0b005608b793","5d5b7b1d68f1dc00113744d4","5d5b7b9f0c74ae001e8e2186","5d5b7beffe91cc002f6d67eb","5d5b7c21fbd0f80012334964","5d5b7c2df20ff50052c02fec","5dc9f8a8ea4314002f5575ff","5dcdad4c3fd5ca0052534ac4","5e1e2350f309936b889b2448","5f7ce9e3a5504d0414d024fd","62056dee230e07007218be0e","62056dee230e07007218be0f","62056dee230e07007218be10","5f7cf1a9cb79be02e1a588c9","62056dee230e07007218be11","5f9c861053998401d1c2c222","5fc55b794fd67b00645d25e2","62056dee230e07007218be12","61084e16a18107003124ef8f","62056dee230e07007218be13","61e1f0d7a8a68f007059c4cb","61e1f0fc0106310039807732","62292aea889520008ed0113b","6233cab9410abc001c9822eb","6234eb59f6eccc02f76cb807","624cb20585a75d004c978f57","624e2238df4eb60013286917","633470b833bb8d04e657051a","6376ba4d127d990003112b72","63e43d347c3efc02c02c5986","6442d3485ae2d10e2654d2f3","64f8c3b94e8f64001f07ea58","650b7bdc6fa4eb0074722335","65848b391e628e004514a0df","65848bb94819f1004aa6338e","658493ce0d7680006b35bd9d","6732850c3cee9b006fe502ba"],"createdAt":"2016-05-09T19:20:09.413Z","project":"5f7ce9e3a5504d0414d025d0","releaseDate":"2016-05-09T19:20:09.413Z","__v":0,"pdfStatus":"complete","forked_from":"5f7ce9e3a5504d0414d0243f","updatedAt":"2024-11-11T22:28:28.339Z"},"subdomain":"developers","subpath":"main","superHubWaitlist":false,"topnav":{"left":[{"type":"url","text":"Customer Stories","url":"https://readme.com/customers"},{"type":"url","text":"ReadMe Blog","url":"https://blog.readme.com"}],"right":[{"type":"user"}],"edited":true,"bottom":[]},"trial":{"trialDeadlineEnabled":false,"trialEndsAt":"2020-10-20T22:04:19.564Z"},"translate":{"provider":"transifex","show_widget":false,"key_public":"","org_name":"","project_name":"","languages":[]},"url":"https://readme.com","versions":[{"_id":"5f7ce9e3a5504d0414d0243f","codename":"Hub 2 (Pre-Docs Migration)","createdAt":"2016-05-09T19:20:09.413Z","is_deprecated":true,"project":"5f7ce9e3a5504d0414d025d0","releaseDate":"2016-05-09T19:20:09.413Z","__v":51,"is_beta":false,"is_hidden":true,"is_stable":false,"version":"2.0-archive","version_clean":"2.0.0-archive","categories":["5f7ce9e3a5504d0414d024bf","5f7ce9e3a5504d0414d024c0","5f7ce9e3a5504d0414d024c1","5730e2e9053a062b00cf4754","5730e2e9053a062b00cf4755","5f7ce9e3a5504d0414d024c2","5f7ce9e3a5504d0414d024c3","5730e2e9053a062b00cf4758","5730e2e9053a062b00cf4759","5730e2e9053a062b00cf475a","5f7ce9e3a5504d0414d024c4","5f7ce9e3a5504d0414d024c5","5730e2e9053a062b00cf475d","5f7ce9e3a5504d0414d024c6","5730e2e9053a062b00cf475f","5f7ce9e3a5504d0414d024c7","57e31e95611a860e00f97e22","582fa20c4479222092198d40","5849c782fcabe31900998f6e","58b9e83068a4a5190011dcb2","58bdec0f455ca125001d9505","5a6bbecf2116e20022de8b19","5a7c96d2324bc1001f64ad8b","5a7c9d777dce000013d8b96f","5a81e7ff761cf30012731823","5a81e886bf4a2b0012592b49","5a81eaa5761cf3001273183d","5f7ce9e3a5504d0414d024c8","5a95f47858371e001fd651bb","5a95f53b5c3020002b02aa8c","5a95f57c4091e600125d0249","5a95f5984c0ecf0046a28ba3","5a95f6754091e600125d0252","5a95f6b94091e600125d025b","5a95f7104c0ecf0046a28bce","5a95f7954c0ecf0046a28c57","5a95f7d15c3020002b02aacf","5af6287d426c9d000377c583","5afdf7d37506a80003730d40","5b359df811baf70003a14454","5f7ce9e3a5504d0414d024c9","5bbbb66b8dac1100048174f0","5bbbb6768dac1100048174f3","5f7ce9e3a5504d0414d024e8","5c6f5766877e850021140a1a","5ca51733d177a40373ab97f9","5cc26539681cf8001b9ce9f3","5d0aa5163fd65b0019f2d14e","5d0bba3dd628fd0051fbb232","5d0bba522df6470020205266","5d0bce567f3ac6000f0ef6a3","5d1a4e276ffc8100194874f2","5d3213a673f65d0012b11fb0","5d5b7af3e33f0b005608b793","5d5b7b1d68f1dc00113744d4","5d5b7b9f0c74ae001e8e2186","5d5b7beffe91cc002f6d67eb","5d5b7c21fbd0f80012334964","5d5b7c2df20ff50052c02fec","5dc9f8a8ea4314002f5575ff","5dcdad4c3fd5ca0052534ac4","5e1e2350f309936b889b2448","5f7ce9e3a5504d0414d024fd","5f7ceacf43621b0311080a59","5f7cee46dd6cb1037e316144","5f7cefc76b6e5e04c3a4c74c","5f7cf1a9cb79be02e1a588c9","5f88bd664649f900680641fb","5f9c861053998401d1c2c222","5fc55b794fd67b00645d25e2","60189781b18d9a0012221411","61084e16a18107003124ef8f","61e1ef1e337b90003a9e11a5","61e1f0d7a8a68f007059c4cb","61e1f0fc0106310039807732","62743670700ba00042a2b1ce","62b38d3d7447ac00937a7e04","62e2da409b967b0014077fe7","62ec4ff01f323202a13f419c","62ec516e5ad03d02680c2d9f","6320f56b35e026000f45ad58","636e6642417174009d9b563d"],"pdfStatus":"complete"},{"_id":"5f7ce9e3a5504d0414d0243e","version":"1.0-legacy","codename":"Hub 1","hasDoc":true,"__v":28,"is_beta":false,"is_stable":false,"project":"5f7ce9e3a5504d0414d025d0","releaseDate":"2014-09-24T21:16:06.446Z","version_clean":"1.0.0-legacy","categories":["5f7ce9e3a5504d0414d0246a","5f7ce9e3a5504d0414d0246b","54dbf493cb6515210029556f","55dbb7ecb035900d0063fc9f","5f7ce9e3a5504d0414d0246c","5f7ce9e3a5504d0414d0246d","5f7ce9e3a5504d0414d0246e","5f7ce9e3a5504d0414d0246f","5f7ce9e3a5504d0414d02470","5f7ce9e3a5504d0414d02471","5f7ce9e3a5504d0414d02472","5f7ce9e3a5504d0414d02473","5f7ce9e3a5504d0414d02474","5f7ce9e3a5504d0414d02475","5f7ce9e3a5504d0414d02476","5f7ce9e3a5504d0414d02477","56eb18818e83410e000238d4","57206b8e5be73c17009601f3","57218435e1805f0e0042201d","5721845eecb38d0e00d80e0a","5f7ce9e3a5504d0414d024be","5a7c9d447dce000013d8b966","5bce1907c732630004f41da7","5cd20b75a35909003956cdb8","5cd20bcfa78471006231a32b","5d5b7b118fab3d00188e3cdf","5d5b7b2e99c1310020e150e9","5d5b7d8db0a1f80107d077d8","6376ba4d127d990003112b73"],"is_hidden":false,"createdAt":"2014-09-24T21:16:06.446Z","hasReference":false,"is_deprecated":true,"pdfStatus":"complete"},{"_id":"62056dee230e07007218bf4c","version":"2.0","version_clean":"2.0.0","codename":"product-guides","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["62056dee230e07007218be04","5f7ce9e3a5504d0414d024c0","62056dee230e07007218be05","5730e2e9053a062b00cf4754","5730e2e9053a062b00cf4755","62056dee230e07007218be06","62056dee230e07007218be07","5730e2e9053a062b00cf4758","5730e2e9053a062b00cf4759","5730e2e9053a062b00cf475a","62056dee230e07007218be08","62056dee230e07007218be09","5730e2e9053a062b00cf475d","62056dee230e07007218be0a","5730e2e9053a062b00cf475f","5f7ce9e3a5504d0414d024c7","57e31e95611a860e00f97e22","582fa20c4479222092198d40","5849c782fcabe31900998f6e","58b9e83068a4a5190011dcb2","58bdec0f455ca125001d9505","5a6bbecf2116e20022de8b19","5a7c96d2324bc1001f64ad8b","5a7c9d777dce000013d8b96f","5a81e7ff761cf30012731823","5a81e886bf4a2b0012592b49","5a81eaa5761cf3001273183d","62056dee230e07007218be0b","5a95f47858371e001fd651bb","5a95f53b5c3020002b02aa8c","5a95f57c4091e600125d0249","5a95f5984c0ecf0046a28ba3","5a95f6754091e600125d0252","5a95f6b94091e600125d025b","5a95f7104c0ecf0046a28bce","5a95f7954c0ecf0046a28c57","5a95f7d15c3020002b02aacf","5af6287d426c9d000377c583","5afdf7d37506a80003730d40","5b359df811baf70003a14454","62056dee230e07007218be0c","5bbbb66b8dac1100048174f0","5bbbb6768dac1100048174f3","62056dee230e07007218be0d","5c6f5766877e850021140a1a","5ca51733d177a40373ab97f9","5cc26539681cf8001b9ce9f3","5d0aa5163fd65b0019f2d14e","5d0bba3dd628fd0051fbb232","5d0bba522df6470020205266","5d0bce567f3ac6000f0ef6a3","5d1a4e276ffc8100194874f2","5d3213a673f65d0012b11fb0","5d5b7af3e33f0b005608b793","5d5b7b1d68f1dc00113744d4","5d5b7b9f0c74ae001e8e2186","5d5b7beffe91cc002f6d67eb","5d5b7c21fbd0f80012334964","5d5b7c2df20ff50052c02fec","5dc9f8a8ea4314002f5575ff","5dcdad4c3fd5ca0052534ac4","5e1e2350f309936b889b2448","5f7ce9e3a5504d0414d024fd","62056dee230e07007218be0e","62056dee230e07007218be0f","62056dee230e07007218be10","5f7cf1a9cb79be02e1a588c9","62056dee230e07007218be11","5f9c861053998401d1c2c222","5fc55b794fd67b00645d25e2","62056dee230e07007218be12","61084e16a18107003124ef8f","62056dee230e07007218be13","61e1f0d7a8a68f007059c4cb","61e1f0fc0106310039807732","62292aea889520008ed0113b","6233cab9410abc001c9822eb","6234eb59f6eccc02f76cb807","624cb20585a75d004c978f57","624e2238df4eb60013286917","633470b833bb8d04e657051a","6376ba4d127d990003112b72","63e43d347c3efc02c02c5986","6442d3485ae2d10e2654d2f3","64f8c3b94e8f64001f07ea58","650b7bdc6fa4eb0074722335","65848b391e628e004514a0df","65848bb94819f1004aa6338e","658493ce0d7680006b35bd9d","6732850c3cee9b006fe502ba"],"createdAt":"2016-05-09T19:20:09.413Z","project":"5f7ce9e3a5504d0414d025d0","releaseDate":"2016-05-09T19:20:09.413Z","__v":0,"pdfStatus":"complete","forked_from":"5f7ce9e3a5504d0414d0243f","updatedAt":"2024-11-11T22:28:28.339Z"}],"variableDefaults":[{"source":"security","_id":"6391241e050251002a8e3d28","name":"apiKey","type":"http","scheme":"basic","apiSetting":"5f7cee46dd6cb1037e316143"},{"source":"","_id":"649b525defea78003e22657d","name":"user","default":"API_KEY"},{"source":"","_id":"6352dfca576cb4000f2e14ef","name":"ReadMe","default":"Default Value"},{"source":"","_id":"63d2fc41cba521006b5197ea","name":"id","default":"README_API_KEY"},{"source":"","_id":"63efced04cc2e710b54258b1","name":"email","default":"user@example.com"}],"webhookEnabled":true},"custom_domain":"docs.readme.com","childrenProjects":[{"_id":"5f7ce9e3a5504d0414d025d0","appearance":{"stylesheet_hub2":"","html_footer":"","javascript_hub2":""},"childrenProjects":[],"description":"Beautiful documentation made easy.","fullBaseUrl":"https://developers.readme.io/","git":{"sync":{"connectedRepository":{},"github":[]}},"shouldGateDash":false,"hasOneChild":false,"is_active":true,"internal":"","modules":{"landing":false,"docs":true,"examples":true,"reference":true,"changelog":true,"discuss":true,"suggested_edits":true,"logs":false,"custompages":true,"tutorials":true,"graphql":false},"name":"ReadMe","nav_names":{"docs":"","reference":"","changelog":"","discuss":"","tutorials":"","recipes":""},"owner":{"id":null,"email":null,"name":null},"readmeScore":0,"reference":{"alwaysUseDefaults":false,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false},"stable":"62056dee230e07007218bf4c","subdomain":"developers","subpath":"main","translate":{},"webhookEnabled":false},{"_id":"6205993d7fb8d70029bba49b","appearance":{"stylesheet_hub2":"","html_footer":"","javascript_hub2":""},"childrenProjects":[],"description":"Beautiful documentation made easy.","fullBaseUrl":"https://enterprise-docs.readme.io/","git":{"sync":{"connectedRepository":{},"github":[]}},"shouldGateDash":false,"hasOneChild":false,"is_active":true,"internal":"","modules":{"landing":false,"docs":true,"examples":true,"reference":false,"graphql":false,"changelog":false,"discuss":false,"suggested_edits":true,"logs":false,"custompages":true,"tutorials":false},"name":"Enterprise","nav_names":{"docs":"","reference":"","changelog":"","discuss":"","tutorials":"","recipes":""},"owner":{"id":null,"email":null,"name":null},"readmeScore":0,"reference":{"alwaysUseDefaults":false,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false},"stable":"6205993d7fb8d70029bba049","subdomain":"enterprise-docs","subpath":"ent","translate":{},"webhookEnabled":false},{"_id":"5d8907e71937f80012277b72","appearance":{"stylesheet_hub2":"","html_footer":"","javascript_hub2":""},"childrenProjects":[],"description":"","fullBaseUrl":"https://rdmd.readme.io/","git":{"sync":{"connectedRepository":{},"github":[]}},"shouldGateDash":false,"hasOneChild":false,"is_active":true,"internal":"","modules":{"logs":false,"suggested_edits":true,"discuss":false,"changelog":false,"reference":false,"examples":true,"docs":true,"landing":false,"custompages":true,"tutorials":false,"graphql":false},"name":"ReadMe Markdown","nav_names":{"discuss":"","changelog":"","reference":"","docs":"","tutorials":"","recipes":""},"owner":{"id":null,"email":null,"name":null},"readmeScore":0,"reference":{"alwaysUseDefaults":false,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false},"stable":"5fdf7610134322007389a71b","subdomain":"rdmd","subpath":"","translate":{},"webhookEnabled":false}],"derivedPlan":"enterprise","description":"Beautiful documentation made easy.","error404":"","experiments":[],"first_page":"landing","flags":{"allow_hub2":false,"enterprise":true,"alwaysShowDocPublishStatus":false,"hub2":true,"migrationRun":false,"migrationSwaggerRun":false,"oauth":false,"swagger":false,"correctnewlines":false,"rdmdCompatibilityMode":false,"speedyRender":false,"allowXFrame":false,"newEditor":true,"newEditorDash":true,"oldMarkdown":false,"newMarkdownBetaProgram":true,"useReactApp":true,"disableAnonForum":false,"directGoogleToStableVersion":false,"translation":false,"staging":false,"newSearch":true,"graphql":false,"allowApiExplorerJsonEditor":false,"singleProjectEnterprise":false,"dashReact":true,"metricsV2":true,"enableRealtimeExperiences":false,"reviewWorkflow":true,"star":false,"allowDarkMode":true,"forceDarkMode":false,"useReactGLP":true,"disablePasswordlessLogin":false,"personalizedDocs":false,"myDevelopers":false,"superHub":false,"allowReusableOTPs":false,"developerDashboard":false,"dashHomeRefresh":false,"owlbotAi":true,"apiV2":false,"dashQuickstart":false,"git":{"read":false,"write":false},"superHubBeta":false,"disableAutoTranslate":false,"customBlocks":false,"devDashHub":false,"disableSAMLScoping":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"apiAccessRevoked":false,"passwordlessLogin":"default","disableSignups":false,"billingRedesignEnabled":true,"developerPortal":false,"mdx":false,"superHubDevelopment":false,"annualBillingEnabled":true,"devDashBillingRedesignEnabled":false,"enableOidc":false,"customComponents":false,"disableDiscussionSpamRecaptchaBypass":false,"developerViewUsersData":false,"changelogRssAlwaysPublic":false,"bidiSync":false,"superHubMigrationSelfServeFlow":false},"fullBaseUrl":"https://docs.readme.com/","git":{"migration":{"createRepository":{},"transformation":{},"migratingPages":{},"enableSuperhub":{}},"sync":{"connectedRepository":{"organization":{},"privacy":{}},"installationRequest":{},"github":[]}},"glossaryTerms":[{"_id":"621044ddeed2f80083ac6d97","term":"Enterprise group","definition":"An Enterprise Group refers to the parent dashboard where all global settings are managed, including adding and removing Teammates and End Users, and managing all child projects."},{"_id":"621044f40a103000a83239db","term":"Enterprise group Owner","definition":"There is one owner per Enterprise Group, referred to as “Owner” in the Enterprise Group dashboard. The Enterprise Group Owner has the same access privileges as an Enterprise group Admin. Additionally, ReadMe Product Experience Managers will contact Enterprise group Owners as the primary point of contact for decisions and updates related to renewals, beta programs, and new feature releases."},{"_id":"6210456696b020001ae688e8","term":"Enterprise group Admin","definition":"An Enterprise group Admin is referred to as “Admin” in the Enterprise Group dashboard. Enterprise group Admins can invite, remove, and choose the permission level of other Teammates and End Users. They can also add and remove projects from the Enterprise group, and access any related project via the project’s dashboard."},{"_id":"6210457691c8d40013dcbfd5","term":"Project Admin","definition":"A Project Admin is the default role when you invite a team member to a ReadMe project. A Project Admin has access to a project’s dashboard and can make most team- and project-management related changes with the exception of upgrading your plan, cloning or deleting a project, and transferring project ownership, which only Project Owners can do."},{"_id":"621045878fefbb00a4567123","term":"Project Owner","definition":"There can only be one Project Owner per ReadMe project. This role has all of the privileges of a Project Admin, with the additional abilities to upgrade your plan, clone or delete a project, and transfer project ownership."},{"_id":"621045cf9b3c01001a609907","term":"Teammates","definition":"Teammates are members of your team who manage (e.g. write, edit, update) documentation related to your Enterprise Group projects. Teammates can have one of three permissions: Admin, Viewer, or Some Projects."},{"_id":"621045db6d2803001a066199","term":"Viewer","definition":"When you invite a Teammate to an Enterprise Group you have the ability to set their access to “Viewer”. The Viewer role has access to view the hubs of all child projects within an Enterprise Group, but has no access to the dashboards of the child projects or the Enterprise Group dashboard."},{"_id":"621045f2ddd9a6007632ed4c","term":"End Users","definition":"End Users are consumers of your ReadMe projects’ documentation whom you’d like to grant hub-side access to. As an Enterprise customer, you can invite End Users, define project access, and configure login methods within your Enterprise Group dashboard."},{"_id":"621045feb3162a0020eca3c8","term":"Some Projects","definition":"When you invite a Teammate to an Enterprise Group you have the ability to set their access to “Some Projects”. From there, you’ll set permission access on a per project basis as either No Access, Viewer (only hub-side access to the project), or Admin (dashboard- and hub-side access to the project)."},{"_id":"6215351976fb85003c868c8b","term":"dashboard","definition":"The dashboard or dash refers to the admin panel of ReadMe’s platform where all of your projects and settings are housed. Only Project Admins have access to the dashboard. The dashboard is where Admins can edit projects, create and edit documentation, and more."},{"_id":"621535251676400014e8f933","term":"hub","definition":"The hub is the end user-facing side of your project—where individuals can view and interact with your documentation. For example when you set a page in your dashboard “live”, this becomes visible on the hub-side of your project. Your hub—or hubs if you have multiple projects—is updated through your project’s dashboard. Your hub is visible to anyone with the URL for your documentation, unless you set your project to private."},{"_id":"62153f32e7fa6c00264fdf08","term":"variables","definition":"The variables feature allows you to assign a specific variable (e.g. name) to automatically propagate default values, across all of your documentation. We recommend using this feature for product names and links to allow for simpler bulk editing. Additionally, you can use variables to pass in user data so that aspects of your documentation are personalized for logged in users, such as their name or API key. In order to pass in personalized user data, you first need to set up custom login, which integrates with either JWT or Webhooks. You can set up variables for your project in the Variable Defaults section (within Configuration) of your dashboard."}],"graphqlSchema":"","gracePeriod":{"enabled":false,"endsAt":null},"shouldGateDash":false,"hasOneChild":false,"healthCheck":{"provider":"","settings":{}},"intercom_secure_emailonly":false,"intercom":"m6855w1q","is_active":true,"internal":"","jwtExpirationTime":0,"landing_bottom":[],"mdxMigrationStatus":"rdmd","metrics":{"monthlyLimit":0,"planLimit":20000000,"thumbsEnabled":true,"realtime":{"dashEnabled":false,"hubEnabled":false},"monthlyPurchaseLimit":0,"meteredBilling":{}},"modules":{"landing":true,"docs":true,"examples":true,"reference":true,"graphql":false,"changelog":true,"discuss":true,"suggested_edits":true,"logs":false,"custompages":false,"tutorials":false},"name":"ReadMe Documentation","nav_names":{"docs":"","reference":"","changelog":"","discuss":"","tutorials":"","recipes":""},"oauth_url":"","onboardingCompleted":{"documentation":false,"appearance":false,"jwt":false,"api":false,"logs":false,"domain":false,"metricsSDK":false},"owlbot":{"enabled":true,"isPaying":false,"customization":{"answerLength":"long","defaultAnswer":"","forbiddenWords":"","tone":"neutral","customTone":""},"copilot":{"enabled":false,"hasBeenUsed":true,"installedCustomPage":""}},"owner":{"id":null,"email":null,"name":null},"plan":"enterprise","planOverride":"enterprise","planSchedule":{"stripeScheduleId":null,"changeDate":null,"nextPlan":null},"planStatus":"","planTrial":"enterprise","readmeScore":{"components":{"newDesign":{"enabled":true,"points":25},"reference":{"enabled":true,"points":50},"tryItNow":{"enabled":true,"points":35},"syncingOAS":{"enabled":false,"points":10},"customLogin":{"enabled":true,"points":25},"metrics":{"enabled":true,"points":40},"recipes":{"enabled":true,"points":15},"pageVoting":{"enabled":true,"points":1},"suggestedEdits":{"enabled":true,"points":10},"support":{"enabled":true,"points":5},"htmlLanding":{"enabled":true,"points":5},"guides":{"enabled":true,"points":10},"changelog":{"enabled":true,"points":5},"glossary":{"enabled":true,"points":1},"variables":{"enabled":true,"points":1},"integrations":{"enabled":true,"points":2}},"totalScore":230},"reCaptchaSiteKey":"","reference":{"alwaysUseDefaults":true,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false},"seo":{"overwrite_title_tag":false},"stable":{"_id":"62059a520d12cc006cca892c","version":"1.0.0","version_clean":"1.0.0","codename":"","is_stable":false,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":[],"releaseDate":"2022-02-10T23:05:54.874Z","createdAt":"2022-02-10T23:05:54.874Z","project":"62059a520d12cc006cca892d","__v":0},"subdomain":"readme-docs-group","subpath":"","superHubWaitlist":false,"topnav":{"left":[{"type":"url","text":"Customer Stories","url":"https://readme.com/customers"},{"type":"url","text":"ReadMe Blog","url":"https://blog.readme.com/"}],"right":[{"type":"user"}],"bottom":[{"type":"home","text":"Guides","url":"Test"},{"type":"user"}],"edited":true},"trial":{"trialDeadlineEnabled":true,"trialEndsAt":"2022-02-24T23:05:54.876Z"},"translate":{"provider":"transifex","show_widget":false,"key_public":"","org_name":"","project_name":"","languages":[]},"url":"","versions":[{"_id":"62059a520d12cc006cca892c","version":"1.0.0","version_clean":"1.0.0","codename":"","is_stable":false,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":[],"releaseDate":"2022-02-10T23:05:54.874Z","createdAt":"2022-02-10T23:05:54.874Z","project":"62059a520d12cc006cca892d","__v":0}],"variableDefaults":[{"source":"","_id":"649f33f4cae212001dcd4573","name":"dasdf","default":"aSD"}],"webhookEnabled":true},"isHubEditable":true},"projectStore":{"data":{"allow_crawlers":"disabled","glossary":[{"_id":"621044ddeed2f80083ac6d97","term":"Enterprise group","definition":"An Enterprise Group refers to the parent dashboard where all global settings are managed, including adding and removing Teammates and End Users, and managing all child projects."},{"_id":"621044f40a103000a83239db","term":"Enterprise group Owner","definition":"There is one owner per Enterprise Group, referred to as “Owner” in the Enterprise Group dashboard. The Enterprise Group Owner has the same access privileges as an Enterprise group Admin. Additionally, ReadMe Product Experience Managers will contact Enterprise group Owners as the primary point of contact for decisions and updates related to renewals, beta programs, and new feature releases."},{"_id":"6210456696b020001ae688e8","term":"Enterprise group Admin","definition":"An Enterprise group Admin is referred to as “Admin” in the Enterprise Group dashboard. Enterprise group Admins can invite, remove, and choose the permission level of other Teammates and End Users. They can also add and remove projects from the Enterprise group, and access any related project via the project’s dashboard."},{"_id":"6210457691c8d40013dcbfd5","term":"Project Admin","definition":"A Project Admin is the default role when you invite a team member to a ReadMe project. A Project Admin has access to a project’s dashboard and can make most team- and project-management related changes with the exception of upgrading your plan, cloning or deleting a project, and transferring project ownership, which only Project Owners can do."},{"_id":"621045878fefbb00a4567123","term":"Project Owner","definition":"There can only be one Project Owner per ReadMe project. This role has all of the privileges of a Project Admin, with the additional abilities to upgrade your plan, clone or delete a project, and transfer project ownership."},{"_id":"621045cf9b3c01001a609907","term":"Teammates","definition":"Teammates are members of your team who manage (e.g. write, edit, update) documentation related to your Enterprise Group projects. Teammates can have one of three permissions: Admin, Viewer, or Some Projects."},{"_id":"621045db6d2803001a066199","term":"Viewer","definition":"When you invite a Teammate to an Enterprise Group you have the ability to set their access to “Viewer”. The Viewer role has access to view the hubs of all child projects within an Enterprise Group, but has no access to the dashboards of the child projects or the Enterprise Group dashboard."},{"_id":"621045f2ddd9a6007632ed4c","term":"End Users","definition":"End Users are consumers of your ReadMe projects’ documentation whom you’d like to grant hub-side access to. As an Enterprise customer, you can invite End Users, define project access, and configure login methods within your Enterprise Group dashboard."},{"_id":"621045feb3162a0020eca3c8","term":"Some Projects","definition":"When you invite a Teammate to an Enterprise Group you have the ability to set their access to “Some Projects”. From there, you’ll set permission access on a per project basis as either No Access, Viewer (only hub-side access to the project), or Admin (dashboard- and hub-side access to the project)."},{"_id":"6215351976fb85003c868c8b","term":"dashboard","definition":"The dashboard or dash refers to the admin panel of ReadMe’s platform where all of your projects and settings are housed. Only Project Admins have access to the dashboard. The dashboard is where Admins can edit projects, create and edit documentation, and more."},{"_id":"621535251676400014e8f933","term":"hub","definition":"The hub is the end user-facing side of your project—where individuals can view and interact with your documentation. For example when you set a page in your dashboard “live”, this becomes visible on the hub-side of your project. Your hub—or hubs if you have multiple projects—is updated through your project’s dashboard. Your hub is visible to anyone with the URL for your documentation, unless you set your project to private."},{"_id":"62153f32e7fa6c00264fdf08","term":"variables","definition":"The variables feature allows you to assign a specific variable (e.g. name) to automatically propagate default values, across all of your documentation. We recommend using this feature for product names and links to allow for simpler bulk editing. Additionally, you can use variables to pass in user data so that aspects of your documentation are personalized for logged in users, such as their name or API key. In order to pass in personalized user data, you first need to set up custom login, which integrates with either JWT or Webhooks. You can set up variables for your project in the Variable Defaults section (within Configuration) of your dashboard."},{"_id":"5b57804ec6af890003de66cf","term":"Page","definition":"Also known as an article"},{"_id":"5b57805e60a07d00037870db","term":"Subpage","definition":"Under a Page"},{"_id":"5b5780787baf140003ef762b","term":"Changelog","definition":"Place where you can go see changes"},{"_id":"5b57808aa599780003538deb","term":"Discussions","definition":"Forum where your customers can share their concerns"},{"_id":"5b5780a17baf140003ef762d","term":"Documentation","definition":"Section where the documentation lives"},{"_id":"5b5780b7a599780003538ded","term":"Reference","definition":"The API Explorer"},{"_id":"5b57f37a0c8f760003f3023c","term":"pop up","definition":"You have to have explicitly use a glossary term by typing \"<<\" in the ReadMe editor. The glossary feature will not find and replace all words that match your glossary term."},{"_id":"5de95d1041cd310027f8c4fb","term":"internal","definition":"Your administrators that can access the dashboard of your projects"},{"_id":"5de95d159e4c7e002f220927","term":"external","definition":"Your members that have access to the hubs"},{"_id":"5deaf50c2aa750006dbd2f3a","term":"login mechanisms","definition":"ReadMe's login mechanisms. We can support Custom OAuth, Custom JWT, SAML, Local ReadMe, and No Login"},{"_id":"6011e68de8693f0014d8d932","term":"RDMD","definition":"Our custom ReadMe-flavored Markdown engine. It's based on remark (meaning it supports all the Markdown syntax you know and love) and adds some custom syntax to support ReadMe features such as variables, glossary (i.e. what you're reading right now!), and emoji! You can read more about RDMD in our docs: rdmd.readme.io"},{"_id":"60231e0409f34c005e4dc876","term":"API Explorer","definition":"Our interactive, OpenAPI-based API reference section. Users can construct and send API requests and view code samples in a language of their choice—all without leaving the docs!"},{"_id":"6063c8810f5a29000f35b3f9","term":"API Reference","definition":"The API reference section of your ReadMe documentation contains information about each of your endpoints and the data that is sent and received. Users can construct and send API requests and view code samples in a language of their choice—all without leaving the docs!"},{"_id":"612d776812676f005baabd10","term":"dereferenced","definition":"The act of dereferencing all `$ref` pointers within an OpenAPI definition, replacing each reference with the value or schema that it resolves to."},{"_id":"6206b7c1ea0c3b0046a1de0c","term":"Enterprise Group","definition":"An Enterprise Group refers to the parent dashboard where all global settings are managed, including adding and removing Teammates and End Users, and managing all child projects."},{"_id":"6206b7d64516a0048e3d346c","term":"Enterprise Group Owner","definition":"There is one owner per Enterprise Group, referred to as “Owner” in the Enterprise Group dashboard. The Enterprise Group Owner has the same access privileges as an Enterprise Group Admin. Additionally, ReadMe Product Experience Managers will contact Enterprise Group Owners as the primary point of contact for decisions and updates related to renewals, beta programs, and new feature releases."},{"_id":"6206bb05eb045403e8f2320e","term":"Enterprise Group Admin","definition":"An Enterprise Group Admin is referred to as “Admin” in the Enterprise Group dashboard. Enterprise Group Admins can invite, remove, and choose the permission level of other Teammates and End Users. They can also add and remove projects from the Enterprise Group, and access any related project via the project’s dashboard."},{"_id":"6206bc6653a2eb002c07a928","term":"Project Admin","definition":"A Project Admin is the default role when you invite a team member to a ReadMe project. A Project Admin has access to a project’s dashboard and can make most team- and project-management related changes with the exception of upgrading your plan, cloning or deleting a project, and transferring project ownership, which only Project Owners can do."},{"_id":"6206bc77c66af9003f0d3ea7","term":"Project Owner","definition":"There can only be one Project Owner per ReadMe project. This role has all of the privileges of a Project Admin, with the additional abilities to upgrade your plan, clone or delete a project, and transfer project ownership."},{"_id":"6206bcae37c9d902c95e84b6","term":"Viewer","definition":"When you invite a Teammate to an Enterprise Group you have the ability to set their access to “Viewer”. The Viewer role has access to view the hubs of all child projects within an Enterprise Group, but has no access to the dashboards of the child projects or to the Enterprise Group dashboard."},{"_id":"62153fd7c4e9aa00950ea1b2","term":"variables","definition":"The variables feature allows you to assign a specific variable (e.g. name) to automatically propagate default values, across all of your documentation. We recommend using this feature for product names and links to allow for simpler bulk editing. Additionally, you can use variables to pass in user data so that aspects of your documentation are personalized for logged in users, such as their name or API key. In order to pass in personalized user data, you first need to set up custom login, which integrates with either JWT or Webhooks. You can set up variables for your project in the Variable Defaults section (within Configuration) of your dashboard."},{"_id":"62153fe068bc3e0058bb1af1","term":"dashboard","definition":"The dashboard, or dash, refers to the admin panel of ReadMe’s platform where all of your projects and settings are housed. Only Project Admins have access to the dashboard. The dashboard is where Admins can edit projects, create and edit documentation, and more."},{"_id":"6217d529a29ea90056b28f2b","term":"hype train","definition":"A 🚆 full of hype"},{"_id":"622fb5f271f5f406608a919f","term":"Custom","definition":"When you invite a Teammate to an Enterprise Group you have the ability to set their access to “Custom”. From there, you’ll set permission access on a per project basis as either No Access, Viewer (only hub-side access to the project), or Admin (dashboard- and hub-side access to the project)."},{"_id":"6230bd1b776d1d033e134034","term":"Teammates","definition":"Teammates are members of your team who manage (e.g. write, edit, update) documentation related to your Enterprise Group projects. Teammates can have one of three permissions: Admin, Viewer, or Custom."},{"_id":"6230bd51fb5b3d005587bca8","term":"End Users","definition":"End Users are consumers of your ReadMe projects’ private documentation whom you’d like to grant hub-side access to. As an Enterprise customer, you can invite End Users, define project access, and configure login methods within your Enterprise Group dashboard."},{"_id":"62583c1c51d83c0353152996","term":"hub","definition":"The hub is the end user-facing side of your project, or documentation site. This is where individuals can view and interact with your documentation. For example when you set a page in your dashboard “live”, this becomes visible on the hub-side of your project. Your hub—or hubs if you have multiple projects—is updated through your project’s dashboard. Your hub is visible to anyone with the URL for your documentation, unless you set your project to private."},{"_id":"64da475bf12f5d0b6eb764fb","term":"Slug","definition":"A URL slug last identifying string of a specific page.\n\nThe slug for https://docs.readme.com/main/docs/intro-to-readme is \"intro-to-readme\""},{"_id":"64da47a94a89fd11c7884cec","term":"dash","definition":"The Dashboard, or Dash, refers to the admin panel of ReadMe’s platform where all of your projects and settings are housed. Only Project Owners and Admins have access to the Dashboard. The Dashboard is where Admins can edit projects, create and edit documentation, and more."},{"_id":"64da49a3af7e2f00190b8748","term":"Glossary","definition":"Glossary terms allow users to provide additional context to specific words or phrases when a viewer hovers over that term. Terms are defined in plaintext under Project Dashboard > Glossary. When editing content, type \"<<\" to insert a Glossary term!"}],"canonical_url":null,"description":"Beautiful documentation made easy.","parent":null,"homepage_url":"https://readme.com","id":"5f7ce9e3a5504d0414d025d0","is_migrated":false,"name":"ReadMe","redirects":[],"sitemap":"disabled","subdomain":"developers","suggested_edits":"enabled","uri":"/projects/me","variable_defaults":[{"name":"dasdf","default":"aSD","source":"","id":"649f33f4cae212001dcd4573"},{"name":"apiKey","scheme":"basic","source":"security","type":"http","id":"6391241e050251002a8e3d28"},{"name":"user","default":"API_KEY","source":"","id":"649b525defea78003e22657d"},{"name":"ReadMe","default":"Default Value","source":"","id":"6352dfca576cb4000f2e14ef"},{"name":"id","default":"README_API_KEY","source":"","id":"63d2fc41cba521006b5197ea"},{"name":"email","default":"user@example.com","source":"","id":"63efced04cc2e710b54258b1"}],"webhooks":[],"custom_login":{"login_url":null,"logout_url":null},"onboarding_completed":{"api":true,"appearance":true,"documentation":true,"domain":true,"jwt":true,"logs":true,"metricsSDK":true},"pages":{"not_found":"/versions/stable/custom_pages/404"},"privacy":{"view":"public","password":null},"reference":{"api_sdk_snippets":"enabled","defaults":"use_only_if_required","json_editor":"disabled","oauth_flows":"disabled","request_history":"enabled","response_examples":"collapsed","response_schemas":"expanded"},"seo":{"overwrite_title_tag":"disabled"},"plan":{"type":"enterprise","grace_period":{"enabled":false,"end_date":null},"trial":{"expired":false,"end_date":"2020-10-20T22:04:19.564Z"}},"health_check":{"provider":"statuspage","settings":{"manual":{"status":"down","url":null},"statuspage":{"id":"nz3r09cr7dk1"}}},"integrations":{"bing":{"verify":null},"google":{"analytics":null,"site_verification":null},"heap":{"id":null},"koala":{"key":null},"localize":{"key":null},"recaptcha":{"site_key":"6LdHWIgcAAAAAEDbyrvc-xSVdHo2tRjrkamgjjof","secret_key":null},"segment":{"key":null,"domain":null},"typekit":{"key":null},"zendesk":{"subdomain":null},"intercom":{"app_id":"m6855w1q","secure_mode":{"key":null,"email_only":false}}},"permissions":{"appearance":{"private_label":"enabled","custom_code":{"css":"enabled","html":"enabled","js":"enabled"}}},"appearance":{"brand":{"primary_color":"#018EF5","link_color":null,"theme":"system"},"changelog":{"layout":"continuous","show_author":false,"show_exact_date":true},"markdown":{"callouts":{"icon_font":"emojis"}},"table_of_contents":"enabled","whats_next_label":"What's Next","footer":{"readme_logo":"show"},"logo":{"size":"default","dark_mode":{"uri":null,"url":"https://files.readme.io/7f72f63-small-readme-white_1.png","name":"readme-white (1).png","width":464,"height":80,"color":"#ffffff","links":{"original_url":"https://files.readme.io/100ba28-readme-white_1.png"}},"main":{"uri":null,"url":"https://files.readme.io/3977150-small-readme-blue.png","name":"readme-blue.png","width":442,"height":80,"color":"#000000","links":{"original_url":"https://files.readme.io/80be47c-readme-blue.png"}},"favicon":{"uri":null,"url":null,"name":null,"width":null,"height":null,"color":null,"links":{"original_url":null}}},"custom_code":{"css":"/* ================\n Globals\n ================ */\nbody {\n --font-brand: 'Marfa', var(--font-family);\n --font-brand-mono: 'Marfa Mono', var(--font-family-mono);\n --GridGap: var(--lg);\n}\n\n@media (max-width: 450px) {\n body {\n --GridGap: var(--md);\n }\n}\n\n.Main {\n display: flex;\n flex-direction: column;\n gap: var(--GridGap);\n\tpadding: var(--GridGap);\n}\n\n.Main.Main {\n width: auto;\n}\n \n.Main ol,\n.Main ul {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.Main figure {\n margin: 0;\n}\n\n.flex {\n display: flex;\n}\n\n.flex_col {\n flex-direction: column;\n}\n\n.flex_center {\n align-items: center;\n}\n\n.flex_grow {\n flex: 1 1;\n}\n\n.flex_shrink {\n flex: 0 0;\n}\n\n@font-face {\n font-display: block;\n font-family: Marfa;\n font-weight: 400;\n src: url('//readme.com/static/fonts/ABCMarfa-Regular.woff2') format('woff2');\n}\n\n@font-face {\n font-display: block;\n font-family: Marfa;\n font-weight: 600;\n src: url('//readme.com/static/fonts/ABCMarfa-Bold.woff2') format('woff2');\n}\n\n@font-face {\n font-display: block;\n font-family: 'Marfa Mono';\n font-weight: 400;\n src: url('//readme.com/static/fonts/ABCMarfaMono-Regular.woff2') format('woff2');\n}\n\n/* ================\n Overwrite Nav\n ================ */\n.rm-Header nav[class*=\"Header-left\"] {\n visibility: hidden;\n}\n\n/* ================\n Hide Search Filters\n ================ */\n.rm-SearchModal details {\n /* display: none; */\n}\n\n/* ================\n Header\n ================ */\nbody .ThemeContext_line .rm-Header {\n --Header-background: var(--color-primary);\n --Header-border-color: rgba(0,0,0,0.1);\n --Header-border-width: 1px;\n --Header-button-color: var(--white);\n --Header-button-hover: rgba(255,255,255,0.2);\n --Header-button-active: rgba(255,255,255,0.75);\n --Header-button-focus: rgba(255,255,255,0.075);\n --Header-jumpTo-background: var(--color-primary-inverse);\n --Header-jumpTo-color: var(--color-primary);\n --Header-logo-height: var(--header-logo-height);\n}\n\n@media (max-width: 768px) {\n body .ThemeContext_line .rm-Header {\n --Header-border-color: transparent;\n\t}\n\n .rm-Header-top.rm-Header-top {\n border: 0;\n }\n \n .rm-Header {\n overflow: hidden;\n }\n\n .hub-is-home .rm-Header-bottom {\n overflow: auto;\n }\n}\n\n[data-color-mode=\"dark\"] .rm-Header {\n box-shadow: 0 1px 0 rgba(0,0,0,0.1);\n}\n\n@media (prefers-color-scheme: dark) {\n [data-color-mode=\"auto\"] .rm-Header {\n\t\tbox-shadow: 0 1px 0 rgba(0,0,0,0.1);\n }\n}\n\n/* ================\n The Hero Section\n ================ */\n.Hero {\n background: var(--color-primary);\n padding: var(--xl) var(--lg);\n}\n\n.Hero-h1,\n.Hero-p {\n font-family: var(--font-brand);\n margin: 0 auto;\n text-align: center;\n}\n\n.Hero-h1 {\n color: var(--white);\n font-size: 70px !important;\n font-weight: var(--font-weight-bold) !important;\n line-height: 1.2;\n max-width: 650px;\n}\n\n@media (max-width: 1220px) {\n\t.Hero-h1 {\n\t font-size: 64px !important;\n }\n}\n\n\n@media (max-width: 990px) {\n\t.Hero-h1 {\n\t font-size: 52px !important;\n max-width: 500px;\n }\n}\n\n@media (max-width: 450px) {\n .Hero-h1 {\n\t font-size: 42px !important;\n }\n}\n\n.Hero-p {\n color: var(--blue100) !important;\n font-size: 20px;\n font-weight: 400;\n line-height: 1.4;\n max-width: 400px;\n}\n\n.Hero-banner {\n\t align-items: center;\n\t display: flex;\n flex-direction: column;\n\t gap: 0.75em;\n\t margin-left: auto;\n margin-right: auto;\n\t margin-bottom: 2em;\n max-width: 300px;\n padding-bottom: 2em;\n text-align: center;\n}\n .Hero-banner-text {\n\t color: var(--white);\n\t font-family: var(--font-body);\n\t font-size: 1.25em;\n\t font-weight: var(--font-weight);\n\t max-width: 30ch;\n}\n .Hero-banner-text-hover {\n\t box-shadow: 0 2px 0 rgba(0, 0, 0, );\n\t font-style: italic;\n\t font-weight: 800;\n\t position: relative;\n\t text-decoration: none;\n}\n\n .Hero-banner-text-hover:hover, .Hero-banner-text-hover:active, .Hero-banner-text-hover:focus {\n\t animation: banner-text 1s infinite;\n\t box-shadow: none;\n}\n @media (prefers-reduced-motion) {\n\t .Hero-banner-text-hover:hover, .Hero-banner-text-hover:active, .Hero-banner-text-hover:focus {\n\t\t animation: banner-text 1s steps(1, end) infinite;\n\t}\n}\n @keyframes banner-text {\n\t 0% {\n\t\t text-shadow: none;\n\t}\n\t 33% {\n\t\t text-shadow: -2px 2px 0 var(--green), -4px 4px 0 var(--yellow), -6px 6px 0 var(--red);\n\t}\n\t 66% {\n\t\t text-shadow: 2px 2px 0 var(--green), 4px 4px 0 var(--yellow), 6px 6px 0 var(--red);\n\t}\n\t 100% {\n\t\t text-shadow: none;\n\t}\n}\n .Hero-banner-new {\n\t position: relative;\n}\n .Hero-banner-new-label {\n\t --Banner-playState: running;\n\t height: 2.5em;\n\t position: relative;\n\t width: 2.5em;\n}\n .Hero-banner-new-svg {\n\t animation: rotate 2s linear infinite var(--Banner-playState);\n\t height: 2.5em;\n\t position: absolute;\n\t width: 2.5em;\n\t z-index: 1;\n}\n @media (prefers-reduced-motion) {\n\t .Hero-banner-new-svg {\n\t\t animation: none;\n\t}\n}\n @keyframes rotate {\n\t 0% {\n\t\t transform: rotate(0deg);\n\t}\n\t 100% {\n\t\t transform: rotate(360deg);\n\t}\n}\n .Hero-banner-new-svg.blue {\n\t fill: var(--white);\n\t left: 0;\n\t right: 0;\n\t z-index: 5;\n}\n .Hero-banner-new-svg.green {\n\t bottom: -0.1em;\n\t fill: var(--green);\n\t left: -0.1em;\n\t z-index: 4;\n}\n .Hero-banner-new-svg.yellow {\n\t bottom: -0.2em;\n\t fill: var(--yellow);\n\t left: -0.2em;\n\t z-index: 3;\n}\n .Hero-banner-new-svg.red {\n\t bottom: -0.3em;\n\t fill: var(--red);\n\t left: -0.3em;\n\t z-index: 2;\n}\n .Hero-banner-new-text {\n\t align-items: center;\n\t color: var(--blue);\n\t display: flex;\n\t font-family: var(--font-body);\n\t font-size: 0.65em;\n\t font-weight: 800;\n\t inset: 0;\n\t justify-content: center;\n\t margin: auto;\n\t position: absolute;\n\t text-align: center;\n\t transform: rotate(-20deg) translateX(0.05em);\n\t z-index: 6;\n}\n .Hero-banner em {\n\t font-style: italic;\n}\n .Hero-banner a {\n\t color: currentcolor;\n}\n\n/* ================\n Tile Grid\n ================ */\n.Section {\n --Tile-padding: var(--lg);\n --Tile-color: var(--color-text-default);\n --Tile-heading-margin: var(--Tile-padding);\n --Tile-heading-color: var(--color-text-minimum);\n \n border-radius: 15px;\n}\n\n.Section_product .TileGrid {\n grid-template-columns: repeat(4, 1fr);\n grid-template-rows: repeat(3, auto);\n}\n \n@media (max-width: 1260px) {\n .Section_product .TileGrid {\n grid-template-columns: repeat(3, 1fr);\n grid-template-rows: repeat(4, 1fr);\n }\n}\n\n@media (max-width: 960px) {\n .Section_product .TileGrid {\n grid-template-columns: repeat(2, 1fr);\n grid-template-rows: repeat(5, 1fr);\n }\n}\n\n@media (max-width: 675px) {\n .Section_product .TileGrid {\n grid-template-columns: 1fr;\n grid-template-rows: auto;\n }\n \n .Section_product .TileGrid-item {\n }\n}\n\n.Section_product .TileGrid-item:nth-child(1) { grid-area: 1 / 1 / 3 / 2 }\n.Section_product .TileGrid-item:nth-child(2) { grid-area: 1 / 2 / 2 / 3 }\n.Section_product .TileGrid-item:nth-child(3) { grid-area: 1 / 3 / 2 / 4 }\n.Section_product .TileGrid-item:nth-child(4) { grid-area: 1 / 4 / 2 / 5 }\n.Section_product .TileGrid-item:nth-child(5) { grid-area: 2 / 2 / 3 / 3 }\n.Section_product .TileGrid-item:nth-child(6) { grid-area: 2 / 3 / 3 / 4 }\n.Section_product .TileGrid-item:nth-child(7) { grid-area: 2 / 4 / 3 / 5 }\n.Section_product .TileGrid-item:nth-child(8) { grid-area: 3 / 2 / 4 / 5 }\n\n@media (max-width: 1260px) {\n .Section_product .TileGrid-item:nth-child(1) { grid-area: 1 / 1 / 2 / 4 }\n .Section_product .TileGrid-item:nth-child(1) a { height: auto }\n .Section_product .TileGrid-item:nth-child(2) { grid-area: 2 / 1 / 3 / 2 }\n .Section_product .TileGrid-item:nth-child(3) { grid-area: 2 / 2 / 3 / 3 }\n .Section_product .TileGrid-item:nth-child(4) { grid-area: 2 / 3 / 3 / 4 }\n .Section_product .TileGrid-item:nth-child(5) { grid-area: 3 / 1 / 4 / 2 }\n .Section_product .TileGrid-item:nth-child(6) { grid-area: 3 / 2 / 4 / 3 }\n .Section_product .TileGrid-item:nth-child(7) { grid-area: 3 / 3 / 4 / 4 }\n .Section_product .TileGrid-item:nth-child(8) { grid-area: 4 / 1 / 5 / 4 }\n}\n\n@media (max-width: 960px) {\n .Section_product .TileGrid-item:nth-child(2) { grid-area: 2 / 1 / 3 / 2 }\n .Section_product .TileGrid-item:nth-child(3) { grid-area: 2 / 2 / 3 / 3 }\n .Section_product .TileGrid-item:nth-child(4) { grid-area: 3 / 1 / 4 / 2 }\n .Section_product .TileGrid-item:nth-child(5) { grid-area: 3 / 2 / 4 / 3 }\n .Section_product .TileGrid-item:nth-child(6) { grid-area: 4 / 1 / 5 / 2 }\n .Section_product .TileGrid-item:nth-child(7) { grid-area: 4 / 2 / 5 / 3 }\n .Section_product .TileGrid-item:nth-child(8) { grid-area: 5 / 1 / 6 / 3 }\n}\n\n@media (max-width: 675px) {\n .Section_product .TileGrid-item.TileGrid-item {\n grid-area: unset;\n }\n}\n\n.Section_dark {\n background: #001242;\n}\n\n.Section_enterprise {\n --Tile-color: var(--white);\n --Tile-heading-margin: var(--md);\n --Tile-heading-color: var(--white);\n\n padding: var(--Tile-padding);\n}\n\n@media (max-width: 500px) {\n .Section_enterprise {\n\t padding: var(--md);\n }\n}\n\n.Section_enterprise .TileGrid {\n grid-template-columns: repeat(4, 1fr);\n}\n\n@media (max-width: 1280px) {\n .Section_enterprise .TileGrid {\n\t grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@media (max-width: 715px) {\n .Section_enterprise .TileGrid {\n\t grid-template-columns: 1fr;\n }\n}\n\n.Section_enterprise .Tile-heading {\n opacity: 0.5;\n}\n\n.TileGrid {\n display: grid;\n grid-gap: var(--sm);\n}\n\n.Tile-heading {\n color: var(--Tile-heading-color);\n font-size: 14px;\n font-weight: var(--font-weight-bold) !important;\n margin-bottom: var(--md);\n margin-left: var(--Tile-heading-margin);\n}\n\n/* ================\n Tiles\n ================ */\n.Tile {\n border: 1px solid transparent;\n border-radius: 15px;\n display: flex;\n flex-direction: column;\n height: 100%;\n overflow: hidden;\n padding: var(--md);\n position: relative;\n transition: box-shadow var(--transition-slow);\n}\n\n.Tile:hover .Tile-title,\n.Tile:active .Tile-title,\n.Tile:focus-visible .Tile-title {\n color: var(--blue);\n}\n\n.Tile:hover .icon-arrow-right2,\n.Tile:active .icon-arrow-right2,\n.Tile:focus-visible .icon-arrow-right2 {\n color: var(--blue);\n transform: translateX(2px);\n}\n\n.Tile:focus,\n.Tile:focus-visible {\n outline: 0;\n}\n\n.Tile_outline {\n border-color: var(--color-border-default);\n padding: var(--Tile-padding);\n}\n\n.Tile_outline:hover {\n border-color: var(--color-input-border-hover);\n}\n\n.Tile_outline:active,\n.Tile_outline:focus-visible {\n border-color: var(--color-input-border-active);\n box-shadow: 0 0 0 3px var(--color-input-border-focus);\n}\n\n.Tile_sm .Tile-title {\n font-size: 16px;\n margin-top: 0;\n}\n\n.Tile_sm .Tile-description {\n font-size: 14px;\n}\n\n.Tile-title {\n align-items: center;\n color: var(--Tile-color);\n display: flex;\n font-family: var(--font-brand) !important;\n font-size: 22px;\n font-weight: var(--font-weight-bold);\n gap: var(--sm);\n margin-top: 15px;\n}\n\n@media (max-width: 450px) {\n .Tile-title {\n display: block;\n }\n}\n\n.Tile-title > span {\n flex: 0 0 auto;\n}\n\n.Tile-title > .icon-arrow-right2 {\n font-size: 16px;\n opacity: 0.5;\n transition: transform var(--transition-slow) var(--transition-timing);\n}\n\n.Tile-description {\n color: var(--Tile-color);\n font-size: 15px;\n line-height: 1.4;\n margin-top: 5px;\n}\n\n.Tile-image {\n bottom: 0;\n height: auto;\n position: absolute;\n right: 0;\n width: 100%;\n}\n\n/* everything for the big tile */\n@media (max-width: 1260px) {\n .Tile_lg {\n flex-direction: row;\n gap: var(--md);\n justify-content: space-between;\n\t\tpadding: var(--md) 0 0 var(--md);\n }\n \n .Tile_lg .flex {\n flex: 1 1 auto;\n max-width: 380px;\n }\n \n .Tile-image {\n max-height: 180px;\n max-width: 400px;\n position: unset;\n width: auto;\n }\n}\n\n@media (max-width: 650px) {\n .Tile_lg {\n align-items: flex-end;\n flex-direction: column;\n }\n \n .Tile_lg .flex {\n max-width: none;\n padding-right: var(--md);\n }\n \n .Tile-image {\n max-width: 100%;\n }\n}\n\n/* ================\n Tile Icon\n ================ */\n.TileIcon {\n align-items: center;\n border: 1px solid var(--color-border-default);\n border-radius: var(--border-radius-lg);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05), inset 0 -1px 2px rgba(0, 0, 0, 0.2), inset 0 1px 1px rgba(255, 255, 255, 0.2);\n color: var(--white);\n display: inline-flex;\n font-size: 24px;\n height: var(--button-md);\n justify-content: center;\n width: var(--button-md);\n}\n\n.TileIcon_sm {\n font-size: 16px;\n height: 24px;\n width: 24px;\n}\n\n.TileIcon_green {\n background: linear-gradient(180deg, #59D4A4 0%, #12CA93 100%);\n}\n\n.TileIcon_red {\n background: linear-gradient(180deg, #F17C81 0%, #E95F6A 100%);\n}\n\n.TileIcon_yellow {\n background: linear-gradient(180deg, #FFD885 0%, #F7C543 100%);\n}\n\n.TileIcon_blue {\n background: linear-gradient(180deg, #619EFE 0%, #118CFD 100%);\n}\n\n.TileIcon_purple {\n background: linear-gradient(180deg, #9987C9 0%, #8470BE 100%);\n}\n\n.TileIcon_orange {\n background: linear-gradient(180deg, #FFAA7B 0%, #FE8C4E 100%);\n}\n\n.TileIcon_gray {\n background: linear-gradient(180deg, #ADB4C1 0%, #939EAE 100%);\n}\n\n/* ================\n ReadMe API\n ================ */\n.ReadMeAPI {\n overflow: hidden;\n padding-bottom: var(--xxl);\n padding-top: var(--xl);\n position: relative;\n}\n\n.ReadMeAPI-container {\n margin-left: auto;\n margin-right: auto;\n\tmax-width: 960px;\n padding-left: var(--lg);\n padding-right: var(--lg);\n}\n\n.ReadMeAPI-h2 {\n color: var(--white);\n font-family: var(--font-brand);\n font-size: 42px;\n font-weight: var(--font-weight-bold) !important;\n line-height: 1.2;\n margin-bottom: 0;\n margin-top: 0;\n}\n\n@media (max-width: 650px) {\n\t.ReadMeAPI-h2 {\n\t font-size: 30px;\n }\n}\n\n\n@media (max-width: 500px) {\n .ReadMeAPI-h2 {\n font-size: 28px;\n -webkit-hyphens: auto;\n hyphens: auto;\n\t\toverflow-wrap: break-word;\n }\n}\n\n.ReadMeAPI-h2 .yellow {\n color: var(--yellow);\n}\n\n.ReadMeAPI-a {\n color: var(--white);\n display: inline-flex;\n\tfont-family: var(--font-brand);\n font-size: 24px;\n gap: var(--xs);\n margin-top: var(--md);\n opacity: 0.75;\n}\n\n.ReadMeAPI-a:hover,\n.ReadMeAPI-a:active,\n.ReadMeAPI-a:focus-within {\n color: var(--white);\n opacity: 1;\n}\n\n.ReadMeAPI-a:hover .icon-arrow-right2,\n.ReadMeAPI-a:active .icon-arrow-right2,\n.ReadMeAPI-a:focus-within .icon-arrow-right2 {\n transform: translateX(2px);\n}\n\n.ReadMeAPI-a .icon-arrow-right2 {\n opacity: 0.5;\n transition: transform var(--transition-slow) var(--transition-timing);\n}\n\n.ReadMeAPI-figure {\n bottom: -48px;\n display: flex;\n gap: var(--md);\n left: -10%;\n position: absolute;\n}\n\n.ReadMeAPI-svg {\n background: linear-gradient(180deg, #002077 0%, #002077 100%);\n border: 1px solid rgba(0, 0, 0, 0.1);\n border-radius: 15px;\n box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.05), inset 0px -1px 2px rgba(0, 0, 0, 0.2), inset 0px 1px 1px rgba(255, 255, 255, 0.2);\n height: 110px;\n width: 406px;\n}\n\n/* ================\n Eyebrow Text\n ================ */\n.Eyebrow {\n background: var(--yellow);\n border-radius: var(--border-radius);\n color: #001242;\n display: table;\n font-family: var(--font-brand-mono);\n font-weight: var(--font-weight);\n font-size: 14px;\n line-height: 1;\n margin-bottom: var(--md);\n padding: var(--xs) var(--sm);\n}\n\n/* ================\n Cards\n ================ */\n.Card {\n align-items: center;\n border: 1px solid var(--color-border-default);\n border-radius: 15px;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n overflow: hidden;\n padding: var(--lg);\n}\n\n.Card .TileIcon + .Card-heading {\n margin-top: var(--md);\n}\n\n.Card-heading {\n color: var(--color-text-default);\n font-size: 26px;\n font-weight: var(--font-weight-bold) !important;\n margin: 0;\n}\n\n.Card-heading,\n.Card-description {\n font-family: var(--font-brand); \n text-align: center;\n}\n\n.Card-link {\n color: var(--blue);\n font-size: 16px;\n font-weight: var(--font-weight-bold);\n gap: var(--xs);\n margin-top: var(--md);\n}\n\n.Card-link:hover,\n.Card-link:active,\n.Card-link:focus-visible {\n color: var(--blue) !important;\n}\n\n.Card-link:hover .icon-arrow-right2,\n.Card-link:active .icon-arrow-right2,\n.Card-link:focus-visible .icon-arrow-right2 {\n transform: translateX(2px);\n}\n\n.Card-link .icon-arrow-right2 {\n opacity: 0.5;\n transition: transform var(--transition-slow) var(--transition-timing);\n}\n\n.Card-description {\n color: var(--color-text-minimum) !important;\n font-size: 18px;\n font-weight: var(--font-weight);\n line-height: 1.4;\n margin: var(--xs) auto 0;\n max-width: 400px;\n}\n\n/* ================\n Community & Changelog\n ================ */\n@media (max-width: 1100px) {\n .CommunityChangelog {\n flex-direction: column;\n\t}\n}\n\n/* ================\n Community\n ================ */\n.Community {\n display: flex;\n flex-direction: column;\n gap: var(--sm);\n margin-left: auto;\n margin-right: auto;\n max-width: 300px;\n padding-top: 170px;\n position: relative;\n width: 100%;\n}\n\n@media (max-width: 500px) {\n .Community { \n\t max-width: 250px;\n }\n}\n\n.Community::before {\n background: url(//files.readme.io/6d9a6e6-bubs.png);\n background-position: center;\n background-repeat: no-repeat;\n background-size: 500px;\n content: '';\n height: 100%;\n left: -100px;\n position: absolute;\n top: 30px;\n width: 500px\n}\n\n@media (max-width: 1100px) {\n .Community {\n padding-top: 140px;\n }\n \n .Community::before {\n top: 0;\n }\n}\n\n.Community-from p,\n.Community-to p {\n margin: 0;\n}\n\na.Community-to {\n font-weight: var(--font-weight-bold);\n}\n\na.Community-to:hover,\na.Community-to:active,\na.Community-to:focus-visible {\n color: var(--white);\n}\n\na.Community-to:hover .icon-arrow-right2,\na.Community-to:active .icon-arrow-right2,\na.Community-to:focus-visible .icon-arrow-right2 {\n transform: translateX(2px);\n}\n\n.Community-to .icon-arrow-right2 {\n color: var(--white);\n display: inline-block;\n opacity: 0.5;\n transition: transform var(--transition-slow) var(--transition-timing);\n}\n\n.Community-from,\n.Community-to {\n border-radius: 1.15rem;\n line-height: 1.25;\n max-width: 75%;\n padding: 0.5rem .875rem;\n position: relative;\n width: fit-content;\n word-wrap: break-word;\n}\n\n.Community-from::before,\n.Community-to::before,\n.Community-from::after,\n.Community-to::after {\n bottom: -0.1rem;\n content: '';\n height: 1rem;\n position: absolute;\n}\n\n.Community-to {\n align-self: flex-end;\n background-color: #248bf5;\n color: var(--white); \n}\n\n.Community-to::before {\n border-bottom-left-radius: 0.8rem 0.7rem;\n border-right: 1rem solid #248bf5;\n right: -0.35rem;\n transform: translate(0, -0.1rem);\n}\n\n.Community-to::after {\n background-color: var(--color-bg-page);\n border-bottom-left-radius: 0.5rem;\n right: -40px;\n transform:translate(-30px, -2px);\n width: 10px;\n}\n\n.Community-from {\n align-items: flex-start;\n background-color: #e5e5ea;\n color: var(--gray0);\n}\n\n.Community-from::before {\n border-bottom-right-radius: 0.8rem 0.7rem;\n border-left: 1rem solid #e5e5ea;\n left: -0.35rem;\n transform: translate(0, -0.1rem);\n}\n\n.Community-from::after {\n background-color: #f0f0f0;\n border-bottom-right-radius: 0.5rem;\n left: 20px;\n transform: translate(-30px, -2px);\n width: 10px;\n}\n\n.Community-avatar {\n bottom: -2px;\n height: 50px;\n left: -60px;\n position: absolute;\n width: 50px;\n}\n\n/* ================\n Changelogs\n ================ */\n.Changelogs {\n margin-top: var(--md);\n}\n\n.ChangelogPost {\n padding-bottom: var(--md);\n padding-top: var(--md);\n}\n\n.ChangelogPost + .ChangelogPost {\n border-top: 1px solid var(--color-border-default);\n}\n\n.ChangelogPost-tag {\n color: var(--color-text-muted);\n font-size: 14px;\n font-weight: var(--font-weight-bold);\n}\n\n.ChangelogPost-link {\n align-items: center;\n color: var(--color-text-default);\n display: flex;\n\tfont-size: 20px;\n font-weight: var(--font-weight-bold);\n gap: var(--xs);\n margin-top: var(--sm);\n}\n\n.ChangelogPost-link:hover,\n.ChangelogPost-link:active,\n.ChangelogPost-link:focus-visible {\n color: var(--blue);\n}\n\n.ChangelogPost-link:hover .icon-arrow-right2,\n.ChangelogPost-link:active .icon-arrow-right2,\n.ChangelogPost-link:focus-visible .icon-arrow-right2 {\n opacity: 0.5;\n transform: none;\n}\n\n.ChangelogPost-link .icon-arrow-right2 {\n\tfont-size: 16px;\n\topacity: 0;\n transform: translateX(-2px);\n transition: opacity var(--transition-slow), transform var(--transition-slow);\n}\n\n.ChangelogPost-date {\n color: var(--color-text-minimum);\n font-size: 14px;\n font-weight: var(--font-weight);\n margin-top: var(--xs);\n}\n\n/* ================\n Bonus Cards (Case Studies, Pricing, Careers)\n ================ */\n@media (max-width: 1100px) {\n .BonusCards {\n flex-direction: column;\n\t}\n}\n\n/* ================\n Footer\n ================ */\n.Footer {\n align-items: flex-start;\n gap: var(--xxl);\n padding: var(--GridGap);\n}\n\n@media (max-width: 1220px) {\n .Footer { \n\t gap: var(--lg);\n }\n}\n\n@media (max-width: 850px) {\n .Footer { \n\t\tflex-direction: column;\n }\n}\n\n.Footer-logo {\n height: 30px;\n width: fit-content;\n}\n\n.Footer-heading {\n color: var(--color-text-default);\n font-family: var(--font-brand);\n font-size: 64px;\n font-weight: var(--font-weight-bold) !important;\n line-height: 1;\n margin-bottom: 0;\n margin-top: var(--lg);\n}\n\n@media (max-width: 1220px) {\n .Footer-heading {\n\t font-size: 52px;\n }\n}\n\n\n@media (max-width: 990px) {\n .Footer-heading {\n\t font-size: 42px;\n }\n}\n\n.Footer-heading-highlight {\n color: var(--blue);\n}\n\n.Footer-description {\n color: var(--color-text-default) !important;\n font-family: var(--font-brand);\n font-size: 20px;\n line-height: 1.4;\n margin-bottom: 0;\n margin-top: var(--md);\n}\n\n.Footer-links {\n background: #e7f3ff;\n border-radius: var(--border-radius-lg);\n color: var(--blue);\n font-family: var(--font-brand);\n font-size: 14px;\n gap: var(--sm);\n margin-top: var(--lg);\n padding: var(--sm);\n width: fit-content;\n}\n\n.Footer-links .Button {\n font-family: var(--font-brand);\n}\n\n.Footer-links .Button_primary_text {\n color: var(--gray20);\n font-weight: var(--font-weight-bold);\n padding-left: 0;\n}\n\n.Footer-escape {\n color: var(--blue);\n font-weight: var(--font-weight-bold);\n margin-top: var(--lg);\n width: fit-content;\n}\n\n.Footer-escape .icon-arrow-right2 {\n opacity: 0.5;\n}\n\n.Footer-owlberts {\n height: 470px;\n width: auto;\n}\n\n@media (max-width: 1220px) {\n .Footer-owlberts {\n\t height: 400px;\n }\n}\n\n@media (max-width: 990px) {\n .Footer-owlberts {\n\t height: 350px;\n }\n}\n\n@media (max-width: 500px) {\n\t.Footer-owlberts {\n height: auto;\n\t\tmax-width: 100%;\n width: 100%;\n }\n}\n.markdown-body .callout[theme=\"🥳\"] {\n --background: #C878E1;\n --border: #375CD7;\n --text: #f5fffa;\n}\n\n.markdown-body .callout[theme=\"🚀\"] {\n --background: #;\n --border: #;\n --text: #;\n}\n\n.markdown-body .callout[theme=\"🎉\"] {\n --background: #;\n --border: #;\n --text: #;\n}\n\n.rm-Changelog .markdown-body p:first-of-type {\n font-size: 1.25em;\n margin: 30px 0;\n}\n\n.rm-Changelog .markdown-body h2 + p {\n font-size: 1.25em;\n}\n\n.rm-Changelog .markdown-body h3 {\n margin-top: 30px;\n}","js":"/* eslint-disable\n */\n\n// Commenting out the scripts below, don't think they work anymore\n/*\n$(window).on('pageLoad', function(e, state){\n $('*:contains(\":oid:\"):last').html(`'${makeid(12)}'`);\n});\n\n$('*:contains(\":oid:\"):last').html(`'${makeid(12)}'`);\n\nfunction makeid(length) {\n var result = '';\n var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n var charactersLength = characters.length;\n for ( var i = 0; i < length; i++ ) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n}\n*/\n\nfunction getScript(source, callback) {\n var script = document.createElement(\"script\");\n var prior = document.getElementsByTagName(\"script\")[0];\n script.async = 1;\n\n script.onload = script.onreadystatechange = function (_, isAbort) {\n if (isAbort || !script.readyState || /loaded|complete/.test(script.readyState)) {\n script.onload = script.onreadystatechange = null;\n script = undefined;\n\n if (!isAbort && callback) setTimeout(callback, 0);\n }\n };\n\n script.src = source;\n prior.parentNode.insertBefore(script, prior);\n}\n\n/* Hacky script for loading Twitter widget\n */\nfunction loadTwitterWidget() {\n var hasTwitterWidget = document.getElementsByClassName(\"twitter-tweet\");\n if (hasTwitterWidget.length > 0) {\n getScript(\"https://platform.twitter.com/widgets.js\", () => {});\n }\n}\n\nfunction custom404Stuff() {\n // the search bar takes a bit to show up, so we need to wait for it\n setTimeout(() => {\n const helpTextKBD = document.getElementById(\"search-key-404-clone\");\n const helpInnerText = document.querySelector(\"#SearchBert + kbd\")?.innerText;\n if (helpTextKBD && helpInnerText) {\n const newText = helpInnerText.replace(\"\\n\", \"\");\n console.debug(\"updating 404 text for this element:\",helpTextKBD,\"to this text:\",helpInnerText);\n helpTextKBD.innerText = newText;\n }\n }, 250)\n\n}\n\nfunction rebaseMobileSearchButton() {\n var searchButton = $(\".rm-Header-top .rm-SearchToggle\");\n var menuHolder = $(\".rm-Flyout > div\");\n if (searchButton.length && menuHolder.length) {\n searchButton.appendTo(menuHolder);\n }\n}\n\n/* *********************\n Populate marketing site URL in GLP logo\n ********************* */\nfunction updateGLPLogoLink() {\n if (location.pathname !== \"/\") return;\n document.querySelector('a.rm-Logo:not([class^=\"Mobile\"])').href = \"https://readme.com\";\n}\n\n/* *********************\n Load Changelog from RSS feed\n ********************* */\n\nfunction loadChangelogPosts() {\n if (location.pathname !== \"/\") return;\n const changelogRss = \"/main/changelog.rss\";\n\n const changelogIcon = {\n added: { color: \"green\", icon: \"plus1\" },\n improved: { color: \"purple\", icon: \"heart1\" },\n fixed: { color: \"blue\", icon: \"check1\" },\n deprecated: { color: \"yellow\", icon: \"alert-triangle\" },\n };\n\n const parser = new RSSParser({ customFields: { item: [\"type\"] } });\n parser.parseURL(changelogRss, function (err, feed) {\n if (err) throw err;\n const parent = document.getElementById(\"changelogs-target\");\n const changelogEntries = [];\n\n for (let i = 0; i <= 2; i += 1) {\n const entry = feed.items[i];\n\n const changelogPost = document.createElement(\"li\");\n changelogPost.className = \"flex flex_col ChangelogPost\";\n\n if (entry.type) {\n const changelogType = document.createElement(\"div\");\n changelogType.className = \"flex flex_center ChangelogPost-tag\";\n changelogType.style = \"gap: var(--xs)\";\n\n const typeIcon = document.createElement(\"span\");\n const { color, icon } = changelogIcon[entry.type];\n typeIcon.className = `TileIcon TileIcon_sm TileIcon_${color} icon icon-${icon}`;\n\n const typeText = document.createElement(\"span\");\n typeText.innerText = entry.type;\n typeText.style = \"text-transform: capitalize;\";\n\n changelogType.appendChild(typeIcon);\n changelogType.appendChild(typeText);\n changelogPost.appendChild(changelogType);\n }\n\n const changelogTitle = document.createElement(\"a\");\n changelogTitle.className = \"ChangelogPost-link\";\n changelogTitle.href = entry.link;\n changelogTitle.innerText = entry.title;\n\n const changelogTitleArrow = document.createElement(\"i\");\n changelogTitleArrow.className = \"icon icon-arrow-right2\";\n changelogTitle.appendChild(changelogTitleArrow);\n changelogPost.appendChild(changelogTitle);\n\n const changelogDate = document.createElement(\"span\");\n changelogDate.className = \"ChangelogPost-date\";\n changelogDate.innerText = timeago.format(entry.isoDate);\n changelogPost.appendChild(changelogDate);\n\n changelogEntries.push(changelogPost);\n }\n\n while (parent.firstChild) {\n parent.removeChild(parent.firstChild);\n }\n\n changelogEntries.forEach(function (entry) {\n parent.appendChild(entry);\n });\n });\n}\n\n/* *********************\n Generate Nav\n ********************* */\nconst links = [\n {\n href: \"https://docs.readme.com\",\n icon: \"icon-landing-page-2\",\n text: \"Home\",\n },\n {\n href: \"https://docs.readme.com/main/docs\",\n icon: \"icon-guides\",\n text: \"Product Guides\",\n },\n {\n href: \"https://docs.readme.com/ent/docs\",\n icon: \"icon-guides\",\n text: \"Enterprise Guides\",\n },\n {\n href: \"https://docs.readme.com/main/recipes\",\n icon: \"icon-recipes\",\n text: \"Recipes\",\n },\n {\n href: \"https://docs.readme.com/main/reference\",\n icon: \"icon-references\",\n text: \"API Reference\",\n },\n {\n href: \"https://docs.readme.com/main/changelog\",\n icon: \"icon-changelog\",\n text: \"Changelog\",\n },\n {\n href: \"https://docs.readme.com/main/discuss\",\n icon: \"icon-discussions\",\n text: \"Discussions\",\n },\n {\n href: \"https://docs.readme.com/rdmd/docs\",\n icon: \"icon-markdown\",\n text: \"ReadMe Markdown\",\n },\n];\n\nfunction populateMainNav() {\n const mainNav = document.querySelector('.rm-Header nav:first-child');\n const mobileNav = document.querySelector(\".rm-Flyout > div\");\n\n // Completely replaces nav\n function cleanUpdate() {\n // Create new links\n let mainLinkEls = \"\";\n let mobileLinkEls = \"\";\n links.map(({ href, icon, text }) => {\n // determine if link is active\n let isActive = false;\n const hrefUrl = new URL(href);\n if (location.pathname.includes(hrefUrl.pathname)) isActive = true;\n // landing page quirk\n if (hrefUrl.pathname === \"/\" && location.pathname !== \"/\") isActive = false;\n\n mainLinkEls += `<a class=\"Button Button_md Button_slate_text rm-Header-bottom-link ${\n isActive ? \"active\" : \"\"\n }\" href=${hrefUrl.pathname}><i class=${icon}></i><span>${text}</span></a>`;\n mobileLinkEls += `<a class=\"NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- ${\n isActive ? \"active\" : \"\"\n }\" href=${\n hrefUrl.pathname\n } target=\"_self\"><i class=\"NavItem-item-anchorzz3banOxXKjr ${icon}\"></i><span class=\"NavItem-textSlZuuL489uiw\">${text}</span></a>`;\n });\n\n // Replace main nav\n mainNav.innerHTML = mainLinkEls;\n\n // Add standard links (customer stories, logo, etc.) onto mobile nav\n mobileLinkEls += '<hr class=\"MobileFlyout-divider10xf7R2X1MeW\">';\n mobileLinkEls +=\n '<a class=\"NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- NavItem_dropdown-muted1xJVuczwGc74\" href=\"https://readme.com/customers\" rel=\"noopener\" target=\"_blank\" to=\"https://readme.com/customers\">Customer Stories</a>';\n mobileLinkEls +=\n '<a class=\"NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- NavItem_dropdown-muted1xJVuczwGc74\" href=\"https://readme.com/pricing\" rel=\"noopener\" target=\"_blank\" to=\"https://readme.com/pricing\">Pricing</a>';\n // TODO: figure out how to add nav item for user controls\n mobileLinkEls += \"\";\n mobileLinkEls +=\n '<a class=\"MobileFlyout-logo3Lq1eTlk1K76 Header-logo1Xy41PtkzbdG rm-Logo\" href=\"https://readme.com\" target=\"_self\"><img alt=\"ReadMe Logo\" class=\"Header-logo-img3YvV4lcGKkeb rm-Logo-img\" src=\"https://files.readme.io/68da258-644ef91-readme-white_1.svg\"></a>';\n\n // Replace mobile nav\n mobileNav.innerHTML = mobileLinkEls;\n }\n\n console.debug(\"about to update nav for \", location.pathname);\n\n if (location.pathname.startsWith(\"/main\")) {\n // for the main project, we take a more surgical approach to constructing the nav\n try {\n // Rename guides node, create home and enterprise nodes and insert them\n function insertNavLinks(navNode) {\n // if we've already inserted the nav links, don't do anything\n if (navNode.firstChild.innerText.trim() === \"Home\") return;\n\n navNode.firstChild.childNodes[1].innerText = \"Product Guides\";\n const baseNode = navNode.firstChild.cloneNode(true);\n\n links.map((link, i) => {\n const hrefUrl = new URL(link.href);\n // don't create nodes for existing main project\n if (hrefUrl.pathname.startsWith(\"/main\")) return true;\n\n const newNode = baseNode.cloneNode(true);\n newNode.classList.remove(\"active\");\n newNode.removeAttribute(\"aria-current\");\n newNode.href = hrefUrl.pathname;\n newNode.childNodes[1].innerText = link.text;\n newNode.firstChild.classList.replace(\"icon-guides\", link.icon);\n\n const nodeToInsertBefore = navNode.childNodes[i] || null;\n navNode.insertBefore(newNode, nodeToInsertBefore);\n });\n }\n\n console.debug(\"surgical nav bar update\");\n insertNavLinks(mainNav);\n insertNavLinks(mobileNav);\n } catch (e) {\n console.debug(\"clean nav bar update due to surgical update error\");\n cleanUpdate();\n }\n } else {\n console.debug(\"clean nav bar update due to non-main project route\");\n cleanUpdate();\n }\n\n mainNav.style.visibility = \"visible\";\n}\n\n$(window).on(\"pageLoad\", function (e, state) {\n console.debug(\"pageLoad event for\", window.location.pathname, state);\n loadTwitterWidget();\n // rebaseMobileSearchButton();\n loadChangelogPosts();\n populateMainNav();\n updateGLPLogoLink();\n custom404Stuff();\n});\n","html":{"header":"<!-- Slack App Suggestions Tag -->\n<meta name=\"slack-app-id\" content=\"AQBR3NZUY\">\n<!-- Top-level OG image attributes (applied on every page) -->\n<meta property=\"og:image\" content=\"https://readme.com/static/og_images/index.png\">\n<meta property=\"og:image:secure_url\" content=\"https://readme.com/static/og_images/index.png\">\n<meta name=\"twitter:image\" content=\"https://readme.com/static/og_images/index.png\">\n<meta property=\"og:image:width\" content=\"1200\">\n<meta property=\"og:image:height\" content=\"630\">\n<meta name=\"author\" content=\"ReadMe\">\n\n<script\n src=\"https://code.jquery.com/jquery-3.6.0.min.js\"\n integrity=\"sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=\"\n crossorigin=\"anonymous\"></script>\n<script>\n$.noConflict();\n</script>\n<!-- RSS feed parsing script -->\n<script src=\"//unpkg.com/rss-parser@3.12.0/dist/rss-parser.min.js\"></script>\n<script src=\"//unpkg.com/timeago.js@4.0.2/dist/timeago.min.js\"></script>\n","home_footer":null,"page_footer":"<!--\n<script\n src=\"https://code.jquery.com/jquery-2.1.4.min.js\"\n crossorigin=\"anonymous\"></script>\n<script>\n$.noConflict();\n</script>\n-->\n"}},"header":{"type":"solid","gradient_color":null,"overlay":{"fill":"auto","type":"triangles","position":"top-left","image":{"uri":null,"url":null,"name":null,"width":null,"height":null,"color":null,"links":{"original_url":null}}}},"navigation":{"first_page":"documentation","left":[{"type":"link_url","title":"Customer Stories","url":"https://readme.com/customers","custom_page":null},{"type":"link_url","title":"ReadMe Blog","url":"https://blog.readme.com","custom_page":null}],"logo_link":"homepage","right":[{"type":"user_controls","title":null,"url":null,"custom_page":null}],"sub_nav":[],"subheader_layout":"links","version":"disabled","links":{"home":{"label":"Home","visibility":"disabled"},"graphql":{"label":"GraphQL","visibility":"disabled"},"guides":{"label":"Guides","alias":null,"visibility":"enabled"},"reference":{"label":"API Reference","alias":null,"visibility":"enabled"},"recipes":{"label":"Recipes","alias":null,"visibility":"enabled"},"changelog":{"label":"Changelog","alias":null,"visibility":"enabled"},"discussions":{"label":"Discussions","alias":null,"visibility":"enabled"}}}}}},"version":{"_id":"62056dee230e07007218bf4c","version":"2.0","version_clean":"2.0.0","codename":"product-guides","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["62056dee230e07007218be04","5f7ce9e3a5504d0414d024c0","62056dee230e07007218be05","5730e2e9053a062b00cf4754","5730e2e9053a062b00cf4755","62056dee230e07007218be06","62056dee230e07007218be07","5730e2e9053a062b00cf4758","5730e2e9053a062b00cf4759","5730e2e9053a062b00cf475a","62056dee230e07007218be08","62056dee230e07007218be09","5730e2e9053a062b00cf475d","62056dee230e07007218be0a","5730e2e9053a062b00cf475f","5f7ce9e3a5504d0414d024c7","57e31e95611a860e00f97e22","582fa20c4479222092198d40","5849c782fcabe31900998f6e","58b9e83068a4a5190011dcb2","58bdec0f455ca125001d9505","5a6bbecf2116e20022de8b19","5a7c96d2324bc1001f64ad8b","5a7c9d777dce000013d8b96f","5a81e7ff761cf30012731823","5a81e886bf4a2b0012592b49","5a81eaa5761cf3001273183d","62056dee230e07007218be0b","5a95f47858371e001fd651bb","5a95f53b5c3020002b02aa8c","5a95f57c4091e600125d0249","5a95f5984c0ecf0046a28ba3","5a95f6754091e600125d0252","5a95f6b94091e600125d025b","5a95f7104c0ecf0046a28bce","5a95f7954c0ecf0046a28c57","5a95f7d15c3020002b02aacf","5af6287d426c9d000377c583","5afdf7d37506a80003730d40","5b359df811baf70003a14454","62056dee230e07007218be0c","5bbbb66b8dac1100048174f0","5bbbb6768dac1100048174f3","62056dee230e07007218be0d","5c6f5766877e850021140a1a","5ca51733d177a40373ab97f9","5cc26539681cf8001b9ce9f3","5d0aa5163fd65b0019f2d14e","5d0bba3dd628fd0051fbb232","5d0bba522df6470020205266","5d0bce567f3ac6000f0ef6a3","5d1a4e276ffc8100194874f2","5d3213a673f65d0012b11fb0","5d5b7af3e33f0b005608b793","5d5b7b1d68f1dc00113744d4","5d5b7b9f0c74ae001e8e2186","5d5b7beffe91cc002f6d67eb","5d5b7c21fbd0f80012334964","5d5b7c2df20ff50052c02fec","5dc9f8a8ea4314002f5575ff","5dcdad4c3fd5ca0052534ac4","5e1e2350f309936b889b2448","5f7ce9e3a5504d0414d024fd","62056dee230e07007218be0e","62056dee230e07007218be0f","62056dee230e07007218be10","5f7cf1a9cb79be02e1a588c9","62056dee230e07007218be11","5f9c861053998401d1c2c222","5fc55b794fd67b00645d25e2","62056dee230e07007218be12","61084e16a18107003124ef8f","62056dee230e07007218be13","61e1f0d7a8a68f007059c4cb","61e1f0fc0106310039807732","62292aea889520008ed0113b","6233cab9410abc001c9822eb","6234eb59f6eccc02f76cb807","624cb20585a75d004c978f57","624e2238df4eb60013286917","633470b833bb8d04e657051a","6376ba4d127d990003112b72","63e43d347c3efc02c02c5986","6442d3485ae2d10e2654d2f3","64f8c3b94e8f64001f07ea58","650b7bdc6fa4eb0074722335","65848b391e628e004514a0df","65848bb94819f1004aa6338e","658493ce0d7680006b35bd9d","6732850c3cee9b006fe502ba"],"createdAt":"2016-05-09T19:20:09.413Z","project":"5f7ce9e3a5504d0414d025d0","releaseDate":"2016-05-09T19:20:09.413Z","__v":0,"pdfStatus":"complete","forked_from":"5f7ce9e3a5504d0414d0243f","updatedAt":"2024-11-11T22:28:28.339Z"}},"reqUrl":"/main/docs/sending-logs-to-readme-with-nodejs","version":{"_id":"62056dee230e07007218bf4c","version":"2.0","version_clean":"2.0.0","codename":"product-guides","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["62056dee230e07007218be04","5f7ce9e3a5504d0414d024c0","62056dee230e07007218be05","5730e2e9053a062b00cf4754","5730e2e9053a062b00cf4755","62056dee230e07007218be06","62056dee230e07007218be07","5730e2e9053a062b00cf4758","5730e2e9053a062b00cf4759","5730e2e9053a062b00cf475a","62056dee230e07007218be08","62056dee230e07007218be09","5730e2e9053a062b00cf475d","62056dee230e07007218be0a","5730e2e9053a062b00cf475f","5f7ce9e3a5504d0414d024c7","57e31e95611a860e00f97e22","582fa20c4479222092198d40","5849c782fcabe31900998f6e","58b9e83068a4a5190011dcb2","58bdec0f455ca125001d9505","5a6bbecf2116e20022de8b19","5a7c96d2324bc1001f64ad8b","5a7c9d777dce000013d8b96f","5a81e7ff761cf30012731823","5a81e886bf4a2b0012592b49","5a81eaa5761cf3001273183d","62056dee230e07007218be0b","5a95f47858371e001fd651bb","5a95f53b5c3020002b02aa8c","5a95f57c4091e600125d0249","5a95f5984c0ecf0046a28ba3","5a95f6754091e600125d0252","5a95f6b94091e600125d025b","5a95f7104c0ecf0046a28bce","5a95f7954c0ecf0046a28c57","5a95f7d15c3020002b02aacf","5af6287d426c9d000377c583","5afdf7d37506a80003730d40","5b359df811baf70003a14454","62056dee230e07007218be0c","5bbbb66b8dac1100048174f0","5bbbb6768dac1100048174f3","62056dee230e07007218be0d","5c6f5766877e850021140a1a","5ca51733d177a40373ab97f9","5cc26539681cf8001b9ce9f3","5d0aa5163fd65b0019f2d14e","5d0bba3dd628fd0051fbb232","5d0bba522df6470020205266","5d0bce567f3ac6000f0ef6a3","5d1a4e276ffc8100194874f2","5d3213a673f65d0012b11fb0","5d5b7af3e33f0b005608b793","5d5b7b1d68f1dc00113744d4","5d5b7b9f0c74ae001e8e2186","5d5b7beffe91cc002f6d67eb","5d5b7c21fbd0f80012334964","5d5b7c2df20ff50052c02fec","5dc9f8a8ea4314002f5575ff","5dcdad4c3fd5ca0052534ac4","5e1e2350f309936b889b2448","5f7ce9e3a5504d0414d024fd","62056dee230e07007218be0e","62056dee230e07007218be0f","62056dee230e07007218be10","5f7cf1a9cb79be02e1a588c9","62056dee230e07007218be11","5f9c861053998401d1c2c222","5fc55b794fd67b00645d25e2","62056dee230e07007218be12","61084e16a18107003124ef8f","62056dee230e07007218be13","61e1f0d7a8a68f007059c4cb","61e1f0fc0106310039807732","62292aea889520008ed0113b","6233cab9410abc001c9822eb","6234eb59f6eccc02f76cb807","624cb20585a75d004c978f57","624e2238df4eb60013286917","633470b833bb8d04e657051a","6376ba4d127d990003112b72","63e43d347c3efc02c02c5986","6442d3485ae2d10e2654d2f3","64f8c3b94e8f64001f07ea58","650b7bdc6fa4eb0074722335","65848b391e628e004514a0df","65848bb94819f1004aa6338e","658493ce0d7680006b35bd9d","6732850c3cee9b006fe502ba"],"createdAt":"2016-05-09T19:20:09.413Z","project":"5f7ce9e3a5504d0414d025d0","releaseDate":"2016-05-09T19:20:09.413Z","__v":0,"pdfStatus":"complete","forked_from":"5f7ce9e3a5504d0414d0243f","updatedAt":"2024-11-11T22:28:28.339Z"},"lang":"en","langFull":"Default","isDetachedProductionSite":false}"></script></div><div id="hub-container"><div class="hub-container"><div state-container ng-attr-id="{{state.current().root !== 'docs' && 'react-app-content-container'}}"><div id="replace-view" ng-non-bindable></div></div></div></div><script>var is_hub = true; var is_hub2 = true; var is_hub_edit = true; </script><div id="ssr-end"><script id="__LOADABLE_REQUIRED_CHUNKS__" type="application/json">[6859,1802,9772,3284,7449,7372,9082,572,5312,5548,2395,6522,7112,4608,8263,1282,2852,3880,7783,1456,1666,5798,4935,7971,6722,153,1313,4002,3787,6841,1936,6922,2859,9575,8063,1343,1202,6060,5408,2637,2402,1080,9852,8684,2144,4674,1731,3221,7327,7285,3307,1948,9141,3859,4467,2578,2616,3412,678,8899,4793,3556,1231,3826,7289,7031]</script><script id="__LOADABLE_REQUIRED_CHUNKS___ext" type="application/json">{"namedChunks":["routes-SuperHub","Header","routes-PageNotFound","Footer","core-icons-chevron-up-down-svg","routes-Reference","routes-Landing","routes-Doc","CustomPage","core-icons-arrow-right-svg","core-icons-arrow-up-right-svg","core-icons-more-vertical-svg","core-icons-alert-circle-svg","core-icons-lock-svg","routes-Discuss","Page","Editor","core-icons-x-circle-svg","core-icons-suggested-edits-svg","routes-Changelog","List","core-icons-search-svg","core-icons-custom-pages-svg","routes-SuperHub-Routes","rmdx","Post","core-icons-chevron-down-svg","routes-Tutorials","core-icons-eye-off-svg","routes-CustomPage","core-icons-trending-up-svg","core-icons-callout-info-svg","core-icons-webhook-svg","New","core-icons-star-svg","core-icons-key-svg","routes-Dash-ChatGPT-CopilotInstalledPage","core-icons-inbox-svg","core-icons-message-circle-svg","core-graphics-json-svg"]}</script> <script async data-chunk="main" src="https://cdn.readme.io/public/hub/web/main.766cf20fa350c2c18107.js"></script> <script async data-chunk="routes-SuperHub" src="https://cdn.readme.io/public/hub/web/6859.fc1496da022e612abe33.js"></script> <script async data-chunk="routes-SuperHub" src="https://cdn.readme.io/public/hub/web/1802.00a1e88cc0d9da2aae1b.js"></script> <script async data-chunk="routes-SuperHub" src="https://cdn.readme.io/public/hub/web/9772.1912e092b9c8785ff5c3.js"></script> <script async data-chunk="routes-SuperHub" src="https://cdn.readme.io/public/hub/web/3284.6ecd6ef27e2009d3fdc7.js"></script> <script async data-chunk="routes-SuperHub" src="https://cdn.readme.io/public/hub/web/7449.dae0332305a8704415a6.js"></script> <script async data-chunk="routes-SuperHub" src="https://cdn.readme.io/public/hub/web/7372.aa4569536a36087cf4a9.js"></script> <script async data-chunk="routes-SuperHub" src="https://cdn.readme.io/public/hub/web/9082.f9fa9ec2b80af1ef61bd.js"></script> <script async data-chunk="routes-SuperHub" src="https://cdn.readme.io/public/hub/web/572.bab1eda8453360a8a761.js"></script> <script async data-chunk="routes-SuperHub" src="https://cdn.readme.io/public/hub/web/5312.ca2c08ec1b75bb03c21e.js"></script> <script async data-chunk="routes-SuperHub" src="https://cdn.readme.io/public/hub/web/5548.8fb1bb5d57de6c263c67.js"></script> <script async data-chunk="routes-SuperHub" src="https://cdn.readme.io/public/hub/web/2395.6288c030d5183baa5a89.js"></script> <script async data-chunk="routes-SuperHub" src="https://cdn.readme.io/public/hub/web/6522.057d8ea587133ae98687.js"></script> <script async data-chunk="routes-SuperHub" src="https://cdn.readme.io/public/hub/web/7112.69c3d611e7e54e411b26.js"></script> <script async data-chunk="routes-SuperHub" src="https://cdn.readme.io/public/hub/web/4608.3b5a227647e78e858c3f.js"></script> <script async data-chunk="routes-SuperHub" src="https://cdn.readme.io/public/hub/web/8263.a563779273b90f66c0db.js"></script> <script async data-chunk="routes-SuperHub" src="https://cdn.readme.io/public/hub/web/1282.591f476c316bf3670bbd.js"></script> <script async data-chunk="routes-SuperHub" src="https://cdn.readme.io/public/hub/web/routes-SuperHub.a3bb3020bf29f8f67ef8.js"></script> <script async data-chunk="Header" src="https://cdn.readme.io/public/hub/web/3880.3892311d81c548cb073c.js"></script> <script async data-chunk="Header" src="https://cdn.readme.io/public/hub/web/7783.48ca7ef3a5c469d97e53.js"></script> <script async data-chunk="Header" src="https://cdn.readme.io/public/hub/web/Header.ad57d9fcd570c04fb712.js"></script> <script async data-chunk="routes-PageNotFound" src="https://cdn.readme.io/public/hub/web/routes-PageNotFound.84a460336ee9c83a7d55.js"></script> <script async data-chunk="Footer" src="https://cdn.readme.io/public/hub/web/Footer.eb98b86c4279989f5a59.js"></script> <script async data-chunk="core-icons-chevron-up-down-svg" src="https://cdn.readme.io/public/hub/web/core-icons-chevron-up-down-svg.6aae957df71e6f4c5e24.js"></script> <script async data-chunk="routes-Reference" src="https://cdn.readme.io/public/hub/web/7971.db270c2970b791e38435.js"></script> <script async data-chunk="routes-Reference" src="https://cdn.readme.io/public/hub/web/6722.e485c5aa155bd0f0ccf8.js"></script> <script async data-chunk="routes-Reference" src="https://cdn.readme.io/public/hub/web/153.e4db5a313c7d51383015.js"></script> <script async data-chunk="routes-Reference" src="https://cdn.readme.io/public/hub/web/routes-Reference.d66a49f09580aafdabb6.js"></script> <script async data-chunk="routes-Landing" src="https://cdn.readme.io/public/hub/web/4002.08d1caef58d08eaccd19.js"></script> <script async data-chunk="routes-Landing" src="https://cdn.readme.io/public/hub/web/routes-Landing.f0816876bdfbbc06801a.js"></script> <script async data-chunk="routes-Doc" src="https://cdn.readme.io/public/hub/web/6841.587d285d41ca8bab11b1.js"></script> <script async data-chunk="routes-Doc" src="https://cdn.readme.io/public/hub/web/routes-Doc.e3a4e0817a9a640436bc.js"></script> <script async data-chunk="CustomPage" src="https://cdn.readme.io/public/hub/web/6922.e8247ef6931a72e55b3e.js"></script> <script async data-chunk="CustomPage" src="https://cdn.readme.io/public/hub/web/2859.94b03b9a9585460aa921.js"></script> <script async data-chunk="core-icons-arrow-right-svg" src="https://cdn.readme.io/public/hub/web/core-icons-arrow-right-svg.eadb74658f93b4e7d75f.js"></script> <script async data-chunk="core-icons-arrow-up-right-svg" src="https://cdn.readme.io/public/hub/web/core-icons-arrow-up-right-svg.8ec73f7e322d79a2695b.js"></script> <script async data-chunk="core-icons-more-vertical-svg" src="https://cdn.readme.io/public/hub/web/core-icons-more-vertical-svg.4822b3f831e11095980d.js"></script> <script async data-chunk="core-icons-alert-circle-svg" src="https://cdn.readme.io/public/hub/web/core-icons-alert-circle-svg.4cee8264c97045599b56.js"></script> <script async data-chunk="core-icons-lock-svg" src="https://cdn.readme.io/public/hub/web/core-icons-lock-svg.70942d3ee6bad6267696.js"></script> <script async data-chunk="routes-Discuss" src="https://cdn.readme.io/public/hub/web/routes-Discuss.6a5b69949f194448cf4f.js"></script> <script async data-chunk="Page" src="https://cdn.readme.io/public/hub/web/2637.a5df1d5e240762d7981f.js"></script> <script async data-chunk="Page" src="https://cdn.readme.io/public/hub/web/Page.65c6f721688901333944.js"></script> <script async data-chunk="Editor" src="https://cdn.readme.io/public/hub/web/Editor.002979730c36f9c65ad3.js"></script> <script async data-chunk="core-icons-x-circle-svg" src="https://cdn.readme.io/public/hub/web/core-icons-x-circle-svg.abc0e0ea5b7f9dff667c.js"></script> <script async data-chunk="core-icons-suggested-edits-svg" src="https://cdn.readme.io/public/hub/web/core-icons-suggested-edits-svg.8d2d8ac2fd22ded9238d.js"></script> <script async data-chunk="routes-Changelog" src="https://cdn.readme.io/public/hub/web/routes-Changelog.3f125a62ed05cc53aec4.js"></script> <script async data-chunk="List" src="https://cdn.readme.io/public/hub/web/4674.13378da16ce7b5beba66.js"></script> <script async data-chunk="List" src="https://cdn.readme.io/public/hub/web/List.12cee315afa198c8e23e.js"></script> <script async data-chunk="core-icons-search-svg" src="https://cdn.readme.io/public/hub/web/core-icons-search-svg.ad9cac962958d30983a7.js"></script> <script async data-chunk="core-icons-custom-pages-svg" src="https://cdn.readme.io/public/hub/web/core-icons-custom-pages-svg.444e514638d9afbec182.js"></script> <script async data-chunk="routes-SuperHub-Routes" src="https://cdn.readme.io/public/hub/web/7285.703d773b1bb63ae6e7ee.js"></script> <script async data-chunk="routes-SuperHub-Routes" src="https://cdn.readme.io/public/hub/web/routes-SuperHub-Routes.5ccfbee71da134a1eeba.js"></script> <script async data-chunk="rmdx" src="https://cdn.readme.io/public/hub/web/rmdx.594ae0fac8012b876a80.js"></script> <script async data-chunk="Post" src="https://cdn.readme.io/public/hub/web/Post.cced33af5051de7f473f.js"></script> <script async data-chunk="core-icons-chevron-down-svg" src="https://cdn.readme.io/public/hub/web/core-icons-chevron-down-svg.e20b84e9871bd73d1b8c.js"></script> <script async data-chunk="routes-Tutorials" src="https://cdn.readme.io/public/hub/web/routes-Tutorials.8adf2bf8562dfeff14b4.js"></script> <script async data-chunk="core-icons-eye-off-svg" src="https://cdn.readme.io/public/hub/web/core-icons-eye-off-svg.b2b8b241b4b324dfd9c1.js"></script> <script async data-chunk="core-icons-trending-up-svg" src="https://cdn.readme.io/public/hub/web/core-icons-trending-up-svg.0dd920b0698e57f75afa.js"></script> <script async data-chunk="core-icons-callout-info-svg" src="https://cdn.readme.io/public/hub/web/core-icons-callout-info-svg.79b14e8568c9cecbc827.js"></script> <script async data-chunk="core-icons-webhook-svg" src="https://cdn.readme.io/public/hub/web/core-icons-webhook-svg.fe540ea1c09e1c0e0247.js"></script> <script async data-chunk="New" src="https://cdn.readme.io/public/hub/web/New.908bc26e77bebc585452.js"></script> <script async data-chunk="core-icons-star-svg" src="https://cdn.readme.io/public/hub/web/core-icons-star-svg.b834e1612cb2af1e174e.js"></script> <script async data-chunk="core-icons-key-svg" src="https://cdn.readme.io/public/hub/web/core-icons-key-svg.71e09670b926900508b8.js"></script> <script async data-chunk="routes-Dash-ChatGPT-CopilotInstalledPage" src="https://cdn.readme.io/public/hub/web/1231.f80a04007595f4936e51.js"></script> <script async data-chunk="routes-Dash-ChatGPT-CopilotInstalledPage" src="https://cdn.readme.io/public/hub/web/routes-Dash-ChatGPT-CopilotInstalledPage.905756735b64839665ac.js"></script> <script async data-chunk="core-icons-inbox-svg" src="https://cdn.readme.io/public/hub/web/core-icons-inbox-svg.01c2ecb759e417a98bb8.js"></script> <script async data-chunk="core-icons-message-circle-svg" src="https://cdn.readme.io/public/hub/web/core-icons-message-circle-svg.1e24c2d2eb4f9a6ede5d.js"></script></div><script id="customJS">/* eslint-disable */ // Commenting out the scripts below, don't think they work anymore /* $(window).on('pageLoad', function(e, state){ $('*:contains(":oid:"):last').html(`'${makeid(12)}'`); }); $('*:contains(":oid:"):last').html(`'${makeid(12)}'`); function makeid(length) { var result = ''; var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; var charactersLength = characters.length; for ( var i = 0; i < length; i++ ) { result += characters.charAt(Math.floor(Math.random() * charactersLength)); } return result; } */ function getScript(source, callback) { var script = document.createElement("script"); var prior = document.getElementsByTagName("script")[0]; script.async = 1; script.onload = script.onreadystatechange = function (_, isAbort) { if (isAbort || !script.readyState || /loaded|complete/.test(script.readyState)) { script.onload = script.onreadystatechange = null; script = undefined; if (!isAbort && callback) setTimeout(callback, 0); } }; script.src = source; prior.parentNode.insertBefore(script, prior); } /* Hacky script for loading Twitter widget */ function loadTwitterWidget() { var hasTwitterWidget = document.getElementsByClassName("twitter-tweet"); if (hasTwitterWidget.length > 0) { getScript("https://platform.twitter.com/widgets.js", () => {}); } } function custom404Stuff() { // the search bar takes a bit to show up, so we need to wait for it setTimeout(() => { const helpTextKBD = document.getElementById("search-key-404-clone"); const helpInnerText = document.querySelector("#SearchBert + kbd")?.innerText; if (helpTextKBD && helpInnerText) { const newText = helpInnerText.replace("\n", ""); console.debug("updating 404 text for this element:",helpTextKBD,"to this text:",helpInnerText); helpTextKBD.innerText = newText; } }, 250) } function rebaseMobileSearchButton() { var searchButton = $(".rm-Header-top .rm-SearchToggle"); var menuHolder = $(".rm-Flyout > div"); if (searchButton.length && menuHolder.length) { searchButton.appendTo(menuHolder); } } /* ********************* Populate marketing site URL in GLP logo ********************* */ function updateGLPLogoLink() { if (location.pathname !== "/") return; document.querySelector('a.rm-Logo:not([class^="Mobile"])').href = "https://readme.com"; } /* ********************* Load Changelog from RSS feed ********************* */ function loadChangelogPosts() { if (location.pathname !== "/") return; const changelogRss = "/main/changelog.rss"; const changelogIcon = { added: { color: "green", icon: "plus1" }, improved: { color: "purple", icon: "heart1" }, fixed: { color: "blue", icon: "check1" }, deprecated: { color: "yellow", icon: "alert-triangle" }, }; const parser = new RSSParser({ customFields: { item: ["type"] } }); parser.parseURL(changelogRss, function (err, feed) { if (err) throw err; const parent = document.getElementById("changelogs-target"); const changelogEntries = []; for (let i = 0; i <= 2; i += 1) { const entry = feed.items[i]; const changelogPost = document.createElement("li"); changelogPost.className = "flex flex_col ChangelogPost"; if (entry.type) { const changelogType = document.createElement("div"); changelogType.className = "flex flex_center ChangelogPost-tag"; changelogType.style = "gap: var(--xs)"; const typeIcon = document.createElement("span"); const { color, icon } = changelogIcon[entry.type]; typeIcon.className = `TileIcon TileIcon_sm TileIcon_${color} icon icon-${icon}`; const typeText = document.createElement("span"); typeText.innerText = entry.type; typeText.style = "text-transform: capitalize;"; changelogType.appendChild(typeIcon); changelogType.appendChild(typeText); changelogPost.appendChild(changelogType); } const changelogTitle = document.createElement("a"); changelogTitle.className = "ChangelogPost-link"; changelogTitle.href = entry.link; changelogTitle.innerText = entry.title; const changelogTitleArrow = document.createElement("i"); changelogTitleArrow.className = "icon icon-arrow-right2"; changelogTitle.appendChild(changelogTitleArrow); changelogPost.appendChild(changelogTitle); const changelogDate = document.createElement("span"); changelogDate.className = "ChangelogPost-date"; changelogDate.innerText = timeago.format(entry.isoDate); changelogPost.appendChild(changelogDate); changelogEntries.push(changelogPost); } while (parent.firstChild) { parent.removeChild(parent.firstChild); } changelogEntries.forEach(function (entry) { parent.appendChild(entry); }); }); } /* ********************* Generate Nav ********************* */ const links = [ { href: "https://docs.readme.com", icon: "icon-landing-page-2", text: "Home", }, { href: "https://docs.readme.com/main/docs", icon: "icon-guides", text: "Product Guides", }, { href: "https://docs.readme.com/ent/docs", icon: "icon-guides", text: "Enterprise Guides", }, { href: "https://docs.readme.com/main/recipes", icon: "icon-recipes", text: "Recipes", }, { href: "https://docs.readme.com/main/reference", icon: "icon-references", text: "API Reference", }, { href: "https://docs.readme.com/main/changelog", icon: "icon-changelog", text: "Changelog", }, { href: "https://docs.readme.com/main/discuss", icon: "icon-discussions", text: "Discussions", }, { href: "https://docs.readme.com/rdmd/docs", icon: "icon-markdown", text: "ReadMe Markdown", }, ]; function populateMainNav() { const mainNav = document.querySelector('.rm-Header nav:first-child'); const mobileNav = document.querySelector(".rm-Flyout > div"); // Completely replaces nav function cleanUpdate() { // Create new links let mainLinkEls = ""; let mobileLinkEls = ""; links.map(({ href, icon, text }) => { // determine if link is active let isActive = false; const hrefUrl = new URL(href); if (location.pathname.includes(hrefUrl.pathname)) isActive = true; // landing page quirk if (hrefUrl.pathname === "/" && location.pathname !== "/") isActive = false; mainLinkEls += `<a class="Button Button_md Button_slate_text rm-Header-bottom-link ${ isActive ? "active" : "" }" href=${hrefUrl.pathname}><i class=${icon}></i><span>${text}</span></a>`; mobileLinkEls += `<a class="NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- ${ isActive ? "active" : "" }" href=${ hrefUrl.pathname } target="_self"><i class="NavItem-item-anchorzz3banOxXKjr ${icon}"></i><span class="NavItem-textSlZuuL489uiw">${text}</span></a>`; }); // Replace main nav mainNav.innerHTML = mainLinkEls; // Add standard links (customer stories, logo, etc.) onto mobile nav mobileLinkEls += '<hr class="MobileFlyout-divider10xf7R2X1MeW">'; mobileLinkEls += '<a class="NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- NavItem_dropdown-muted1xJVuczwGc74" href="https://readme.com/customers" rel="noopener" target="_blank" to="https://readme.com/customers">Customer Stories</a>'; mobileLinkEls += '<a class="NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- NavItem_dropdown-muted1xJVuczwGc74" href="https://readme.com/pricing" rel="noopener" target="_blank" to="https://readme.com/pricing">Pricing</a>'; // TODO: figure out how to add nav item for user controls mobileLinkEls += ""; mobileLinkEls += '<a class="MobileFlyout-logo3Lq1eTlk1K76 Header-logo1Xy41PtkzbdG rm-Logo" href="https://readme.com" target="_self"><img alt="ReadMe Logo" class="Header-logo-img3YvV4lcGKkeb rm-Logo-img" src="https://files.readme.io/68da258-644ef91-readme-white_1.svg"></a>'; // Replace mobile nav mobileNav.innerHTML = mobileLinkEls; } console.debug("about to update nav for ", location.pathname); if (location.pathname.startsWith("/main")) { // for the main project, we take a more surgical approach to constructing the nav try { // Rename guides node, create home and enterprise nodes and insert them function insertNavLinks(navNode) { // if we've already inserted the nav links, don't do anything if (navNode.firstChild.innerText.trim() === "Home") return; navNode.firstChild.childNodes[1].innerText = "Product Guides"; const baseNode = navNode.firstChild.cloneNode(true); links.map((link, i) => { const hrefUrl = new URL(link.href); // don't create nodes for existing main project if (hrefUrl.pathname.startsWith("/main")) return true; const newNode = baseNode.cloneNode(true); newNode.classList.remove("active"); newNode.removeAttribute("aria-current"); newNode.href = hrefUrl.pathname; newNode.childNodes[1].innerText = link.text; newNode.firstChild.classList.replace("icon-guides", link.icon); const nodeToInsertBefore = navNode.childNodes[i] || null; navNode.insertBefore(newNode, nodeToInsertBefore); }); } console.debug("surgical nav bar update"); insertNavLinks(mainNav); insertNavLinks(mobileNav); } catch (e) { console.debug("clean nav bar update due to surgical update error"); cleanUpdate(); } } else { console.debug("clean nav bar update due to non-main project route"); cleanUpdate(); } mainNav.style.visibility = "visible"; } $(window).on("pageLoad", function (e, state) { console.debug("pageLoad event for", window.location.pathname, state); loadTwitterWidget(); // rebaseMobileSearchButton(); loadChangelogPosts(); populateMainNav(); updateGLPLogoLink(); custom404Stuff(); }); </script><script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); </script><script>ga('create', 'UA-67363401-1', 'auto', {'name': 'custom'}); $(window).on('pageLoad', function(e, state){ ga('custom.send', 'pageview', window.location.pathname); }); </script><!-- <script src="https://code.jquery.com/jquery-2.1.4.min.js" crossorigin="anonymous"></script> <script> $.noConflict(); </script> --> <script id="hub-me" type="application/json" data-json="{"loggedIn":false,"search":{"app":"T28YKFATPY","token":"YTE0NjI2MDVkYTI0ZTBlNWFlODQyMzU4YmNkNTZhZjNiY2Y4YWNiYWFiZGM5OGE4NDcwNmFjMGViNGJlOWNlYXRhZ0ZpbHRlcnM9KHByb2plY3Q6NWY3Y2U5ZTNhNTUwNGQwNDE0ZDAyNWQwLHByb2plY3Q6NjIwNTk5M2Q3ZmI4ZDcwMDI5YmJhNDliLHByb2plY3Q6NWQ4OTA3ZTcxOTM3ZjgwMDEyMjc3YjcyKSwodmVyc2lvbjpub25lLHZlcnNpb246NjIwNTZkZWUyMzBlMDcwMDcyMThiZjRjLHZlcnNpb246NjIwNTk5M2Q3ZmI4ZDcwMDI5YmJhMDQ5LHZlcnNpb246NWZkZjc2MTAxMzQzMjIwMDczODlhNzFiKSwoaGlkZGVuOm5vbmUsaGlkZGVuOmZhbHNlKSwoaW5kZXg6Q3VzdG9tUGFnZSxpbmRleDpQYWdlLGluZGV4OkJsb2csaW5kZXg6RGlzY3VzcyxpbmRleDpUdXRvcmlhbCk=","filters":"tagFilters=(project:5f7ce9e3a5504d0414d025d0,project:6205993d7fb8d70029bba49b,project:5d8907e71937f80012277b72),(version:none,version:62056dee230e07007218bf4c,version:6205993d7fb8d70029bba049,version:5fdf7610134322007389a71b),(hidden:none,hidden:false),(index:CustomPage,index:Page,index:Blog,index:Discuss,index:Tutorial)","metaData":[{"modules":{"landing":false,"docs":true,"examples":true,"reference":true,"changelog":true,"discuss":true,"suggested_edits":true,"logs":false,"custompages":true,"tutorials":true,"graphql":false},"id":"5f7ce9e3a5504d0414d025d0","name":"ReadMe","subdomain":"developers","subpath":"main","nav_names":{"docs":"","reference":"","changelog":"","discuss":"","tutorials":"","recipes":""}},{"modules":{"landing":false,"docs":true,"examples":true,"reference":false,"graphql":false,"changelog":false,"discuss":false,"suggested_edits":true,"logs":false,"custompages":true,"tutorials":false},"id":"6205993d7fb8d70029bba49b","name":"Enterprise","subdomain":"enterprise-docs","subpath":"ent","nav_names":{"docs":"","reference":"","changelog":"","discuss":"","tutorials":"","recipes":""}},{"modules":{"logs":false,"suggested_edits":true,"discuss":false,"changelog":false,"reference":false,"examples":true,"docs":true,"landing":false,"custompages":true,"tutorials":false,"graphql":false},"id":"5d8907e71937f80012277b72","name":"ReadMe Markdown","subdomain":"rdmd","subpath":"","nav_names":{"discuss":"","changelog":"","reference":"","docs":"","tutorials":"","recipes":""}}]},"intercom":{"intercom":"m6855w1q","intercom_secure_emailonly":false}}"></script><script id="readme-data-baseUrl" type="application/json" data-json=""/main""></script></body></html>