This repository was archived by the owner on Oct 16, 2025. It is now read-only.

Repository files navigation

ThinNotionApi

ThinNotionApi is an Elixir package to easily communicate with the Notion API. The main objective to provide a simple straight forward way for a person to fetch or update information without a large or complex interface.

Installation

If available in Hex, the package can be installed by adding thin_notion_api to your list of dependencies in mix.exs:

defdepsdo[{:thin_notion_api,"~> 1.0.1"}]end

Next log in to the Notion Developers site. Visit My Integrations and create New Integration. After creating your integration, you should now have a Internal Integration Token you will use for all your Notion API requests. Make sure to keep this secret private and never leak it because at the moment you cannot regenerate a new one if compromised.

Add your integration token and which Version of the Notion API you are using (if not provided, it will default to 2021-08-16) to config/config.exs:

config:thin_notion_api,:api_key,System.get_env("NOTION_API_KEY")config:thin_notion_api,:notion_version,System.get_env("NOTION_VERSION")

You are good to go.

Usage

Retrieve information about a Notion database

iex>ThinNotionApi.Databases.retrieve_database(database_id){:ok,%{...}}

Retrieves a Page object using the ID specified. Responses contains page properties, not page content. To fetch page content, use the retrieve block children endpoint.

iex>ThinNotionApi.Pages.retrieve_page(page_id){:ok,%{...}}

Find all modules and functions you can use in the API Reference section.

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/thin_notion_api.

v2021 Supported Features

  • List database
  • Query database
  • Page object actions
  • Block actions
  • User actions
  • Search

Development Progress

TODO:

Release Process

Validate documentation by generating using following command

mix docs

You can spin up a quick web server to host documentation if you have node installed by using the following command:

npx http-serve doc

Ensure version in the mix.exs has been properly incremented.

If everything looks good, you can release by running.

mix hex.publish

About

A thin Notion API package for Elixir that gives you a simple way to communicate with the Notion API

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
This repository was archived by the owner on Oct 16, 2025. It is now read-only.

Repository files navigation

ThinNotionApi

ThinNotionApi is an Elixir package to easily communicate with the Notion API. The main objective to provide a simple straight forward way for a person to fetch or update information without a large or complex interface.

Installation

If available in Hex, the package can be installed by adding thin_notion_api to your list of dependencies in mix.exs:

defdepsdo[{:thin_notion_api,"~> 1.0.1"}]end

Next log in to the Notion Developers site. Visit My Integrations and create New Integration. After creating your integration, you should now have a Internal Integration Token you will use for all your Notion API requests. Make sure to keep this secret private and never leak it because at the moment you cannot regenerate a new one if compromised.

Add your integration token and which Version of the Notion API you are using (if not provided, it will default to 2021-08-16) to config/config.exs:

config:thin_notion_api,:api_key,System.get_env("NOTION_API_KEY")config:thin_notion_api,:notion_version,System.get_env("NOTION_VERSION")

You are good to go.

Usage

Retrieve information about a Notion database

iex>ThinNotionApi.Databases.retrieve_database(database_id){:ok,%{...}}

Retrieves a Page object using the ID specified. Responses contains page properties, not page content. To fetch page content, use the retrieve block children endpoint.

iex>ThinNotionApi.Pages.retrieve_page(page_id){:ok,%{...}}

Find all modules and functions you can use in the API Reference section.

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/thin_notion_api.

v2021 Supported Features

  • List database
  • Query database
  • Page object actions
  • Block actions
  • User actions
  • Search

Development Progress

TODO:

Release Process

Validate documentation by generating using following command

mix docs

You can spin up a quick web server to host documentation if you have node installed by using the following command:

npx http-serve doc

Ensure version in the mix.exs has been properly incremented.

If everything looks good, you can release by running.

mix hex.publish

About

A thin Notion API package for Elixir that gives you a simple way to communicate with the Notion API

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Oct 16, 2025. It is now read-only.

Repository files navigation

ThinNotionApi

ThinNotionApi is an Elixir package to easily communicate with the Notion API. The main objective to provide a simple straight forward way for a person to fetch or update information without a large or complex interface.

Installation

If available in Hex, the package can be installed by adding thin_notion_api to your list of dependencies in mix.exs:

defdepsdo[{:thin_notion_api,"~> 1.0.1"}]end

Next log in to the Notion Developers site. Visit My Integrations and create New Integration. After creating your integration, you should now have a Internal Integration Token you will use for all your Notion API requests. Make sure to keep this secret private and never leak it because at the moment you cannot regenerate a new one if compromised.

Add your integration token and which Version of the Notion API you are using (if not provided, it will default to 2021-08-16) to config/config.exs:

config:thin_notion_api,:api_key,System.get_env("NOTION_API_KEY")config:thin_notion_api,:notion_version,System.get_env("NOTION_VERSION")

You are good to go.

Usage

Retrieve information about a Notion database

iex>ThinNotionApi.Databases.retrieve_database(database_id){:ok,%{...}}

Retrieves a Page object using the ID specified. Responses contains page properties, not page content. To fetch page content, use the retrieve block children endpoint.

iex>ThinNotionApi.Pages.retrieve_page(page_id){:ok,%{...}}

Find all modules and functions you can use in the API Reference section.

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/thin_notion_api.

v2021 Supported Features

  • List database
  • Query database
  • Page object actions
  • Block actions
  • User actions
  • Search

Development Progress

TODO:

Release Process

Validate documentation by generating using following command

mix docs

You can spin up a quick web server to host documentation if you have node installed by using the following command:

npx http-serve doc

Ensure version in the mix.exs has been properly incremented.

If everything looks good, you can release by running.

mix hex.publish

About

A thin Notion API package for Elixir that gives you a simple way to communicate with the Notion API

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Oct 16, 2025. It is now read-only.

Repository files navigation

ThinNotionApi

ThinNotionApi is an Elixir package to easily communicate with the Notion API. The main objective to provide a simple straight forward way for a person to fetch or update information without a large or complex interface.

Installation

If available in Hex, the package can be installed by adding thin_notion_api to your list of dependencies in mix.exs:

defdepsdo[{:thin_notion_api,"~> 1.0.1"}]end

Next log in to the Notion Developers site. Visit My Integrations and create New Integration. After creating your integration, you should now have a Internal Integration Token you will use for all your Notion API requests. Make sure to keep this secret private and never leak it because at the moment you cannot regenerate a new one if compromised.

Add your integration token and which Version of the Notion API you are using (if not provided, it will default to 2021-08-16) to config/config.exs:

config:thin_notion_api,:api_key,System.get_env("NOTION_API_KEY")config:thin_notion_api,:notion_version,System.get_env("NOTION_VERSION")

You are good to go.

Usage

Retrieve information about a Notion database

iex>ThinNotionApi.Databases.retrieve_database(database_id){:ok,%{...}}

Retrieves a Page object using the ID specified. Responses contains page properties, not page content. To fetch page content, use the retrieve block children endpoint.

iex>ThinNotionApi.Pages.retrieve_page(page_id){:ok,%{...}}

Find all modules and functions you can use in the API Reference section.

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/thin_notion_api.

v2021 Supported Features

  • List database
  • Query database
  • Page object actions
  • Block actions
  • User actions
  • Search

Development Progress

TODO:

Release Process

Validate documentation by generating using following command

mix docs

You can spin up a quick web server to host documentation if you have node installed by using the following command:

npx http-serve doc

Ensure version in the mix.exs has been properly incremented.

If everything looks good, you can release by running.

mix hex.publish

About

A thin Notion API package for Elixir that gives you a simple way to communicate with the Notion API

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
This repository was archived by the owner on Oct 16, 2025. It is now read-only.

Repository files navigation

ThinNotionApi

ThinNotionApi is an Elixir package to easily communicate with the Notion API. The main objective to provide a simple straight forward way for a person to fetch or update information without a large or complex interface.

Installation

If available in Hex, the package can be installed by adding thin_notion_api to your list of dependencies in mix.exs:

defdepsdo[{:thin_notion_api,"~> 1.0.1"}]end

Next log in to the Notion Developers site. Visit My Integrations and create New Integration. After creating your integration, you should now have a Internal Integration Token you will use for all your Notion API requests. Make sure to keep this secret private and never leak it because at the moment you cannot regenerate a new one if compromised.

Add your integration token and which Version of the Notion API you are using (if not provided, it will default to 2021-08-16) to config/config.exs:

config:thin_notion_api,:api_key,System.get_env("NOTION_API_KEY")config:thin_notion_api,:notion_version,System.get_env("NOTION_VERSION")

You are good to go.

Usage

Retrieve information about a Notion database

iex>ThinNotionApi.Databases.retrieve_database(database_id){:ok,%{...}}

Retrieves a Page object using the ID specified. Responses contains page properties, not page content. To fetch page content, use the retrieve block children endpoint.

iex>ThinNotionApi.Pages.retrieve_page(page_id){:ok,%{...}}

Find all modules and functions you can use in the API Reference section.

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/thin_notion_api.

v2021 Supported Features

  • List database
  • Query database
  • Page object actions
  • Block actions
  • User actions
  • Search

Development Progress

TODO:

Release Process

Validate documentation by generating using following command

mix docs

You can spin up a quick web server to host documentation if you have node installed by using the following command:

npx http-serve doc

Ensure version in the mix.exs has been properly incremented.

If everything looks good, you can release by running.

mix hex.publish

About

A thin Notion API package for Elixir that gives you a simple way to communicate with the Notion API

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Oct 16, 2025. It is now read-only.

Repository files navigation

ThinNotionApi

ThinNotionApi is an Elixir package to easily communicate with the Notion API. The main objective to provide a simple straight forward way for a person to fetch or update information without a large or complex interface.

Installation

If available in Hex, the package can be installed by adding thin_notion_api to your list of dependencies in mix.exs:

defdepsdo[{:thin_notion_api,"~> 1.0.1"}]end

Next log in to the Notion Developers site. Visit My Integrations and create New Integration. After creating your integration, you should now have a Internal Integration Token you will use for all your Notion API requests. Make sure to keep this secret private and never leak it because at the moment you cannot regenerate a new one if compromised.

Add your integration token and which Version of the Notion API you are using (if not provided, it will default to 2021-08-16) to config/config.exs:

config:thin_notion_api,:api_key,System.get_env("NOTION_API_KEY")config:thin_notion_api,:notion_version,System.get_env("NOTION_VERSION")

You are good to go.

Usage

Retrieve information about a Notion database

iex>ThinNotionApi.Databases.retrieve_database(database_id){:ok,%{...}}

Retrieves a Page object using the ID specified. Responses contains page properties, not page content. To fetch page content, use the retrieve block children endpoint.

iex>ThinNotionApi.Pages.retrieve_page(page_id){:ok,%{...}}

Find all modules and functions you can use in the API Reference section.

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/thin_notion_api.

v2021 Supported Features

  • List database
  • Query database
  • Page object actions
  • Block actions
  • User actions
  • Search

Development Progress

TODO:

Release Process

Validate documentation by generating using following command

mix docs

You can spin up a quick web server to host documentation if you have node installed by using the following command:

npx http-serve doc

Ensure version in the mix.exs has been properly incremented.

If everything looks good, you can release by running.

mix hex.publish

About

A thin Notion API package for Elixir that gives you a simple way to communicate with the Notion API

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Oct 16, 2025. It is now read-only.

Repository files navigation

ThinNotionApi

ThinNotionApi is an Elixir package to easily communicate with the Notion API. The main objective to provide a simple straight forward way for a person to fetch or update information without a large or complex interface.

Installation

If available in Hex, the package can be installed by adding thin_notion_api to your list of dependencies in mix.exs:

defdepsdo[{:thin_notion_api,"~> 1.0.1"}]end

Next log in to the Notion Developers site. Visit My Integrations and create New Integration. After creating your integration, you should now have a Internal Integration Token you will use for all your Notion API requests. Make sure to keep this secret private and never leak it because at the moment you cannot regenerate a new one if compromised.

Add your integration token and which Version of the Notion API you are using (if not provided, it will default to 2021-08-16) to config/config.exs:

config:thin_notion_api,:api_key,System.get_env("NOTION_API_KEY")config:thin_notion_api,:notion_version,System.get_env("NOTION_VERSION")

You are good to go.

Usage

Retrieve information about a Notion database

iex>ThinNotionApi.Databases.retrieve_database(database_id){:ok,%{...}}

Retrieves a Page object using the ID specified. Responses contains page properties, not page content. To fetch page content, use the retrieve block children endpoint.

iex>ThinNotionApi.Pages.retrieve_page(page_id){:ok,%{...}}

Find all modules and functions you can use in the API Reference section.

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/thin_notion_api.

v2021 Supported Features

  • List database
  • Query database
  • Page object actions
  • Block actions
  • User actions
  • Search

Development Progress

TODO:

Release Process

Validate documentation by generating using following command

mix docs

You can spin up a quick web server to host documentation if you have node installed by using the following command:

npx http-serve doc

Ensure version in the mix.exs has been properly incremented.

If everything looks good, you can release by running.

mix hex.publish

About

A thin Notion API package for Elixir that gives you a simple way to communicate with the Notion API

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
This repository was archived by the owner on Oct 16, 2025. It is now read-only.

Repository files navigation

ThinNotionApi

ThinNotionApi is an Elixir package to easily communicate with the Notion API. The main objective to provide a simple straight forward way for a person to fetch or update information without a large or complex interface.

Installation

If available in Hex, the package can be installed by adding thin_notion_api to your list of dependencies in mix.exs:

defdepsdo[{:thin_notion_api,"~> 1.0.1"}]end

Next log in to the Notion Developers site. Visit My Integrations and create New Integration. After creating your integration, you should now have a Internal Integration Token you will use for all your Notion API requests. Make sure to keep this secret private and never leak it because at the moment you cannot regenerate a new one if compromised.

Add your integration token and which Version of the Notion API you are using (if not provided, it will default to 2021-08-16) to config/config.exs:

config:thin_notion_api,:api_key,System.get_env("NOTION_API_KEY")config:thin_notion_api,:notion_version,System.get_env("NOTION_VERSION")

You are good to go.

Usage

Retrieve information about a Notion database

iex>ThinNotionApi.Databases.retrieve_database(database_id){:ok,%{...}}

Retrieves a Page object using the ID specified. Responses contains page properties, not page content. To fetch page content, use the retrieve block children endpoint.

iex>ThinNotionApi.Pages.retrieve_page(page_id){:ok,%{...}}

Find all modules and functions you can use in the API Reference section.

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/thin_notion_api.

v2021 Supported Features

  • List database
  • Query database
  • Page object actions
  • Block actions
  • User actions
  • Search

Development Progress

TODO:

Release Process

Validate documentation by generating using following command

mix docs

You can spin up a quick web server to host documentation if you have node installed by using the following command:

npx http-serve doc

Ensure version in the mix.exs has been properly incremented.

If everything looks good, you can release by running.

mix hex.publish

About

A thin Notion API package for Elixir that gives you a simple way to communicate with the Notion API

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages