<!-- CANARY: REQ=REQ-DOCS-001; FEATURE="Docs"; ASPECT=Documentation; STATUS=TESTED; OWNER=docs; UPDATED=2026-01-15 --> <h2 id="rest-api-integration" class="position-relative d-flex align-items-center group"> <span>REST API Integration</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="rest-api-integration" aria-haspopup="dialog" aria-label="Share link: REST API Integration"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h2><div id="headingShareModal" class="heading-share-modal" role="dialog" aria-modal="true" aria-labelledby="headingShareTitle" hidden> <div class="hsm-dialog" role="document"> <div class="hsm-header"> <h2 id="headingShareTitle" class="h6 mb-0 fw-bold">Share this section</h2> <button type="button" class="hsm-close" aria-label="Close"> <i class="fa-solid fa-xmark"></i> </button> </div> <div class="hsm-body"> <label for="headingShareInput" class="form-label small text-muted mb-1 text-uppercase fw-bold" style="font-size: 0.7rem; letter-spacing: 0.5px;">Permalink</label> <div class="input-group mb-4 hsm-url-group"> <input id="headingShareInput" type="text" class="form-control font-monospace" readonly aria-readonly="true" style="font-size: 0.85rem;" /> <button class="btn btn-primary hsm-copy" type="button" aria-label="Copy" title="Copy"> <i class="fa-duotone fa-clipboard" aria-hidden="true"></i> </button> </div> <div class="small fw-bold mb-2 text-muted text-uppercase" style="font-size: 0.7rem; letter-spacing: 0.5px;">Share via</div> <div class="hsm-share-grid"> <a id="share-twitter" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer"> <i class="fa-brands fa-twitter me-2"></i>Twitter </a> <a id="share-linkedin" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer"> <i class="fa-brands fa-linkedin me-2"></i>LinkedIn </a> <a id="share-facebook" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer"> <i class="fa-brands fa-facebook me-2"></i>Facebook </a> </div> </div> </div> </div> <style> .heading-share-modal { position: fixed; inset: 0; display: flex; justify-content: center; align-items: center; background: rgba(0, 0, 0, 0.6); z-index: 1050; padding: 1rem; backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); } .heading-share-modal[hidden] { display: none !important; } .hsm-dialog { max-width: 420px; width: 100%; background: var(--bs-body-bg, #fff); color: var(--bs-body-color, #212529); border: 1px solid var(--bs-border-color, rgba(0,0,0,0.1)); border-radius: 1rem; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); overflow: hidden; animation: hsm-fade-in 0.2s ease-out; } @keyframes hsm-fade-in { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } } [data-bs-theme="dark"] .hsm-dialog { background: #1e293b; border-color: rgba(255,255,255,0.1); color: #f8f9fa; } .hsm-header { display: flex; justify-content: space-between; align-items: center; padding: 1rem 1.5rem; border-bottom: 1px solid var(--bs-border-color, rgba(0,0,0,0.1)); background: rgba(0,0,0,0.02); } [data-bs-theme="dark"] .hsm-header { background: rgba(255,255,255,0.02); border-color: rgba(255,255,255,0.1); } .hsm-close { background: transparent; border: none; color: inherit; opacity: 0.5; padding: 0.25rem 0.5rem; border-radius: 0.25rem; font-size: 1.2rem; line-height: 1; transition: opacity 0.2s; } .hsm-close:hover { opacity: 1; } .hsm-body { padding: 1.5rem; } .hsm-url-group { display: flex !important; align-items: stretch; } .hsm-url-group .form-control { flex: 1; min-width: 0; margin: 0; background: var(--bs-secondary-bg, #f8f9fa); border-color: var(--bs-border-color, #dee2e6); border-top-right-radius: 0; border-bottom-right-radius: 0; height: 42px; } .hsm-url-group .btn { flex: 0 0 auto; margin: 0; margin-left: -1px; border-top-left-radius: 0; border-bottom-left-radius: 0; height: 42px; display: flex; align-items: center; justify-content: center; padding: 0 1.25rem; z-index: 2; } [data-bs-theme="dark"] .hsm-url-group .form-control { background: #0f172a; border-color: #334155; color: #e2e8f0; } .hsm-share-grid { display: flex; flex-direction: column; gap: 0.5rem; } .hsm-share-grid .btn { display: flex; align-items: center; justify-content: center; font-size: 0.9rem; padding: 0.6rem; border-color: var(--bs-border-color); width: 100%; } [data-bs-theme="dark"] .hsm-share-grid .btn { color: #e2e8f0; border-color: #475569; } [data-bs-theme="dark"] .hsm-share-grid .btn:hover { background: #334155; border-color: #cbd5e1; } </style> <script> (function(){ const modal = document.getElementById('headingShareModal'); if(!modal) return; const input = modal.querySelector('#headingShareInput'); const copyBtn = modal.querySelector('.hsm-copy'); const twitter = modal.querySelector('#share-twitter'); const linkedin = modal.querySelector('#share-linkedin'); const facebook = modal.querySelector('#share-facebook'); const closeBtn = modal.querySelector('.hsm-close'); let lastFocus=null; let trapBound=false; function buildUrl(id){ return window.location.origin + window.location.pathname + '#' + id; } function isOpen(){ return !modal.hasAttribute('hidden'); } function hydrate(id){ const url=buildUrl(id); input.value=url; const enc=encodeURIComponent(url); const text=encodeURIComponent(document.title); if(twitter) twitter.href=`https://twitter.com/intent/tweet?url=${enc}&text=${text}`; if(linkedin) linkedin.href=`https://www.linkedin.com/sharing/share-offsite/?url=${enc}`; if(facebook) facebook.href=`https://www.facebook.com/sharer/sharer.php?u=${enc}`; } function openModal(id){ lastFocus=document.activeElement; hydrate(id); if(!isOpen()){ modal.removeAttribute('hidden'); } requestAnimationFrame(()=>{ input.focus(); }); trapFocus(); } function closeModal(){ if(!isOpen()) return; modal.setAttribute('hidden',''); if(lastFocus && typeof lastFocus.focus==='function') lastFocus.focus(); } function copyCurrent(){ try{ navigator.clipboard.writeText(input.value).then(()=>feedback(true),()=>fallback()); } catch(e){ fallback(); } } function fallback(){ input.select(); try{ document.execCommand('copy'); feedback(true);}catch(e){ feedback(false);} } function feedback(ok){ if(!copyBtn) return; const icon=copyBtn.querySelector('i'); if(!icon) return; const prev=copyBtn.getAttribute('data-prev')||icon.className; if(!copyBtn.getAttribute('data-prev')) copyBtn.setAttribute('data-prev',prev); icon.className= ok ? 'fa-duotone fa-clipboard-check':'fa-duotone fa-circle-exclamation'; setTimeout(()=>{ icon.className=prev; },1800); } function handleShareClick(e){ e.preventDefault(); const btn=e.currentTarget; const id=btn.getAttribute('data-share-target'); if(id) openModal(id); } function bindShareButtons(){ document.querySelectorAll('.h-share').forEach(btn=>{ if(!btn.dataset.hShareBound){ btn.addEventListener('click', handleShareClick); btn.dataset.hShareBound='1'; } }); } bindShareButtons(); if(document.readyState==='loading'){ document.addEventListener('DOMContentLoaded', bindShareButtons); } else { requestAnimationFrame(bindShareButtons); } document.addEventListener('click', function(e){ const shareBtn=e.target.closest && e.target.closest('.h-share'); if(shareBtn && !shareBtn.dataset.hShareBound){ handleShareClick.call(shareBtn, e); } }, true); document.addEventListener('click', e=>{ if(e.target===modal) closeModal(); if(e.target.closest && e.target.closest('.hsm-close')){ e.preventDefault(); closeModal(); } if(copyBtn && (e.target===copyBtn || (e.target.closest && e.target.closest('.hsm-copy')))) { e.preventDefault(); copyCurrent(); } }); document.addEventListener('keydown', e=>{ if(e.key==='Escape' && isOpen()) closeModal(); }); function trapFocus(){ if(trapBound) return; trapBound=true; modal.addEventListener('keydown', f=>{ if(f.key==='Tab' && isOpen()){ const focusable=[...modal.querySelectorAll('a[href],button,input,textarea,select,[tabindex]:not([tabindex="-1"])')].filter(el=>!el.hasAttribute('disabled')); if(!focusable.length) return; const first=focusable[0]; const last=focusable[focusable.length-1]; if(f.shiftKey && document.activeElement===first){ f.preventDefault(); last.focus(); } else if(!f.shiftKey && document.activeElement===last){ f.preventDefault(); first.focus(); } } }); } if(closeBtn) closeBtn.addEventListener('click', e=>{ e.preventDefault(); closeModal(); }); })(); </script><p>Geode provides a comprehensive REST API for HTTP-based integration, enabling access from any platform or language that can make HTTP requests. While native QUIC clients offer optimal performance, the REST API provides broad compatibility, ease of use, and standardized error handling for web services and microservices architectures.</p> <h3 id="introduction-to-geode-rest-api" class="position-relative d-flex align-items-center group"> <span>Introduction to Geode REST API</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="introduction-to-geode-rest-api" aria-haspopup="dialog" aria-label="Share link: Introduction to Geode REST API"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p>The REST API exposes all core Geode functionality through HTTP endpoints, following RESTful design principles. The API is designed for:</p> <ul> <li><strong>Cross-Platform Integration</strong>: Access Geode from any language or platform</li> <li><strong>Web Application Development</strong>: Direct integration with frontend applications</li> <li><strong>Microservices Architecture</strong>: Service-to-service communication over HTTP</li> <li><strong>Legacy System Integration</strong>: Connect systems that cannot use QUIC protocol</li> <li><strong>Development and Testing</strong>: Easy exploration using curl, Postman, or similar tools</li> </ul> <p>All endpoints return JSON responses and accept JSON request bodies. The API uses standard HTTP status codes and follows ISO/IEC 39075:2024 error code conventions.</p> <h3 id="base-url-and-versioning" class="position-relative d-flex align-items-center group"> <span>Base URL and Versioning</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="base-url-and-versioning" aria-haspopup="dialog" aria-label="Share link: Base URL and Versioning"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p>The REST API is versioned to ensure backward compatibility:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">https://geode.example.com/api/v1/ </span></span></code></pre></div><p>Current version: <code>v1</code> (stable)</p> <p>All endpoints should be prefixed with <code>/api/v1/</code>. Future API versions will use <code>/api/v2/</code>, etc., allowing clients to upgrade at their own pace.</p> <h3 id="authentication" class="position-relative d-flex align-items-center group"> <span>Authentication</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="authentication" aria-haspopup="dialog" aria-label="Share link: Authentication"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="bearer-token-authentication" class="position-relative d-flex align-items-center group"> <span>Bearer Token Authentication</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="bearer-token-authentication" aria-haspopup="dialog" aria-label="Share link: Bearer Token Authentication"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>The recommended authentication method for production applications:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">curl -X POST https://geode.example.com/api/v1/query <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> -H <span class="s2">&#34;Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...&#34;</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> -H <span class="s2">&#34;Content-Type: application/json&#34;</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> -d <span class="s1">&#39;{&#34;query&#34;: &#34;MATCH (n) RETURN n LIMIT 10&#34;}&#39;</span> </span></span></code></pre></div><p>Tokens can be obtained via the authentication endpoint:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Obtain token</span> </span></span><span class="line"><span class="cl">curl -X POST https://geode.example.com/api/v1/auth/token <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> -H <span class="s2">&#34;Content-Type: application/json&#34;</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> -d <span class="s1">&#39;{ </span></span></span><span class="line"><span class="cl"><span class="s1"> &#34;username&#34;: &#34;admin&#34;, </span></span></span><span class="line"><span class="cl"><span class="s1"> &#34;password&#34;: &#34;secure_password&#34; </span></span></span><span class="line"><span class="cl"><span class="s1"> }&#39;</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Response</span> </span></span><span class="line"><span class="cl"><span class="o">{</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;access_token&#34;</span>: <span class="s2">&#34;eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...&#34;</span>, </span></span><span class="line"><span class="cl"> <span class="s2">&#34;token_type&#34;</span>: <span class="s2">&#34;Bearer&#34;</span>, </span></span><span class="line"><span class="cl"> <span class="s2">&#34;expires_in&#34;</span>: 3600, </span></span><span class="line"><span class="cl"> <span class="s2">&#34;refresh_token&#34;</span>: <span class="s2">&#34;refresh_token_abc123&#34;</span> </span></span><span class="line"><span class="cl"><span class="o">}</span> </span></span></code></pre></div> <h4 id="api-key-authentication" class="position-relative d-flex align-items-center group"> <span>API Key Authentication</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="api-key-authentication" aria-haspopup="dialog" aria-label="Share link: API Key Authentication"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>For service-to-service communication, API keys provide simpler authentication:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">curl -X POST https://geode.example.com/api/v1/query <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> -H <span class="s2">&#34;X-API-Key: geode_key_abc123def456&#34;</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> -H <span class="s2">&#34;Content-Type: application/json&#34;</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> -d <span class="s1">&#39;{&#34;query&#34;: &#34;MATCH (n) RETURN n LIMIT 10&#34;}&#39;</span> </span></span></code></pre></div> <h4 id="basic-authentication" class="position-relative d-flex align-items-center group"> <span>Basic Authentication</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="basic-authentication" aria-haspopup="dialog" aria-label="Share link: Basic Authentication"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Supported for development and testing (not recommended for production):</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">curl -X POST https://geode.example.com/api/v1/query <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> -u username:password <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> -H <span class="s2">&#34;Content-Type: application/json&#34;</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> -d <span class="s1">&#39;{&#34;query&#34;: &#34;MATCH (n) RETURN n LIMIT 10&#34;}&#39;</span> </span></span></code></pre></div> <h3 id="core-endpoints" class="position-relative d-flex align-items-center group"> <span>Core Endpoints</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="core-endpoints" aria-haspopup="dialog" aria-label="Share link: Core Endpoints"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="execute-query" class="position-relative d-flex align-items-center group"> <span>Execute Query</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="execute-query" aria-haspopup="dialog" aria-label="Share link: Execute Query"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Execute a GQL query and return results.</p> <p><strong>Endpoint</strong>: <code>POST /api/v1/query</code></p> <p><strong>Request</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;query&#34;</span><span class="p">:</span> <span class="s2">&#34;MATCH (p:Person)-[:KNOWS]-&gt;(friend:Person) WHERE p.name = $name RETURN friend.name, friend.age&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;parameters&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;name&#34;</span><span class="p">:</span> <span class="s2">&#34;Alice&#34;</span> </span></span><span class="line"><span class="cl"> <span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;timeout&#34;</span><span class="p">:</span> <span class="mi">30000</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;explain&#34;</span><span class="p">:</span> <span class="kc">false</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;profile&#34;</span><span class="p">:</span> <span class="kc">false</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></div><p><strong>Response</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;schema&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;fields&#34;</span><span class="p">:</span> <span class="p">[</span> </span></span><span class="line"><span class="cl"> <span class="p">{</span><span class="nt">&#34;name&#34;</span><span class="p">:</span> <span class="s2">&#34;friend.name&#34;</span><span class="p">,</span> <span class="nt">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;STRING&#34;</span><span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="p">{</span><span class="nt">&#34;name&#34;</span><span class="p">:</span> <span class="s2">&#34;friend.age&#34;</span><span class="p">,</span> <span class="nt">&#34;type&#34;</span><span class="p">:</span> <span class="s2">&#34;INTEGER&#34;</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">]</span> </span></span><span class="line"><span class="cl"> <span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;data&#34;</span><span class="p">:</span> <span class="p">[</span> </span></span><span class="line"><span class="cl"> <span class="p">{</span><span class="nt">&#34;friend.name&#34;</span><span class="p">:</span> <span class="s2">&#34;Bob&#34;</span><span class="p">,</span> <span class="nt">&#34;friend.age&#34;</span><span class="p">:</span> <span class="mi">30</span><span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="p">{</span><span class="nt">&#34;friend.name&#34;</span><span class="p">:</span> <span class="s2">&#34;Charlie&#34;</span><span class="p">,</span> <span class="nt">&#34;friend.age&#34;</span><span class="p">:</span> <span class="mi">35</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">],</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;metadata&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;rows_returned&#34;</span><span class="p">:</span> <span class="mi">2</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;execution_time_ms&#34;</span><span class="p">:</span> <span class="mi">15</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;rows_scanned&#34;</span><span class="p">:</span> <span class="mi">150</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></div><p><strong>Example with curl</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">curl -X POST https://geode.example.com/api/v1/query <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> -H <span class="s2">&#34;Authorization: Bearer token_abc123&#34;</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> -H <span class="s2">&#34;Content-Type: application/json&#34;</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> -d <span class="s1">&#39;{ </span></span></span><span class="line"><span class="cl"><span class="s1"> &#34;query&#34;: &#34;MATCH (p:Person {name: $name}) RETURN p&#34;, </span></span></span><span class="line"><span class="cl"><span class="s1"> &#34;parameters&#34;: {&#34;name&#34;: &#34;Alice&#34;} </span></span></span><span class="line"><span class="cl"><span class="s1"> }&#39;</span> </span></span></code></pre></div><p><strong>Example with Python</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">requests</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="k">def</span> <span class="nf">execute_query</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> <span class="n">parameters</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">post</span><span class="p">(</span> </span></span><span class="line"><span class="cl"> <span class="s1">&#39;https://geode.example.com/api/v1/query&#39;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="n">headers</span><span class="o">=</span><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="s1">&#39;Authorization&#39;</span><span class="p">:</span> <span class="s1">&#39;Bearer token_abc123&#39;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="s1">&#39;Content-Type&#39;</span><span class="p">:</span> <span class="s1">&#39;application/json&#39;</span> </span></span><span class="line"><span class="cl"> <span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="n">json</span><span class="o">=</span><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="s1">&#39;query&#39;</span><span class="p">:</span> <span class="n">query</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="s1">&#39;parameters&#39;</span><span class="p">:</span> <span class="n">parameters</span> <span class="ow">or</span> <span class="p">{}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="n">response</span><span class="o">.</span><span class="n">raise_for_status</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="n">result</span> <span class="o">=</span> <span class="n">execute_query</span><span class="p">(</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;MATCH (p:Person)-[:KNOWS]-&gt;(f:Person) WHERE p.name = $name RETURN f.name&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="p">{</span><span class="s2">&#34;name&#34;</span><span class="p">:</span> <span class="s2">&#34;Alice&#34;</span><span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">result</span><span class="o">.</span><span class="n">rows</span><span class="p">[</span><span class="s1">&#39;data&#39;</span><span class="p">]:</span> </span></span><span class="line"><span class="cl"> <span class="nb">print</span><span class="p">(</span><span class="n">row</span><span class="p">[</span><span class="s1">&#39;f.name&#39;</span><span class="p">])</span> </span></span></code></pre></div><p><strong>Example with JavaScript/Node.js</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">axios</span> <span class="o">=</span> <span class="nx">require</span><span class="p">(</span><span class="s1">&#39;axios&#39;</span><span class="p">);</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="kr">async</span> <span class="kd">function</span> <span class="nx">executeQuery</span><span class="p">(</span><span class="nx">query</span><span class="p">,</span> <span class="nx">parameters</span> <span class="o">=</span> <span class="p">{})</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="kr">const</span> <span class="nx">response</span> <span class="o">=</span> <span class="kr">await</span> <span class="nx">axios</span><span class="p">.</span><span class="nx">post</span><span class="p">(</span> </span></span><span class="line"><span class="cl"> <span class="s1">&#39;https://geode.example.com/api/v1/query&#39;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">query</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nx">parameters</span> </span></span><span class="line"><span class="cl"> <span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">headers</span><span class="o">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="s1">&#39;Authorization&#39;</span><span class="o">:</span> <span class="s1">&#39;Bearer token_abc123&#39;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="s1">&#39;Content-Type&#39;</span><span class="o">:</span> <span class="s1">&#39;application/json&#39;</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">);</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="nx">response</span><span class="p">.</span><span class="nx">data</span><span class="p">;</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1">// Usage </span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="kr">const</span> <span class="nx">result</span> <span class="o">=</span> <span class="kr">await</span> <span class="nx">executeQuery</span><span class="p">(</span> </span></span><span class="line"><span class="cl"> <span class="s1">&#39;MATCH (p:Person {name: $name}) RETURN p&#39;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="p">{</span> <span class="nx">name</span><span class="o">:</span> <span class="s1">&#39;Alice&#39;</span> <span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">);</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">result</span><span class="p">.</span><span class="nx">data</span><span class="p">);</span> </span></span></code></pre></div> <h4 id="query-explanation" class="position-relative d-flex align-items-center group"> <span>Query Explanation</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="query-explanation" aria-haspopup="dialog" aria-label="Share link: Query Explanation"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Get query execution plan without executing the query.</p> <p><strong>Endpoint</strong>: <code>POST /api/v1/query/explain</code></p> <p><strong>Request</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;query&#34;</span><span class="p">:</span> <span class="s2">&#34;MATCH (p:Person)-[:KNOWS*1..3]-&gt;(friend) WHERE p.age &gt; 25 RETURN friend.name&#34;</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></div><p><strong>Response</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;plan&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;operator&#34;</span><span class="p">:</span> <span class="s2">&#34;Project&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;columns&#34;</span><span class="p">:</span> <span class="p">[</span><span class="s2">&#34;friend.name&#34;</span><span class="p">],</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;children&#34;</span><span class="p">:</span> <span class="p">[</span> </span></span><span class="line"><span class="cl"> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;operator&#34;</span><span class="p">:</span> <span class="s2">&#34;VariableLengthExpand&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;pattern&#34;</span><span class="p">:</span> <span class="s2">&#34;[:KNOWS*1..3]&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;estimated_cost&#34;</span><span class="p">:</span> <span class="mi">1500</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;children&#34;</span><span class="p">:</span> <span class="p">[</span> </span></span><span class="line"><span class="cl"> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;operator&#34;</span><span class="p">:</span> <span class="s2">&#34;NodeScan&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;label&#34;</span><span class="p">:</span> <span class="s2">&#34;Person&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;filter&#34;</span><span class="p">:</span> <span class="s2">&#34;age &gt; 25&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;index_used&#34;</span><span class="p">:</span> <span class="s2">&#34;Person.age&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;estimated_rows&#34;</span><span class="p">:</span> <span class="mi">1000</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">]</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">]</span> </span></span><span class="line"><span class="cl"> <span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;estimated_total_cost&#34;</span><span class="p">:</span> <span class="mi">2500</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;estimated_rows&#34;</span><span class="p">:</span> <span class="mi">500</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></div> <h4 id="query-profiling" class="position-relative d-flex align-items-center group"> <span>Query Profiling</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="query-profiling" aria-haspopup="dialog" aria-label="Share link: Query Profiling"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Execute query and return detailed performance metrics.</p> <p><strong>Endpoint</strong>: <code>POST /api/v1/query/profile</code></p> <p><strong>Request</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;query&#34;</span><span class="p">:</span> <span class="s2">&#34;MATCH (p:Person)-[:KNOWS]-&gt;(f) RETURN f.name&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;parameters&#34;</span><span class="p">:</span> <span class="p">{}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></div><p><strong>Response</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;data&#34;</span><span class="p">:</span> <span class="p">[</span><span class="err">...</span><span class="p">],</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;profile&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;total_time_ms&#34;</span><span class="p">:</span> <span class="mi">125</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;operators&#34;</span><span class="p">:</span> <span class="p">[</span> </span></span><span class="line"><span class="cl"> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;name&#34;</span><span class="p">:</span> <span class="s2">&#34;Project&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;time_ms&#34;</span><span class="p">:</span> <span class="mi">5</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;rows_processed&#34;</span><span class="p">:</span> <span class="mi">100</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;db_hits&#34;</span><span class="p">:</span> <span class="mi">100</span> </span></span><span class="line"><span class="cl"> <span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;name&#34;</span><span class="p">:</span> <span class="s2">&#34;Expand&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;time_ms&#34;</span><span class="p">:</span> <span class="mi">80</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;rows_processed&#34;</span><span class="p">:</span> <span class="mi">100</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;db_hits&#34;</span><span class="p">:</span> <span class="mi">500</span> </span></span><span class="line"><span class="cl"> <span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;name&#34;</span><span class="p">:</span> <span class="s2">&#34;NodeScan&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;time_ms&#34;</span><span class="p">:</span> <span class="mi">40</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;rows_processed&#34;</span><span class="p">:</span> <span class="mi">50</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;db_hits&#34;</span><span class="p">:</span> <span class="mi">50</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;index&#34;</span><span class="p">:</span> <span class="s2">&#34;Person.name&#34;</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">]</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></div> <h3 id="transaction-management" class="position-relative d-flex align-items-center group"> <span>Transaction Management</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="transaction-management" aria-haspopup="dialog" aria-label="Share link: Transaction Management"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="begin-transaction" class="position-relative d-flex align-items-center group"> <span>Begin Transaction</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="begin-transaction" aria-haspopup="dialog" aria-label="Share link: Begin Transaction"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Start a new transaction and receive a transaction ID.</p> <p><strong>Endpoint</strong>: <code>POST /api/v1/transaction/begin</code></p> <p><strong>Request</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;isolation_level&#34;</span><span class="p">:</span> <span class="s2">&#34;READ_COMMITTED&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;timeout&#34;</span><span class="p">:</span> <span class="mi">300000</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></div><p><strong>Response</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;transaction_id&#34;</span><span class="p">:</span> <span class="s2">&#34;tx_abc123def456&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;expires_at&#34;</span><span class="p">:</span> <span class="s2">&#34;2025-01-24T15:30:00Z&#34;</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></div> <h4 id="execute-in-transaction" class="position-relative d-flex align-items-center group"> <span>Execute in Transaction</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="execute-in-transaction" aria-haspopup="dialog" aria-label="Share link: Execute in Transaction"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Execute a query within an existing transaction.</p> <p><strong>Endpoint</strong>: <code>POST /api/v1/transaction/{transaction_id}/query</code></p> <p><strong>Request</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;query&#34;</span><span class="p">:</span> <span class="s2">&#34;CREATE (p:Person {name: $name, age: $age})&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;parameters&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;name&#34;</span><span class="p">:</span> <span class="s2">&#34;David&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;age&#34;</span><span class="p">:</span> <span class="mi">40</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></div><p><strong>Response</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;schema&#34;</span><span class="p">:</span> <span class="p">{</span><span class="err">...</span><span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;data&#34;</span><span class="p">:</span> <span class="p">[</span><span class="err">...</span><span class="p">],</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;metadata&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;rows_affected&#34;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;execution_time_ms&#34;</span><span class="p">:</span> <span class="mi">8</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></div> <h4 id="commit-transaction" class="position-relative d-flex align-items-center group"> <span>Commit Transaction</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="commit-transaction" aria-haspopup="dialog" aria-label="Share link: Commit Transaction"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Commit all changes in a transaction.</p> <p><strong>Endpoint</strong>: <code>POST /api/v1/transaction/{transaction_id}/commit</code></p> <p><strong>Response</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;status&#34;</span><span class="p">:</span> <span class="s2">&#34;committed&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;transaction_id&#34;</span><span class="p">:</span> <span class="s2">&#34;tx_abc123def456&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;committed_at&#34;</span><span class="p">:</span> <span class="s2">&#34;2025-01-24T15:25:00Z&#34;</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></div> <h4 id="rollback-transaction" class="position-relative d-flex align-items-center group"> <span>Rollback Transaction</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="rollback-transaction" aria-haspopup="dialog" aria-label="Share link: Rollback Transaction"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Rollback all changes in a transaction.</p> <p><strong>Endpoint</strong>: <code>POST /api/v1/transaction/{transaction_id}/rollback</code></p> <p><strong>Request</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;to_savepoint&#34;</span><span class="p">:</span> <span class="s2">&#34;savepoint_1&#34;</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></div><p><strong>Response</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;status&#34;</span><span class="p">:</span> <span class="s2">&#34;rolled_back&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;transaction_id&#34;</span><span class="p">:</span> <span class="s2">&#34;tx_abc123def456&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;rolled_back_at&#34;</span><span class="p">:</span> <span class="s2">&#34;2025-01-24T15:25:00Z&#34;</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></div> <h4 id="transaction-example" class="position-relative d-flex align-items-center group"> <span>Transaction Example</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="transaction-example" aria-haspopup="dialog" aria-label="Share link: Transaction Example"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Complete transaction workflow:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">requests</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="k">class</span> <span class="nc">GeodeTransaction</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">base_url</span><span class="p">,</span> <span class="n">auth_token</span><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="bp">self</span><span class="o">.</span><span class="n">base_url</span> <span class="o">=</span> <span class="n">base_url</span> </span></span><span class="line"><span class="cl"> <span class="bp">self</span><span class="o">.</span><span class="n">headers</span> <span class="o">=</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="s1">&#39;Authorization&#39;</span><span class="p">:</span> <span class="sa">f</span><span class="s1">&#39;Bearer </span><span class="si">{</span><span class="n">auth_token</span><span class="si">}</span><span class="s1">&#39;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="s1">&#39;Content-Type&#39;</span><span class="p">:</span> <span class="s1">&#39;application/json&#39;</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="bp">self</span><span class="o">.</span><span class="n">tx_id</span> <span class="o">=</span> <span class="kc">None</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="k">def</span> <span class="nf">begin</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">post</span><span class="p">(</span> </span></span><span class="line"><span class="cl"> <span class="sa">f</span><span class="s1">&#39;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">base_url</span><span class="si">}</span><span class="s1">/api/v1/transaction/begin&#39;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="n">headers</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">headers</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="n">json</span><span class="o">=</span><span class="p">{</span><span class="s1">&#39;isolation_level&#39;</span><span class="p">:</span> <span class="s1">&#39;READ_COMMITTED&#39;</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="n">response</span><span class="o">.</span><span class="n">raise_for_status</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="bp">self</span><span class="o">.</span><span class="n">tx_id</span> <span class="o">=</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()[</span><span class="s1">&#39;transaction_id&#39;</span><span class="p">]</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="bp">self</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="k">def</span> <span class="nf">execute</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">query</span><span class="p">,</span> <span class="n">parameters</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">post</span><span class="p">(</span> </span></span><span class="line"><span class="cl"> <span class="sa">f</span><span class="s1">&#39;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">base_url</span><span class="si">}</span><span class="s1">/api/v1/transaction/</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">tx_id</span><span class="si">}</span><span class="s1">/query&#39;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="n">headers</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">headers</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="n">json</span><span class="o">=</span><span class="p">{</span><span class="s1">&#39;query&#39;</span><span class="p">:</span> <span class="n">query</span><span class="p">,</span> <span class="s1">&#39;parameters&#39;</span><span class="p">:</span> <span class="n">parameters</span> <span class="ow">or</span> <span class="p">{}}</span> </span></span><span class="line"><span class="cl"> <span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="n">response</span><span class="o">.</span><span class="n">raise_for_status</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="k">def</span> <span class="nf">commit</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">post</span><span class="p">(</span> </span></span><span class="line"><span class="cl"> <span class="sa">f</span><span class="s1">&#39;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">base_url</span><span class="si">}</span><span class="s1">/api/v1/transaction/</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">tx_id</span><span class="si">}</span><span class="s1">/commit&#39;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="n">headers</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">headers</span> </span></span><span class="line"><span class="cl"> <span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="n">response</span><span class="o">.</span><span class="n">raise_for_status</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="k">def</span> <span class="nf">rollback</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">post</span><span class="p">(</span> </span></span><span class="line"><span class="cl"> <span class="sa">f</span><span class="s1">&#39;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">base_url</span><span class="si">}</span><span class="s1">/api/v1/transaction/</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">tx_id</span><span class="si">}</span><span class="s1">/rollback&#39;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="n">headers</span><span class="o">=</span><span class="bp">self</span><span class="o">.</span><span class="n">headers</span> </span></span><span class="line"><span class="cl"> <span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="n">response</span><span class="o">.</span><span class="n">raise_for_status</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Usage</span> </span></span><span class="line"><span class="cl"><span class="n">tx</span> <span class="o">=</span> <span class="n">GeodeTransaction</span><span class="p">(</span><span class="s1">&#39;https://geode.example.com&#39;</span><span class="p">,</span> <span class="s1">&#39;token_abc123&#39;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"><span class="n">tx</span><span class="o">.</span><span class="n">begin</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="k">try</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="n">tx</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;CREATE (p:Person {name: $name, age: $age})&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="p">{</span><span class="s2">&#34;name&#34;</span><span class="p">:</span> <span class="s2">&#34;Eve&#34;</span><span class="p">,</span> <span class="s2">&#34;age&#34;</span><span class="p">:</span> <span class="mi">28</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="n">tx</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span> </span></span><span class="line"><span class="cl"> <span class="s2">&#34;MATCH (p:Person {name: $name}) CREATE (p)-[:KNOWS]-&gt;(:Person {name: $friend})&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="p">{</span><span class="s2">&#34;name&#34;</span><span class="p">:</span> <span class="s2">&#34;Eve&#34;</span><span class="p">,</span> <span class="s2">&#34;friend&#34;</span><span class="p">:</span> <span class="s2">&#34;Frank&#34;</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="n">tx</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span> </span></span><span class="line"><span class="cl"><span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="n">tx</span><span class="o">.</span><span class="n">rollback</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="k">raise</span> </span></span></code></pre></div> <h3 id="batch-operations" class="position-relative d-flex align-items-center group"> <span>Batch Operations</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="batch-operations" aria-haspopup="dialog" aria-label="Share link: Batch Operations"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p>Execute multiple queries in a single request for efficiency.</p> <p><strong>Endpoint</strong>: <code>POST /api/v1/batch</code></p> <p><strong>Request</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;queries&#34;</span><span class="p">:</span> <span class="p">[</span> </span></span><span class="line"><span class="cl"> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;query&#34;</span><span class="p">:</span> <span class="s2">&#34;CREATE (p:Person {name: $name})&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;parameters&#34;</span><span class="p">:</span> <span class="p">{</span><span class="nt">&#34;name&#34;</span><span class="p">:</span> <span class="s2">&#34;Alice&#34;</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;query&#34;</span><span class="p">:</span> <span class="s2">&#34;CREATE (p:Person {name: $name})&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;parameters&#34;</span><span class="p">:</span> <span class="p">{</span><span class="nt">&#34;name&#34;</span><span class="p">:</span> <span class="s2">&#34;Bob&#34;</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;query&#34;</span><span class="p">:</span> <span class="s2">&#34;MATCH (a:Person {name: $a}), (b:Person {name: $b}) CREATE (a)-[:KNOWS]-&gt;(b)&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;parameters&#34;</span><span class="p">:</span> <span class="p">{</span><span class="nt">&#34;a&#34;</span><span class="p">:</span> <span class="s2">&#34;Alice&#34;</span><span class="p">,</span> <span class="nt">&#34;b&#34;</span><span class="p">:</span> <span class="s2">&#34;Bob&#34;</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">],</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;transaction&#34;</span><span class="p">:</span> <span class="kc">true</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></div><p><strong>Response</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;results&#34;</span><span class="p">:</span> <span class="p">[</span> </span></span><span class="line"><span class="cl"> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;index&#34;</span><span class="p">:</span> <span class="mi">0</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;status&#34;</span><span class="p">:</span> <span class="s2">&#34;success&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;data&#34;</span><span class="p">:</span> <span class="p">[</span><span class="err">...</span><span class="p">],</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;metadata&#34;</span><span class="p">:</span> <span class="p">{</span><span class="nt">&#34;rows_affected&#34;</span><span class="p">:</span> <span class="mi">1</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;index&#34;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;status&#34;</span><span class="p">:</span> <span class="s2">&#34;success&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;data&#34;</span><span class="p">:</span> <span class="p">[</span><span class="err">...</span><span class="p">],</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;metadata&#34;</span><span class="p">:</span> <span class="p">{</span><span class="nt">&#34;rows_affected&#34;</span><span class="p">:</span> <span class="mi">1</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;index&#34;</span><span class="p">:</span> <span class="mi">2</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;status&#34;</span><span class="p">:</span> <span class="s2">&#34;success&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;data&#34;</span><span class="p">:</span> <span class="p">[</span><span class="err">...</span><span class="p">],</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;metadata&#34;</span><span class="p">:</span> <span class="p">{</span><span class="nt">&#34;rows_affected&#34;</span><span class="p">:</span> <span class="mi">1</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">],</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;total_time_ms&#34;</span><span class="p">:</span> <span class="mi">45</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></div> <h3 id="health-and-status-endpoints" class="position-relative d-flex align-items-center group"> <span>Health and Status Endpoints</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="health-and-status-endpoints" aria-haspopup="dialog" aria-label="Share link: Health and Status Endpoints"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="health-check" class="position-relative d-flex align-items-center group"> <span>Health Check</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="health-check" aria-haspopup="dialog" aria-label="Share link: Health Check"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Check database health and connectivity.</p> <p><strong>Endpoint</strong>: <code>GET /api/v1/health</code></p> <p><strong>Response</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;status&#34;</span><span class="p">:</span> <span class="s2">&#34;healthy&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;version&#34;</span><span class="p">:</span> <span class="s2">&#34;0.2.18&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;uptime_seconds&#34;</span><span class="p">:</span> <span class="mi">86400</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;checks&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;database&#34;</span><span class="p">:</span> <span class="s2">&#34;ok&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;storage&#34;</span><span class="p">:</span> <span class="s2">&#34;ok&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;replication&#34;</span><span class="p">:</span> <span class="s2">&#34;ok&#34;</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></div> <h4 id="server-status" class="position-relative d-flex align-items-center group"> <span>Server Status</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="server-status" aria-haspopup="dialog" aria-label="Share link: Server Status"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Get detailed server status and statistics.</p> <p><strong>Endpoint</strong>: <code>GET /api/v1/status</code></p> <p><strong>Response</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;version&#34;</span><span class="p">:</span> <span class="s2">&#34;0.2.18&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;uptime_seconds&#34;</span><span class="p">:</span> <span class="mi">86400</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;node_id&#34;</span><span class="p">:</span> <span class="s2">&#34;node_abc123&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;role&#34;</span><span class="p">:</span> <span class="s2">&#34;primary&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;statistics&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;total_nodes&#34;</span><span class="p">:</span> <span class="mi">1500000</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;total_relationships&#34;</span><span class="p">:</span> <span class="mi">3000000</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;queries_per_second&#34;</span><span class="p">:</span> <span class="mi">1250</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;active_connections&#34;</span><span class="p">:</span> <span class="mi">150</span> </span></span><span class="line"><span class="cl"> <span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;storage&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;total_bytes&#34;</span><span class="p">:</span> <span class="mi">10737418240</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;used_bytes&#34;</span><span class="p">:</span> <span class="mi">5368709120</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;free_bytes&#34;</span><span class="p">:</span> <span class="mi">5368709120</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></div> <h4 id="metrics" class="position-relative d-flex align-items-center group"> <span>Metrics</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="metrics" aria-haspopup="dialog" aria-label="Share link: Metrics"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Prometheus-compatible metrics endpoint.</p> <p><strong>Endpoint</strong>: <code>GET /api/v1/metrics</code></p> <p><strong>Response</strong> (text/plain):</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl"># HELP geode_queries_total Total number of queries executed </span></span><span class="line"><span class="cl"># TYPE geode_queries_total counter </span></span><span class="line"><span class="cl">geode_queries_total 1500000 </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"># HELP geode_query_duration_seconds Query execution duration </span></span><span class="line"><span class="cl"># TYPE geode_query_duration_seconds histogram </span></span><span class="line"><span class="cl">geode_query_duration_seconds_bucket{le=&#34;0.01&#34;} 100000 </span></span><span class="line"><span class="cl">geode_query_duration_seconds_bucket{le=&#34;0.05&#34;} 450000 </span></span><span class="line"><span class="cl">geode_query_duration_seconds_bucket{le=&#34;0.1&#34;} 700000 </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"># HELP geode_connections_active Active connections </span></span><span class="line"><span class="cl"># TYPE geode_connections_active gauge </span></span><span class="line"><span class="cl">geode_connections_active 150 </span></span></code></pre></div> <h3 id="error-handling" class="position-relative d-flex align-items-center group"> <span>Error Handling</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="error-handling" aria-haspopup="dialog" aria-label="Share link: Error Handling"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="error-response-format" class="position-relative d-flex align-items-center group"> <span>Error Response Format</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="error-response-format" aria-haspopup="dialog" aria-label="Share link: Error Response Format"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>All errors follow a consistent format with ISO/IEC 39075:2024 status codes:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;error&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;code&#34;</span><span class="p">:</span> <span class="s2">&#34;42000&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;category&#34;</span><span class="p">:</span> <span class="s2">&#34;SYNTAX_ERROR&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;message&#34;</span><span class="p">:</span> <span class="s2">&#34;Syntax error near line 1, column 15&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;details&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;query&#34;</span><span class="p">:</span> <span class="s2">&#34;MATCH (n:Person RETURN n&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;position&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;line&#34;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;column&#34;</span><span class="p">:</span> <span class="mi">15</span> </span></span><span class="line"><span class="cl"> <span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;suggestion&#34;</span><span class="p">:</span> <span class="s2">&#34;Expected &#39;)&#39; after label expression&#34;</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></div> <h4 id="common-error-codes" class="position-relative d-flex align-items-center group"> <span>Common Error Codes</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="common-error-codes" aria-haspopup="dialog" aria-label="Share link: Common Error Codes"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><table> <thead> <tr> <th>HTTP Status</th> <th>ISO Code</th> <th>Category</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td>200</td> <td>00000</td> <td>SUCCESS</td> <td>Query executed successfully</td> </tr> <tr> <td>400</td> <td>42000</td> <td>SYNTAX_ERROR</td> <td>Invalid GQL syntax</td> </tr> <tr> <td>400</td> <td>22000</td> <td>DATA_EXCEPTION</td> <td>Invalid data value</td> </tr> <tr> <td>401</td> <td>08001</td> <td>AUTH_FAILED</td> <td>Authentication required or failed</td> </tr> <tr> <td>403</td> <td>42501</td> <td>PERMISSION_DENIED</td> <td>Insufficient privileges</td> </tr> <tr> <td>404</td> <td>02000</td> <td>NOT_FOUND</td> <td>Resource not found</td> </tr> <tr> <td>409</td> <td>23000</td> <td>CONSTRAINT_VIOLATION</td> <td>Constraint violation</td> </tr> <tr> <td>408</td> <td>40003</td> <td>TIMEOUT</td> <td>Query timeout exceeded</td> </tr> <tr> <td>500</td> <td>40000</td> <td>TRANSACTION_ERROR</td> <td>Transaction error</td> </tr> <tr> <td>503</td> <td>08006</td> <td>CONNECTION_FAILURE</td> <td>Database unavailable</td> </tr> </tbody> </table> <h4 id="error-handling-example" class="position-relative d-flex align-items-center group"> <span>Error Handling Example</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="error-handling-example" aria-haspopup="dialog" aria-label="Share link: Error Handling Example"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">requests</span> </span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">requests.exceptions</span> <span class="kn">import</span> <span class="n">HTTPError</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="k">def</span> <span class="nf">execute_with_retry</span><span class="p">(</span><span class="n">query</span><span class="p">,</span> <span class="n">parameters</span><span class="p">,</span> <span class="n">max_retries</span><span class="o">=</span><span class="mi">3</span><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="n">attempt</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">max_retries</span><span class="p">):</span> </span></span><span class="line"><span class="cl"> <span class="k">try</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="n">response</span> <span class="o">=</span> <span class="n">requests</span><span class="o">.</span><span class="n">post</span><span class="p">(</span> </span></span><span class="line"><span class="cl"> <span class="s1">&#39;https://geode.example.com/api/v1/query&#39;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="n">headers</span><span class="o">=</span><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="s1">&#39;Authorization&#39;</span><span class="p">:</span> <span class="s1">&#39;Bearer token_abc123&#39;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="s1">&#39;Content-Type&#39;</span><span class="p">:</span> <span class="s1">&#39;application/json&#39;</span> </span></span><span class="line"><span class="cl"> <span class="p">},</span> </span></span><span class="line"><span class="cl"> <span class="n">json</span><span class="o">=</span><span class="p">{</span><span class="s1">&#39;query&#39;</span><span class="p">:</span> <span class="n">query</span><span class="p">,</span> <span class="s1">&#39;parameters&#39;</span><span class="p">:</span> <span class="n">parameters</span><span class="p">}</span> </span></span><span class="line"><span class="cl"> <span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="n">response</span><span class="o">.</span><span class="n">raise_for_status</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="k">except</span> <span class="n">HTTPError</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">response</span><span class="o">.</span><span class="n">status_code</span> <span class="o">==</span> <span class="mi">503</span><span class="p">:</span> <span class="c1"># Service unavailable</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="n">attempt</span> <span class="o">&lt;</span> <span class="n">max_retries</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">2</span> <span class="o">**</span> <span class="n">attempt</span><span class="p">)</span> <span class="c1"># Exponential backoff</span> </span></span><span class="line"><span class="cl"> <span class="k">continue</span> </span></span><span class="line"><span class="cl"> <span class="k">raise</span> </span></span><span class="line"><span class="cl"> <span class="k">elif</span> <span class="n">e</span><span class="o">.</span><span class="n">response</span><span class="o">.</span><span class="n">status_code</span> <span class="o">==</span> <span class="mi">408</span><span class="p">:</span> <span class="c1"># Timeout</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="n">attempt</span> <span class="o">&lt;</span> <span class="n">max_retries</span> <span class="o">-</span> <span class="mi">1</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="k">continue</span> </span></span><span class="line"><span class="cl"> <span class="k">raise</span> </span></span><span class="line"><span class="cl"> <span class="k">else</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="c1"># Parse error response</span> </span></span><span class="line"><span class="cl"> <span class="n">error</span> <span class="o">=</span> <span class="n">e</span><span class="o">.</span><span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()[</span><span class="s1">&#39;error&#39;</span><span class="p">]</span> </span></span><span class="line"><span class="cl"> <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&#34;Error </span><span class="si">{</span><span class="n">error</span><span class="p">[</span><span class="s1">&#39;code&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">error</span><span class="p">[</span><span class="s1">&#39;message&#39;</span><span class="p">]</span><span class="si">}</span><span class="s2">&#34;</span><span class="p">)</span> </span></span><span class="line"><span class="cl"> <span class="k">raise</span> </span></span></code></pre></div> <h3 id="rate-limiting" class="position-relative d-flex align-items-center group"> <span>Rate Limiting</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="rate-limiting" aria-haspopup="dialog" aria-label="Share link: Rate Limiting"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p>The REST API implements rate limiting to prevent abuse:</p> <p><strong>Headers</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">X-RateLimit-Limit: 1000 </span></span><span class="line"><span class="cl">X-RateLimit-Remaining: 999 </span></span><span class="line"><span class="cl">X-RateLimit-Reset: 1706112000 </span></span></code></pre></div><p><strong>Rate Limit Exceeded Response</strong> (HTTP 429):</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-json" data-lang="json"><span class="line"><span class="cl"><span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;error&#34;</span><span class="p">:</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;code&#34;</span><span class="p">:</span> <span class="s2">&#34;RATE_LIMIT_EXCEEDED&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;message&#34;</span><span class="p">:</span> <span class="s2">&#34;Rate limit of 1000 requests per hour exceeded&#34;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nt">&#34;retry_after&#34;</span><span class="p">:</span> <span class="mi">3600</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">}</span> </span></span></code></pre></div> <h3 id="cors-support" class="position-relative d-flex align-items-center group"> <span>CORS Support</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="cors-support" aria-haspopup="dialog" aria-label="Share link: CORS Support"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p>The REST API supports Cross-Origin Resource Sharing (CORS) for browser-based applications:</p> <p><strong>Preflight Request</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">curl -X OPTIONS https://geode.example.com/api/v1/query <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> -H <span class="s2">&#34;Origin: https://app.example.com&#34;</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> -H <span class="s2">&#34;Access-Control-Request-Method: POST&#34;</span> </span></span></code></pre></div><p><strong>Response</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">Access-Control-Allow-Origin: https://app.example.com </span></span><span class="line"><span class="cl">Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS </span></span><span class="line"><span class="cl">Access-Control-Allow-Headers: Authorization, Content-Type </span></span><span class="line"><span class="cl">Access-Control-Max-Age: 86400 </span></span></code></pre></div> <h3 id="websocket-support" class="position-relative d-flex align-items-center group"> <span>WebSocket Support</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="websocket-support" aria-haspopup="dialog" aria-label="Share link: WebSocket Support"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p>For real-time updates and streaming queries, the API supports WebSocket connections:</p> <p><strong>Endpoint</strong>: <code>wss://geode.example.com/api/v1/stream</code></p> <p><strong>JavaScript Example</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="cl"><span class="kr">const</span> <span class="nx">ws</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">WebSocket</span><span class="p">(</span><span class="s1">&#39;wss://geode.example.com/api/v1/stream&#39;</span><span class="p">);</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="nx">ws</span><span class="p">.</span><span class="nx">onopen</span> <span class="o">=</span> <span class="p">()</span> <span class="p">=&gt;</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="c1">// Authenticate </span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">ws</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="nx">JSON</span><span class="p">.</span><span class="nx">stringify</span><span class="p">({</span> </span></span><span class="line"><span class="cl"> <span class="nx">type</span><span class="o">:</span> <span class="s1">&#39;AUTH&#39;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nx">token</span><span class="o">:</span> <span class="s1">&#39;Bearer token_abc123&#39;</span> </span></span><span class="line"><span class="cl"> <span class="p">}));</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"> <span class="c1">// Subscribe to changes </span></span></span><span class="line"><span class="cl"><span class="c1"></span> <span class="nx">ws</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="nx">JSON</span><span class="p">.</span><span class="nx">stringify</span><span class="p">({</span> </span></span><span class="line"><span class="cl"> <span class="nx">type</span><span class="o">:</span> <span class="s1">&#39;SUBSCRIBE&#39;</span><span class="p">,</span> </span></span><span class="line"><span class="cl"> <span class="nx">patterns</span><span class="o">:</span> <span class="p">[</span><span class="s1">&#39;(n:Person)&#39;</span><span class="p">,</span> <span class="s1">&#39;()-[r:KNOWS]-&gt;()&#39;</span><span class="p">]</span> </span></span><span class="line"><span class="cl"> <span class="p">}));</span> </span></span><span class="line"><span class="cl"><span class="p">};</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="nx">ws</span><span class="p">.</span><span class="nx">onmessage</span> <span class="o">=</span> <span class="p">(</span><span class="nx">event</span><span class="p">)</span> <span class="p">=&gt;</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="kr">const</span> <span class="nx">message</span> <span class="o">=</span> <span class="nx">JSON</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">event</span><span class="p">.</span><span class="nx">data</span><span class="p">);</span> </span></span><span class="line"><span class="cl"> <span class="k">if</span> <span class="p">(</span><span class="nx">message</span><span class="p">.</span><span class="nx">type</span> <span class="o">===</span> <span class="s1">&#39;CHANGE&#39;</span><span class="p">)</span> <span class="p">{</span> </span></span><span class="line"><span class="cl"> <span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">&#39;Change detected:&#39;</span><span class="p">,</span> <span class="nx">message</span><span class="p">.</span><span class="nx">data</span><span class="p">);</span> </span></span><span class="line"><span class="cl"> <span class="p">}</span> </span></span><span class="line"><span class="cl"><span class="p">};</span> </span></span></code></pre></div> <h3 id="best-practices" class="position-relative d-flex align-items-center group"> <span>Best Practices</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="best-practices" aria-haspopup="dialog" aria-label="Share link: Best Practices"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><ol> <li><strong>Use HTTPS</strong>: Always use HTTPS in production for encrypted communication</li> <li><strong>Token Management</strong>: Implement token refresh before expiration</li> <li><strong>Connection Pooling</strong>: Reuse HTTP connections with keep-alive</li> <li><strong>Parameterization</strong>: Always use parameterized queries to prevent injection</li> <li><strong>Error Handling</strong>: Implement comprehensive error handling with retries</li> <li><strong>Rate Limiting</strong>: Respect rate limits and implement exponential backoff</li> <li><strong>Timeouts</strong>: Set appropriate request timeouts (default: 30 seconds)</li> <li><strong>Monitoring</strong>: Track API usage, latency, and error rates</li> </ol> <h3 id="performance-considerations" class="position-relative d-flex align-items-center group"> <span>Performance Considerations</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="performance-considerations" aria-haspopup="dialog" aria-label="Share link: Performance Considerations"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><ul> <li><strong>Batch Requests</strong>: Use batch endpoint for multiple operations</li> <li><strong>Connection Reuse</strong>: Enable HTTP keep-alive for connection pooling</li> <li><strong>Compression</strong>: Enable gzip compression for large responses</li> <li><strong>Pagination</strong>: Use LIMIT and OFFSET for large result sets</li> <li><strong>Field Selection</strong>: Only request fields you need in RETURN clause</li> </ul> <h3 id="related-topics" class="position-relative d-flex align-items-center group"> <span>Related Topics</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="related-topics" aria-haspopup="dialog" aria-label="Share link: Related Topics"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><ul> <li><a href="/tags/api/" >API Development</a> - Complete API guide</li> <li><a href="/tags/authentication/" >Authentication</a> - Authentication methods</li> <li><a href="/tags/client-libraries/" >Client Libraries</a> - Native client libraries</li> <li><a href="/tags/protocol/" >Protocol</a> - QUIC protocol details</li> <li><a href="/tags/security/" >Security</a> - Security best practices</li> </ul> <h3 id="further-reading" class="position-relative d-flex align-items-center group"> <span>Further Reading</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="further-reading" aria-haspopup="dialog" aria-label="Share link: Further Reading"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><ul> <li><a href="/docs/api-reference/" >API Reference</a> - Complete API documentation</li> <li><a href="/docs/security/authentication/" >Authentication Guide</a> - Detailed auth setup</li> <li><a href="/docs/reference/error-codes/" >Error Codes</a> - Complete error code list</li> <li><a href="/docs/architecture/wire-protocol/" >Wire Protocol</a> - Protocol specification</li> </ul>

Related Articles

No articles found with this tag yet.

Back to Home