CINXE.COM
omg.lol - An amazing API for an amazing service
<!DOCTYPE html> <html lang="en"> <head> <title>omg.lol - An amazing API for an amazing service</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <meta property="og:type" content="website"> <meta property="og:title" content="omg.lol - An amazing API for an amazing service"> <meta property="og:url" content="https://home.omg.lol/"> <meta property="og:description" content="Beep boop programming stuff"> <meta property="og:image" content="https://cdn.cache.lol/img/social_card_2022-06-23.png"> <meta name="twitter:profile" content="summary_large_image"> <meta name="twitter:site" content="@omgdotlol"> <meta name="twitter:creator" content="@omgdotlol"> <meta name="twitter:title" content="omg.lol - An amazing API for an amazing service"> <meta name="twitter:description" content="Beep boop programming stuff"> <meta name="twitter:image" content="https://cdn.cache.lol/img/social_card_2022-06-23.png"> <link rel="apple-touch-icon" sizes="180x180" href="https://cdn.cache.lol/favicons/omg.lol/apple-touch-icon.png"> <link rel="icon" type="image/png" sizes="32x32" href="https://cdn.cache.lol/favicons/omg.lol/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="16x16" href="https://cdn.cache.lol/favicons/omg.lol/favicon-16x16.png"> <link rel="manifest" href="https://cdn.cache.lol/favicons/omg.lol/site.webmanifest"> <link rel="mask-icon" href="https://cdn.cache.lol/favicons/omg.lol/safari-pinned-tab.svg" color="#ff69ad"> <link rel="shortcut icon" href="https://cdn.cache.lol/favicons/omg.lol/favicon.ico"> <meta name="apple-mobile-web-app-title" content="omg.lol"> <meta name="application-name" content="omg.lol"> <meta name="msapplication-TileColor" content="#343a40"> <meta name="msapplication-config" content="https://cdn.cache.lol/favicons/omg.lol/browserconfig.xml"> <meta name="theme-color" content="#343a40"> <link rel="stylesheet" href="https://cdn.cache.lol/css/style.css?v=2023-01-29"> <style> html { scroll-behavior: smooth; } .active { color: #74b816 !important; } #toc_scrollable { overflow: auto; height: calc(100vh - 15em); margin-bottom: 2em; padding-bottom: 2em; scrollbar-gutter: stable both-edges; overflow-x: hidden; -webkit-mask-image: linear-gradient(to bottom, black 90%, transparent 100%); mask-image: linear-gradient(to bottom, black 90%, transparent 100%); transition: height .15s ease-in-out; } #toc_scrollable::-webkit-scrollbar { width: .2em; } #toc_scrollable::-webkit-scrollbar-track { box-shadow: inset 0 0 6px #343a40; } #toc_scrollable::-webkit-scrollbar-thumb { border-radius: 1em; background-color: #495057; } #api-nav a { text-decoration: none; } #api-nav ul { margin: 0 0 1em .5em; } #api-nav li { font-size: 90%; } #api-nav h3 { margin: 1em 0 .1em 0; } .response { margin-bottom: calc(var(--spacing) * 1.5); } .wrap { white-space: pre-wrap; overflow-wrap: break-word; word-break: break-word; } .method, .parameter, .auth, .no-auth { font-size: 80%; text-transform: uppercase; white-space: nowrap; color: var(--gray-9); padding: .25em .35em; border-radius: .13em; margin-right: .5em; } .inline { margin-right: 2px; } .method.get { background: var(--green-4); } .method.post { background: var(--orange-4); } .method.patch { background: var(--yellow-4); } .method.delete { background: var(--red-4); } h2 .method { font-family: 'Lato'; margin: 0; } .parameter { background: var(--cyan-4); margin: 0 .2em; } .auth { background: var(--indigo-3); } .no-auth { background: var(--teal-4); } #toc { display: flex; align-items: stretch; flex-grow: 0; } @media only screen and (max-width: 700px) { #toc { display: none; } .box { margin: 0; padding: 0; } } </style> <script src="https://cdn.cache.lol/js/main.js"></script> </head> <body> <script> const theme = localStorage.getItem('color_scheme') || 'dark-mode'; document.body.className = theme; </script> <div class="fixed" style="--width: 70em;"> <header> <div class="flex"> <div class="box logotype space basis" style="--basis: 3em;"> <p><a href="https://home.omg.lol/">omg<span class="pink-5-fg">.</span>lol <img src="https://cdn.cache.lol/img/prami.svg" alt="Prami"></a></p> </div> <div class="box space right basis" style="--basis: 9em;"> <nav class="horizontal"> <ul> <li><span name="color_mode_button" id="color_mode_button" onclick="toggle_color_scheme(true)" title="Toggle dark/light mode"></span></li> <li><a class="help" href="https://home.omg.lol/info"><i class="fa-solid fa-block-question"></i><span class="dashboard-label"> Help</span></a></li> <li><a href="https://home.omg.lol/sign-up">Sign up</a></li> <li><a href="https://home.omg.lol/sign-in">Sign in</a></li> </ul> </nav> </div> </div> </header> <main> <div id="api_container" class="flex transparent"> <div id="toc" class="box basis transparent" style="--basis: 19em; align-items: flex-start;"> <div id="toc_scrollable" style="position: sticky; top: 1em; padding-right: 1em;"> <nav id="api-nav"> <h3><a href="#account">Account</a></h3> <ul> <li><a href="#token-get-account-retrieve-account-information">Retrieve account information</a></li> <li><a href="#token-get-account-retrieve-addresses-for-an-account">Retrieve addresses for an account</a></li> <li><a href="#token-get-account-retrieve-the-account-name">Retrieve the account name</a></li> <li><a href="#token-post-account-set-the-account-name">Set the account name</a></li> <li><a href="#token-get-account-retrieve-active-sessions">Retrieve active sessions</a></li> <li><a href="#token-delete-account-remove-a-session">Remove a session</a></li> <li><a href="#token-get-account-retrieve-account-settings">Retrieve account settings</a></li> <li><a href="#token-post-account-set-account-settings">Set account settings</a></li> </ul> <h3><a href="#address">Address</a></h3> <ul> <li><a href="#noauth-get-address-retrieve-address-availability">Retrieve address availability</a></li> <li><a href="#noauth-get-address-retrieve-address-expiration">Retrieve address expiration</a></li> <li><a href="#noauth-get-address-retrieve-public-information-about-an-address">Retrieve public information about an address</a></li> <li><a href="#token-get-address-retrieve-private-information-about-an-address">Retrieve private information about an address</a></li> </ul> <h3><a href="#dns">DNS</a></h3> <ul> <li><a href="#token-get-dns-retrieve-dns-records-for-an-address">Retrieve DNS records for an address</a></li> <li><a href="#token-post-dns-create-a-new-dns-record">Create a new DNS record</a></li> <li><a href="#token-patch-dns-edit-an-existing-dns-record">Edit an existing DNS record</a></li> <li><a href="#token-delete-dns-delete-a-dns-record">Delete a DNS record</a></li> </ul> <h3><a href="#directory">Directory</a></h3> <ul> <li><a href="#noauth-get-directory-retreive-the-address-directory">Retreive the address directory</a></li> </ul> <h3><a href="#email">Email</a></h3> <ul> <li><a href="#token-get-email-retrieve-forwarding-addresses">Retrieve forwarding address(es)</a></li> <li><a href="#token-post-email-set-forwarding-addresses">Set forwarding address(es)</a></li> </ul> <h3><a href="#now-page">Now Page</a></h3> <ul> <li><a href="#noauth-get-now-page-retrieve-/now-page">Retrieve /now Page</a></li> <li><a href="#noauth-get-now-page-retrieve-the-now.garden-listing">Retrieve the now.garden listing</a></li> <li><a href="#token-post-now-page-update-/now-page">Update /now Page</a></li> </ul> <h3><a href="#oauth">OAuth</a></h3> <ul> <li><a href="#token-get-oauth-exchange-an-authorization-code-for-an-access-token">Exchange an authorization code for an access token</a></li> </ul> <h3><a href="#purls">PURLs</a></h3> <ul> <li><a href="#token-post-purls-create-a-new-purl">Create a new PURL</a></li> <li><a href="#token-get-purls-retrieve-a-specific-purl">Retrieve a specific PURL</a></li> <li><a href="#token-get-purls-retrieve-a-list-of-purls-for-an-address">Retrieve a list of PURLs for an address</a></li> <li><a href="#token-delete-purls-delete-a-purl">Delete a PURL</a></li> </ul> <h3><a href="#pastebin">Pastebin</a></h3> <ul> <li><a href="#noauth-get-pastebin-retrieve-a-specific-paste">Retrieve a specific paste</a></li> <li><a href="#token-get-pastebin-retrieve-an-entire-pastebin">Retrieve an entire Pastebin</a></li> <li><a href="#noauth-get-pastebin-retrieve-listed-pastes-in-a-pastebin">Retrieve listed pastes in a Pastebin</a></li> <li><a href="#token-post-pastebin-create-or-update-a-paste-in-a-pastebin">Create or update a paste in a Pastebin</a></li> <li><a href="#token-delete-pastebin-delete-a-paste-from-a-pastebin">Delete a paste from a Pastebin</a></li> </ul> <h3><a href="#preferences">Preferences</a></h3> <ul> <li><a href="#token-post-preferences-save-an-individual-preference">Save an individual preference</a></li> </ul> <h3><a href="#service">Service</a></h3> <ul> <li><a href="#noauth-get-service-retrieve-service-information-and-statistics">Retrieve service information and statistics</a></li> </ul> <h3><a href="#statuslog">Statuslog</a></h3> <ul> <li><a href="#noauth-get-statuslog-retrieve-an-individual-status-for-an-address">Retrieve an individual status for an address</a></li> <li><a href="#noauth-get-statuslog-retrieve-all-statuses-for-an-address">Retrieve all statuses for an address</a></li> <li><a href="#token-post-statuslog-share-a-new-status">Share a new status</a></li> <li><a href="#token-post-statuslog-share-a-new-status-from-a-single-status-string">Share a new status from a single status string</a></li> <li><a href="#token-patch-statuslog-update-an-existing-status">Update an existing status</a></li> <li><a href="#noauth-get-statuslog-retrieve-a-statuslog-bio">Retrieve a Statuslog bio</a></li> <li><a href="#token-post-statuslog-update-a-statuslog-bio">Update a Statuslog bio</a></li> <li><a href="#noauth-get-statuslog-retrieve-the-entire-statuslog">Retrieve the entire statuslog</a></li> <li><a href="#noauth-get-statuslog-retrieve-everyone’s-latest-status">Retrieve everyone’s latest status</a></li> </ul> <h3><a href="#theme">Theme</a></h3> <ul> <li><a href="#noauth-get-theme-retrieve-a-list-of-profile-themes">Retrieve a list of profile themes</a></li> <li><a href="#noauth-get-theme-retrieve-information-about-a-theme">Retrieve information about a theme</a></li> <li><a href="#noauth-get-theme-retrieve-a-theme-preview">Retrieve a theme preview</a></li> </ul> <h3><a href="#web">Web</a></h3> <ul> <li><a href="#token-get-web-retrieve-web-page-content">Retrieve web page content</a></li> <li><a href="#token-post-web-update-web-page-content-and-publish">Update web page content and publish</a></li> <li><a href="#token-post-web-update-web-page-content-without-publishing">Update web page content without publishing</a></li> <li><a href="#token-post-web-upload-a-profile-picture">Upload a profile picture</a></li> </ul> <h3><a href="#weblog">Weblog</a></h3> <ul> <li><a href="#token-get-weblog-retrieve-weblog-entries">Retrieve weblog entries</a></li> <li><a href="#token-post-weblog-create-a-new-weblog-entry">Create a new weblog entry</a></li> <li><a href="#token-get-weblog-retrieve-a-weblog-entry">Retrieve a weblog entry</a></li> <li><a href="#noauth-get-weblog-retrieve-the-latest-weblog-post">Retrieve the latest weblog post</a></li> <li><a href="#token-delete-weblog-delete-a-weblog-entry">Delete a weblog entry</a></li> <li><a href="#token-get-weblog-retrieve-weblog-configuration">Retrieve weblog configuration</a></li> <li><a href="#token-post-weblog-update-weblog-configuration">Update weblog configuration</a></li> <li><a href="#token-get-weblog-retrieve-weblog-template">Retrieve weblog template</a></li> <li><a href="#token-post-weblog-update-weblog-template">Update weblog template</a></li> </ul> </nav> </div> </div> <div id="documentation" class="box transparent"> <h1>The <span class="logotype">omg<span class="pink-5-fg">.</span>lol</span> API</h1> <p>The omg.lol API is a modern, RESTful, friendly thing. It offers endpoints to manage all aspects of your omg.lol service, and responses include multiple elements that aim to make life easy for developers (including a clear message that indicates what happened with your request).</p> <p>Endpoints requiring authentication with your API key are marked as <span class="auth inline"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span>, and endpoints that don’t require authentication are marked as <span class="no-auth inline"><i class="fa-solid fa-lock-keyhole-open"></i> No Auth</span>. Some endpoints work either way, with unauthenticated requests providing public data and authenticated requests to the same endpoint providing private data.</p> <p>You can grab a machine-readable copy of the API specification in <a href="https://github.com/neatnik/omg.lol/tree/main/api">our GitHub repository</a>.</p> <div class="container yellow-3-bg gray-9-fg shadowed"> <i class="fa-duotone fa-fw fa-circle-exclamation"></i> <strong>Careful!</strong> The API is still being developed, and endpoints may change.</a> </div> <div class=""> <h1 id="account">Account</h1> <p style="flex-grow: 1;">Obtain information about and make changes to your account</p> </div> <div class="container gray-7-bg gray-3-fg"> <section id="token-get-account-retrieve-account-information"><h2>Account · Retrieve account information</h2><p>Get information about your account</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method get">GET</span> <span class="wrap">/account/<span class="parameter">email</span>/info </span> </p> <div class="response"> <h4><strong id="account-retrieve-account-information-retrieve-account-information">Retrieve account information</strong></h4> <pre><code class="language-bash">curl --location --request GET --header 'Authorization: Bearer api_key' 'https://api.omg.lol/account/person@example.com/info'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Here is the account info that you requested.", "email": "person@example.com", "name": "Example", "created": { "unix_epoch_time": "1553358104", "iso_8601_time": "2019-03-23T16:21:44+00:00", "rfc_2822_time": "Sat, 23 Mar 2019 16:21:44 +0000", "relative_time": "2 years and 9 months ago" }, "settings": { "communication": "email_everything" } } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="token-get-account-retrieve-addresses-for-an-account"><h2>Account · Retrieve addresses for an account</h2><p>Get all addresses associated with your account.</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method get">GET</span> <span class="wrap">/account/<span class="parameter">email</span>/addresses </span> </p> <div class="response"> <h4><strong id="account-retrieve-addresses-for-an-account-retrieve-addresses-for-an-account">Retrieve addresses for an account</strong></h4> <pre><code class="language-bash">curl --location --request GET --header 'Authorization: Bearer api_key' 'https://api.omg.lol/account/person@example.com/addresses'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": [ { "address": "lifetime-address", "message": "This address does not expire.", "registration": { "message": "This address was registered 2 years and 11 months ago.", "unix_epoch_time": "1553358201", "iso_8601_time": "2019-03-23T16:23:21+00:00", "rfc_2822_time": "Sat, 23 Mar 2019 16:23:21 +0000", "relative_time": "2 years and 11 months ago" }, "expiration": { "expired": false, "will_expire": false } }, { "address": "compulsoryvotingiscool", "message": "This address does not expire.", "registration": { "message": "This address was registered 1 week and 4 days ago.", "unix_epoch_time": "1645552219", "iso_8601_time": "2022-02-22T17:50:19+00:00", "rfc_2822_time": "Tue, 22 Feb 2022 17:50:19 +0000", "relative_time": "1 week and 4 days ago" }, "expiration": { "expired": false, "will_expire": false } }, { "address": "haydensato", "message": "This address does not expire.", "registration": { "message": "This address was registered 6 months and 2 weeks ago.", "unix_epoch_time": "1628978677", "iso_8601_time": "2021-08-14T22:04:37+00:00", "rfc_2822_time": "Sat, 14 Aug 2021 22:04:37 +0000", "relative_time": "6 months and 2 weeks ago" }, "expiration": { "expired": false, "will_expire": false } } ] }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="token-get-account-retrieve-the-account-name"><h2>Account · Retrieve the account name</h2><p>Get the name associated with the account</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method get">GET</span> <span class="wrap">/account/<span class="parameter">email</span>/name </span> </p> <div class="response"> <h4><strong id="account-retrieve-the-account-name-retrieve-the-account-name">Retrieve the account name</strong></h4> <pre><code class="language-bash">curl --location --request GET --header 'Authorization: Bearer api_key' 'https://api.omg.lol/account/person@example.com/name'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "The name on this account is Example Person.", "name": "Example Person" } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="token-post-account-set-the-account-name"><h2>Account · Set the account name</h2><p>Update the name associated with the account</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method post">POST</span> <span class="wrap">/account/<span class="parameter">email</span>/name </span> </p> <div class="response"> <h4><strong id="account-set-the-account-name-set-the-account-name">Set the account name</strong></h4> <pre><code class="language-bash">curl --location --request POST --header 'Authorization: Bearer api_key' 'https://api.omg.lol/account/person@example.com/name' --data '{"name": "Example"}'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Your name has been set to Example.", "name": "Example" } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="token-get-account-retrieve-active-sessions"><h2>Account · Retrieve active sessions</h2><p>Get all sessions associated with the account</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method get">GET</span> <span class="wrap">/account/<span class="parameter">email</span>/sessions </span> </p> <div class="response"> <h4><strong id="account-retrieve-active-sessions-retrieve-active-sessions">Retrieve active sessions</strong></h4> <pre><code class="language-bash">curl --location --request GET --header 'Authorization: Bearer api_key' 'https://api.omg.lol/account/person@example.com/sessions'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": [ { "session_id": "6040bebeac42816f5173ecd4821372d4", "user_agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.55 Mobile Safari/537.36", "created_ip": "10.0.222.41", "created_on": "1639341544", "expires_on": "1670877544" }, { "session_id": "f3aa272bcf6c42d2b78ce096453d8e53", "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.1 Safari/605.1.15", "created_ip": "10.0.222.42", "created_on": "1639349084", "expires_on": "1670885084" } ] }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="token-delete-account-remove-a-session"><h2>Account · Remove a session</h2><p>Delete a session</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method delete">DELETE</span> <span class="wrap">/account/<span class="parameter">email</span>/sessions/<span class="parameter">session_id</span> </span> </p> <div class="response"> <h4><strong id="account-remove-a-session-remove-a-session">Remove a session</strong></h4> <pre><code class="language-bash">curl --location --request DELETE --header 'Authorization: Bearer api_key' 'https://api.omg.lol/account/person@example.com/sessions/8138f2c3e845d5a094ec2a5b2ac0ab04'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "OK, we’ve deleted that session." } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="token-get-account-retrieve-account-settings"><h2>Account · Retrieve account settings</h2><p>Get settings associated with the account</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method get">GET</span> <span class="wrap">/account/<span class="parameter">email</span>/settings </span> </p> <div class="response"> <h4><strong id="account-retrieve-account-settings-retrieve-account-settings">Retrieve account settings</strong></h4> <pre><code class="language-bash">curl --location --request GET --header 'Authorization: Bearer api_key' 'https://api.omg.lol/account/person@example.com/settings'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Here are the settings for this account.", "settings": { "owner": "person@example.com", "communication": "email_ok", "date_format": null, "web_editor": null } } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="token-post-account-set-account-settings"><h2>Account · Set account settings</h2><p>Update settings associated with the account</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method post">POST</span> <span class="wrap">/account/<span class="parameter">email</span>/settings </span> </p> <div class="response"> <h4><strong id="account-set-account-settings-set-account-settings">Set account settings</strong></h4> <pre><code class="language-bash">curl --location --request POST --header 'Authorization: Bearer api_key' 'https://api.omg.lol/account/person@example.com/settings' --data '{"communication": "email_ok", "web_editor": "advanced"}'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "OK, your settings have been updated." } }</code></pre> </div> </section></div> <div class=""> <h1 id="address">Address</h1> <p style="flex-grow: 1;">Obtain information about and make changes to addresses</p> </div> <div class="container gray-7-bg gray-3-fg"> <section id="noauth-get-address-retrieve-address-availability"><h2>Address · Retrieve address availability</h2><p>Get information about the availability of an address</p><p> <span class="no-auth"><i class="fa-solid fa-lock-keyhole-open"></i> No Auth</span> <span class="method get">GET</span> <span class="wrap">/address/<span class="parameter">address</span>/availability </span> </p> <div class="response"> <h4><strong id="address-retrieve-address-availability-address-is-available">Address is available</strong></h4> <pre><code class="language-bash">curl --location --request GET 'https://api.omg.lol/address/available-address/availability'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "This address is available.", "address": "available-address", "available": true, "availability": "available" } }</code></pre> </div> <div class="response"> <h4><strong id="address-retrieve-address-availability-address-is-available-but-requires-encoding">Address is available but requires encoding</strong></h4> <pre><code class="language-bash">curl --location --request GET 'https://api.omg.lol/address/🥰/availability'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "This address is available, but it must be encoded in Punycode (as xn--js9h).", "punycode": "xn--js9h", "see-also": [ "https://www.omg.lol/info/addresses", "https://datatracker.ietf.org/doc/html/rfc3492" ], "address": "🥰", "available": true, "availability": "available" } }</code></pre> </div> <div class="response"> <h4><strong id="address-retrieve-address-availability-address-is-not-available">Address is not available</strong></h4> <pre><code class="language-bash">curl --location --request GET 'https://api.omg.lol/address/penelope/availability'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "This address is not available.", "address": "penelope", "available": false, "availability": "unavailable" } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="noauth-get-address-retrieve-address-expiration"><h2>Address · Retrieve address expiration</h2><p>Get the expiration date for an address</p><p> <span class="no-auth"><i class="fa-solid fa-lock-keyhole-open"></i> No Auth</span> <span class="method get">GET</span> <span class="wrap">/address/<span class="parameter">address</span>/expiration </span> </p> <div class="response"> <h4><strong id="address-retrieve-address-expiration-address-is-not-near-expiration">Address is not near expiration</strong></h4> <pre><code class="language-bash">curl --location --request GET 'https://api.omg.lol/address/foobar/expiration'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "This address is not near expiration.", "expired": false } }</code></pre> </div> <div class="response"> <h4><strong id="address-retrieve-address-expiration-address-expires-within-the-next-six-months">Address expires within the next six months</strong></h4> <pre><code class="language-bash">curl --location --request GET 'https://api.omg.lol/address/prami/expiration'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "This address expires within the next six months.", "expired": false } }</code></pre> </div> <div class="response"> <h4><strong id="address-retrieve-address-expiration-address-has-expired">Address has expired</strong></h4> <pre><code class="language-bash">curl --location --request GET 'https://api.omg.lol/address/expired-address/expiration'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "This address expired 3 weeks and 4 days ago.", "expired": true } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="noauth-get-address-retrieve-public-information-about-an-address"><h2>Address · Retrieve public information about an address</h2><p>Get limited (public) information about an address when the request is not authenticated</p><p> <span class="no-auth"><i class="fa-solid fa-lock-keyhole-open"></i> No Auth</span> <span class="method get">GET</span> <span class="wrap">/address/<span class="parameter">address</span>/info </span> </p> <div class="response"> <h4><strong id="address-retrieve-public-information-about-an-address-retrieve-public-information-about-an-address">Retrieve public information about an address</strong></h4> <pre><code class="language-bash">curl --location --request GET 'https://api.omg.lol/address/foobar/info'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "address": "foobar", "message": "This address was registered 4 years and 4 months ago.", "registration": { "message": "This address was registered 4 years, 4 months and 3 weeks ago.", "unix_epoch_time": 1554448408, "iso_8601_time": "2019-04-05T07:13:28+00:00", "rfc_2822_time": "Fri, 05 Apr 2019 07:13:28 +0000", "relative_time": "4 years, 4 months and 3 weeks ago" }, "expiration": { "message": "This address is not near expiration.", "expired": false }, "verification": { "message": "This address has been verified.", "verified": true } } }</code></pre> </div> <div class="response"> <h4><strong id="address-retrieve-public-information-about-an-address-retrieve-public-information-about-an-expired-address">Retrieve public information about an expired address</strong></h4> <pre><code class="language-bash">curl --location --request GET 'https://api.omg.lol/address/expired-address/info'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "address": "expired-address", "message": "This address was registered 1 year and 3 weeks ago.", "registration": { "message": "This address was registered 1 year, 3 weeks and 4 days ago.", "unix_epoch_time": 1659647768, "iso_8601_time": "2022-08-04T21:16:08+00:00", "rfc_2822_time": "Thu, 04 Aug 2022 21:16:08 +0000", "relative_time": "1 year, 3 weeks and 4 days ago" }, "expiration": { "message": "This address expired 3 weeks and 4 days ago.", "expired": true, "unix_epoch_time": 1691183768, "iso_8601_time": "2023-08-04T21:16:08+00:00", "rfc_2822_time": "Fri, 04 Aug 2023 21:16:08 +0000", "relative_time": "3 weeks, 4 days and 14 hours ago" } } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="token-get-address-retrieve-private-information-about-an-address"><h2>Address · Retrieve private information about an address</h2><p>Get comprehensive information about an address when the request is authenticated</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method get">GET</span> <span class="wrap">/address/<span class="parameter">address</span>/info </span> </p> <div class="response"> <h4><strong id="address-retrieve-private-information-about-an-address-retrieve-private-information-about-an-address">Retrieve private information about an address</strong></h4> <pre><code class="language-bash">curl --location --request GET --header 'Authorization: Bearer api_key' 'https://api.omg.lol/address/foobar/info'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "address": "foobar", "message": "This address was registered 3 years and 9 months ago and expires in 14 years, 11 months and 5 days.", "registration": { "message": "This address was registered 3 years, 9 months and 3 weeks ago.", "unix_epoch_time": "1554448408", "iso_8601_time": "2019-04-05T07:13:28+00:00", "rfc_2822_time": "Fri, 05 Apr 2019 07:13:28 +0000", "relative_time": "3 years, 9 months and 3 weeks ago" }, "expiration": { "message": "This address expires in 14 years, 11 months and 5 days.", "expired": false, "will_expire": true, "unix_epoch_time": "2145916800", "iso_8601_time": "2038-01-01T00:00:00+00:00", "rfc_2822_time": "Fri, 01 Jan 2038 00:00:00 +0000", "relative_time": "14 years, 11 months and 5 days" }, "verification": { "message": "This address has been verified.", "verified": true }, "owner": "634b9e7a7fbce" } }</code></pre> </div> </section></div> <div class=""> <h1 id="dns">DNS</h1> <p style="flex-grow: 1;">Requests for managing DNS.</p> </div> <div class="container gray-7-bg gray-3-fg"> <section id="token-get-dns-retrieve-dns-records-for-an-address"><h2>DNS · Retrieve DNS records for an address</h2><p>Get a list of all of your DNS records.</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method get">GET</span> <span class="wrap">/address/<span class="parameter">address</span>/dns </span> </p> <div class="response"> <h4><strong id="dns-retrieve-dns-records-for-an-address-retrieve-dns-records-for-an-address">Retrieve DNS records for an address</strong></h4> <pre><code class="language-bash">curl --location --request GET --header 'Authorization: Bearer api_key' 'https://api.omg.lol/address/foobar/dns'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Here are the DNS records for foobar.", "dns": [ { "id": "2857074", "type": "A", "name": "foobar", "data": "192.167.0.1", "priority": null, "ttl": "3600", "created_at": "2022-11-26T04:30:13Z", "updated_at": "2022-11-26T04:31:33Z" }, { "id": "2857075", "type": "CNAME", "name": "cname.foobar", "data": "elsewhere.tld", "priority": null, "ttl": "3600", "created_at": "2022-11-26T04:34:24Z", "updated_at": "2022-11-26T04:34:24Z" } ] } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="token-post-dns-create-a-new-dns-record"><h2>DNS · Create a new DNS record</h2><p>Add a new DNS record.</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method post">POST</span> <span class="wrap">/address/<span class="parameter">address</span>/dns </span> </p> <div class="response"> <h4><strong id="dns-create-a-new-dns-record-create-a-new-dns-record">Create a new DNS record</strong></h4> <pre><code class="language-bash">curl --location --request POST --header 'Authorization: Bearer api_key' 'https://api.omg.lol/address/foobar/dns' --data '{"type": "CNAME", "name": "cname", "data": "elsewhere.tld"}'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Your DNS record was created successfully.", "data_sent": { "type": "A", "priority": null, "ttl": null, "name": "foobar", "content": "10.0.0.1" }, "response_received": { "data": { "id": 2857074, "name": "foobar", "content": "10.0.0.1", "ttl": 3600, "priority": null, "type": "A", "created_at": "2022-11-26T04:30:13Z", "updated_at": "2022-11-26T04:30:13Z" } } } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="token-patch-dns-edit-an-existing-dns-record"><h2>DNS · Edit an existing DNS record</h2><p>Update an existing DNS record.</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method patch">PATCH</span> <span class="wrap">/address/<span class="parameter">address</span>/dns/<span class="parameter">id</span> </span> </p> <div class="response"> <h4><strong id="dns-edit-an-existing-dns-record-edit-an-existing-dns-record">Edit an existing DNS record</strong></h4> <pre><code class="language-bash">curl --location --request PATCH --header 'Authorization: Bearer api_key' 'https://api.omg.lol/address/foobar/dns/2857074' --data '{"type": "A", "name": "@", "data": "192.167.0.1"}'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Your DNS record was updated successfully.", "data_sent": { "type": "A", "priority": null, "ttl": null, "name": "foobar", "content": "192.167.0.1" }, "response_received": { "data": { "id": 2857074, "name": "foobar", "content": "192.167.0.1", "ttl": 3600, "priority": null, "type": "A", "created_at": "2022-11-26T04:30:13Z", "updated_at": "2022-11-26T04:31:33Z" } } } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="token-delete-dns-delete-a-dns-record"><h2>DNS · Delete a DNS record</h2><p>Delete a DNS record.</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method delete">DELETE</span> <span class="wrap">/address/<span class="parameter">address</span>/dns/<span class="parameter">id</span> </span> </p> <div class="response"> <h4><strong id="dns-delete-a-dns-record-delete-a-dns-record">Delete a DNS record</strong></h4> <pre><code class="language-bash">curl --location --request DELETE --header 'Authorization: Bearer api_key' 'https://api.omg.lol/address/foobar/dns/2857073'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "OK, your DNS record has been deleted." } }</code></pre> </div> </section></div> <div class=""> <h1 id="directory">Directory</h1> <p style="flex-grow: 1;">Retrieve the address directory, consisting of addresses that have opted in to be listed</p> </div> <div class="container gray-7-bg gray-3-fg"> <section id="noauth-get-directory-retreive-the-address-directory"><h2>Directory · Retreive the address directory</h2><p>Retrieve the address directory</p><p> <span class="no-auth"><i class="fa-solid fa-lock-keyhole-open"></i> No Auth</span> <span class="method get">GET</span> <span class="wrap">/directory </span> </p> <div class="response"> <h4><strong id="directory-retreive-the-address-directory-retreive-the-address-directory">Retreive the address directory</strong></h4> <pre><code class="language-bash">curl --location --request GET 'https://api.omg.lol/directory'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Here’s the omg.lol directory.", "url": "https://home.omg.lol/directory", "directory": [ "0", "adam", ... ] } }</code></pre> </div> </section></div> <div class=""> <h1 id="email">Email</h1> <p style="flex-grow: 1;">Manage the email configuration for omg.lol addresses</p> </div> <div class="container gray-7-bg gray-3-fg"> <section id="token-get-email-retrieve-forwarding-addresses"><h2>Email · Retrieve forwarding address(es)</h2><p>Retrieve forwarding address(es)</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method get">GET</span> <span class="wrap">/address/<span class="parameter">address</span>/email/ </span> </p> <div class="response"> <h4><strong id="email-retrieve-forwarding-addresses-list-forwarding-email-addresses">List forwarding email address(es)</strong></h4> <pre><code class="language-bash">curl --location --request GET --header 'Authorization: Bearer api_key' 'https://api.omg.lol/address/adam/email/'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Mail for haydensato@omg.lol will be forwarded to **someone@example.com**.", "destination_string": "someone@example.com", "destination_array": [ "someone@example.com" ], "address": "haydensato", "email_address": "haydensato@omg.lol" } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="token-post-email-set-forwarding-addresses"><h2>Email · Set forwarding address(es)</h2><p>Set forwarding address(es)</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method post">POST</span> <span class="wrap">/address/<span class="parameter">address</span>/email/ </span> </p> <div class="response"> <h4><strong id="email-set-forwarding-addresses-set-a-forwarding-email-address">Set a forwarding email address</strong></h4> <pre><code class="language-bash">curl --location --request POST --header 'Authorization: Bearer api_key' 'https://api.omg.lol/address/adam/email/' --data '{"destination": "adam@neatnik.net, test@neatnik.net, test@neatnik.net"}'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Mail for haydensato@omg.lol will be forwarded to **person@example.com**.", "destination_string": "person@example.com", "destination_array": [ "person@example.com" ], "address": "haydensato", "email_address": "haydensato@omg.lol" } }</code></pre> </div> <div class="response"> <h4><strong id="email-set-forwarding-addresses-set-multiple-forwarding-addresses">Set multiple forwarding addresses</strong></h4> <pre><code class="language-bash">curl --location --request POST --header 'Authorization: Bearer api_key' 'https://api.omg.lol/address/adam/email/' --data '{"destination": "adam@neatnik.net, test@neatnik.net, test@neatnik.net"}'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Mail for haydensato@omg.lol will be forwarded to **person@example.com**, **another_person@example.com**, and **yet_another_person@example.com**.", "destination_string": "person@example.com, another_person@example.com, yet_another_person@example.com", "destination_array": [ "person@example.com", "another_person@example.com", "yet_another_person@example.com" ], "address": "haydensato", "email_address": "haydensato@omg.lol" } }</code></pre> </div> <div class="response"> <h4><strong id="email-set-forwarding-addresses-clear-a-forwarding-address">Clear a forwarding address</strong></h4> <pre><code class="language-bash">curl --location --request POST --header 'Authorization: Bearer api_key' 'https://api.omg.lol/address/adam/email/' --data '{"destination": "adam@neatnik.net, test@neatnik.net, test@neatnik.net"}'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Mail for haydensato@omg.lol will not be forwarded.", "destination_string": null, "destination_array": [], "address": "haydensato", "email_address": "haydensato@omg.lol" } }</code></pre> </div> </section></div> <div class=""> <h1 id="now-page">Now Page</h1> <p style="flex-grow: 1;">Manage your /now page.</p> </div> <div class="container gray-7-bg gray-3-fg"> <section id="noauth-get-now-page-retrieve-/now-page"><h2>Now Page · Retrieve /now Page</h2><p>Retrieve the now page for an address.</p><p> <span class="no-auth"><i class="fa-solid fa-lock-keyhole-open"></i> No Auth</span> <span class="method get">GET</span> <span class="wrap">/address/<span class="parameter">address</span>/now </span> </p> <div class="response"> <h4><strong id="now-page-retrieve-/now-page-retrieve-/now-page">Retrieve /now Page</strong></h4> <pre><code class="language-bash">curl --location --request GET 'https://api.omg.lol/address/foobar/now'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Here’s the Now Page for @foobar.", "now": { "content": "/* This is a sample /now page — edit it and make it your own! */\r\n\r\n{profile-picture}\r\n\r\n# {address} // you can change this to your name!\r\n\r\n## My /now page\r\n\r\n--- Now ---\r\n\r\n(This is a [now page](https://nownownow.com/about), and if you have your own site, [you should make one](https://nownownow.com/about), too.)\r\n\r\n### What I’m reading\r\n\r\n- [Wuthering Heights](https://en.wikipedia.org/wiki/Wuthering_Heights) by [Emily Brontë ](https://en.wikipedia.org/wiki/Emily_Brontë) {book}\r\n- [Monocole](https://monocle.com) {book}\r\n\r\n### What I’m watching\r\n\r\n- [The Jeffersons](https://en.wikipedia.org/wiki/The_Jeffersons) {display}\r\n- [Coronation Street](https://en.wikipedia.org/wiki/Coronation_Street) {display}\r\n\r\n### What I’m making\r\n\r\n- [Sourdough bread](https://www.feastingathome.com/sourdough-bread/) {bread-slice}\r\n- [Socks](https://www.yarnspirations.com/bernat-family-knit-work-socks/BRK0328-001994M.html?cgid=patterns) {socks}\r\n\r\n### What I’m enjoying\r\n\r\n- Time with friends and family {people-roof}\r\n- Planning for my upcoming trip {plane}\r\n\r\n---\r\n\r\n{last-updated}\r\n\r\n[Back to my omg.lol page!](https://{address}.omg.lol)", "updated": "1674364245", "listed": "1" } } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="noauth-get-now-page-retrieve-the-now.garden-listing"><h2>Now Page · Retrieve the now.garden listing</h2><p>Retrieve all listed /now pages.</p><p> <span class="no-auth"><i class="fa-solid fa-lock-keyhole-open"></i> No Auth</span> <span class="method get">GET</span> <span class="wrap">/now/garden </span> </p> <div class="response"> <h4><strong id="now-page-retrieve-the-now.garden-listing-retrieve-the-now.garden-listing">Retrieve the now.garden listing</strong></h4> <pre><code class="language-bash">curl --location --request GET 'https://api.omg.lol/now/garden'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Here are all of the /now pages in the Now Garden.", "garden": [ { "address": "drudge", "url": "https://penree.com/now", "updated": { "unix_epoch_time": "1673929294", "iso_8601_time": "2023-01-17T04:21:34+00:00", "rfc_2822_time": "Tue, 17 Jan 2023 04:21:34 +0000", "relative_time": "22 minutes and 41 seconds ago" } }, ... ] } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="token-post-now-page-update-/now-page"><h2>Now Page · Update /now Page</h2><p>Update the contents of a /now page.</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method post">POST</span> <span class="wrap">/address/<span class="parameter">address</span>/now </span> </p> <div class="response"> <h4><strong id="now-page-update-/now-page-update-/now-page">Update /now Page</strong></h4> <pre><code class="language-bash">curl --location --request POST --header 'Authorization: Bearer api_key' 'https://api.omg.lol/address/foobar/now' --data '{"content": "/* This is a sample /now page — edit it and make it your own! */\r\n\r\n{profile-picture}\r\n\r\n# {address} // you can change this to your name!\r\n\r\n## My /now page\r\n\r\n--- Now ---\r\n\r\n(This is a [now page](https://nownownow.com/about), and if you have your own site, [you should make one](https://nownownow.com/about), too.)\r\n\r\n### What I’m reading\r\n\r\n- [Wuthering Heights](https://en.wikipedia.org/wiki/Wuthering_Heights) by [Emily Brontë ](https://en.wikipedia.org/wiki/Emily_Brontë) {book}\r\n- [Monocole](https://monocle.com) {book}\r\n\r\n### What I’m watching\r\n\r\n- [The Jeffersons](https://en.wikipedia.org/wiki/The_Jeffersons) {display}\r\n- [Coronation Street](https://en.wikipedia.org/wiki/Coronation_Street) {display}\r\n\r\n### What I’m making\r\n\r\n- [Sourdough bread](https://www.feastingathome.com/sourdough-bread/) {bread-slice}\r\n- [Socks](https://www.yarnspirations.com/bernat-family-knit-work-socks/BRK0328-001994M.html?cgid=patterns) {socks}\r\n\r\n### What I’m enjoying\r\n\r\n- Time with friends and family {people-roof}\r\n- Planning for my upcoming trip {plane}\r\n\r\n---\r\n\r\n{last-updated}\r\n\r\n[Back to my omg.lol page!](https://{address}.omg.lol)", "listed": "1"}'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "OK, your /now page has been updated." } }</code></pre> </div> </section></div> <div class=""> <h1 id="oauth">OAuth</h1> <p style="flex-grow: 1;">Endpoints related to omg.lol’s OAuth 2.0 flows</p> </div> <div class="container gray-7-bg gray-3-fg"> <section id="token-get-oauth-exchange-an-authorization-code-for-an-access-token"><h2>OAuth · Exchange an authorization code for an access token</h2><p>Take the authorization code provided during the OAuth flow and exchange it for an access token.</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method get">GET</span> <span class="wrap">/oauth/ </span> </p> <div class="response"> <h4><strong id="oauth-exchange-an-authorization-code-for-an-access-token-exchange-an-authorization-code-for-an-access-token">Exchange an authorization code for an access token</strong></h4> <pre><code class="language-bash">curl --location --request GET --header 'Authorization: Bearer api_key' 'https://api.omg.lol/oauth/?client_id=ea14dafd3e92cbcf93750c35cd81a031&client_secret=ec28b8653f1d98b4eef3f7a20858c43b&redirect_uri=https://example.com/&code=f5f07426f08277983eb4010c6a2b10ac&scope=everything'</code></pre> <pre><code class="language-js">{ "access_token": "b3086f894a176a3a7e702decd9b97bbc", "token_type": "Bearer", "scope": "everything" }</code></pre> </div> </section></div> <div class=""> <h1 id="purls">PURLs</h1> <p style="flex-grow: 1;">Manage the PURLs (or Persistent URLs) for an omg.lol address</p> </div> <div class="container gray-7-bg gray-3-fg"> <section id="token-post-purls-create-a-new-purl"><h2>PURLs · Create a new PURL</h2><p>Create a new PURL</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method post">POST</span> <span class="wrap">/address/<span class="parameter">address</span>/purl </span> </p> <div class="response"> <h4><strong id="purls-create-a-new-purl-create-a-new-purl">Create a new PURL</strong></h4> <pre><code class="language-bash">curl --location --request POST --header 'Authorization: Bearer api_key' 'https://api.omg.lol/address/foo/purl' --data '{"name": "example-purl", "url": "https://example.com", "listed": true}'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "OK, your PURL has been saved.", "name": "example", "url": "https://example.com" } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="token-get-purls-retrieve-a-specific-purl"><h2>PURLs · Retrieve a specific PURL</h2><p>Retrieve a specific PURL</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method get">GET</span> <span class="wrap">/address/<span class="parameter">address</span>/purl/example </span> </p> <div class="response"> <h4><strong id="purls-retrieve-a-specific-purl-retrieve-a-specific-purl">Retrieve a specific PURL</strong></h4> <pre><code class="language-bash">curl --location --request GET --header 'Authorization: Bearer api_key' 'https://api.omg.lol/address/foo/purl/example'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Here’s the PURL you requested.", "purl": { "name": "example", "url": "https://example.com", "counter": null } } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="token-get-purls-retrieve-a-list-of-purls-for-an-address"><h2>PURLs · Retrieve a list of PURLs for an address</h2><p>Retrieve a list of PURLs associated with an address</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method get">GET</span> <span class="wrap">/address/<span class="parameter">address</span>/purls </span> </p> <div class="response"> <h4><strong id="purls-retrieve-a-list-of-purls-for-an-address-retrieve-a-list-of-purls-for-an-address">Retrieve a list of PURLs for an address</strong></h4> <pre><code class="language-bash">curl --location --request GET --header 'Authorization: Bearer api_key' 'https://api.omg.lol/address/foo/purls'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Here are the PURLs for foo.", "purls": [ { "name": "awesome", "url": "https://www.youtube.com/watch?v=dQw4w9WgXcQ", "counter": "872" }, { "name": "💚", "url": "https://example.com", "counter": "33" } ] } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="token-delete-purls-delete-a-purl"><h2>PURLs · Delete a PURL</h2><p>Permanently delete a PURL</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method delete">DELETE</span> <span class="wrap">/address/<span class="parameter">address</span>/purl/<span class="parameter">purl</span> </span> </p> <div class="response"> <h4><strong id="purls-delete-a-purl-delete-a-purl">Delete a PURL</strong></h4> <pre><code class="language-bash">curl --location --request DELETE --header 'Authorization: Bearer api_key' 'https://api.omg.lol/address/foobar/purl/example'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "OK, that PURL has been deleted." } }</code></pre> </div> </section></div> <div class=""> <h1 id="pastebin">Pastebin</h1> <p style="flex-grow: 1;">Manage the Pastebin for an omg.lol address</p> </div> <div class="container gray-7-bg gray-3-fg"> <section id="noauth-get-pastebin-retrieve-a-specific-paste"><h2>Pastebin · Retrieve a specific paste</h2><p>Retrieve a specific paste</p><p> <span class="no-auth"><i class="fa-solid fa-lock-keyhole-open"></i> No Auth</span> <span class="method get">GET</span> <span class="wrap">/address/<span class="parameter">address</span>/pastebin/<span class="parameter">paste</span> </span> </p> <div class="response"> <h4><strong id="pastebin-retrieve-a-specific-paste-retrieve-a-specific-paste">Retrieve a specific paste</strong></h4> <pre><code class="language-bash">curl --location --request GET 'https://api.omg.lol/address/adam/pastebin/api'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Here’s the paste at adam.paste.lol/api.", "paste": { "title": "api", "content": "This paste, like all others, can be fully managed with the omg.lol API.", "modified_on": "1656569579" } } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="token-get-pastebin-retrieve-an-entire-pastebin"><h2>Pastebin · Retrieve an entire Pastebin</h2><p>Retrieve an entire Pastebin</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method get">GET</span> <span class="wrap">/address/<span class="parameter">address</span>/pastebin </span> </p> <div class="response"> <h4><strong id="pastebin-retrieve-an-entire-pastebin-retrieve-an-entire-pastebin">Retrieve an entire pastebin</strong></h4> <pre><code class="language-bash">curl --location --request GET --header 'Authorization: Bearer api_key' 'https://api.omg.lol/address/adam/pastebin'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Here’s the pastebin for adam.", "pastebin": [ { "title": "api", "content": "This paste, like all others, can be fully managed with the omg.lol API.", "modified_on": "1656569579" }, { "title": "hello-world", "content": "^_^", "modified_on": "1656569562" } ] } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="noauth-get-pastebin-retrieve-listed-pastes-in-a-pastebin"><h2>Pastebin · Retrieve listed pastes in a Pastebin</h2><p>Retrieve listed pastes in a Pastebin</p><p> <span class="no-auth"><i class="fa-solid fa-lock-keyhole-open"></i> No Auth</span> <span class="method get">GET</span> <span class="wrap">/address/<span class="parameter">address</span>/pastebin </span> </p> <div class="response"> <h4><strong id="pastebin-retrieve-listed-pastes-in-a-pastebin-retrieve-listed-pastes-in-a-pastebin">Retrieve listed pastes in a pastebin</strong></h4> <pre><code class="language-bash">curl --location --request GET 'https://api.omg.lol/address/adam/pastebin'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Here are the listed pastes for adam.", "pastebin": [ { "title": "hello-world", "content": "yo world, sup", "modified_on": "1656897567" }, { "title": "api", "content": "This paste, like all others, can be fully managed with the omg.lol API.", "modified_on": "1656569579" } ] } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="token-post-pastebin-create-or-update-a-paste-in-a-pastebin"><h2>Pastebin · Create or update a paste in a Pastebin</h2><p>Create or update a paste in a Pastebin</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method post">POST</span> <span class="wrap">/address/<span class="parameter">address</span>/pastebin/ </span> </p> <div class="response"> <h4><strong id="pastebin-create-or-update-a-paste-in-a-pastebin-create-or-update-a-paste-in-a-pastebin">Create or update a paste in a pastebin</strong></h4> <pre><code class="language-bash">curl --location --request POST --header 'Authorization: Bearer api_key' 'https://api.omg.lol/address/adam/pastebin/' --data '{"title": "new-paste", "content": "This is a new paste."}'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "OK, your paste has been saved.", "title": "new-paste" } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="token-delete-pastebin-delete-a-paste-from-a-pastebin"><h2>Pastebin · Delete a paste from a Pastebin</h2><p>Delete a paste from a Pastebin</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method delete">DELETE</span> <span class="wrap">/address/<span class="parameter">address</span>/pastebin/<span class="parameter">paste</span> </span> </p> <div class="response"> <h4><strong id="pastebin-delete-a-paste-from-a-pastebin-delete-a-paste-from-a-pastebin">Delete a paste from a pastebin</strong></h4> <pre><code class="language-bash">curl --location --request DELETE --header 'Authorization: Bearer api_key' 'https://api.omg.lol/address/adam/pastebin/delete-me'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "OK, that paste has been deleted." } }</code></pre> </div> </section></div> <div class=""> <h1 id="preferences">Preferences</h1> <p style="flex-grow: 1;">Manage preferences for omg.lol accounts, addresses, and objects</p> </div> <div class="container gray-7-bg gray-3-fg"> <section id="token-post-preferences-save-an-individual-preference"><h2>Preferences · Save an individual preference</h2><p>Save a single preference</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method post">POST</span> <span class="wrap">/preferences/<span class="parameter">owner</span> </span> </p> <div class="response"> <h4><strong id="preferences-save-an-individual-preference-save-an-individual-preference">Save an individual preference</strong></h4> <pre><code class="language-bash">curl --location --request POST --header 'Authorization: Bearer api_key' 'https://api.omg.lol/preferences/foo' --data '{"item": "foo", "value": "bar"}'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Your preference has been saved.", "item": "foo", "value": "bar" } }</code></pre> </div> </section></div> <div class=""> <h1 id="service">Service</h1> <p style="flex-grow: 1;">Obtain service information about omg.lol</p> </div> <div class="container gray-7-bg gray-3-fg"> <section id="noauth-get-service-retrieve-service-information-and-statistics"><h2>Service · Retrieve service information and statistics</h2><p>Get information and statistics about the omg.lol service</p><p> <span class="no-auth"><i class="fa-solid fa-lock-keyhole-open"></i> No Auth</span> <span class="method get">GET</span> <span class="wrap">/service/info </span> </p> <div class="response"> <h4><strong id="service-retrieve-service-information-and-statistics-retrieve-service-information-and-statistics">Retrieve service information and statistics</strong></h4> <pre><code class="language-bash">curl --location --request GET 'https://api.omg.lol/service/info'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "As of 2022-10-05T03:13:14+00:00, omg.lol has 1,811 members and hosts 1,685 active addresses. Of those, 888 have active profiles or web pages.", "members": 1811, "addresses": 1685, "profiles": 888 } }</code></pre> </div> </section></div> <div class=""> <h1 id="statuslog">Statuslog</h1> <p style="flex-grow: 1;">Manage the Statuslog for an omg.lol address</p> </div> <div class="container gray-7-bg gray-3-fg"> <section id="noauth-get-statuslog-retrieve-an-individual-status-for-an-address"><h2>Statuslog · Retrieve an individual status for an address</h2><p>Fetch a single Statuslog entry</p><p> <span class="no-auth"><i class="fa-solid fa-lock-keyhole-open"></i> No Auth</span> <span class="method get">GET</span> <span class="wrap">/address/<span class="parameter">address</span>/statuses/<span class="parameter">status</span> </span> </p> <div class="response"> <h4><strong id="statuslog-retrieve-an-individual-status-for-an-address-retrieve-an-individual-status-for-an-address">Retrieve an individual status for an address</strong></h4> <pre><code class="language-bash">curl --location --request GET 'https://api.omg.lol/address/foo/statuses/6336318079242'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Here’s the status at foo.status.lol/6336318079242.", "status": { "id": "6336318079242", "address": "foo", "created": "1664496000", "emoji": "☕️", "content": "Enjoying my coffee!" } } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="noauth-get-statuslog-retrieve-all-statuses-for-an-address"><h2>Statuslog · Retrieve all statuses for an address</h2><p>Fetch someone’s entire Statuslog</p><p> <span class="no-auth"><i class="fa-solid fa-lock-keyhole-open"></i> No Auth</span> <span class="method get">GET</span> <span class="wrap">/address/<span class="parameter">address</span>/statuses/ </span> </p> <div class="response"> <h4><strong id="statuslog-retrieve-all-statuses-for-an-address-retrieve-all-statuses">Retrieve all statuses</strong></h4> <pre><code class="language-bash">curl --location --request GET 'https://api.omg.lol/address/adam/statuses/'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Here are foo’s statuses.", "statuses": [ { "id": "6335ec5bee31a", "address": "foo", "created": "1664478299", "emoji": "😄", "content": "I’m doing great!" }, { "id": "6334d1c11917a", "address": "foo", "created": "1664405953", "emoji": "☕️", "content": "Enjoying my coffee." } ] } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="token-post-statuslog-share-a-new-status"><h2>Statuslog · Share a new status</h2><p>Create a new status in an address’s Statuslog</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method post">POST</span> <span class="wrap">/address/<span class="parameter">address</span>/statuses/ </span> </p> <div class="response"> <h4><strong id="statuslog-share-a-new-status-share-a-new-status">Share a new status</strong></h4> <pre><code class="language-bash">curl --location --request POST --header 'Authorization: Bearer api_key' 'https://api.omg.lol/address/foobar/statuses/' --data '{"emoji": "🧪", "content": "Testing the omg.lol API!", "external_url": "mailto:foobar@omg.lol", "skip_mastodon_post": true}'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "OK, your status has been saved. [View it live.](https://status.lol/foobar/63d40f2b35314)", "id": "63d40f2b35314", "status": "🧪 Testing the omg.lol API!", "url": "https://status.lol/foobar/63d40f2b35314", "external_url": "mailto:foobar@omg.lol" } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="token-post-statuslog-share-a-new-status-from-a-single-status-string"><h2>Statuslog · Share a new status from a single status string</h2><p>Create a new status in an address’s Statuslog</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method post">POST</span> <span class="wrap">/address/<span class="parameter">address</span>/statuses/ </span> </p> <div class="response"> <h4><strong id="statuslog-share-a-new-status-from-a-single-status-string-share-a-new-status-from-a-single-status-string">Share a new status from a single status string</strong></h4> <pre><code class="language-bash">curl --location --request POST --header 'Authorization: Bearer api_key' 'https://api.omg.lol/address/foobar/statuses/' --data '{"status": "🧪 Testing the omg.lol API!", "external_url": "https://example.com"}'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "OK, your status has been saved. [View it live.](https://status.lol/foobar/63d40f5db114b)", "id": "63d40f5db114b", "status": "✨ 🧪 Testing the omg.lol API!", "url": "https://status.lol/foobar/63d40f5db114b", "external_url": "https://example.com" } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="token-patch-statuslog-update-an-existing-status"><h2>Statuslog · Update an existing status</h2><p>Update a status in an address’s Statuslog</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method patch">PATCH</span> <span class="wrap">/address/<span class="parameter">address</span>/statuses/ </span> </p> <div class="response"> <h4><strong id="statuslog-update-an-existing-status-update-an-existing-status">Update an existing status</strong></h4> <pre><code class="language-bash">curl --location --request PATCH --header 'Authorization: Bearer api_key' 'https://api.omg.lol/address/adam/statuses/' --data '{"id": "6336204d247e4", "emoji": "😄", "content": "I’m doing fine!"}'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "OK, your status has been saved. [View it live.](https://status.lol/foo/6336204d247e4)", "id": "6336204d247e4", "url": "https://status.lol/foo/6336204d247e4" } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="noauth-get-statuslog-retrieve-a-statuslog-bio"><h2>Statuslog · Retrieve a Statuslog bio</h2><p>Retrieve a Statuslog bio</p><p> <span class="no-auth"><i class="fa-solid fa-lock-keyhole-open"></i> No Auth</span> <span class="method get">GET</span> <span class="wrap">/address/<span class="parameter">address</span>/statuses/bio/ </span> </p> <div class="response"> <h4><strong id="statuslog-retrieve-a-statuslog-bio-retrieve-a-statuslog-bio">Retrieve a statuslog bio</strong></h4> <pre><code class="language-bash">curl --location --request GET 'https://api.omg.lol/address/adam/statuses/bio'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Here’s the bio for foo’s Statuslog page.", "bio": "# Foo\nThis is my bio!", "css": "" } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="token-post-statuslog-update-a-statuslog-bio"><h2>Statuslog · Update a Statuslog bio</h2><p>Update a Statuslog bio</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method post">POST</span> <span class="wrap">/address/<span class="parameter">address</span>/statuses/bio/ </span> </p> <div class="response"> <h4><strong id="statuslog-update-a-statuslog-bio-update-a-statuslog-bio">Update a statuslog bio</strong></h4> <pre><code class="language-bash">curl --location --request POST --header 'Authorization: Bearer api_key' 'https://api.omg.lol/address/adam/statuses/bio' --data '{"content": "# Foo\nThis is my bio!"}'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "OK, the bio on foo.status.lol has been saved. [View it live.](https://status.lol/foo)", "url": "https://status.lol/foo" } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="noauth-get-statuslog-retrieve-the-entire-statuslog"><h2>Statuslog · Retrieve the entire statuslog</h2><p>Fetch someone’s entire Statuslog</p><p> <span class="no-auth"><i class="fa-solid fa-lock-keyhole-open"></i> No Auth</span> <span class="method get">GET</span> <span class="wrap">/statuslog </span> </p> <div class="response"> <h4><strong id="statuslog-retrieve-the-entire-statuslog-retrieve-the-entire-statuslog">Retrieve the entire statuslog</strong></h4> <pre><code class="language-bash">curl --location --request GET 'https://api.omg.lol/statuslog'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Here’s the complete statuslog.", "statuses": [ { "id": "6391416a125e8", "address": "dm", "created": "1670463850", "relative_time": "28 minutes ago", "emoji": "☺", "content": "Streamed a discussion on HRD's YouTube channel" }, { "id": "63913d4127ad9", "address": "skoobz", "created": "1670462785", "relative_time": "45 minutes ago", "emoji": "📺", "content": "Watching Ink Master" }, ... ] } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="noauth-get-statuslog-retrieve-everyone’s-latest-status"><h2>Statuslog · Retrieve everyone’s latest status</h2><p>Fetch someone’s entire Statuslog</p><p> <span class="no-auth"><i class="fa-solid fa-lock-keyhole-open"></i> No Auth</span> <span class="method get">GET</span> <span class="wrap">/statuslog/latest </span> </p> <div class="response"> <h4><strong id="statuslog-retrieve-everyone’s-latest-status-retrieve-everyone’s-latest-status">Retrieve everyone’s latest status</strong></h4> <pre><code class="language-bash">curl --location --request GET 'https://api.omg.lol/statuslog/latest'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Here are everyone’s latest statuses.", "statuses": [ { "id": "638ff5cfaa031", "address": "cm", "created": "1670378959", "relative_time": "1 day ago", "emoji": "🤔", "content": "Excited about omg.lol!" }, { "id": "638ff59bd1be8", "address": "moe", "created": "1670378907", "relative_time": "1 day ago", "emoji": "👀", "content": "Browsing [omg.lol - Statuslog](https://home.omg.lol/address/moe/statuslog)." }, ... ] } }</code></pre> </div> </section></div> <div class=""> <h1 id="theme">Theme</h1> <p style="flex-grow: 1;">Work with omg.lol profile page themes</p> </div> <div class="container gray-7-bg gray-3-fg"> <section id="noauth-get-theme-retrieve-a-list-of-profile-themes"><h2>Theme · Retrieve a list of profile themes</h2><p>Get a list of available omg.lol profile themes</p><p> <span class="no-auth"><i class="fa-solid fa-lock-keyhole-open"></i> No Auth</span> <span class="method get">GET</span> <span class="wrap">/theme/list </span> </p> <div class="response"> <h4><strong id="theme-retrieve-a-list-of-profile-themes-retrieve-a-list-of-profile-themes">Retrieve a list of profile themes</strong></h4> <pre><code class="language-bash">curl --location --request GET 'https://api.omg.lol/theme/list'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "There are 15 profile themes available.", "themes": { "default": { "id": "default", "name": "Default", "created": "1660967179", "updated": "1660967179", "author": "omg.lol", "author_url": "https://omg.lol", "version": "1.0", "license": "MIT", "description": "A friendly, simple look for your amazing profile.", "preview_css": "{\r\n\t\"background_css\": \"background: linear-gradient(0deg, #3fb6b6 0%, #d56b86 100%) !important; background-repeat: no-repeat; background-attachment: fixed;\",\r\n\t\"text_css\": \"color: #000;\",\r\n\t\"link_css\": \"color: #000;\",\r\n\t\"icon_css\": \"color: #000;\"\r\n}", "sample_profile": "{profile-picture}\r\n\r\n# Hayden Sato\r\n\r\n| Pronouns: she/her\r\n| Occupation: Arborist\r\n| Location: Fiji\r\n\r\n--- Bio ---\r\n\r\nI take care of trees!\r\n\r\n--- Profile Items ---\r\n\r\n- https://instagram.com/haydensato\r\n- https://twitter.com/haydensato\r\n- https://facebook.com/haydensato" }, "cherry-blossom": { "id": "cherry-blossom", "name": "Cherry Blossom", "created": "1660967179", "updated": "1660967179", "author": "omg.lol", "author_url": "https://omg.lol", "version": "1.0", "license": "MIT", "description": "Springtime, but all year long.", "preview_css": "{\r\n\t\"background_css\": \"background: #ffb7c5 !important;\",\r\n\t\"text_css\": \"color: #000;\",\r\n\t\"link_css\": \"color: #333;\",\r\n\t\"icon_css\": \"color: #b53c54;\"\r\n}", "sample_profile": "{profile-picture}\r\n\r\n# Hayden Sato\r\n\r\n| Pronouns: she/her\r\n| Occupation: Arborist\r\n| Location: Fiji\r\n\r\n--- Bio ---\r\n\r\nI take care of trees!\r\n\r\n--- Profile Items ---\r\n\r\n- https://instagram.com/haydensato\r\n- https://twitter.com/haydensato\r\n- https://facebook.com/haydensato" }, "dark": { "id": "dark", "name": "Dark", "created": "1660967179", "updated": "1660967179", "author": "omg.lol", "author_url": "https://omg.lol", "version": "1.0", "license": "MIT", "description": "It’s super dark!", "preview_css": "{\r\n\t\"background_css\": \"background: #222 !important;\",\r\n\t\"text_css\": \"color: #ccc;\",\r\n\t\"link_css\": \"color: #ccc;\",\r\n\t\"icon_css\": \"color: #ccc;\"\r\n}", "sample_profile": "{profile-picture}\r\n\r\n# Hayden Sato\r\n\r\n| Pronouns: she/her\r\n| Occupation: Arborist\r\n| Location: Fiji\r\n\r\n--- Bio ---\r\n\r\nI take care of trees!\r\n\r\n--- Profile Items ---\r\n\r\n- https://instagram.com/haydensato\r\n- https://twitter.com/haydensato\r\n- https://facebook.com/haydensato" }, "dracula": { "id": "dracula", "name": "Dracula", "created": "1660967179", "updated": "1660967179", "author": "Bye", "author_url": "https://bye.omg.lol", "version": "1.0", "license": "MIT", "description": "Dark theme with a touch of purple. Adapted from the Dracula color scheme by @zenorocha", "preview_css": "{\r\n\t\"background_css\": \"background: #44475a !important;\",\r\n\t\"text_css\": \"color: #f8f8f2;\",\r\n\t\"link_css\": \"color: #f8f8f2;\",\r\n\t\"icon_css\": \"color: #f8f8f2;\"\r\n}", "sample_profile": "{profile-picture}\r\n\r\n# Hayden Sato\r\n\r\n| Pronouns: she/her\r\n| Occupation: Arborist\r\n| Location: Fiji\r\n\r\n--- Bio ---\r\n\r\nI take care of trees!\r\n\r\n--- Profile Items ---\r\n\r\n- https://instagram.com/haydensato\r\n- https://twitter.com/haydensato\r\n- https://facebook.com/haydensato" }, "gilded": { "id": "gilded", "name": "Gilded", "created": "1660967179", "updated": "1660967179", "author": "Nima Owji", "author_url": "https://nima.omg.lol", "version": "1.0", "license": "MIT", "description": "Bold and dark with a touch of gold.", "preview_css": "{\r\n\t\"background_css\": \"background: #212121 !important;\",\r\n\t\"text_css\": \"color: #fff;\",\r\n\t\"link_css\": \"color: #fff;\",\r\n\t\"icon_css\": \"color: #fabc02;\"\r\n}", "sample_profile": "{profile-picture}\r\n\r\n# Hayden Sato\r\n\r\n| Pronouns: she/her\r\n| Occupation: Arborist\r\n| Location: Fiji\r\n\r\n--- Bio ---\r\n\r\nI take care of trees!\r\n\r\n--- Profile Items ---\r\n\r\n- https://instagram.com/haydensato\r\n- https://twitter.com/haydensato\r\n- https://facebook.com/haydensato" }, "gradient": { "id": "gradient", "name": "Gradient", "created": "1660967179", "updated": "1660967179", "author": "Jamie Thalacker", "author_url": "https://jamiethalacker.dev", "version": "1.0", "license": "MIT", "description": "A nice theme with an animated, gradient background.", "preview_css": "{\r\n\t\"background_css\": \"background: linear-gradient(313deg,#fecaca,#fde68a,#a7f3d0,#bfdbfe,#c7d2fe,#ddd6fe,#fbcfe8) !important; background-size: 1400% 1400%;\",\r\n\t\"text_css\": \"color: #000;\",\r\n\t\"link_css\": \"color: #000;\",\r\n\t\"icon_css\": \"color: #000;\"\r\n}", "sample_profile": "{profile-picture}\r\n\r\n# Hayden Sato\r\n\r\n| Pronouns: she/her\r\n| Occupation: Arborist\r\n| Location: Fiji\r\n\r\n--- Bio ---\r\n\r\nI take care of trees!\r\n\r\n--- Profile Items ---\r\n\r\n- https://instagram.com/haydensato\r\n- https://twitter.com/haydensato\r\n- https://facebook.com/haydensato" }, "hacker": { "id": "hacker", "name": "Hacker", "created": "1660967179", "updated": "1660967179", "author": "Matse Van Horebeek", "author_url": "https://matsevh.omg.lol", "version": "1.0", "license": "MIT", "description": "Look like a hacker!", "preview_css": "{\r\n\t\"background_css\": \"background: rgb(5, 5, 5); !important;\",\r\n\t\"text_css\": \"color: #0daf00;\",\r\n\t\"link_css\": \"color: #0daf00;\",\r\n\t\"icon_css\": \"color: #0daf00;\"\r\n}", "sample_profile": "{profile-picture}\r\n\r\n# Hayden Sato\r\n\r\n| Pronouns: she/her\r\n| Occupation: Arborist\r\n| Location: Fiji\r\n\r\n--- Bio ---\r\n\r\nI take care of trees!\r\n\r\n--- Profile Items ---\r\n\r\n- https://instagram.com/haydensato\r\n- https://twitter.com/haydensato\r\n- https://facebook.com/haydensato" }, "minimal": { "id": "minimal", "name": "Minimal", "created": "1660967179", "updated": "1660967179", "author": "Jane Manchun Wong", "author_url": "https://jane.omg.lol", "version": "1.0", "license": "MIT", "description": "A minimal theme with automatic light/dark mode detection.", "preview_css": "{\r\n\t\"background_css\": \"background: #FAFAFA !important;\",\r\n\t\"text_css\": \"color: #202020;\",\r\n\t\"link_css\": \"color: #202020;\",\r\n\t\"icon_css\": \"color: #202020;\"\r\n}", "sample_profile": "{profile-picture}\r\n\r\n# Hayden Sato\r\n\r\n| Pronouns: she/her\r\n| Occupation: Arborist\r\n| Location: Fiji\r\n\r\n--- Bio ---\r\n\r\nI take care of trees!\r\n\r\n--- Profile Items ---\r\n\r\n- https://instagram.com/haydensato\r\n- https://twitter.com/haydensato\r\n- https://facebook.com/haydensato" }, "monokai": { "id": "monokai", "name": "Monokai", "created": "1660967179", "updated": "1660967179", "author": "Dakota Chambers", "author_url": "https://dakota.omg.lol", "version": "1.0", "license": "MIT", "description": "Your text editor's favorite color palette. Adapted from the Monokai color scheme by Wimer Hazenberg (@monokai).", "preview_css": "{\r\n\t\"background_css\": \"background: #363537; !important;\",\r\n\t\"text_css\": \"color: #F7F1FF;\",\r\n\t\"link_css\": \"color: #F7F1FF;\",\r\n\t\"icon_css\": \"color: #FA638D;\"\r\n}", "sample_profile": "{profile-picture}\r\n\r\n# Hayden Sato\r\n\r\n| Pronouns: she/her\r\n| Occupation: Arborist\r\n| Location: Fiji\r\n\r\n--- Bio ---\r\n\r\nI take care of trees!\r\n\r\n--- Profile Items ---\r\n\r\n- https://instagram.com/haydensato\r\n- https://twitter.com/haydensato\r\n- https://facebook.com/haydensato" }, "naked": { "id": "naked", "name": "Naked", "created": "1660967179", "updated": "1660967179", "author": "omg.lol", "author_url": "https://omg.lol", "version": "1.0", "license": "MIT", "description": "No style at all, for those who want to do their own thing!", "preview_css": "{\r\n\t\"background_css\": \"background: #fff !important; font-family: serif;\",\r\n\t\"text_css\": \"color: #000;\",\r\n\t\"link_css\": \"color: blue;\",\r\n\t\"icon_css\": \"display: none; color: #000;\"\r\n}", "sample_profile": "{profile-picture}\r\n\r\n# Hayden Sato\r\n\r\n| Pronouns: she/her\r\n| Occupation: Arborist\r\n| Location: Fiji\r\n\r\n--- Bio ---\r\n\r\nI take care of trees!\r\n\r\n--- Profile Items ---\r\n\r\n- https://instagram.com/haydensato\r\n- https://twitter.com/haydensato\r\n- https://facebook.com/haydensato" }, "nord-dark": { "id": "nord-dark", "name": "Nord (Dark)", "created": "1660967179", "updated": "1660967179", "author": "Jason E. Kratz (@jasonekratz)", "author_url": "https://jasonekratz.omg.lol", "version": "1.0", "license": "MIT", "description": "Dark theme based on the Nord color palette. See: https://www.nordtheme.com/docs/colors-and-palettes CSS based on Dakota Chambers' Monokai theme.", "preview_css": "{\r\n\t\"background_css\": \"background: ##2E3440 !important;\",\r\n\t\"text_css\": \"color: #d8dee9;\",\r\n\t\"link_css\": \"color: #5e81ac;\",\r\n\t\"icon_css\": \"color: #bf616a;\"\r\n}", "sample_profile": "{profile-picture}\r\n\r\n# Hayden Sato\r\n\r\n| Pronouns: she/her\r\n| Occupation: Arborist\r\n| Location: Fiji\r\n\r\n--- Bio ---\r\n\r\nI take care of trees!\r\n\r\n--- Profile Items ---\r\n\r\n- https://instagram.com/haydensato\r\n- https://twitter.com/haydensato\r\n- https://facebook.com/haydensato" }, "omglol-special": { "id": "omglol-special", "name": "omg.lol Special", "created": "1660967179", "updated": "1660967179", "author": "Ediz Baha", "author_url": "https://ediz.omg.lol", "version": "1.0", "license": "MIT", "description": "omg.lol Special - This theme is inspired by the new design of the omg.lol site.", "preview_css": "{\r\n\t\"background_css\": \"background: #343A40 !important; border: 1px solid #868e96 !important;\",\r\n\t\"text_css\": \"color: #F1F3F5;\",\r\n\t\"link_css\": \"color: #F1F3F5;\",\r\n\t\"icon_css\": \"color: #F783AC;\"\r\n}", "sample_profile": "{profile-picture}\r\n\r\n# Hayden Sato\r\n\r\n| Pronouns: she/her\r\n| Occupation: Arborist\r\n| Location: Fiji\r\n\r\n--- Bio ---\r\n\r\nI take care of trees!\r\n\r\n--- Profile Items ---\r\n\r\n- https://instagram.com/haydensato\r\n- https://twitter.com/haydensato\r\n- https://facebook.com/haydensato" }, "purplegray": { "id": "purplegray", "name": "PurpleGray", "created": "1660967179", "updated": "1660967179", "author": "Mert Dogu", "author_url": "https://mert.omg.lol", "version": "1.0", "license": "MIT", "description": "Purple.. and yeah, gray.", "preview_css": "{\r\n\t\"background_css\": \"background: #ac80ff !important;\",\r\n\t\"text_css\": \"color: #363636;\",\r\n\t\"link_css\": \"color: #3f3f3f;\",\r\n\t\"icon_css\": \"color: #2b2b2bb6;\"\r\n}", "sample_profile": "{profile-picture}\r\n\r\n# Hayden Sato\r\n\r\n| Pronouns: she/her\r\n| Occupation: Arborist\r\n| Location: Fiji\r\n\r\n--- Bio ---\r\n\r\nI take care of trees!\r\n\r\n--- Profile Items ---\r\n\r\n- https://instagram.com/haydensato\r\n- https://twitter.com/haydensato\r\n- https://facebook.com/haydensato" }, "toasted-minimal": { "id": "toasted-minimal", "name": "Toasted Minimal", "created": "1660967179", "updated": "1660967179", "author": "Laker J.V Turner", "author_url": "https://laker.tech", "version": "1.0", "license": "MIT", "description": "It's essentially Cosmic Latte, as an OMG.LOL theme!", "preview_css": "{\r\n\t\"background_css\": \"background: #FFF8E7 !important;\",\r\n\t\"text_css\": \"color: #000;\",\r\n\t\"link_css\": \"color: #000;\",\r\n\t\"icon_css\": \"color: #000;\"\r\n}", "sample_profile": "{profile-picture}\r\n\r\n# Hayden Sato\r\n\r\n| Pronouns: she/her\r\n| Occupation: Arborist\r\n| Location: Fiji\r\n\r\n--- Bio ---\r\n\r\nI take care of trees!\r\n\r\n--- Profile Items ---\r\n\r\n- https://instagram.com/haydensato\r\n- https://twitter.com/haydensato\r\n- https://facebook.com/haydensato" }, "sun-kissed": { "id": "sun-kissed", "name": "Sun Kissed", "created": "1660967179", "updated": "1660967179", "author": "Catnatsuki", "author_url": "https://twitter.com/catnatsuki_", "version": "1.0", "license": "MIT", "description": "A theme which will remind you of a calm and beautiful sunrise.", "preview_css": "{\r\n\t\"background_css\": \"background: #fde3b3 !important;\",\r\n\t\"text_css\": \"color: #1F1B15;\",\r\n\t\"link_css\": \"color: #725a42;\",\r\n\t\"icon_css\": \"color: #f39519;\"\r\n}", "sample_profile": "{profile-picture}\r\n\r\n# Hayden Sato\r\n\r\n| Pronouns: she/her\r\n| Occupation: Arborist\r\n| Location: Fiji\r\n\r\n--- Bio ---\r\n\r\nI take care of trees!\r\n\r\n--- Profile Items ---\r\n\r\n- https://instagram.com/haydensato\r\n- https://twitter.com/haydensato\r\n- https://facebook.com/haydensato" } } } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="noauth-get-theme-retrieve-information-about-a-theme"><h2>Theme · Retrieve information about a theme</h2><p>Get information about a specific theme</p><p> <span class="no-auth"><i class="fa-solid fa-lock-keyhole-open"></i> No Auth</span> <span class="method get">GET</span> <span class="wrap">/theme/<span class="parameter">theme</span>/info </span> </p> <div class="response"> <h4><strong id="theme-retrieve-information-about-a-theme-retrieve-information-about-a-theme">Retrieve information about a theme</strong></h4> <pre><code class="language-bash">curl --location --request GET 'https://api.omg.lol/theme/default/info'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "theme": { "id": "default", "name": "Default", "created": "1660967179", "updated": "1660967179", "author": "omg.lol", "author_url": "https://omg.lol", "version": "1.0", "license": "MIT", "description": "A friendly, simple look for your amazing profile.", "preview_css": "{\r\n\t\"background_css\": \"background: linear-gradient(0deg, #3fb6b6 0%, #d56b86 100%) !important; background-repeat: no-repeat; background-attachment: fixed;\",\r\n\t\"text_css\": \"color: #000;\",\r\n\t\"link_css\": \"color: #000;\",\r\n\t\"icon_css\": \"color: #000;\"\r\n}", "sample_profile": "{profile-picture}\r\n\r\n# Hayden Sato\r\n\r\n| Pronouns: she/her\r\n| Occupation: Arborist\r\n| Location: Fiji\r\n\r\n--- Bio ---\r\n\r\nI take care of trees!\r\n\r\n--- Profile Items ---\r\n\r\n- https://instagram.com/haydensato\r\n- https://twitter.com/haydensato\r\n- https://facebook.com/haydensato" } } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="noauth-get-theme-retrieve-a-theme-preview"><h2>Theme · Retrieve a theme preview</h2><p>Get an HTML preview of a theme</p><p> <span class="no-auth"><i class="fa-solid fa-lock-keyhole-open"></i> No Auth</span> <span class="method get">GET</span> <span class="wrap">/theme/<span class="parameter">theme</span>/preview </span> </p> <div class="response"> <h4><strong id="theme-retrieve-a-theme-preview-retrieve-a-theme-preview">Retrieve a theme preview</strong></h4> <pre><code class="language-bash">curl --location --request GET 'https://api.omg.lol/theme/default/preview'</code></pre> <pre><code class="language-js">{"response":{"message":"Here\u2019s an HTML preview of the Default theme.","html":" <!DOCTYPE html>\n <html lang=\"en\">\n <head>\n <title>\n Hayden Sato\n <\/title>\n <meta charset=\"utf-8\">\n <meta property=\"og:type\" content=\"website\">\n <meta property=\"og:title\" content=\"Hayden Sato\">\n <meta property=\"og:description\" content=\"\">\n <meta property=\"og:image\" content=\"\">\n <meta name=\"viewport\" content=\"width=device-width\">\n <link href=\"https:\/\/static.omg.lol\/profiles\/themes\/css\/base.css?v=20220807\" rel=\"stylesheet\">\n <\/head>\n <body>\n <main>\n <h1 id=\"name\">\n Hayden Sato <a id=\"verification\" title=\"This address is verified.\" style=\"text-decoration: none; border: 0;\" href=\"https:\/\/home.omg.lol\/info\/profile-verification\"> <i class=\"fa-solid fa-badge-check\"><\/i><\/a>\n <\/h1>\n <div class=\"metadata\" id=\"pronouns\">\n she\/her\n <\/div>\n <div class=\"metadata\" id=\"occupation\">\n <i class=\"fa-solid fa-briefcase\"><\/i> Arborist\n <\/div>\n <div class=\"metadata\" id=\"location\">\n <i class=\"fa-solid fa-location-dot\"><\/i> Fiji\n <\/div>\n <div id=\"details\"><\/div>\n <div id=\"bio\">\n <p>\n I take care of trees!\n <\/p>\n <\/div>\n <div id=\"profile-items\">\n <ul class=\"fa-ul\">\n <li>\n <span class=\"fa-li\"> <i class=\"fa-brands fa-instagram\"><\/i><\/span> <a rel=\"me\" href=\"https:\/\/instagram.com\/haydensato\">haydensato<\/a>\n <\/li>\n <li>\n <span class=\"fa-li\"> <i class=\"fa-brands fa-twitter\"><\/i><\/span> <a rel=\"me\" href=\"https:\/\/twitter.com\/haydensato\">haydensato<\/a>\n <\/li>\n <li>\n <span class=\"fa-li\"> <i class=\"fa-brands fa-facebook\"><\/i><\/span> <a rel=\"me\" href=\"https:\/\/facebook.com\/haydensato\">haydensato<\/a>\n <\/li>\n <\/ul>\n <\/div>\n <div id=\"footer\">\n <a href=\"https:\/\/home.omg.lol\/\"> <span class=\"logotype\">omg <span class=\"logotype\" style=\"color: #f06595;\">.<\/span>lol<\/span> <br>\n <svg viewbox=\"0 0 500 500\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" id=\"prami\">\n <g transform=\"matrix(1.886789, 0, 0, -1.886789, -351.413971, 1414.84082)\" style>\n <g id=\"g24\" transform=\"matrix(1, 0, 0, 1, 318.75, 511.366486)\">\n <path d=\"m 0,0 c -20.346,0 -40.691,7.762 -56.215,23.285 l -53,53 c -31.047,31.047 -31.047,81.383 0,112.43 29.997,29.997 78,31.012 109.215,3.044 31.216,27.967 79.219,26.952 109.215,-3.044 31.047,-31.047 31.047,-81.383 0,-112.43 l -53,-53 C 40.692,7.762 20.346,0 0,0\" style=\"fill:#ff69ad;fill-opacity:1;fill-rule:nonzero;stroke:none\" id=\"path26\"><\/path>\n <\/g>\n <g id=\"g28\" transform=\"matrix(1, 0, 0, 1, 303.125, 656.25)\">\n <path d=\"m 0,0 c 0,-3.452 -2.798,-6.25 -6.25,-6.25 -3.452,0 -6.25,2.798 -6.25,6.25 0,3.452 2.798,6.25 6.25,6.25 C -2.798,6.25 0,3.452 0,0\" style=\"fill:#461036;fill-opacity:1;fill-rule:nonzero;stroke:none\" id=\"path30\"><\/path>\n <\/g>\n <g id=\"g32\" transform=\"matrix(1, 0, 0, 1, 303.125, 656.25)\">\n <path d=\"m 0,0 c 0,-3.452 -2.798,-6.25 -6.25,-6.25 -3.452,0 -6.25,2.798 -6.25,6.25 0,3.452 2.798,6.25 6.25,6.25 C -2.798,6.25 0,3.452 0,0 Z\" style=\"fill:none;stroke:#461036;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1\" id=\"path34\"><\/path>\n <\/g>\n <g id=\"g36\" transform=\"matrix(1, 0, 0, 1, 346.875, 656.25)\">\n <path d=\"m 0,0 c 0,-3.452 -2.798,-6.25 -6.25,-6.25 -3.452,0 -6.25,2.798 -6.25,6.25 0,3.452 2.798,6.25 6.25,6.25 C -2.798,6.25 0,3.452 0,0\" style=\"fill:#461036;fill-opacity:1;fill-rule:nonzero;stroke:none\" id=\"path38\"><\/path>\n <\/g>\n <g id=\"g40\" transform=\"matrix(1, 0, 0, 1, 346.875, 656.25)\">\n <path d=\"m 0,0 c 0,-3.452 -2.798,-6.25 -6.25,-6.25 -3.452,0 -6.25,2.798 -6.25,6.25 0,3.452 2.798,6.25 6.25,6.25 C -2.798,6.25 0,3.452 0,0 Z\" style=\"fill:none;stroke:#461036;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1\" id=\"path42\"><\/path>\n <\/g>\n <g id=\"g44\" transform=\"matrix(1, 0, 0, 1, 296.88681, 631.243286)\">\n <path d=\"M 0,0 C 10.004,-16.325 33.722,-16.325 43.726,0\" style=\"fill:none;stroke:#461036;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1\" id=\"path46\"><\/path>\n <\/g>\n <g id=\"g48\" transform=\"matrix(1, 0, 0, 1, 418.75, 637.5)\">\n <path d=\"M 0,0 C 0,17.259 -13.991,31.25 -31.25,31.25 -48.509,31.25 -62.5,17.259 -62.5,0 c 0,-17.259 13.991,-31.25 31.25,-31.25 C -13.991,-31.25 0,-17.259 0,0\" style=\"fill:#e34198;fill-opacity:1;fill-rule:nonzero;stroke:none\" id=\"path50\"><\/path>\n <\/g>\n <g id=\"g52\" transform=\"matrix(1, 0, 0, 1, 281.25, 637.5)\">\n <path d=\"M 0,0 C 0,17.259 -13.991,31.25 -31.25,31.25 -48.509,31.25 -62.5,17.259 -62.5,0 c 0,-17.259 13.991,-31.25 31.25,-31.25 C -13.991,-31.25 0,-17.259 0,0\" style=\"fill:#e34198;fill-opacity:1;fill-rule:nonzero;stroke:none\" id=\"path54\"><\/path>\n <\/g>\n <g id=\"g56\" transform=\"matrix(1, 0, 0, 1, 296.88681, 631.243286)\">\n <path d=\"M 0,0 C 10.004,-16.325 33.722,-16.325 43.726,0\" style=\"fill:none;stroke:#461036;stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1\" id=\"path58\"><\/path>\n <\/g>\n <\/g><\/svg><\/a>\n <\/div>\n <\/main>\n <\/body>\n<\/html>"}}</code></pre> </div> </section></div> <div class=""> <h1 id="web">Web</h1> <p style="flex-grow: 1;">Manage profile page and web stuff on an omg.lol address</p> </div> <div class="container gray-7-bg gray-3-fg"> <section id="token-get-web-retrieve-web-page-content"><h2>Web · Retrieve web page content</h2><p>Retrieve web content and information for an address</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method get">GET</span> <span class="wrap">/address/<span class="parameter">address</span>/web </span> </p> <div class="response"> <h4><strong id="web-retrieve-web-page-content-retrieve-web-page-content">Retrieve web page content</strong></h4> <pre><code class="language-bash">curl --location --request GET --header 'Authorization: Bearer api_key' 'https://api.omg.lol/address/foobar/web'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Here is the web content for foobar.", "content": "{profile-picture}\r\n\r\n# Foo Bar\r\n\r\n| Pronouns: they/them\r\n| Occupation: [Crop Trust](https://www.croptrust.org) \r\n| Location: Svalbard\r\n\r\n--- Bio ---\r\n\r\nOne thing about me is I once spilled coffee on a production server.\r\n\r\n--- Profile Items ---\r\n\r\n- [Twitter](https://twitter.com)\r\n- [Instagram](https://instagram.com)\r\n- [Mastodon](https://social.lol)\r\n- [Buy Me a Coffee](https://buymeacoffee.com) <small>(just don’t tell the server)</small>\r\n- https://geotastic.net/foobar\r\n", "type": "profile", "theme": "default", "css": "", "head": "", "verified": "1", "pfp": "foobar.jpg", "metadata": "{\"title\":\"\",\"description\":\"\"}", "branding": "default" } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="token-post-web-update-web-page-content-and-publish"><h2>Web · Update web page content and publish</h2><p>Update web content for an address</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method post">POST</span> <span class="wrap">/address/<span class="parameter">address</span>/web </span> </p> <div class="response"> <h4><strong id="web-update-web-page-content-and-publish-update-web-page-content-and-publish">Update web page content and publish</strong></h4> <pre><code class="language-bash">curl --location --request POST --header 'Authorization: Bearer api_key' 'https://api.omg.lol/address/haydensato/web' --data '{"publish": true, "content": "{profile-picture}\r\n\r\n# Foo Bar\r\n\r\n| Pronouns: they/them\r\n| Occupation: [Crop Trust](https://www.croptrust.org) \r\n| Location: Svalbard\r\n\r\n--- Bio ---\r\n\r\nOne thing about me is I once spilled coffee on a production server.\r\n\r\n--- Profile Items ---\r\n\r\n- [Twitter](https://twitter.com)\r\n- [Instagram](https://instagram.com)\r\n- [Mastodon](https://social.lol)\r\n- [Buy Me a Coffee](https://buymeacoffee.com) <small>(just don’t tell the server)</small>\r\n- https://geotastic.net/foobar\r\n"}'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Your web content has been saved and published." } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="token-post-web-update-web-page-content-without-publishing"><h2>Web · Update web page content without publishing</h2><p>Update web content for an address</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method post">POST</span> <span class="wrap">/address/<span class="parameter">address</span>/web </span> </p> <div class="response"> <h4><strong id="web-update-web-page-content-without-publishing-update-web-page-content-without-publishing">Update web page content without publishing</strong></h4> <pre><code class="language-bash">curl --location --request POST --header 'Authorization: Bearer api_key' 'https://api.omg.lol/address/haydensato/web' --data '{"content": "{profile-picture}\r\n\r\n# Foo Bar\r\n\r\n| Pronouns: they/them\r\n| Occupation: [Crop Trust](https://www.croptrust.org) \r\n| Location: Svalbard\r\n\r\n--- Bio ---\r\n\r\nOne thing about me is I once spilled coffee on a production server.\r\n\r\n--- Profile Items ---\r\n\r\n- [Twitter](https://twitter.com)\r\n- [Instagram](https://instagram.com)\r\n- [Mastodon](https://social.lol)\r\n- [Buy Me a Coffee](https://buymeacoffee.com) <small>(just don’t tell the server)</small>\r\n- https://geotastic.net/foobar\r\n"}'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Your web content has been saved." } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="token-post-web-upload-a-profile-picture"><h2>Web · Upload a profile picture</h2><p>Upload (or replace) a profile picture / avatar.</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method post">POST</span> <span class="wrap">/address/<span class="parameter">address</span>/pfp </span> </p> <div class="response"> <h4><strong id="web-upload-a-profile-picture-upload-a-profile-picture">Upload a profile picture</strong></h4> <pre><code class="language-bash">curl --location --request POST --header 'Authorization: Bearer api_key' 'https://api.omg.lol/address/adam/pfp'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "We received 2891341 bytes of data." } }</code></pre> </div> </section></div> <div class=""> <h1 id="weblog">Weblog</h1> <p style="flex-grow: 1;">Endpoints for managing your weblog.</p> </div> <div class="container gray-7-bg gray-3-fg"> <section id="token-get-weblog-retrieve-weblog-entries"><h2>Weblog · Retrieve weblog entries</h2><p>Retrieve all of your weblog entries.</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method get">GET</span> <span class="wrap">/address/<span class="parameter">address</span>/weblog/entries </span> </p> <div class="response"> <h4><strong id="weblog-retrieve-weblog-entries-retrieve-weblog-entries">Retrieve weblog entries</strong></h4> <pre><code class="language-bash">curl --location --request GET --header 'Authorization: Bearer api_key' 'https://api.omg.lol/address/foobar/weblog/entries'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Here are your weblog entries.", "entries": [ { "address": "foobar", "location": "/2022/12/my-weblog-post", "title": "My weblog post", "date": "1670615520", "type": "post", "status": "live", "source": "---\nDate: 2022-12-09 19:52\n---\n\n# My weblog post\n\nThis is a new blog post. You can author it in _Markdown_, which is **awesome**.", "body": "# My weblog post\n\nThis is a new blog post. You can author it in _Markdown_, which is **awesome**.", "output": "<h1>My weblog post</h1>\n<p>This is a new blog post. You can author it in <em>Markdown</em>, which is <strong>awesome</strong>.</p>", "metadata": "{\"date\":\"2022-12-09 19:52\",\"slug\":\"my-weblog-post\"}", "entry": "63aa3df342ba2" }, { "address": "foobar", "location": "/2022/12/test-post", "title": "Test post", "date": "1670795160", "type": "post", "status": "live", "source": "Date: 2022-12-11 5:46 PM EDT\n\n# Test post\n\nThis is a test.", "body": "# Test post\n\nThis is a test.", "output": "<h1>Test post</h1>\n<p>This is a test.</p>", "metadata": "{\"date\":\"2022-12-11 5:46 PM EDT\",\"slug\":\"test-post\"}", "entry": "abc123" } ] } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="token-post-weblog-create-a-new-weblog-entry"><h2>Weblog · Create a new weblog entry</h2><p>Create a new weblog entry.</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method post">POST</span> <span class="wrap">/address/<span class="parameter">address</span>/weblog/entry/<span class="parameter">entry</span> </span> </p> <div class="response"> <h4><strong id="weblog-create-a-new-weblog-entry-create-a-new-weblog-entry">Create a new weblog entry</strong></h4> <pre><code class="language-bash">curl --location --request POST --header 'Authorization: Bearer api_key' 'https://api.omg.lol/address/foobar/weblog/entry/abc123' --data 'Date: 2022-12-11 5:46 PM EDT # Test post This is a test.'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Your entry has been saved.", "entry": { "location": "/2022/12/test-post", "title": "Test post", "date": 1670795160, "type": "post", "status": "live", "body": "# Test post\n\nThis is a test.", "source": "Date: 2022-12-11 5:46 PM EDT\n\n# Test post\n\nThis is a test.", "metadata": { "date": "2022-12-11 5:46 PM EDT", "slug": "test-post" }, "output": "<h1>Test post</h1>\n<p>This is a test.</p>", "entry": "abc123" } } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="token-get-weblog-retrieve-a-weblog-entry"><h2>Weblog · Retrieve a weblog entry</h2><p>Retrieve a single weblog entry.</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method get">GET</span> <span class="wrap">/address/<span class="parameter">address</span>/weblog/entry/<span class="parameter">entry</span> </span> </p> <div class="response"> <h4><strong id="weblog-retrieve-a-weblog-entry-retrieve-a-weblog-entry">Retrieve a weblog entry</strong></h4> <pre><code class="language-bash">curl --location --request GET --header 'Authorization: Bearer api_key' 'https://api.omg.lol/address/foobar/weblog/entry/63aa3df342ba2'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Here is your weblog entry.", "entry": { "address": "foobar", "location": "/2022/12/my-weblog-post", "title": "My weblog post", "date": "1670615520", "type": "post", "status": "live", "source": "---\nDate: 2022-12-09 19:52\n---\n\n# My weblog post\n\nThis is a new blog post. You can author it in _Markdown_, which is **awesome**.", "body": "# My weblog post\n\nThis is a new blog post. You can author it in _Markdown_, which is **awesome**.", "output": "<h1>My weblog post</h1>\n<p>This is a new blog post. You can author it in <em>Markdown</em>, which is <strong>awesome</strong>.</p>", "metadata": "{\"date\":\"2022-12-09 19:52\",\"slug\":\"my-weblog-post\"}", "entry": "63aa3df342ba2", "id": "fh3dyct1fhaurm5pxrszq3mnptzsqmmop73ze" } } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="noauth-get-weblog-retrieve-the-latest-weblog-post"><h2>Weblog · Retrieve the latest weblog post</h2><p>Retrieve the latest post from a weblog.</p><p> <span class="no-auth"><i class="fa-solid fa-lock-keyhole-open"></i> No Auth</span> <span class="method get">GET</span> <span class="wrap">/address/<span class="parameter">address</span>/weblog/post/latest </span> </p> <div class="response"> <h4><strong id="weblog-retrieve-the-latest-weblog-post-retrieve-the-latest-weblog-post">Retrieve the latest weblog post</strong></h4> <pre><code class="language-bash">curl --location --request GET 'https://api.omg.lol/address/foobar/weblog/post/latest'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Here is the latest post.", "post": { "address": "foobar", "location": "/2022/12/test-post", "title": "Test post", "date": "1670795160", "type": "post", "status": "live", "source": "Date: 2022-12-11 5:46 PM EDT\n\n# Test post\n\nThis is a test.", "body": "# Test post\n\nThis is a test.", "output": "<h1>Test post</h1>\n<p>This is a test.</p>", "metadata": "{\"date\":\"2022-12-11 5:46 PM EDT\",\"slug\":\"test-post\"}", "entry": "abc123" } } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="token-delete-weblog-delete-a-weblog-entry"><h2>Weblog · Delete a weblog entry</h2><p>Permanently delete a weblog entry.</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method delete">DELETE</span> <span class="wrap">/address/<span class="parameter">address</span>/weblog/delete/<span class="parameter">entry</span> </span> </p> <div class="response"> <h4><strong id="weblog-delete-a-weblog-entry-delete-a-weblog-entry">Delete a weblog entry</strong></h4> <pre><code class="language-bash">curl --location --request DELETE --header 'Authorization: Bearer api_key' 'https://api.omg.lol/address/foobar/weblog/delete/63961b11b0a7d'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "OK, your weblog post was deleted." } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="token-get-weblog-retrieve-weblog-configuration"><h2>Weblog · Retrieve weblog configuration</h2><p>Retrieve your weblog configuration.</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method get">GET</span> <span class="wrap">/address/<span class="parameter">address</span>/weblog/configuration </span> </p> <div class="response"> <h4><strong id="weblog-retrieve-weblog-configuration-retrieve-weblog-configuration">Retrieve weblog configuration</strong></h4> <pre><code class="language-bash">curl --location --request GET --header 'Authorization: Bearer api_key' 'https://api.omg.lol/address/foobar/weblog/configuration'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Here is your weblog configuration.", "configuration": { "object": { "weblog-title": "A Weblog", "weblog-description": "This is a weblog.", "author": "Your Name", "separator": " · ", "tag-path": "/tag/", "timezone": "UTC", "date-format": "F j, Y g:i A", "default-post": "---\nDate: $date\n---\n\n# Your new post\n\nThis is a new blog post. You can author it in _Markdown_, which is **awesome**.", "feed-post-count": "25", "post-path-format": "/Y/m/", "recent-posts-count": "5", "recent-posts-format": "\n<ul>\n[post:begin]<li><a href=\"$location\">$title</a></li>[post:end]\n</ul>", "post-list-format": "\n<ul>\n[post:begin]<li><a href=\"$location\">$title</a></li>[post:end]\n</ul>", "search-status": "enabled", "search-results-success-message": "There [is|are] $count [result|results] for your search:", "search-results-failure-message": "There were no results found for your search.", "search-results-format": "\n<h2>Results for “$search”</h2>\n<p>$search_results_message</p>\n[post:begin]<h3><a href=\"$location\">$title</a></h3>\n<p>$date</p>\n<p>$snippet</p>[post:end]\n" }, "json": "{\n \"weblog-title\": \"A Weblog\",\n \"weblog-description\": \"This is a weblog.\",\n \"author\": \"Your Name\",\n \"separator\": \" \\u00b7 \",\n \"tag-path\": \"\\/tag\\/\",\n \"timezone\": \"UTC\",\n \"date-format\": \"F j, Y g:i A\",\n \"default-post\": \"---\\nDate: $date\\n---\\n\\n# Your new post\\n\\nThis is a new blog post. You can author it in _Markdown_, which is **awesome**.\",\n \"feed-post-count\": \"25\",\n \"post-path-format\": \"\\/Y\\/m\\/\",\n \"recent-posts-count\": \"5\",\n \"recent-posts-format\": \"\\n<ul>\\n[post:begin]<li><a href=\\\"$location\\\">$title<\\/a><\\/li>[post:end]\\n<\\/ul>\",\n \"post-list-format\": \"\\n<ul>\\n[post:begin]<li><a href=\\\"$location\\\">$title<\\/a><\\/li>[post:end]\\n<\\/ul>\",\n \"search-status\": \"enabled\",\n \"search-results-success-message\": \"There [is|are] $count [result|results] for your search:\",\n \"search-results-failure-message\": \"There were no results found for your search.\",\n \"search-results-format\": \"\\n<h2>Results for \\u201c$search\\u201d<\\/h2>\\n<p>$search_results_message<\\/p>\\n[post:begin]<h3><a href=\\\"$location\\\">$title<\\/a><\\/h3>\\n<p>$date<\\/p>\\n<p>$snippet<\\/p>[post:end]\\n\"\n}", "raw": "// Weblog Configuration\n\n# About your weblog\n\nWeblog Title: A Weblog\nWeblog Description: This is a weblog.\nAuthor: Your Name\n\n# General config stuff\n\nSeparator: · \n// Navigation: about, another-page, <a href=\"https://example.com\">Example</a>, [Example](https://example.com)\nTag path: /tag/\n\n# Time stuff\n\n; You can use a timezone value from the \"TZ database name\" column on this \n; web page: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones\n\nTimezone: UTC\nDate format: F j, Y g:i A\n\n# Posts\n\n// Post path format: /Y/m/\n\nDefault post: <<[---\nDate: $date\n---\n\n# Your new post\n\nThis is a new blog post. You can author it in _Markdown_, which is **awesome**.]>>\n" } } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="token-post-weblog-update-weblog-configuration"><h2>Weblog · Update weblog configuration</h2><p>Update your weblog configuration.</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method post">POST</span> <span class="wrap">/address/<span class="parameter">address</span>/weblog/configuration </span> </p> <div class="response"> <h4><strong id="weblog-update-weblog-configuration-update-weblog-configuration">Update weblog configuration</strong></h4> <pre><code class="language-bash">curl --location --request POST --header 'Authorization: Bearer api_key' 'https://api.omg.lol/address/foobar/weblog/configuration' --data '// Weblog Configuration # About your weblog Weblog Title: A Weblog Weblog Description: This is a weblog. Author: Your Name Landing page: home # General config stuff Separator: · // Navigation: about, another-page, <a href="https://example.com">Example</a>, [Example](https://example.com) Tag path: /tag/ # Time stuff ; You can use a timezone value from the "TZ database name" column on this ; web page: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones Timezone: UTC Date format: F j, Y g:i A # Posts Post path format: /Y/m/ Default post: <<[--- Date: $date --- # Your new post This is a new blog post. You can author it in _Markdown_, which is **awesome**.]>> Navigation: home, another-page # Navigation: home, [Profile](https://profile.omg.lol/rb/), 2022/12/apple-post, another-page '</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Your weblog configuration has been updated." } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="token-get-weblog-retrieve-weblog-template"><h2>Weblog · Retrieve weblog template</h2><p>Retrieve your weblog template.</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method get">GET</span> <span class="wrap">/address/<span class="parameter">address</span>/weblog/template </span> </p> <div class="response"> <h4><strong id="weblog-retrieve-weblog-template-retrieve-weblog-template">Retrieve weblog template</strong></h4> <pre><code class="language-bash">curl --location --request GET --header 'Authorization: Bearer api_key' 'https://api.omg.lol/address/foobar/weblog/template'</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Here is your weblog template.", "template": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<title>{weblog-title}{separator}{post-title}</title>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n{feeds}\n<style>\n@import url('https://static.omg.lol/type/font-honey.css');\n@import url('https://static.omg.lol/type/font-lato-regular.css');\n@import url('https://static.omg.lol/type/font-lato-bold.css');\n@import url('https://static.omg.lol/type/font-lato-italic.css');\n@import url('https://static.omg.lol/type/font-md-io.css');\n@import url('https://static.omg.lol/type/fontawesome-free/css/all.css');\n\n:root {\n\t--foreground: #212529;\n\t--background: #f8f9fa;\n\t--link: #0b7285;\n\t--accent: #868e96;\n}\n\n@media (prefers-color-scheme: dark) {\n\t:root {\n\t\t--foreground: #eee;\n\t\t--background: #222;\n\t\t--link: #99e9f2;\n\t\t--accent: #ced4da;\n\t}\n}\n\n* {\n\tbox-sizing: border-box;\n}\n\nbody {\n\tfont-family: 'Lato', sans-serif;\n\tfont-size: 120%;\n\tcolor: var(--foreground);\n\tbackground: var(--background);\n}\n\nheader nav ul {\n\tlist-style-type: none;\n\tmargin: 0;\n\tpadding: 0;\n}\n\nheader nav li {\n\tdisplay: inline-block;\n}\n\nheader nav li a {\n\tdisplay: block;\n\ttext-decoration: none;\n\tmargin-right: 1em;\n}\n\nh1, h2, h3, h4, h5, h6 {\n\tfont-family: 'VC Honey Deck', serif;\n\tmargin: 1rem 0;\n}\n\np, li {\n\tline-height: 160%;\n}\n\nheader, main, footer {\n\tmax-width: 60em;\n\tmargin: 2em auto;\n\tpadding: 0 1em;\n}\n\nheader {\n\tmargin-top: 4em;\n}\n\nfooter p {\n\tmargin-top: 5em;\n\tfont-size: 90%;\n\ttext-align: center;\n}\n\na:link { color: var(--link); }\na:visited { color: var(--link); }\na:hover { color: var(--link); }\na:active { color: var(--link); }\n\n.post-info, .post-tags {\n\tfont-size: 85%;\n\tcolor: var(--accent);\n\ttext-align: right;\n}\n\n.post-info i:nth-child(2) {\n\tmargin-left: .75em;\n}\n\n.tag {\n\tbackground: var(--accent);\n\tcolor: var(--background) !important;\n\tpadding: .3em .4em;\n\tmargin: .8em 0 0 .4em;\n\tborder-radius: .5em;\n\ttext-decoration: none;\n\tdisplay: inline-block;\n}\n\nhr {\n\tborder: 0;\n\theight: 1px;\n\tbackground: #333;\n\tmargin: 2em 0;\n}\n\ncode {\n\tpadding: .2em .3em;\n\tborder: 1px solid var(--accent);\n\twhite-space: pre-wrap;\n\tword-wrap: break-word; \n}\n\npre, code {\n\tfont-family: 'MD IO 0.4';\n\tfont-size: 90%;\n}\n\npre code {\n\tbackground: #000;\n\tcolor: #eee;\n\tdisplay: inline-block;\n\tpadding: 1em;\n\twhite-space: pre-wrap;\n\tword-wrap: break-word; \n}\n\nimg {\n\tmax-width: 100%;\n}\n\ntable {\n\tborder-collapse: collapse;\n}\n\ntd, th {\n\tpadding: .75em;\n\ttext-align: left;\n\tborder: 1px solid var(--accent);\n}\n\t\n.weblog-title a {\n\ttext-decoration: none;\n\tcolor: var(--foreground);\n}\n\n</style>\n</head>\n<body>\n\n<header>\n\t<h1 class=\"weblog-title\"><a href=\"/\">{weblog-title}</a></h1>\n\t{navigation}\n</header>\n\n<main>\n\n<article>\n\t{body}\n\t<aside class=\"post-info\">\n\t\t<i class=\"fa-solid fa-clock\"></i> {date}\n\t</aside>\n\t<aside class=\"post-tags\">\n\t\t{tags}\n\t</aside>\n</article>\n\n<hr>\n\n<h2>Recent posts</h2>\n\n{recent-posts}\n\n</main>\n\n<footer>\n\t<p>Made with <a href=\"https://weblog.lol\">weblog.lol</a>.</p>\n</footer>\n\n</body>\n</html>\n" } }</code></pre> </div> </section></div> <div class="container gray-7-bg gray-3-fg"> <section id="token-post-weblog-update-weblog-template"><h2>Weblog · Update weblog template</h2><p>Update your weblog template.</p><p> <span class="auth"><i class="fa-solid fa-lock-keyhole"></i> Bearer Token</span> <span class="method post">POST</span> <span class="wrap">/address/<span class="parameter">address</span>/weblog/template </span> </p> <div class="response"> <h4><strong id="weblog-update-weblog-template-update-weblog-template">Update weblog template</strong></h4> <pre><code class="language-bash">curl --location --request POST --header 'Authorization: Bearer api_key' 'https://api.omg.lol/address/foobar/weblog/template' --data '<!DOCTYPE html> <html lang="en"> <head> <title>{weblog-title}{separator}{post-title}</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> {feeds} <style> @import url('https://static.omg.lol/type/font-honey.css'); @import url('https://static.omg.lol/type/font-lato-regular.css'); @import url('https://static.omg.lol/type/font-lato-bold.css'); @import url('https://static.omg.lol/type/font-lato-italic.css'); @import url('https://static.omg.lol/type/font-md-io.css'); @import url('https://static.omg.lol/type/fontawesome-free/css/all.css'); :root { --foreground: #212529; --background: #f8f9fa; --link: #0b7285; --accent: #868e96; } @media (prefers-color-scheme: dark) { :root { --foreground: #eee; --background: #222; --link: #99e9f2; --accent: #ced4da; } } * { box-sizing: border-box; } body { font-family: 'Lato', sans-serif; font-size: 120%; color: var(--foreground); background: var(--background); } header nav ul { list-style-type: none; margin: 0; padding: 0; } header nav li { display: inline-block; } header nav li a { display: block; text-decoration: none; margin-right: 1em; } h1, h2, h3, h4, h5, h6 { font-family: 'VC Honey Deck', serif; margin: 1rem 0; } p, li { line-height: 160%; } header, main, footer { max-width: 60em; margin: 2em auto; padding: 0 1em; } header { margin-top: 4em; } footer p { margin-top: 5em; font-size: 90%; text-align: center; } a:link { color: var(--link); } a:visited { color: var(--link); } a:hover { color: var(--link); } a:active { color: var(--link); } .post-info, .post-tags { font-size: 85%; color: var(--accent); text-align: right; } .post-info i:nth-child(2) { margin-left: .75em; } .tag { background: var(--accent); color: var(--background) !important; padding: .3em .4em; margin: .8em 0 0 .4em; border-radius: .5em; text-decoration: none; display: inline-block; } hr { border: 0; height: 1px; background: #333; margin: 2em 0; } code { padding: .2em .3em; border: 1px solid var(--accent); white-space: pre-wrap; word-wrap: break-word; } pre, code { font-family: 'MD IO 0.4'; font-size: 90%; } pre code { background: #000; color: #eee; display: inline-block; padding: 1em; white-space: pre-wrap; word-wrap: break-word; } img { max-width: 100%; } table { border-collapse: collapse; } td, th { padding: .75em; text-align: left; border: 1px solid var(--accent); } .weblog-title a { text-decoration: none; color: var(--foreground); } </style> </head> <body> <header> <h1 class="weblog-title"><a href="/">{weblog-title}</a></h1> {navigation} </header> <main> <article> {body} <aside class="post-info"> <i class="fa-solid fa-clock"></i> <a href="{permalink}">{date}</a> </aside> <aside class="post-tags"> {tags} </aside> </article> <hr> <h2>Recent posts</h2> {recent-posts} </main> <footer> <p>Made with <a href="https://weblog.lol">weblog.lol</a>.</p> </footer> </body> </html> '</code></pre> <pre><code class="language-js">{ "request": { "status_code": 200, "success": true }, "response": { "message": "Your weblog template has been updated." } }</code></pre> </div> </section></div> </div> </div> </main> <footer> <div class="area"> <div class="box basis" style="--basis: 15em;"> <ul class="fa-ul"> <li><a href="https://omglol.news"><span class="fa-li"><i class="fa-solid fa-fw fa-newspaper"></i></span>News & Updates</a></li> <li><a href="https://broke.lol"><span class="fa-li"><i class="fa-solid fa-fw fa-wave-pulse"></i></span>System Status</a></li> <li><a href="https://api.omg.lol"><span class="fa-li"><i class="fa-solid fa-fw fa-brackets-curly"></i></span>API</a></li> <li><a href="https://home.omg.lol/info"><span class="fa-li"><i class="fa-solid fa-fw fa-handshake-angle"></i></span>Info & Help</a></li> <li><a href="https://home.omg.lol/info/legal"><span class="fa-li"><i class="fa-solid fa-fw fa-scale-balanced"></i></span>Legal</a></li> </ul> </div> <div class="box basis centered" style="--basis: 20em;"> <p><span class="logotype"><a href="https://home.omg.lol">omg<span class="pink-5-fg">.</span>lol</a></span> is made by <a href="https://neatnik.net/">Neatnik</a> in Louisville, KY.</p> <p>We hope you’re having a great day.</p> <p><img src="https://cdn.cache.lol/img/prami_content.svg" alt="Prami looking rather contented" style="width: 3.5em;"></p> </div> <div class="box basis centered" style="--basis: 15em;"> <ul class="horizontal"> <li><a rel="me" href="https://social.lol/@prami"><i class="fa-brands fa-fw fa-2x fa-mastodon"></i></a></li> <li><a href="https://github.com/neatnik/omg.lol"><i class="fa-brands fa-fw fa-2x fa-github"></i></a></li> <li><a href="http://youtube.com/@omgdotlol"><i class="fa-brands fa-fw fa-2x fa-youtube"></i></a></li> </ul> </div> </div> </footer> </div> <script src="https://cdn.cache.lol/js/prism.js"></script> <script> const dark_class = 'gray-6-fg fa-duotone fa-fw fa-moon'; const light_class = 'yellow-3-fg fa-duotone fa-fw fa-sun'; // set the color scheme based on the browser/OS preference, if any if(window.matchMedia('(prefers-color-scheme)').media !== 'not all') { // the browser is indicating that it supports prefers-color-scheme if(window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { // the browser prefers dark mode var body = document.body; body.classList.add('dark-mode'); document.getElementById('color_mode_button').innerHTML = '<i class="'+light_class+'"></i>'; } else { // the browser doesn’t prefer dark mode var body = document.body; body.classList.add('light-mode'); document.getElementById('color_mode_button').innerHTML = '<i class="'+dark_class+'"></i>'; } // add an event listener to toggle the color scheme as changes are made, as long as the user hasn't already set their mode with the button window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => { if(!localStorage.getItem('color_scheme')) { const new_color_scheme = event.matches ? "dark" : "light"; toggle_color_scheme(); } }); } else { // browser does not support prefers-color-scheme var body = document.body; body.classList.add('dark-mode'); document.getElementById('color_mode_button').innerHTML = '<i class="'+light_class+'"></i>'; } if(localStorage.getItem('color_scheme')) { var body = document.body; body.className = localStorage.getItem('color_scheme'); if(localStorage.getItem('color_scheme') == 'light-mode') document.getElementById('color_mode_button').innerHTML = '<i class="'+dark_class+'"></i>'; else document.getElementById('color_mode_button').innerHTML = '<i class="'+light_class+'"></i>'; } function toggle_color_scheme(clicked = false) { var body = document.body; var color_scheme = body.className; body.className = color_scheme == "dark-mode" ? "light-mode" : "dark-mode"; color_scheme = body.className; if(clicked) localStorage.setItem('color_scheme', color_scheme); if(color_scheme == 'light-mode') document.getElementById('color_mode_button').innerHTML = '<i class="'+dark_class+'"></i>'; else document.getElementById('color_mode_button').innerHTML = '<i class="'+light_class+'"></i>'; } </script> </body> </html> <script> // Get all sections that have an ID defined //const sections = document.querySelectorAll("section[id]"); const sections = document.querySelectorAll("section[id]"); // Add an event listener listening for scroll window.addEventListener("scroll", navHighlighter); function navHighlighter() { //console.log(window.scrollY); if(window.scrollY >= 190) { document.getElementById('toc_scrollable').style.height = '95vh'; } if(window.scrollY <= 220) { document.getElementById('toc_scrollable').style.height = 'calc(100vh - 15em)'; } // Get current scroll position let scrollY = window.pageYOffset; // Now we loop through sections to get height, top and ID values for each sections.forEach(current => { const sectionHeight = current.offsetHeight; // Original: //const sectionTop = current.offsetTop - 50; // // Alex Turnwall's update: // Updated original line (above) to use getBoundingClientRect instead of offsetTop, based on: // https://plainjs.com/javascript/styles/get-the-position-of-an-element-relative-to-the-document-24/ // https://newbedev.com/difference-between-getboundingclientrect-top-and-offsettop // This allows the use of sections inside a relative parent, which I'm not using here, but needed for a project // const sectionTop = (current.getBoundingClientRect().top + window.pageYOffset) - 50; sectionId = current.getAttribute("id"); /* - If our current scroll position enters the space where current section on screen is, add .active class to corresponding navigation link, else remove it - To know which link needs an active class, we use sectionId variable we are getting while looping through sections as an selector */ if ( scrollY > sectionTop && scrollY <= sectionTop + sectionHeight ){ //document.querySelector(".navigation a[href*=" + sectionId + "]").classList.add("active"); console.log('adding: ' + sectionId); document.querySelector("nav a[href*=" + sectionId + "]").classList.add("active"); //var rect = document.querySelector("nav a[href*=" + sectionId + "]").element.getBoundingClientRect(); //document.getElementById('toc_scrollable').scrollTo(rect.top,0); } else { //document.querySelector(".navigation a[href*=" + sectionId + "]").classList.remove("active"); console.log('removing: ' + sectionId); document.querySelector("nav a[href*=" + sectionId + "]").classList.remove("active"); } }); } </script>