trustgraph/docs/websocket.html

3165 lines
2.6 MiB
HTML
Raw Normal View History

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>TrustGraph WebSocket API 2.2 documentation</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/x-icon" href="data:image/x-icon;base64,AAABAAMAMDAAAAEAIACoJQAANgAAACAgAAABACAAqBAAAN4lAAAQEAAAAQAgAGgEAACGNgAAKAAAADAAAABgAAAAAQAgAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKoVqgy5F8qHsxXR3asS1vmnE9f9pRLa/6cU2f+oFNn/qhXW/60V1f+uF9P/sBfR/7EYz/+0Gs7/tRvM/7ccyv+6Hcn/uh7F/7sfxP++IMP/vyHB/8IjwP/DI77/xCW8/8Ylu//HKLr/ySi4/8sptv/MK7X/zCuz/84tsv/QL7D+0i+t+9cyp+rcOqGb3USIDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AP8CuhjLl6kS2fugEd//ohHd/6MR3P+lEtr/pxTZ/6gU2f+qFdb/rRXV/64X0v+wF9H/sRjP/7Qazv+1G8z/txzK/7odyf+6HsX/ux/E/74gwv+/IsH/wSPA/8Mjvf/EJbv/xia6/8couf/JKbj/yyq2/8wrtP/MLLL/zy6x/9AusP/QL6//0jGt/9MxrP/TMqr/1zWn/ds9nqsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL8QvxCxFtPhoBHf/6AR3/+iEd3/oxHc/6US2v+nFNn/qBTZ/6oV1v+tFdX/rhfT/7AX0f+xGM//tBrO/7UbzP+3HMr/uh3J/7ofxf+7H8T/viDC/8Aiwf/BI8D/wyS9/8Qlu//GJrn/xyi5/8kqt//LK7X/zCy0/80tsv/PLrD/0DCv/9Awrv/SMaz/0zOs/9M0qf/UNKj/1zWn/9k4pP/cO5/x2UKXGwAAAAAAAAAAAAAAAAAAAAAAAAAAvw3MFKwU1vSgEd//oBHf/6IR3f+jEdz/pRLa/6cU2f+oFNn/qhXW/60V1f+uF9L/sBfR/7EYz/+0Gs7/tRvM/7ccyv+6Hcn/ux/F/7sfw/++IML/wCLB/8IjwP/DJL3/xCW7/8Ynuf/HKLj/ySq3/8srtf/MLLT/zS2y/88wsP/QMK7/0TGt/9Izq//TM6r/0zWo/9U2pv/XN6X/2Tik/9k5o//aO6D/3D2e+d5DkBcAAAAAAAAAAAAAAAD/AP8CsRXR46AR3/+gEd//ohHd/6MR3P+lEtr/pxTZ/6gU2f+qFdb/rRXV/64X0v+wF9H/sRjP/7Qazv+1G8z/txzK/7odyf+6H8X/uyDD/74hwv/AIsH/wiPA/8Mlvf/EJrv/xie5/8cpuP/JK7b/zCy0/8wts//NLrH/zzCw/9Axrv/RMq3/0jSr/9M1qv/UNqf/1Til/9c5pf/ZOqL/2juh/9o8n//bPZ7/3D+c/95CmO4AAAAAAAAAAAAAAAC7GsyWoBHf/6AR3/+iEd3/oxHc/6US2v+nFNn/qBTZ/6oV1v+tFtX/rhfS/7AX0f+xGM//tBrO/7UbzP+3HMr/uh3J/7ofxP+7IMP/viHC/8AjwP/DJMD/wyW9/8Qmu//GKLj/xyq3/8krtv/MLLT/zC6y/80vsP/PMa//0DKt/9EzrP/TNar/0zap/9Q4pv/VOaT/1zqj/9k7of/aPKD/2j6e/9s/nf/cQJz/3UKa/95Dmf/hSJKqAAAAAKoVlQypEtr6oBHf/6IR3f+jEdz/pRLa/6cU2f+oFNn/qhXW/60V1f+uF9L/sBfR/7EYz/+0Gs7/tRvM/7ccyv+6Hcn/ux/F/7sgw/++IcL/vyPA/8IkwP/DJb3/xCa7/8couP/HKrf/ySu1/8wts//NLrL/zTCw/88xrv/QM6z/0TSr/9M1qf/UN6j/1Dim/9Y6pP/YO6L/2T2g/9o+n//aP5z/20Gc/9xBmv/eQ5n/3kSY/99Fl//fR5T96lWVDL8Xz4SgEd//ohHd/6MR3P+lEtr/pxTZ/6gU2f+qFdb/rRbV/64X0v+wF9H/sRjP/7Qazv+1G8z/txzK/7odyf+6H8T/uyDD/74hwv/AI8D/wiS//8Mlvf/EJrr/xyi4/8cqt//JK7X/zC2z/80usf/NMK//zzKu/9AzrP/RNar/0zap/9Q3p//UOaX/1juj/9g8of/ZPp//2j+e/9tBnP/bQpr/3UOZ/95FmP/eRpb/30eV/99Ik//gSZL/406OmrMU09qiEd3/oxHc/6US2v+nFNn/qBTZ/6oV1v+tFtX/rhfS/7AX0f+xGM//tBrO/7UbzP+3HMr/uh3J/7sfxP+7IMP/viHC/8AjwP/CJL//wyW9/8Qnuv/HLbr/zUC+/85BvP/NM7X/zS+x/80wr//PM63/0DSs/9I1qv/UOKj/1Din/9U6pP/WPKP/2D2h/9o/n//aQJ3/20Kb/9tDmf/dRZj/3keW/99Ilf/gSZT/30uR/+FMkf/iTo//4k6P6KsT1vijEdz/pRLa/6cU2f+oFNn/qhXW/60W1f+uF9L/sBfR/7EYz/+0G87/tRvM/7ccyv+6Hcn/ux/E/7sgw/++IcL/wCPA/8Mtwv/aeNb/67bo//rq+P//////////////////////+uj2/+644v/hf8r/0zyt/9Q4p//VOqb/1Tuk/9Y9of/YPqD/2kCe/9pCnP/bQ5n/3EWY/91Gl//eSZX/30qU/+BKkv/fTZD/4U6P/+JPjf/jUYz/5FGL+6gS2v2lEtr/pxTZ/6gU2f+qFdb/rRXV/64X0v+wF9H/sRjP/7Qazv+1G8z/txzK/7odyf+7H8T/uyDD/74hwv/BKMH/347e//vw+////////////////////////////////////////////////////////O/4/+iTzv/WP6T/1j6h/9k/oP/aQZ3/20Ob/9tEmf/cRpf/3kiW/95KlP/fTJP/4E2R/+BOj//hT47/41KL/+NTi//kVIn/41WI/qYT2f+nFNn/qBTZ/6oV1v+tFtX/rhfS/7AX0f+xGM//tBvO/7UbzP+3HMr/uh3J/7sfxP+7IMP/viHC/8g+yP/02fT/////////////////9tvz/+im4P/hg9L/3XPK/950yP/jiM//66vc//jg8v/////////////////32Oz/3VOo/9tCnP/bRJv/20aY/9xIlv/eSZT/3kuT/+BNkf/gTpD/4FCO/+FRjP/jU4r/41WJ/+RXh//lWIX/5VuF/6cU2f+oFNn/qhXW/60W1f+uF9L/sBfR/7EYz/+0Gs7/tRvM/7ccyv+6Hcn/ux/E/7sgw/++IcL/yD/I//jn+P///////////+/D6//TVsb/yi21/8wusv/NMLH/zjGu/9A0rf/QNar/0jeo/9Q5p//eZ7n/9M3n////////////+uby/99XpP/cRpf/3UiV/95KlP/fTJL/4E6Q/+BPj//gUY3/4lKL/+NVif/kV4j/5VmG/+Vag//mXYP/5l+A/6gU2f+qFdb/rRbV/64X0v+wF9H/sRjP/7Qazv+1G8z/txzK/7odyf+7H8T/uyDD/74hwv/BJsH/8c3w///////+/P7/3oHW/8gst//KLbX/zC6y/80wsP/OMq7/0DSs/9E2qv/SN6j/1Dqm/9U8pP/VPaL/10Cg/+qWyf///v7///////bN4//dSpb/3kuT/99Okf/gUI//4VCO/+FTi//iVIr/5FeI/+RYh//lWoT/5VyC/+dfgf/mYX//6GJ9/6oV1v+tFtX/rhfS/7AX0f+xGM//tBvO/7UbzP+3HMr/uh3J/7sfxP+7IMP/viLC/8AjwP/Xb9T////////////gitj/yCy3/8kttf/ML7L/zTCw/84yrv/QNaz/0Dap/9I3qP/UOqb/1Tyk/9U9of/WQJ//2UKd/9tEm//toMv////////////ogLL/30+Q/+BRj//hUo3/4VSK/+JVif/kWIf/5FqF/+Vcg//lXoD/52GA/+djff/oZHz/6Wd5/60V1f+uF9L/sBfR/7EYz/+0G87/tRvM/7ccyv+6Hcn/ux/E/7sgw/++I
<style type="text/css">
html{-moz-tab-size:4;-o-tab-size:4;tab-size:4;line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji}
.aui-root .hljs{display:block;overflow-x:auto;padding:.5em;background:#011627;color:#d6deeb}.aui-root .hljs-keyword{color:#c792ea;font-style:italic}.aui-root .hljs-built_in{color:#addb67;font-style:italic}.aui-root .hljs-type{color:#82aaff}.aui-root .hljs-literal{color:#ff5874}.aui-root .hljs-number{color:#f78c6c}.aui-root .hljs-regexp{color:#5ca7e4}.aui-root .hljs-string{color:#ecc48d}.aui-root .hljs-subst{color:#d3423e}.aui-root .hljs-symbol{color:#82aaff}.aui-root .hljs-class{color:#ffcb8b}.aui-root .hljs-function{color:#82aaff}.aui-root .hljs-title{color:#dcdcaa;font-style:italic}.aui-root .hljs-params{color:#7fdbca}.aui-root .hljs-comment{color:#637777;font-style:italic}.aui-root .hljs-doctag{color:#7fdbca}.aui-root .hljs-meta,.aui-root .hljs-meta-keyword{color:#82aaff}.aui-root .hljs-meta-string{color:#ecc48d}.aui-root .hljs-section{color:#82b1ff}.aui-root .hljs-attr,.aui-root .hljs-builtin-name,.aui-root .hljs-name,.aui-root .hljs-tag{color:#7fdbca}.aui-root .hljs-attribute{color:#80cbc4}.aui-root .hljs-variable{color:#addb67}.aui-root .hljs-bullet{color:#d9f5dd}.aui-root .hljs-code{color:#80cbc4}.aui-root .hljs-emphasis{color:#c792ea;font-style:italic}.aui-root .hljs-strong{color:#addb67;font-weight:700}.aui-root .hljs-formula{color:#c792ea}.aui-root .hljs-link{color:#ff869a}.aui-root .hljs-quote{color:#697098;font-style:italic}.aui-root .hljs-selector-tag{color:#ff6363}.aui-root .hljs-selector-id{color:#fad430}.aui-root .hljs-selector-class{color:#addb67;font-style:italic}.aui-root .hljs-selector-attr,.aui-root .hljs-selector-pseudo{color:#c792ea;font-style:italic}.aui-root .hljs-template-tag{color:#c792ea}.aui-root .hljs-template-variable{color:#addb67}.aui-root .hljs-addition{color:#addb67;font-style:italic}.aui-root .hljs-deletion{color:rgba(239,83,80,.5647058823529412);font-style:italic}
/*! tailwindcss v2.2.19 | MIT License | https://tailwindcss.com*/
/*! modern-normalize v1.1.0 | MIT License | https://github.com/sindresorhus/modern-normalize */.aui-root html{-moz-tab-size:4;-o-tab-size:4;tab-size:4;line-height:1.15;-webkit-text-size-adjust:100%}.aui-root body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji}.aui-root hr{height:0;color:inherit}.aui-root abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.aui-root b,.aui-root strong{font-weight:bolder}.aui-root code,.aui-root kbd,.aui-root pre,.aui-root samp{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}.aui-root small{font-size:80%}.aui-root sub,.aui-root sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}.aui-root sub{bottom:-.25em}.aui-root sup{top:-.5em}.aui-root table{text-indent:0;border-color:inherit}.aui-root button,.aui-root input,.aui-root optgroup,.aui-root select,.aui-root textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}.aui-root button,.aui-root select{text-transform:none}.aui-root [type=button],.aui-root button{-webkit-appearance:button}.aui-root ::-moz-focus-inner{border-style:none;padding:0}.aui-root legend{padding:0}.aui-root progress{vertical-align:baseline}.aui-root ::-webkit-inner-spin-button,.aui-root ::-webkit-outer-spin-button{height:auto}.aui-root [type=search]{-webkit-appearance:textfield;outline-offset:-2px}.aui-root ::-webkit-search-decoration{-webkit-appearance:none}.aui-root ::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}.aui-root summary{display:list-item}.aui-root blockquote,.aui-root dd,.aui-root dl,.aui-root figure,.aui-root h1,.aui-root h2,.aui-root h3,.aui-root h4,.aui-root h5,.aui-root h6,.aui-root hr,.aui-root p,.aui-root pre{margin:0}.aui-root button{background-color:transparent;background-image:none}.aui-root fieldset{margin:0;padding:0}.aui-root ol,.aui-root ul{list-style:none;margin:0;padding:0}.aui-root html{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}.aui-root body{font-family:inherit;line-height:inherit}.aui-root *,.aui-root :after,.aui-root :before{box-sizing:border-box;border:0 solid}.aui-root hr{border-top-width:1px}.aui-root img{border-style:solid}.aui-root textarea{resize:vertical}.aui-root input::-moz-placeholder, .aui-root textarea::-moz-placeholder{opacity:1;color:#cbd5e0}.aui-root input::placeholder,.aui-root textarea::placeholder{opacity:1;color:#cbd5e0}.aui-root button{cursor:pointer}.aui-root table{border-collapse:collapse}.aui-root h1,.aui-root h2,.aui-root h3,.aui-root h4,.aui-root h5,.aui-root h6{font-size:inherit;font-weight:inherit}.aui-root a{color:inherit;text-decoration:inherit}.aui-root button,.aui-root input,.aui-root optgroup,.aui-root select,.aui-root textarea{padding:0;line-height:inherit;color:inherit}.aui-root code,.aui-root kbd,.aui-root pre,.aui-root samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.aui-root audio,.aui-root canvas,.aui-root embed,.aui-root iframe,.aui-root img,.aui-root object,.aui-root svg,.aui-root video{display:block;vertical-align:middle}.aui-root img,.aui-root video{max-width:100%;height:auto}.aui-root [hidden]{display:none}.aui-root *,.aui-root :after,.aui-root :before{--tw-border-opacity:1;border-color:rgba(203,213,224,var(--tw-border-opacity))}.aui-root .container{width:100%}@media (min-width:640px){.aui-root .container{max-width:640px}}@media (min-width:768px){.aui-root .container{max-width:768px}}@media (min-width:1024px){.aui-root .container{max-width:1024px}}@media (min-width:1280px){.aui-root .container{max-width:1280px}}@media (min-width:1536px){.aui-root .container{max-width:1536px}}.aui-root .prose{color:#4a5568;max-width:65ch}.aui-root .prose [class~=lead]{color:#718096;font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.aui-root .prose a{color:#1a202c;text-de
</style>
</head>
<body>
<div id="root"><section class="aui-root"><div class="container:xl relative md:flex bg-white leading-normal" id=""><div class="burger-menu rounded-full h-16 w-16 bg-white fixed bottom-16 right-8 flex items-center justify-center z-30 cursor-pointer shadow-md bg-teal-500" data-lol="false"><svg viewBox="0 0 100 70" width="40" height="30" class="fill-current text-gray-200"><rect width="100" height="10"></rect><rect y="30" width="100" height="10"></rect><rect y="60" width="100" height="10"></rect></svg></div><div class="hidden sidebar relative w-64 max-h-screen h-full bg-gray-200 shadow z-20"><div class=" block fixed max-h-screen h-full font-sans px-4 pt-8 pb-16 overflow-y-auto bg-gray-200"><div class="sidebar--content"><div><h1 class="text-2xl font-light">TrustGraph WebSocket API<!-- --> <!-- -->2.2</h1></div><ul class="text-sm mt-10 relative"><li class="mb-3"><a class="text-gray-700 no-underline hover:text-gray-900" href="#introduction">Introduction</a></li><li class="mb-3 mt-9"><a class="text-xs uppercase text-gray-700 mt-10 mb-4 font-thin hover:text-gray-900" href="#servers">Servers</a><ul class="text-sm mt-2"><li><a class="flex no-underline text-gray-700 mb-2 hover:text-gray-900" href="#server-production"><span class="break-all inline-block">production</span></a></li></ul></li><li class="mb-3 mt-9"><a class="text-xs uppercase text-gray-700 mt-10 mb-4 font-thin hover:text-gray-900" href="#messages">Messages</a><ul class="text-sm mt-2"><li><a class="flex break-words no-underline text-gray-700 mt-2 hover:text-gray-900" href="#message-ServiceRequest"><div class="break-all inline-block">ServiceRequest</div></a></li><li><a class="flex break-words no-underline text-gray-700 mt-2 hover:text-gray-900" href="#message-ServiceResponse"><div class="break-all inline-block">ServiceResponse</div></a></li><li><a class="flex break-words no-underline text-gray-700 mt-2 hover:text-gray-900" href="#message-ServiceError"><div class="break-all inline-block">ServiceError</div></a></li></ul></li><li class="mb-3 mt-9"><a class="text-xs uppercase text-gray-700 mt-10 mb-4 font-thin hover:text-gray-900" href="#schemas">Schemas</a><ul class="text-sm mt-2"><li><a class="flex break-words no-underline text-gray-700 mt-2 hover:text-gray-900" href="#schema-RequestEnvelope"><div class="break-all inline-block">RequestEnvelope</div></a></li><li><a class="flex break-words no-underline text-gray-700 mt-2 hover:text-gray-900" href="#schema-ResponseEnvelope"><div class="break-all inline-block">ResponseEnvelope</div></a></li><li><a class="flex break-words no-underline text-gray-700 mt-2 hover:text-gray-900" href="#schema-ErrorEnvelope"><div class="break-all inline-block">ErrorEnvelope</div></a></li></ul></li></ul></div></div></div><div class="panel--center relative py-8 flex-1"><div class="relative z-10"><div class="panel-item"><div class="panel-item--center px-8 text-left" id="introduction"><div class="text-4xl">TrustGraph WebSocket API<!-- --> <!-- -->2.2</div><ul class="flex flex-wrap mt-2 leading-normal"><li class="inline-block mt-2 mr-2"><a href="https://www.apache.org/licenses/LICENSE-2.0.html" title="Opens in new window" class="border border-solid border-orange-300 hover:bg-orange-300 hover:text-orange-600 text-orange-500 font-bold no-underline text-xs uppercase rounded px-3 py-1" target="_blank" rel="nofollow noopener noreferrer"><span>Apache 2.0</span></a></li><li class="inline-block mt-2 mr-2"><a href="https://www.iana.org/assignments/media-types/application/json" title="Opens in new window" class="border border-solid border-orange-300 hover:bg-orange-300 hover:text-orange-600 text-orange-500 font-bold no-underline text-xs uppercase rounded px-3 py-1" target="_blank" rel="nofollow noopener noreferrer"><span>application/json</span></a></li><li class="inline-block mt-2 mr-2"><a href="https://trustgraph.ai" title="Opens in new window" class="border border-solid border-purple-300 hover:bg-purple-300 hover:text-purple-600 text-purple-500 font-bold no-underline text-xs uppercase rounded px-3 py-1" target="_blank" rel="nofollow noopener noreferrer"><spa
<h2 id="overview">Overview</h2>
<p>The WebSocket API provides access to all TrustGraph services over a single persistent connection:</p>
<ul>
<li><strong>Multiplexed</strong>: Multiple concurrent requests with ID-based correlation</li>
<li><strong>Asynchronous</strong>: Non-blocking request/response pattern</li>
<li><strong>Efficient</strong>: Lower overhead than HTTP REST</li>
<li><strong>Streaming</strong>: Real-time progressive responses</li>
</ul>
<h2 id="protocol-summary">Protocol Summary</h2>
<p>All messages are JSON with:</p>
<ul>
<li><code>id</code>: Client-generated unique identifier for request/response correlation</li>
<li><code>service</code>: Service identifier (e.g., "config", "agent", "document-rag")</li>
<li><code>flow</code>: Optional flow ID for flow-hosted services</li>
<li><code>request</code>/<code>response</code>: Service-specific payload (identical to REST API schemas)</li>
<li><code>error</code>: Error information on failure</li>
</ul>
<h2 id="service-types">Service Types</h2>
<p><strong>Global Services</strong> (no <code>flow</code> parameter):</p>
<ul>
<li>config, flow, librarian, knowledge, collection-management</li>
</ul>
<p><strong>Flow-Hosted Services</strong> (require <code>flow</code> parameter):</p>
<ul>
<li>agent, text-completion, prompt, document-rag, graph-rag</li>
<li>embeddings, graph-embeddings, document-embeddings</li>
<li>triples, rows, nlp-query, structured-query, sparql-query, structured-diag, row-embeddings</li>
<li>text-load, document-load, mcp-tool</li>
</ul>
<h2 id="schema-reuse">Schema Reuse</h2>
<p>Request and response payloads use identical schemas to the REST API.
See OpenAPI specification for detailed schema documentation.</p>
</div></div></div><div class="panel-item--right"></div></div><section id="servers" class="mt-16"><h2 class="2xl:w-7/12 text-3xl font-light mb-4 px-8">Servers</h2><ul><li class="mb-4" id="server-production"><div class="panel-item"><div class="panel-item--center px-8"><div class="shadow rounded bg-gray-200 p-4 border bg-gray-100"><div><span class="font-mono text-base">ws://localhost:8088/</span><strong class="bg-teal-500 no-underline text-white uppercase rounded mx-2 px-2 py-1 text-sm">ws</strong><strong class="bg-blue-500 no-underline text-white uppercase rounded px-2 py-1 text-sm">production</strong></div><div class="mt-2"><div class="prose max-w-none text-sm"><p>Local development WebSocket server</p>
</div></div><div id="server-production-security"><div class="text-sm mt-4"><h5 class="text-gray-800">Security<!-- -->:</h5><ul><li class="mt-2"><div><div><span>HTTP API key<ul class="inline-block ml-2"><li class="inline-block font-bold no-underline bg-blue-400 text-white text-xs uppercase rounded px-2 py-0 ml-1"><span>Name: <!-- -->token</span></li><li class="inline-block font-bold no-underline bg-blue-400 text-white text-xs uppercase rounded px-2 py-0 ml-1"><span>In: <!-- -->query</span></li></ul></span></div><div><div class="prose max-w-none text-sm"><p>Bearer token authentication when GATEWAY_SECRET is configured.
Include as query parameter: ws://localhost:8088/api/v1/socket?token=</p>
</div></div></div></li></ul></div></div><div class="mt-2"></div></div></div><div class="panel-item--right"></div></div></li></ul></section><section id="messages" class="mt-16"><h2 class="2xl:w-7/12 text-3xl font-light mb-4 px-8">Messages</h2><ul><li class="mb-4" id="message-ServiceRequest"><div class="panel-item"><div class="panel-item--center px-8"><div class="shadow rounded bg-gray-200 p-4 border"><div><strong class="text-gray-700 mr-2">#<!-- -->1</strong><span class="text-gray-700 mr-2">Service Request Message</span></div><p class="text-gray-600 text-sm">Request message for any TrustGraph service</p><ul class="leading-normal mt-2 mb-4 space-x-2 space-y-2"><li class="inline-block"><a href="https://www.iana.org/assignments/media-types/application/json" title="Opens in new window" class="border border-solid border-orange-300 hover:bg-orange-300 hover:text-orange-600 text-orange-500 font-bold no-underline text-xs uppercase rounded px-3 py-1" target="_blank" rel="nofollow noopener noreferrer"><span>application/json</span></a></li></ul><div class="border bg-gray-100 rounded px-4 py-2 mt-2"><div class="text-sm text-gray-700">Message ID<span class="bg-orange-600 text-white rounded text-xs ml-2 py-0 px-2">ServiceRequest</span></div></div><div class="mt-2"><div class="prose max-w-none text-sm"><p>Generic request message that can invoke any TrustGraph service.</p>
<p>The <code>request</code> field payload varies by service and matches the REST API request body schema.</p>
</div></div><div class="mt-2" id="message-ServiceRequest-payload"><div class="flex mb-4 gap-2"><div class="border rounded overflow-visible w-full"><div class="flex flex-col justify-center p-4 bg-gray-100 border-b"><div class="flex justify-between items-start"><div class="flex items-center gap-2 w-full"><div class="flex items-center gap-2"><button class="focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 " type="button"><div class="inline-block"><span class="break-anywhere text-sm w-full ">Payload</span></div><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 20 20" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg" class="inline-block align-baseline cursor-pointer ml-0.5 -mb-1 w-5 h-5 transform transition-transform duration-150 ease-linear "><path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd"></path></svg></button></div><span class="capitalize text-sm text-teal-500 font-bold">oneOf</span><div class="ml-auto flex gap-4"><button type="button" class="text-sm text-gray-500 hover:text-gray-700">Expand all</button></div></div></div><div class="mt-2 text-sm text-gray-600"><div class="prose max-w-none text-sm"><p>Service request envelope with id, service, optional flow, and service-specific request payload</p>
</div></div></div><div class="flex "></div></div></div></div></div></div></div></li><li class="mb-4" id="message-ServiceResponse"><div class="panel-item"><div class="panel-item--center px-8"><div class="shadow rounded bg-gray-200 p-4 border"><div><strong class="text-gray-700 mr-2">#<!-- -->2</strong><span class="text-gray-700 mr-2">Service Response Message</span></div><p class="text-gray-600 text-sm">Successful response from any TrustGraph service</p><ul class="leading-normal mt-2 mb-4 space-x-2 space-y-2"><li class="inline-block"><a href="https://www.iana.org/assignments/media-types/application/json" title="Opens in new window" class="border border-solid border-orange-300 hover:bg-orange-300 hover:text-orange-600 text-orange-500 font-bold no-underline text-xs uppercase rounded px-3 py-1" target="_blank" rel="nofollow noopener noreferrer"><span>application/json</span></a></li></ul><div class="border bg-gray-100 rounded px-4 py-2 mt-2"><div class="text-sm text-gray-700">Message ID<span class="bg-orange-600 text-white rounded text-xs ml-2 py-0 px-2">ServiceResponse</span></div></div><div class="mt-2"><div class="prose max-w-none text-sm"><p>Generic response message from any TrustGraph service.</p>
<p>The <code>response</code> field payload varies by service and matches the REST API response body schema.</p>
<p>For streaming services, multiple messages with the same <code>id</code> may be sent.</p>
</div></div><div class="mt-2" id="message-ServiceResponse-payload"><div class="flex mb-4 gap-2"><div class="border rounded overflow-visible w-full"><div class="flex flex-col justify-center p-4 bg-gray-100 border-b"><div class="flex justify-between items-start"><div class="flex items-center gap-2 w-full"><div class="flex items-center gap-2"><button class="focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 " type="button"><div class="inline-block"><span class="break-anywhere text-sm w-full ">Payload</span></div><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 20 20" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg" class="inline-block align-baseline cursor-pointer ml-0.5 -mb-1 w-5 h-5 transform transition-transform duration-150 ease-linear "><path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd"></path></svg></button></div><span class="capitalize text-sm text-teal-500 font-bold">object</span><div class="ml-auto flex gap-4"><button type="button" class="text-sm text-gray-500 hover:text-gray-700">Expand all</button></div></div></div><div class="mt-2 text-sm text-gray-600"><div class="prose max-w-none text-sm"><p>WebSocket response message envelope for successful responses.</p>
<p>Contains the request ID for correlation and the service-specific response payload.</p>
</div></div></div><div class="flex "></div></div></div></div></div></div></div></li><li class="mb-4" id="message-ServiceError"><div class="panel-item"><div class="panel-item--center px-8"><div class="shadow rounded bg-gray-200 p-4 border"><div><strong class="text-gray-700 mr-2">#<!-- -->3</strong><span class="text-gray-700 mr-2">Service Error Message</span></div><p class="text-gray-600 text-sm">Error response from any TrustGraph service</p><ul class="leading-normal mt-2 mb-4 space-x-2 space-y-2"><li class="inline-block"><a href="https://www.iana.org/assignments/media-types/application/json" title="Opens in new window" class="border border-solid border-orange-300 hover:bg-orange-300 hover:text-orange-600 text-orange-500 font-bold no-underline text-xs uppercase rounded px-3 py-1" target="_blank" rel="nofollow noopener noreferrer"><span>application/json</span></a></li></ul><div class="border bg-gray-100 rounded px-4 py-2 mt-2"><div class="text-sm text-gray-700">Message ID<span class="bg-orange-600 text-white rounded text-xs ml-2 py-0 px-2">ServiceError</span></div></div><div class="mt-2"><div class="prose max-w-none text-sm"><p>Error message sent when a service request fails.</p>
<p>Contains the request ID and error details.</p>
</div></div><div class="mt-2" id="message-ServiceError-payload"><div class="flex mb-4 gap-2"><div class="border rounded overflow-visible w-full"><div class="flex flex-col justify-center p-4 bg-gray-100 border-b"><div class="flex justify-between items-start"><div class="flex items-center gap-2 w-full"><div class="flex items-center gap-2"><button class="focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 " type="button"><div class="inline-block"><span class="break-anywhere text-sm w-full ">Payload</span></div><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 20 20" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg" class="inline-block align-baseline cursor-pointer ml-0.5 -mb-1 w-5 h-5 transform transition-transform duration-150 ease-linear "><path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd"></path></svg></button></div><span class="capitalize text-sm text-teal-500 font-bold">object</span><div class="ml-auto flex gap-4"><button type="button" class="text-sm text-gray-500 hover:text-gray-700">Expand all</button></div></div></div><div class="mt-2 text-sm text-gray-600"><div class="prose max-w-none text-sm"><p>WebSocket error message envelope.</p>
<p>Sent when a request fails. Contains the request ID and error details.</p>
</div></div></div><div class="flex "></div></div></div></div></div></div></div></li></ul></section><section id="schemas" class="mt-16"><h2 class="2xl:w-7/12 text-3xl font-light mb-4 px-8">Schemas</h2><ul><li class="mb-4" id="schema-RequestEnvelope"><div><div class="panel-item--center px-8"><div class="shadow rounded px-4 py-2 border bg-gray-200"><div class="flex mb-4 gap-2"><div class="border rounded overflow-visible w-full"><div class="flex flex-col justify-center p-4 bg-gray-100 border-b"><div class="flex justify-between items-start"><div class="flex items-center gap-2 w-full"><div class="flex items-center gap-2"><button class="focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 " type="button"><div class="inline-block"><span class="break-anywhere text-sm w-full ">RequestEnvelope</span></div><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 20 20" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg" class="inline-block align-baseline cursor-pointer ml-0.5 -mb-1 w-5 h-5 transform transition-transform duration-150 ease-linear "><path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd"></path></svg></button></div><span class="capitalize text-sm text-teal-500 font-bold">object</span><div class="ml-auto flex gap-4"><button type="button" class="text-sm text-gray-500 hover:text-gray-700">Expand all</button></div></div></div><div class="mt-2 text-sm text-gray-600"><div class="prose max-w-none text-sm"><p>WebSocket request message envelope.</p>
<p>Wraps service-specific request payloads with routing and correlation metadata.</p>
</div></div></div><div class="flex "></div></div></div></div></div><div class="w-full mt-4"></div></div></li><li class="mb-4" id="schema-ResponseEnvelope"><div><div class="panel-item--center px-8"><div class="shadow rounded px-4 py-2 border bg-gray-200"><div class="flex mb-4 gap-2"><div class="border rounded overflow-visible w-full"><div class="flex flex-col justify-center p-4 bg-gray-100 border-b"><div class="flex justify-between items-start"><div class="flex items-center gap-2 w-full"><div class="flex items-center gap-2"><button class="focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 " type="button"><div class="inline-block"><span class="break-anywhere text-sm w-full ">ResponseEnvelope</span></div><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 20 20" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg" class="inline-block align-baseline cursor-pointer ml-0.5 -mb-1 w-5 h-5 transform transition-transform duration-150 ease-linear "><path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd"></path></svg></button></div><span class="capitalize text-sm text-teal-500 font-bold">object</span><div class="ml-auto flex gap-4"><button type="button" class="text-sm text-gray-500 hover:text-gray-700">Expand all</button></div></div></div><div class="mt-2 text-sm text-gray-600"><div class="prose max-w-none text-sm"><p>WebSocket response message envelope for successful responses.</p>
<p>Contains the request ID for correlation and the service-specific response payload.</p>
</div></div></div><div class="flex "></div></div></div></div></div><div class="w-full mt-4"></div></div></li><li class="mb-4" id="schema-ErrorEnvelope"><div><div class="panel-item--center px-8"><div class="shadow rounded px-4 py-2 border bg-gray-200"><div class="flex mb-4 gap-2"><div class="border rounded overflow-visible w-full"><div class="flex flex-col justify-center p-4 bg-gray-100 border-b"><div class="flex justify-between items-start"><div class="flex items-center gap-2 w-full"><div class="flex items-center gap-2"><button class="focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 " type="button"><div class="inline-block"><span class="break-anywhere text-sm w-full ">ErrorEnvelope</span></div><svg stroke="currentColor" fill="currentColor" stroke-width="0" viewBox="0 0 20 20" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg" class="inline-block align-baseline cursor-pointer ml-0.5 -mb-1 w-5 h-5 transform transition-transform duration-150 ease-linear "><path fill-rule="evenodd" d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd"></path></svg></button></div><span class="capitalize text-sm text-teal-500 font-bold">object</span><div class="ml-auto flex gap-4"><button type="button" class="text-sm text-gray-500 hover:text-gray-700">Expand all</button></div></div></div><div class="mt-2 text-sm text-gray-600"><div class="prose max-w-none text-sm"><p>WebSocket error message envelope.</p>
<p>Sent when a request fails. Contains the request ID and error details.</p>
</div></div></div><div class="flex "></div></div></div></div></div><div class="w-full mt-4"></div></div></li></ul></section></div><div class="panel--right absolute top-0 right-0 h-full bg-gray-800"></div></div></div></section></div>
<script type="text/javascript">
/*! For license information please see without-parser.js.LICENSE.txt */
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("AsyncApiStandalone",[],t):"object"==typeof exports?exports.AsyncApiStandalone=t():e.AsyncApiStandalone=t()}("undefined"!=typeof self?self:this,(()=>(()=>{var e={11821:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.lastVersion=t.specVersions=t.EXTENSION_REGEX=t.xParserObjectUniqueId=t.xParserCircularProps=t.xParserCircular=t.xParserOriginalTraits=t.xParserOriginalPayload=t.xParserOriginalSchemaFormat=t.xParserSchemaId=t.xParserMessageParsed=t.xParserMessageName=t.xParserApiVersion=t.xParserSpecStringified=t.xParserSpecParsed=void 0;const r=i(n(24764));t.xParserSpecParsed="x-parser-spec-parsed",t.xParserSpecStringified="x-parser-spec-stringified",t.xParserApiVersion="x-parser-api-version",t.xParserMessageName="x-parser-message-name",t.xParserMessageParsed="x-parser-message-parsed",t.xParserSchemaId="x-parser-schema-id",t.xParserOriginalSchemaFormat="x-parser-original-schema-format",t.xParserOriginalPayload="x-parser-original-payload",t.xParserOriginalTraits="x-parser-original-traits",t.xParserCircular="x-parser-circular",t.xParserCircularProps="x-parser-circular-props",t.xParserObjectUniqueId="x-parser-unique-object-id",t.EXTENSION_REGEX=/^x-[\w\d.\-_]+$/,t.specVersions=Object.keys(r.default.schemas),t.lastVersion=t.specVersions[t.specVersions.length-1]},68009:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isStringifiedDocument=t.isParsedDocument=t.isOldAsyncAPIDocument=t.isAsyncAPIDocument=t.toAsyncAPIDocument=t.createAsyncAPIDocument=void 0;const i=n(6573),r=n(67943),o=n(1698),s=n(11821);function a(e){switch(e.semver.major){case 2:return new i.AsyncAPIDocumentV2(e.parsed,{asyncapi:e,pointer:"/"});case 3:return new i.AsyncAPIDocumentV3(e.parsed,{asyncapi:e,pointer:"/"});default:throw new Error(`Unsupported AsyncAPI version: ${e.semver.version}`)}}function c(e){return!!e&&(e instanceof i.AsyncAPIDocumentV2||e instanceof i.AsyncAPIDocumentV3||!(!e||"function"!=typeof e.json)&&e.json()[s.xParserApiVersion]===i.ParserAPIVersion)}function p(e){return"object"==typeof e&&null!==e&&Boolean(e[s.xParserSpecParsed])}t.createAsyncAPIDocument=a,t.toAsyncAPIDocument=function(e){return c(e)?e:p(e)?a((0,o.createDetailedAsyncAPI)(e,e)):(0,r.unstringify)(e)},t.isAsyncAPIDocument=c,t.isOldAsyncAPIDocument=function(e){if(e&&"function"==typeof e.json){const t=e.json()[s.xParserApiVersion];return void 0===t||0===t}return!1},t.isParsedDocument=p,t.isStringifiedDocument=function(e){try{return"object"==typeof(e="string"==typeof e?JSON.parse(e):e)&&null!==e&&Boolean(e[s.xParserSpecParsed])&&Boolean(e[s.xParserSpecStringified])}catch(e){return!1}}},31277:(e,t)=>{"use strict";var n,i;function r(e,t,o){if(!e)return;const{schemaTypesToIterate:s,callback:a,seenSchemas:c}=o,p=e.json();if(c.has(p))return;c.add(p);let d=e.type()||[];Array.isArray(d)||(d=[d]),!s.includes(i.Objects)&&d.includes("object")||!s.includes(i.Arrays)&&d.includes("array")||!1!==a(e,t,n.NEW_SCHEMA)&&(s.includes(i.Objects)&&d.includes("object")&&function(e,t){Object.entries(e.properties()||{}).forEach((([e,n])=>{r(n,e,t)}));const n=e.additionalProperties();"object"==typeof n&&r(n,null,t);const o=t.schemaTypesToIterate;o.includes(i.PropertyNames)&&e.propertyNames()&&r(e.propertyNames(),null,t),o.includes(i.PatternProperties)&&Object.entries(e.patternProperties()||{}).forEach((([e,n])=>{r(n,e,t)}))}(e,o),s.includes(i.Arrays)&&d.includes("array")&&function(e,t){const n=e.items();n&&(Array.isArray(n)?n.forEach(((e,n)=>{r(e,n,t)})):r(n,null,t));const i=e.additionalItems();"object"==typeof i&&r(i,null,t),t.schemaTypesToIterate.includes("contains")&&e.contains()&&r(e.contains(),null,t)}(e,o),s.includes(i.OneOfs)&&(e.oneOf()||[]).forEach(((e,t)=>{r(e,t,o)})),s.includes(i.AnyOfs)&&(e.anyOf()||[]).forEach(((e,t)=>{r(e,t,o)})),s.includes(i.AllOfs)&&(e.allOf()||[]).forEach(((e,t)=>{r(e,t,o)})),s.includes(i.Nots)&&e.not()&&r(e
|| (${a} == "string" && ${r} && ${r} == +${r})`).assign(c,s._`+${r}`);case"integer":return void i.elseIf(s._`${a} === "boolean" || ${r} === null
|| (${a} === "string" && ${r} && ${r} == +${r} && !(${r} % 1))`).assign(c,s._`+${r}`);case"boolean":return void i.elseIf(s._`${r} === "false" || ${r} === 0 || ${r} === null`).assign(c,!1).elseIf(s._`${r} === "true" || ${r} === 1`).assign(c,!0);case"null":return i.elseIf(s._`${r} === "" || ${r} === 0 || ${r} === false`),void i.assign(c,null);case"array":i.elseIf(s._`${a} === "string" || ${a} === "number"
|| ${a} === "boolean" || ${r} === null`).assign(c,s._`[${r}]`)}}i.else(),m(e),i.endIf(),i.if(s._`${c} !== undefined`,(()=>{i.assign(r,c),function({gen:e,parentData:t,parentDataProperty:n},i){e.if(s._`${t} !== undefined`,(()=>e.assign(s._`${t}[${n}]`,i)))}(e,c)}))}(e,t,a):m(e)}))}return p};const d=new Set(["string","number","integer","boolean","null"]);function l(e,t,n,i=c.Correct){const r=i===c.Correct?s.operators.EQ:s.operators.NEQ;let o;switch(e){case"null":return s._`${t} ${r} null`;case"array":o=s._`Array.isArray(${t})`;break;case"object":o=s._`${t} && typeof ${t} == "object" && !Array.isArray(${t})`;break;case"integer":o=a(s._`!(${t} % 1) && !isNaN(${t})`);break;case"number":o=a();break;default:return s._`typeof ${t} ${r} ${e}`}return i===c.Correct?o:(0,s.not)(o);function a(e=s.nil){return(0,s.and)(s._`typeof ${t} == "number"`,e,n?s._`isFinite(${t})`:s.nil)}}function f(e,t,n,i){if(1===e.length)return l(e[0],t,n,i);let r;const o=(0,a.toHash)(e);if(o.array&&o.object){const e=s._`typeof ${t} != "object"`;r=o.null?e:s._`!${t} || ${e}`,delete o.null,delete o.array,delete o.object}else r=s.nil;o.number&&delete o.integer;for(const e in o)r=(0,s.and)(r,l(e,t,n,i));return r}t.checkDataType=l,t.checkDataTypes=f;const u={message:({schema:e})=>`must be ${e}`,params:({schema:e,schemaValue:t})=>"string"==typeof e?s._`{type: ${e}}`:s._`{type: ${t}}`};function m(e){const t=function(e){const{gen:t,data:n,schema:i}=e,r=(0,a.schemaRefOrVal)(e,i,"type");return{gen:t,keyword:"type",data:n,schema:i.type,schemaCode:r,schemaValue:r,parentSchema:i,params:{},it:e}}(e);(0,o.reportError)(t,u)}t.reportTypeError=m},91481:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.assignDefaults=void 0;const i=n(15669),r=n(88936);function o(e,t,n){const{gen:o,compositeRule:s,data:a,opts:c}=e;if(void 0===n)return;const p=i._`${a}${(0,i.getProperty)(t)}`;if(s)return void(0,r.checkStrictMode)(e,`default is ignored for: ${p}`);let d=i._`${p} === undefined`;"empty"===c.useDefaults&&(d=i._`${d} || ${p} === null || ${p} === ""`),o.if(d,i._`${p} = ${(0,i.stringify)(n)}`)}t.assignDefaults=function(e,t){const{properties:n,items:i}=e.schema;if("object"===t&&n)for(const t in n)o(e,t,n[t].default);else"array"===t&&Array.isArray(i)&&i.forEach(((t,n)=>o(e,n,t.default)))}},91686:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getData=t.KeywordCxt=t.validateFunctionCode=void 0;const i=n(12171),r=n(97332),o=n(89073),s=n(97332),a=n(91481),c=n(95782),p=n(38878),d=n(15669),l=n(17250),f=n(96696),u=n(88936),m=n(6930);function h({gen:e,validateName:t,schema:n,schemaEnv:i,opts:r},o){r.code.es5?e.func(t,d._`${l.default.data}, ${l.default.valCxt}`,i.$async,(()=>{e.code(d._`"use strict"; ${y(n,r)}`),function(e,t){e.if(l.default.valCxt,(()=>{e.var(l.default.instancePath,d._`${l.default.valCxt}.${l.default.instancePath}`),e.var(l.default.parentData,d._`${l.default.valCxt}.${l.default.parentData}`),e.var(l.default.parentDataProperty,d._`${l.default.valCxt}.${l.default.parentDataProperty}`),e.var(l.default.rootData,d._`${l.default.valCxt}.${l.default.rootData}`),t.dynamicRef&&e.var(l.default.dynamicAnchors,d._`${l.default.valCxt}.${l.default.dynamicAnchors}`)}),(()=>{e.var(l.default.instancePath,d._`""`),e.var(l.default.parentData,d._`undefined`),e.var(l.default.parentDataProperty,d._`undefined`),e.var(l.default.rootData,l.default.data),t.dynamicRef&&e.var(l.default.dynamicAnchors,d._`{}`)}))}(e,r),e.code(o)})):e.func(t,d._`${l.default.data}, ${function(e){return d._`{${l.default.instancePath}="", ${l.default.parentData}, ${l.default.parentDataProperty}, ${l.default.rootData}=${l.default.data}${e.dynamicRef?d._`, ${l.default.dynamicAnchors}={}`:d.nil}}={}`}(r)}`,i.$async,(()=>e.code(y(n,r)).code(o)))}function y(e,t){const n="object"==typeof e&&e[t.schemaId];return n&&(t.code.source||t.code.process)?d._`/*# sourceURL=${n} */`:d.nil}function g({schema:e,self:t}){if("boolean"==typeof e)return!e;for(const n in e)if(t.RULES.all[n])return!0;return!1}function b(e){return"boolean"!=typeof e.schema}function v(e){(0,u.checkUnknownRul
missingProperty: ${r},
depsCount: ${t},
deps: ${n}}`};const s={keyword:"dependencies",type:"object",schemaType:"object",error:t.error,code(e){const[t,n]=function({schema:e}){const t={},n={};for(const i in e)"__proto__"!==i&&((Array.isArray(e[i])?t:n)[i]=e[i]);return[t,n]}(e);a(e,t),c(e,n)}};function a(e,t=e.schema){const{gen:n,data:r,it:s}=e;if(0===Object.keys(t).length)return;const a=n.let("missing");for(const c in t){const p=t[c];if(0===p.length)continue;const d=(0,o.propertyInData)(n,r,c,s.opts.ownProperties);e.setParams({property:c,depsCount:p.length,deps:p.join(", ")}),s.allErrors?n.if(d,(()=>{for(const t of p)(0,o.checkReportMissingProp)(e,t)})):(n.if(i._`${d} && (${(0,o.checkMissingProp)(e,p,a)})`),(0,o.reportMissingProp)(e,a),n.else())}}function c(e,t=e.schema){const{gen:n,data:i,keyword:s,it:a}=e,c=n.name("valid");for(const p in t)(0,r.alwaysValidSchema)(a,t[p])||(n.if((0,o.propertyInData)(n,i,p,a.opts.ownProperties),(()=>{const t=e.subschema({keyword:s,schemaProp:p},c);e.mergeValidEvaluated(t,c)}),(()=>n.var(c,!0))),e.ok(c))}t.validatePropertyDeps=a,t.validateSchemaDeps=c,t.default=s},50076:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(15669),r=n(88936),o={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:{message:({params:e})=>i.str`must match "${e.ifClause}" schema`,params:({params:e})=>i._`{failingKeyword: ${e.ifClause}}`},code(e){const{gen:t,parentSchema:n,it:o}=e;void 0===n.then&&void 0===n.else&&(0,r.checkStrictMode)(o,'"if" without "then" and "else" is ignored');const a=s(o,"then"),c=s(o,"else");if(!a&&!c)return;const p=t.let("valid",!0),d=t.name("_valid");if(function(){const t=e.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},d);e.mergeEvaluated(t)}(),e.reset(),a&&c){const n=t.let("ifClause");e.setParams({ifClause:n}),t.if(d,l("then",n),l("else",n))}else a?t.if(d,l("then")):t.if((0,i.not)(d),l("else"));function l(n,r){return()=>{const o=e.subschema({keyword:n},d);t.assign(p,d),e.mergeValidEvaluated(o,p),r?t.assign(r,i._`${n}`):e.setParams({ifClause:n})}}e.pass(p,(()=>e.error(!0)))}};function s(e,t){const n=e.schema[t];return void 0!==n&&!(0,r.alwaysValidSchema)(e,n)}t.default=o},46951:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(78891),r=n(21162),o=n(98634),s=n(65151),a=n(95609),c=n(5463),p=n(53021),d=n(24943),l=n(34243),f=n(98103),u=n(72869),m=n(54279),h=n(14880),y=n(22609),g=n(50076),b=n(25316);t.default=function(e=!1){const t=[u.default,m.default,h.default,y.default,g.default,b.default,p.default,d.default,c.default,l.default,f.default];return e?t.push(r.default,s.default):t.push(i.default,o.default),t.push(a.default),t}},98634:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.validateTuple=void 0;const i=n(15669),r=n(88936),o=n(3499),s={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code(e){const{schema:t,it:n}=e;if(Array.isArray(t))return a(e,"additionalItems",t);n.items=!0,(0,r.alwaysValidSchema)(n,t)||e.ok((0,o.validateArray)(e))}};function a(e,t,n=e.schema){const{gen:o,parentSchema:s,data:a,keyword:c,it:p}=e;!function(e){const{opts:i,errSchemaPath:o}=p,s=n.length,a=s===e.minItems&&(s===e.maxItems||!1===e[t]);if(i.strictTuples&&!a){const e=`"${c}" is ${s}-tuple, but minItems or maxItems/${t} are not specified or different at path "${o}"`;(0,r.checkStrictMode)(p,e,i.strictTuples)}}(s),p.opts.unevaluated&&n.length&&!0!==p.items&&(p.items=r.mergeEvaluated.items(o,n.length,p.items));const d=o.name("valid"),l=o.const("len",i._`${a}.length`);n.forEach(((t,n)=>{(0,r.alwaysValidSchema)(p,t)||(o.if(i._`${l} > ${n}`,(()=>e.subschema({keyword:c,schemaProp:n,dataProp:n},d))),e.ok(d))}))}t.validateTuple=a,t.default=s},65151:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(15669),r=n(88936),o=n(3499),s=n(78891),a={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:{message:({params:{len:e}})=>i.str`must NOT have more than ${e} items`,params:({params:{len:e}})=>i._`{limit: ${e}}`},code(e){const{schema:
</script>
<script>
const schema = {
"asyncapi": "3.0.0",
"info": {
"title": "TrustGraph WebSocket API",
"version": "2.2",
"description": "WebSocket API for TrustGraph - providing multiplexed, asynchronous access to all services.\n\n## Overview\n\nThe WebSocket API provides access to all TrustGraph services over a single persistent connection:\n- **Multiplexed**: Multiple concurrent requests with ID-based correlation\n- **Asynchronous**: Non-blocking request/response pattern\n- **Efficient**: Lower overhead than HTTP REST\n- **Streaming**: Real-time progressive responses\n\n## Protocol Summary\n\nAll messages are JSON with:\n- `id`: Client-generated unique identifier for request/response correlation\n- `service`: Service identifier (e.g., \"config\", \"agent\", \"document-rag\")\n- `flow`: Optional flow ID for flow-hosted services\n- `request`/`response`: Service-specific payload (identical to REST API schemas)\n- `error`: Error information on failure\n\n## Service Types\n\n**Global Services** (no `flow` parameter):\n- config, flow, librarian, knowledge, collection-management\n\n**Flow-Hosted Services** (require `flow` parameter):\n- agent, text-completion, prompt, document-rag, graph-rag\n- embeddings, graph-embeddings, document-embeddings\n- triples, rows, nlp-query, structured-query, sparql-query, structured-diag, row-embeddings\n- text-load, document-load, mcp-tool\n\n## Schema Reuse\n\nRequest and response payloads use identical schemas to the REST API.\nSee OpenAPI specification for detailed schema documentation.\n",
"contact": {
"name": "TrustGraph Project",
"url": "https://trustgraph.ai"
},
"license": {
"name": "Apache 2.0",
"url": "https://www.apache.org/licenses/LICENSE-2.0.html"
}
},
"servers": {
"production": {
"host": "localhost:8088",
"protocol": "ws",
"description": "Local development WebSocket server",
"security": [
{
"type": "httpApiKey",
"name": "token",
"in": "query",
"description": "Bearer token authentication when GATEWAY_SECRET is configured.\nInclude as query parameter: ws://localhost:8088/api/v1/socket?token=<token>\n"
}
]
}
},
"defaultContentType": "application/json",
"channels": {
"socket": {
"address": "/api/v1/socket",
"description": "Primary WebSocket channel for all TrustGraph services.\n\nThis single channel provides multiplexed access to:\n- All global services (config, flow, librarian, knowledge, collection-management)\n- All flow-hosted services (agent, RAG, embeddings, queries, loading, etc.)\n\n## Multiplexing\n\nMultiple requests can be sent concurrently over this channel. Each request includes\na unique `id` field that is echoed back in responses for correlation.\n\n## Message Flow\n\n1. Client sends request with unique `id`, `service`, optional `flow`, and `request` payload\n2. Server processes request asynchronously\n3. Server sends response(s) with matching `id` and either `response` or `error`\n4. For streaming services, multiple responses may be sent with the same `id`\n\n## Service Routing\n\nMessages are routed to services based on:\n- `service`: Service identifier (required)\n- `flow`: Flow ID (required for flow-hosted services, omitted for global services)\n",
"messages": {
"request": {
"name": "ServiceRequest",
"title": "Service Request Message",
"summary": "Request message for any TrustGraph service",
"description": "Generic request message that can invoke any TrustGraph service.\n\nThe `request` field payload varies by service and matches the REST API request body schema.\n",
"payload": {
"description": "Service request envelope with id, service, optional flow, and service-specific request payload",
"oneOf": [
{
"type": "object",
"description": "WebSocket request for config service (global service)",
"required": [
"id",
"service",
"request"
],
"properties": {
"id": {
"type": "string",
"description": "Unique request identifier",
"x-parser-schema-id": "<anonymous-schema-3>"
},
"service": {
"type": "string",
"const": "config",
"description": "Service identifier for config service",
"x-parser-schema-id": "<anonymous-schema-4>"
},
"request": {
"type": "object",
"description": "Configuration service request.\n\nSupports operations: config, list, get, put, delete\n",
"required": [
"operation"
],
"properties": {
"operation": {
"type": "string",
"enum": [
"config",
"list",
"get",
"put",
"delete"
],
"description": "Operation to perform:\n- `config`: Get complete configuration\n- `list`: List all items of a specific type\n- `get`: Get specific configuration items\n- `put`: Set/update configuration values\n- `delete`: Delete configuration items\n",
"example": "config",
"x-parser-schema-id": "<anonymous-schema-6>"
},
"type": {
"type": "string",
"description": "Configuration type (required for list, get, put, delete operations).\nCommon types: flow, prompt, token-cost, parameter-type, interface-description\n",
"example": "flow",
"x-parser-schema-id": "<anonymous-schema-7>"
},
"keys": {
"type": "array",
"description": "Keys to retrieve (for get operation) or delete (for delete operation)",
"items": {
"type": "object",
"required": [
"type",
"key"
],
"properties": {
"type": {
"type": "string",
"description": "Configuration type",
"example": "flow",
"x-parser-schema-id": "<anonymous-schema-10>"
},
"key": {
"type": "string",
"description": "Configuration key",
"example": "my-flow",
"x-parser-schema-id": "<anonymous-schema-11>"
}
},
"x-parser-schema-id": "<anonymous-schema-9>"
},
"x-parser-schema-id": "<anonymous-schema-8>"
},
"values": {
"type": "array",
"description": "Values to set/update (for put operation)",
"items": {
"type": "object",
"required": [
"type",
"key",
"value"
],
"properties": {
"type": {
"type": "string",
"description": "Configuration type",
"example": "flow",
"x-parser-schema-id": "<anonymous-schema-14>"
},
"key": {
"type": "string",
"description": "Configuration key",
"example": "my-flow",
"x-parser-schema-id": "<anonymous-schema-15>"
},
"value": {
"type": "object",
"description": "Configuration value (structure depends on type)",
"additionalProperties": true,
"example": {
"blueprint-name": "document-rag",
"description": "My RAG flow"
},
"x-parser-schema-id": "<anonymous-schema-16>"
}
},
"x-parser-schema-id": "<anonymous-schema-13>"
},
"x-parser-schema-id": "<anonymous-schema-12>"
}
},
"x-parser-schema-id": "<anonymous-schema-5>"
}
},
"examples": [
{
"id": "req-1",
"service": "config",
"request": {
"operation": "list",
"type": "flow"
}
},
{
"id": "req-2",
"service": "config",
"request": {
"operation": "get",
"keys": [
{
"type": "flow",
"key": "my-flow"
}
]
}
}
],
"x-parser-schema-id": "<anonymous-schema-2>"
},
{
"type": "object",
"description": "WebSocket request for flow service (global service)",
"required": [
"id",
"service",
"request"
],
"properties": {
"id": {
"type": "string",
"description": "Unique request identifier",
"x-parser-schema-id": "<anonymous-schema-18>"
},
"service": {
"type": "string",
"const": "flow",
"description": "Service identifier for flow service",
"x-parser-schema-id": "<anonymous-schema-19>"
},
"request": {
"type": "object",
"description": "Flow service request for managing flow instances and blueprints.\n\nOperations: start-flow, stop-flow, list-flows, get-flow,\nlist-blueprints, get-blueprint, put-blueprint, delete-blueprint\n",
"required": [
"operation"
],
"properties": {
"operation": {
"type": "string",
"enum": [
"start-flow",
"stop-flow",
"list-flows",
"get-flow",
"list-blueprints",
"get-blueprint",
"put-blueprint",
"delete-blueprint"
],
"description": "Flow operation:\n- `start-flow`: Start a new flow instance from a blueprint\n- `stop-flow`: Stop a running flow instance\n- `list-flows`: List all running flow instances\n- `get-flow`: Get details of a running flow\n- `list-blueprints`: List available flow blueprints\n- `get-blueprint`: Get blueprint definition\n- `put-blueprint`: Create/update blueprint definition\n- `delete-blueprint`: Delete blueprint definition\n",
"x-parser-schema-id": "<anonymous-schema-21>"
},
"flow-id": {
"type": "string",
"description": "Flow instance ID (required for start-flow, stop-flow, get-flow)",
"example": "my-flow",
"x-parser-schema-id": "<anonymous-schema-22>"
},
"blueprint-name": {
"type": "string",
"description": "Flow blueprint name (required for start-flow, get-blueprint, put-blueprint, delete-blueprint)",
"example": "document-rag",
"x-parser-schema-id": "<anonymous-schema-23>"
},
"blueprint-definition": {
"type": "object",
"description": "Flow blueprint definition (required for put-blueprint)",
"additionalProperties": true,
"example": {
"description": "Custom RAG pipeline",
"parameters": {
"model": {
"type": "llm-model",
"description": "LLM model for processing",
"order": 1
}
},
"class": {
"text-completion:{class}": {
"request": "non-persistent://tg/request/text-completion:{class}",
"response": "non-persistent://tg/response/text-completion:{class}"
}
},
"flow": {
"chunker:{id}": {
"input": "persistent://tg/flow/chunk:{id}",
"output": "persistent://tg/flow/chunk-load:{id}"
}
},
"interfaces": {
"agent": {
"request": "non-persistent://tg/request/agent:{id}",
"response": "non-persistent://tg/response/agent:{id}"
}
}
},
"x-parser-schema-id": "<anonymous-schema-24>"
},
"description": {
"type": "string",
"description": "Flow description (optional for start-flow)",
"example": "My document processing flow",
"x-parser-schema-id": "<anonymous-schema-25>"
},
"parameters": {
"type": "object",
"description": "Flow parameters (for start-flow).\nAll values are stored as strings, regardless of input type.\n",
"additionalProperties": {
"type": "string",
"x-parser-schema-id": "<anonymous-schema-27>"
},
"example": {
"model": "gpt-4",
"temperature": "0.7",
"chunk-size": "1000"
},
"x-parser-schema-id": "<anonymous-schema-26>"
}
},
"x-parser-schema-id": "<anonymous-schema-20>"
}
},
"examples": [
{
"id": "req-1",
"service": "flow",
"request": {
"operation": "list"
}
},
{
"id": "req-2",
"service": "flow",
"request": {
"operation": "start",
"flow": "my-flow",
"blueprint": "default-blueprint"
}
}
],
"x-parser-schema-id": "<anonymous-schema-17>"
},
{
"type": "object",
"description": "WebSocket request for librarian service (global service)",
"required": [
"id",
"service",
"request"
],
"properties": {
"id": {
"type": "string",
"description": "Unique request identifier",
"x-parser-schema-id": "<anonymous-schema-29>"
},
"service": {
"type": "string",
"const": "librarian",
"description": "Service identifier for librarian service",
"x-parser-schema-id": "<anonymous-schema-30>"
},
"request": {
"type": "object",
"description": "Librarian service request for document library management.\n\nOperations: add-document, remove-document, list-documents,\nget-document-metadata, stream-document, add-child-document,\nlist-children, begin-upload, upload-chunk, complete-upload,\nabort-upload, get-upload-status, list-uploads,\nstart-processing, stop-processing, list-processing\n",
"required": [
"operation"
],
"properties": {
"operation": {
"type": "string",
"enum": [
"add-document",
"remove-document",
"list-documents",
"get-document-metadata",
"get-document-content",
"stream-document",
"add-child-document",
"list-children",
"begin-upload",
"upload-chunk",
"complete-upload",
"abort-upload",
"get-upload-status",
"list-uploads",
"start-processing",
"stop-processing",
"list-processing"
],
"description": "Library operation:\n- `add-document`: Add document to library\n- `remove-document`: Remove document from library\n- `list-documents`: List documents in library\n- `get-document-metadata`: Get document metadata\n- `get-document-content`: Get full document content in a single response.\n **Deprecated** — use `stream-document` instead. Fails for documents\n exceeding the broker's max message size.\n- `stream-document`: Stream document content in chunks. Each response\n includes `chunk_index` and `is_final`. Preferred over `get-document-content`\n for all document sizes.\n- `add-child-document`: Add a child document (e.g. page, chunk)\n- `list-children`: List child documents of a parent\n- `begin-upload`: Start a chunked upload session\n- `upload-chunk`: Upload a chunk of data\n- `complete-upload`: Finalize a chunked upload\n- `abort-upload`: Cancel a chunked upload\n- `get-upload-status`: Check upload progress\n- `list-uploads`: List active upload sessions\n- `start-processing`: Start processing library documents\n- `stop-processing`: Stop library processing\n- `list-processing`: List processing status\n",
"x-parser-schema-id": "<anonymous-schema-32>"
},
"flow": {
"type": "string",
"description": "Flow ID",
"example": "my-flow",
"x-parser-schema-id": "<anonymous-schema-33>"
},
"collection": {
"type": "string",
"description": "Collection identifier",
"default": "default",
"example": "default",
"x-parser-schema-id": "<anonymous-schema-34>"
},
"user": {
"type": "string",
"description": "User identifier",
"default": "trustgraph",
"example": "alice",
"x-parser-schema-id": "<anonymous-schema-35>"
},
"document-id": {
"type": "string",
"description": "Document identifier",
"example": "doc-123",
"x-parser-schema-id": "<anonymous-schema-36>"
},
"processing-id": {
"type": "string",
"description": "Processing task identifier",
"example": "proc-456",
"x-parser-schema-id": "<anonymous-schema-37>"
},
"document-metadata": {
"type": "object",
"description": "Document metadata for library management",
"properties": {
"url": {
"type": "string",
"description": "Document URL or identifier",
"example": "https://example.com/document.pdf",
"x-parser-schema-id": "<anonymous-schema-39>"
},
"title": {
"type": "string",
"description": "Document title",
"example": "Example Document",
"x-parser-schema-id": "<anonymous-schema-40>"
},
"author": {
"type": "string",
"description": "Document author",
"example": "John Doe",
"x-parser-schema-id": "<anonymous-schema-41>"
},
"date": {
"type": "string",
"description": "Document date",
"example": "2024-01-15",
"x-parser-schema-id": "<anonymous-schema-42>"
},
"metadata": {
"type": "object",
"description": "Additional metadata fields",
"additionalProperties": true,
"example": {
"department": "Engineering",
"category": "Technical"
},
"x-parser-schema-id": "<anonymous-schema-43>"
}
},
"x-parser-schema-id": "<anonymous-schema-38>"
},
"processing-metadata": {
"type": "object",
"description": "Processing metadata for library document processing",
"properties": {
"flow": {
"type": "string",
"description": "Flow ID",
"example": "my-flow",
"x-parser-schema-id": "<anonymous-schema-45>"
},
"collection": {
"type": "string",
"description": "Collection identifier",
"example": "default",
"x-parser-schema-id": "<anonymous-schema-46>"
},
"status": {
"type": "string",
"description": "Processing status",
"enum": [
"pending",
"processing",
"completed",
"failed"
],
"example": "completed",
"x-parser-schema-id": "<anonymous-schema-47>"
},
"timestamp": {
"type": "string",
"format": "date-time",
"description": "Processing timestamp",
"example": "2024-01-15T10:30:00Z",
"x-parser-schema-id": "<anonymous-schema-48>"
},
"error": {
"type": "string",
"description": "Error message if processing failed",
"example": "Failed to extract text from PDF",
"x-parser-schema-id": "<anonymous-schema-49>"
}
},
"x-parser-schema-id": "<anonymous-schema-44>"
},
"content": {
"type": "string",
"description": "Document content (for add-document with inline content)",
"example": "This is the document content...",
"x-parser-schema-id": "<anonymous-schema-50>"
},
"criteria": {
"type": "array",
"description": "Search criteria for filtering documents",
"items": {
"type": "object",
"required": [
"key",
"value",
"operator"
],
"properties": {
"key": {
"type": "string",
"description": "Metadata field name",
"example": "author",
"x-parser-schema-id": "<anonymous-schema-53>"
},
"value": {
"type": "string",
"description": "Value to match",
"example": "John Doe",
"x-parser-schema-id": "<anonymous-schema-54>"
},
"operator": {
"type": "string",
"enum": [
"eq",
"ne",
"gt",
"lt",
"contains"
],
"description": "Comparison operator",
"example": "eq",
"x-parser-schema-id": "<anonymous-schema-55>"
}
},
"x-parser-schema-id": "<anonymous-schema-52>"
},
"x-parser-schema-id": "<anonymous-schema-51>"
}
},
"x-parser-schema-id": "<anonymous-schema-31>"
}
},
"examples": [
{
"id": "req-1",
"service": "librarian",
"request": {
"operation": "list",
"collection": "default"
}
}
],
"x-parser-schema-id": "<anonymous-schema-28>"
},
{
"type": "object",
"description": "WebSocket request for knowledge service (global service)",
"required": [
"id",
"service",
"request"
],
"properties": {
"id": {
"type": "string",
"description": "Unique request identifier",
"x-parser-schema-id": "<anonymous-schema-57>"
},
"service": {
"type": "string",
"const": "knowledge",
"description": "Service identifier for knowledge service",
"x-parser-schema-id": "<anonymous-schema-58>"
},
"request": {
"type": "object",
"description": "Knowledge graph core management request.\n\nOperations: list-kg-cores, get-kg-core, put-kg-core, delete-kg-core,\nload-kg-core, unload-kg-core\n",
"required": [
"operation"
],
"properties": {
"operation": {
"type": "string",
"enum": [
"list-kg-cores",
"get-kg-core",
"put-kg-core",
"delete-kg-core",
"load-kg-core",
"unload-kg-core"
],
"description": "Knowledge core operation:\n- `list-kg-cores`: List knowledge cores for user\n- `get-kg-core`: Get knowledge core by ID\n- `put-kg-core`: Store triples and/or embeddings\n- `delete-kg-core`: Delete knowledge core by ID\n- `load-kg-core`: Load knowledge core into flow\n- `unload-kg-core`: Unload knowledge core from flow\n",
"x-parser-schema-id": "<anonymous-schema-60>"
},
"user": {
"type": "string",
"description": "User identifier (for list-kg-cores, put-kg-core, delete-kg-core)",
"default": "trustgraph",
"example": "alice",
"x-parser-schema-id": "<anonymous-schema-61>"
},
"id": {
"type": "string",
"description": "Knowledge core ID (for get, put, delete, load, unload)",
"example": "core-123",
"x-parser-schema-id": "<anonymous-schema-62>"
},
"flow": {
"type": "string",
"description": "Flow ID (for load-kg-core)",
"example": "my-flow",
"x-parser-schema-id": "<anonymous-schema-63>"
},
"collection": {
"type": "string",
"description": "Collection identifier (for load-kg-core)",
"default": "default",
"example": "default",
"x-parser-schema-id": "<anonymous-schema-64>"
},
"triples": {
"type": "object",
"description": "Triples to store (for put-kg-core)",
"required": [
"metadata",
"triples"
],
"properties": {
"metadata": {
"type": "object",
"required": [
"id",
"user",
"collection"
],
"properties": {
"id": {
"type": "string",
"description": "Knowledge core ID",
"example": "core-123",
"x-parser-schema-id": "<anonymous-schema-67>"
},
"user": {
"type": "string",
"description": "User identifier",
"example": "alice",
"x-parser-schema-id": "<anonymous-schema-68>"
},
"collection": {
"type": "string",
"description": "Collection identifier",
"example": "default",
"x-parser-schema-id": "<anonymous-schema-69>"
},
"metadata": {
"type": "array",
"description": "Metadata triples",
"items": {
"type": "object",
"description": "RDF triple (subject-predicate-object), optionally scoped to a named graph.\n",
"required": [
"s",
"p",
"o"
],
"properties": {
"s": {
"type": "object",
"description": "RDF Term - typed representation of a value in the knowledge graph.\n\nTerm types (discriminated by `t` field):\n- `i`: IRI (URI reference)\n- `l`: Literal (string value, optionally with datatype or language tag)\n- `r`: Quoted triple (RDF-star reification)\n- `b`: Blank node\n",
"properties": {
"t": {
"type": "string",
"description": "Term type discriminator",
"enum": [
"i",
"l",
"r",
"b"
],
"example": "i",
"x-parser-schema-id": "<anonymous-schema-73>"
},
"i": {
"type": "string",
"description": "IRI value (when t=i)",
"example": "http://example.com/Person1",
"x-parser-schema-id": "<anonymous-schema-74>"
},
"v": {
"type": "string",
"description": "Literal value (when t=l)",
"example": "John Doe",
"x-parser-schema-id": "<anonymous-schema-75>"
},
"d": {
"type": "string",
"description": "Datatype IRI for literal (when t=l, optional)",
"example": "http://www.w3.org/2001/XMLSchema#integer",
"x-parser-schema-id": "<anonymous-schema-76>"
},
"l": {
"type": "string",
"description": "Language tag for literal (when t=l, optional)",
"example": "en",
"x-parser-schema-id": "<anonymous-schema-77>"
},
"r": {
"type": "object",
"description": "Quoted triple (when t=r) - contains s, p, o as nested Term objects with the same structure",
"properties": {
"s": {
"type": "object",
"description": "Subject term",
"x-parser-schema-id": "<anonymous-schema-79>"
},
"p": {
"type": "object",
"description": "Predicate term",
"x-parser-schema-id": "<anonymous-schema-80>"
},
"o": {
"type": "object",
"description": "Object term",
"x-parser-schema-id": "<anonymous-schema-81>"
}
},
"x-parser-schema-id": "<anonymous-schema-78>"
}
},
"required": [
"t"
],
"examples": [
{
"description": "IRI term",
"value": {
"t": "i",
"i": "http://schema.org/name"
}
},
{
"description": "Literal term",
"value": {
"t": "l",
"v": "John Doe"
}
},
{
"description": "Literal with language tag",
"value": {
"t": "l",
"v": "Bonjour",
"l": "fr"
}
}
],
"x-parser-schema-id": "<anonymous-schema-72>"
},
"p": "$ref:$.channels.socket.messages.request.payload.oneOf[3].properties.request.properties.triples.properties.metadata.properties.metadata.items.properties.s",
"o": "$ref:$.channels.socket.messages.request.payload.oneOf[3].properties.request.properties.triples.properties.metadata.properties.metadata.items.properties.s",
"g": {
"type": "string",
"description": "Named graph URI (optional)",
"example": "urn:graph:source",
"x-parser-schema-id": "<anonymous-schema-82>"
}
},
"x-parser-schema-id": "<anonymous-schema-71>"
},
"x-parser-schema-id": "<anonymous-schema-70>"
}
},
"x-parser-schema-id": "<anonymous-schema-66>"
},
"triples": {
"type": "array",
"description": "Knowledge triples",
"items": "$ref:$.channels.socket.messages.request.payload.oneOf[3].properties.request.properties.triples.properties.metadata.properties.metadata.items",
"x-parser-schema-id": "<anonymous-schema-83>"
}
},
"x-parser-schema-id": "<anonymous-schema-65>"
},
"graph-embeddings": {
"type": "object",
"description": "Graph embeddings to store (for put-kg-core)",
"required": [
"metadata",
"entities"
],
"properties": {
"metadata": {
"type": "object",
"required": [
"id",
"user",
"collection"
],
"properties": {
"id": {
"type": "string",
"description": "Knowledge core ID",
"example": "core-123",
"x-parser-schema-id": "<anonymous-schema-86>"
},
"user": {
"type": "string",
"description": "User identifier",
"example": "alice",
"x-parser-schema-id": "<anonymous-schema-87>"
},
"collection": {
"type": "string",
"description": "Collection identifier",
"example": "default",
"x-parser-schema-id": "<anonymous-schema-88>"
},
"metadata": {
"type": "array",
"description": "Metadata triples",
"items": "$ref:$.channels.socket.messages.request.payload.oneOf[3].properties.request.properties.triples.properties.metadata.properties.metadata.items",
"x-parser-schema-id": "<anonymous-schema-89>"
}
},
"x-parser-schema-id": "<anonymous-schema-85>"
},
"entities": {
"type": "array",
"description": "Entity embeddings",
"items": {
"type": "object",
"required": [
"entity",
"vectors"
],
"properties": {
"entity": "$ref:$.channels.socket.messages.request.payload.oneOf[3].properties.request.properties.triples.properties.metadata.properties.metadata.items.properties.s",
"vectors": {
"type": "array",
"description": "Embedding vectors",
"items": {
"type": "number",
"x-parser-schema-id": "<anonymous-schema-93>"
},
"example": [
0.1,
0.2,
0.3
],
"x-parser-schema-id": "<anonymous-schema-92>"
}
},
"x-parser-schema-id": "<anonymous-schema-91>"
},
"x-parser-schema-id": "<anonymous-schema-90>"
}
},
"x-parser-schema-id": "<anonymous-schema-84>"
}
},
"x-parser-schema-id": "<anonymous-schema-59>"
}
},
"examples": [
{
"id": "req-1",
"service": "knowledge",
"request": {
"operation": "store",
"triples": [
{
"s": {
"v": "https://example.com/entity1",
"e": true
},
"p": {
"v": "https://example.com/relates-to",
"e": true
},
"o": {
"v": "https://example.com/entity2",
"e": true
}
}
]
}
}
],
"x-parser-schema-id": "<anonymous-schema-56>"
},
{
"type": "object",
"description": "WebSocket request for collection-management service (global service)",
"required": [
"id",
"service",
"request"
],
"properties": {
"id": {
"type": "string",
"description": "Unique request identifier",
"x-parser-schema-id": "<anonymous-schema-95>"
},
"service": {
"type": "string",
"const": "collection-management",
"description": "Service identifier for collection-management service",
"x-parser-schema-id": "<anonymous-schema-96>"
},
"request": {
"type": "object",
"description": "Collection management request.\n\nOperations: list-collections, update-collection, delete-collection\n",
"required": [
"operation"
],
"properties": {
"operation": {
"type": "string",
"enum": [
"list-collections",
"update-collection",
"delete-collection"
],
"description": "Collection operation:\n- `list-collections`: List collections for user\n- `update-collection`: Create or update collection metadata\n- `delete-collection`: Delete collection\n",
"x-parser-schema-id": "<anonymous-schema-98>"
},
"user": {
"type": "string",
"description": "User identifier",
"default": "trustgraph",
"example": "alice",
"x-parser-schema-id": "<anonymous-schema-99>"
},
"collection": {
"type": "string",
"description": "Collection identifier (for update, delete)",
"example": "research",
"x-parser-schema-id": "<anonymous-schema-100>"
},
"timestamp": {
"type": "string",
"description": "ISO timestamp",
"format": "date-time",
"example": "2024-01-15T10:30:00Z",
"x-parser-schema-id": "<anonymous-schema-101>"
},
"name": {
"type": "string",
"description": "Human-readable collection name (for update)",
"example": "Research Papers",
"x-parser-schema-id": "<anonymous-schema-102>"
},
"description": {
"type": "string",
"description": "Collection description (for update)",
"example": "Academic research papers on AI and ML",
"x-parser-schema-id": "<anonymous-schema-103>"
},
"tags": {
"type": "array",
"description": "Collection tags for organization (for update)",
"items": {
"type": "string",
"x-parser-schema-id": "<anonymous-schema-105>"
},
"example": [
"research",
"AI",
"academic"
],
"x-parser-schema-id": "<anonymous-schema-104>"
},
"tag-filter": {
"type": "array",
"description": "Filter collections by tags (for list)",
"items": {
"type": "string",
"x-parser-schema-id": "<anonymous-schema-107>"
},
"example": [
"research"
],
"x-parser-schema-id": "<anonymous-schema-106>"
},
"limit": {
"type": "integer",
"description": "Maximum number of results (for list)",
"default": 0,
"example": 100,
"x-parser-schema-id": "<anonymous-schema-108>"
}
},
"x-parser-schema-id": "<anonymous-schema-97>"
}
},
"examples": [
{
"id": "req-1",
"service": "collection-management",
"request": {
"operation": "list"
}
}
],
"x-parser-schema-id": "<anonymous-schema-94>"
},
{
"type": "object",
"description": "WebSocket request for agent service (flow-hosted service)",
"required": [
"id",
"service",
"flow",
"request"
],
"properties": {
"id": {
"type": "string",
"description": "Unique request identifier",
"x-parser-schema-id": "<anonymous-schema-110>"
},
"service": {
"type": "string",
"const": "agent",
"description": "Service identifier for agent service",
"x-parser-schema-id": "<anonymous-schema-111>"
},
"flow": {
"type": "string",
"description": "Flow ID",
"x-parser-schema-id": "<anonymous-schema-112>"
},
"request": {
"type": "object",
"description": "Agent service request - conversational AI agent that can reason and take actions.\n",
"required": [
"question"
],
"properties": {
"question": {
"type": "string",
"description": "User question or prompt for the agent",
"example": "What is the capital of France?",
"x-parser-schema-id": "<anonymous-schema-114>"
},
"state": {
"type": "string",
"description": "Agent state for continuation (optional, for multi-turn)",
"example": "agent-state-12345",
"x-parser-schema-id": "<anonymous-schema-115>"
},
"group": {
"type": "array",
"description": "Group identifiers for collaborative agents (optional)",
"items": {
"type": "string",
"x-parser-schema-id": "<anonymous-schema-117>"
},
"example": [
"research-team"
],
"x-parser-schema-id": "<anonymous-schema-116>"
},
"history": {
"type": "array",
"description": "Conversation history (optional, list of previous agent steps)",
"items": {
"type": "object",
"properties": {
"thought": {
"type": "string",
"description": "Agent's reasoning",
"example": "I need to search for information about Paris",
"x-parser-schema-id": "<anonymous-schema-120>"
},
"action": {
"type": "string",
"description": "Action taken",
"example": "search",
"x-parser-schema-id": "<anonymous-schema-121>"
},
"arguments": {
"type": "object",
"description": "Action arguments",
"additionalProperties": {
"type": "string",
"x-parser-schema-id": "<anonymous-schema-123>"
},
"example": {
"query": "capital of France"
},
"x-parser-schema-id": "<anonymous-schema-122>"
},
"observation": {
"type": "string",
"description": "Result of the action",
"example": "Paris is the capital of France",
"x-parser-schema-id": "<anonymous-schema-124>"
},
"user": {
"type": "string",
"description": "User context for this step",
"example": "alice",
"x-parser-schema-id": "<anonymous-schema-125>"
}
},
"x-parser-schema-id": "<anonymous-schema-119>"
},
"x-parser-schema-id": "<anonymous-schema-118>"
},
"user": {
"type": "string",
"description": "User identifier for multi-tenancy",
"default": "trustgraph",
"example": "alice",
"x-parser-schema-id": "<anonymous-schema-126>"
},
"streaming": {
"type": "boolean",
"description": "Enable streaming response delivery",
"default": false,
"example": true,
"x-parser-schema-id": "<anonymous-schema-127>"
}
},
"x-parser-schema-id": "<anonymous-schema-113>"
}
},
"examples": [
{
"id": "req-1",
"service": "agent",
"flow": "my-flow",
"request": {
"question": "What is quantum computing?",
"streaming": true,
"system-prompt": "You are a helpful assistant"
}
}
],
"x-parser-schema-id": "<anonymous-schema-109>"
},
{
"type": "object",
"description": "WebSocket request for document-rag service (flow-hosted service)",
"required": [
"id",
"service",
"flow",
"request"
],
"properties": {
"id": {
"type": "string",
"description": "Unique request identifier",
"x-parser-schema-id": "<anonymous-schema-129>"
},
"service": {
"type": "string",
"const": "document-rag",
"description": "Service identifier for document-rag service",
"x-parser-schema-id": "<anonymous-schema-130>"
},
"flow": {
"type": "string",
"description": "Flow ID",
"x-parser-schema-id": "<anonymous-schema-131>"
},
"request": {
"type": "object",
"description": "Document RAG (Retrieval-Augmented Generation) query request.\nSearches document embeddings and generates answer using retrieved context.\n",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "User query or question",
"example": "What are the key findings in the research papers?",
"x-parser-schema-id": "<anonymous-schema-133>"
},
"user": {
"type": "string",
"description": "User identifier for multi-tenancy",
"default": "trustgraph",
"example": "alice",
"x-parser-schema-id": "<anonymous-schema-134>"
},
"collection": {
"type": "string",
"description": "Collection to search within",
"default": "default",
"example": "research",
"x-parser-schema-id": "<anonymous-schema-135>"
},
"doc-limit": {
"type": "integer",
"description": "Maximum number of documents to retrieve",
"default": 20,
"minimum": 1,
"maximum": 100,
"example": 10,
"x-parser-schema-id": "<anonymous-schema-136>"
},
"streaming": {
"type": "boolean",
"description": "Enable streaming response delivery",
"default": false,
"example": true,
"x-parser-schema-id": "<anonymous-schema-137>"
}
},
"x-parser-schema-id": "<anonymous-schema-132>"
}
},
"examples": [
{
"id": "req-1",
"service": "document-rag",
"flow": "my-flow",
"request": {
"query": "What are the main features?",
"streaming": true,
"doc-limit": 20
}
}
],
"x-parser-schema-id": "<anonymous-schema-128>"
},
{
"type": "object",
"description": "WebSocket request for graph-rag service (flow-hosted service)",
"required": [
"id",
"service",
"flow",
"request"
],
"properties": {
"id": {
"type": "string",
"description": "Unique request identifier",
"x-parser-schema-id": "<anonymous-schema-139>"
},
"service": {
"type": "string",
"const": "graph-rag",
"description": "Service identifier for graph-rag service",
"x-parser-schema-id": "<anonymous-schema-140>"
},
"flow": {
"type": "string",
"description": "Flow ID",
"x-parser-schema-id": "<anonymous-schema-141>"
},
"request": {
"type": "object",
"description": "Graph RAG (Retrieval-Augmented Generation) query request.\nSearches knowledge graph and generates answer using retrieved subgraph.\n",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "User query or question",
"example": "What connections exist between quantum physics and computer science?",
"x-parser-schema-id": "<anonymous-schema-143>"
},
"user": {
"type": "string",
"description": "User identifier for multi-tenancy",
"default": "trustgraph",
"example": "alice",
"x-parser-schema-id": "<anonymous-schema-144>"
},
"collection": {
"type": "string",
"description": "Collection to search within",
"default": "default",
"example": "research",
"x-parser-schema-id": "<anonymous-schema-145>"
},
"entity-limit": {
"type": "integer",
"description": "Maximum number of entities to retrieve",
"default": 50,
"minimum": 1,
"maximum": 200,
"example": 30,
"x-parser-schema-id": "<anonymous-schema-146>"
},
"triple-limit": {
"type": "integer",
"description": "Maximum number of triples to retrieve per entity",
"default": 30,
"minimum": 1,
"maximum": 100,
"example": 20,
"x-parser-schema-id": "<anonymous-schema-147>"
},
"max-subgraph-size": {
"type": "integer",
"description": "Maximum total subgraph size (triples)",
"default": 1000,
"minimum": 10,
"maximum": 5000,
"example": 500,
"x-parser-schema-id": "<anonymous-schema-148>"
},
"max-path-length": {
"type": "integer",
"description": "Maximum path length for graph traversal",
"default": 2,
"minimum": 1,
"maximum": 5,
"example": 3,
"x-parser-schema-id": "<anonymous-schema-149>"
},
"streaming": {
"type": "boolean",
"description": "Enable streaming response delivery",
"default": false,
"example": true,
"x-parser-schema-id": "<anonymous-schema-150>"
}
},
"x-parser-schema-id": "<anonymous-schema-142>"
}
},
"examples": [
{
"id": "req-1",
"service": "graph-rag",
"flow": "my-flow",
"request": {
"query": "What entities are related to quantum computing?",
"streaming": true,
"triple-limit": 100
}
}
],
"x-parser-schema-id": "<anonymous-schema-138>"
},
{
"type": "object",
"description": "WebSocket request for text-completion service (flow-hosted service)",
"required": [
"id",
"service",
"flow",
"request"
],
"properties": {
"id": {
"type": "string",
"description": "Unique request identifier",
"x-parser-schema-id": "<anonymous-schema-152>"
},
"service": {
"type": "string",
"const": "text-completion",
"description": "Service identifier for text-completion service",
"x-parser-schema-id": "<anonymous-schema-153>"
},
"flow": {
"type": "string",
"description": "Flow ID",
"x-parser-schema-id": "<anonymous-schema-154>"
},
"request": {
"type": "object",
"description": "Text completion request - direct LLM completion without RAG.\n",
"required": [
"system",
"prompt"
],
"properties": {
"system": {
"type": "string",
"description": "System prompt that sets behavior and context for the LLM",
"example": "You are a helpful assistant that provides concise answers.",
"x-parser-schema-id": "<anonymous-schema-156>"
},
"prompt": {
"type": "string",
"description": "User prompt or question",
"example": "Explain the concept of recursion in programming.",
"x-parser-schema-id": "<anonymous-schema-157>"
},
"streaming": {
"type": "boolean",
"description": "Enable streaming response delivery",
"default": false,
"example": true,
"x-parser-schema-id": "<anonymous-schema-158>"
}
},
"x-parser-schema-id": "<anonymous-schema-155>"
}
},
"examples": [
{
"id": "req-1",
"service": "text-completion",
"flow": "my-flow",
"request": {
"prompt": "Once upon a time",
"streaming": true,
"max-output-tokens": 100
}
}
],
"x-parser-schema-id": "<anonymous-schema-151>"
},
{
"type": "object",
"description": "WebSocket request for prompt service (flow-hosted service)",
"required": [
"id",
"service",
"flow",
"request"
],
"properties": {
"id": {
"type": "string",
"description": "Unique request identifier",
"x-parser-schema-id": "<anonymous-schema-160>"
},
"service": {
"type": "string",
"const": "prompt",
"description": "Service identifier for prompt service",
"x-parser-schema-id": "<anonymous-schema-161>"
},
"flow": {
"type": "string",
"description": "Flow ID",
"x-parser-schema-id": "<anonymous-schema-162>"
},
"request": {
"type": "object",
"description": "Prompt service request - template-based text generation.\n\nExecute a stored prompt template with variable substitution.\n",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "Prompt template ID (stored in config)",
"example": "summarize-document",
"x-parser-schema-id": "<anonymous-schema-164>"
},
"terms": {
"type": "object",
"description": "Template variables as key-value pairs (values are JSON strings)",
"additionalProperties": {
"type": "string",
"x-parser-schema-id": "<anonymous-schema-166>"
},
"example": {
"document": "\"This is the document text to summarize...\"",
"max_length": "\"200\""
},
"x-parser-schema-id": "<anonymous-schema-165>"
},
"variables": {
"type": "object",
"description": "Alternative to terms - variables as native JSON values (auto-converted)",
"additionalProperties": {
"x-parser-schema-id": "<anonymous-schema-168>"
},
"example": {
"document": "This is the document text to summarize...",
"max_length": 200
},
"x-parser-schema-id": "<anonymous-schema-167>"
},
"streaming": {
"type": "boolean",
"description": "Enable streaming response delivery",
"default": false,
"example": true,
"x-parser-schema-id": "<anonymous-schema-169>"
}
},
"x-parser-schema-id": "<anonymous-schema-163>"
}
},
"examples": [
{
"id": "req-1",
"service": "prompt",
"flow": "my-flow",
"request": {
"template": "default-template",
"variables": {
"topic": "quantum computing",
"style": "technical"
}
}
}
],
"x-parser-schema-id": "<anonymous-schema-159>"
},
{
"type": "object",
"description": "WebSocket request for embeddings service (flow-hosted service)",
"required": [
"id",
"service",
"flow",
"request"
],
"properties": {
"id": {
"type": "string",
"description": "Unique request identifier",
"x-parser-schema-id": "<anonymous-schema-171>"
},
"service": {
"type": "string",
"const": "embeddings",
"description": "Service identifier for embeddings service",
"x-parser-schema-id": "<anonymous-schema-172>"
},
"flow": {
"type": "string",
"description": "Flow ID",
"x-parser-schema-id": "<anonymous-schema-173>"
},
"request": {
"type": "object",
"description": "Embeddings request - convert text to vector embedding.\n",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"description": "Text to convert to embedding vector",
"example": "Quantum computing uses quantum mechanics principles for computation.",
"x-parser-schema-id": "<anonymous-schema-175>"
}
},
"x-parser-schema-id": "<anonymous-schema-174>"
}
},
"examples": [
{
"id": "req-1",
"service": "embeddings",
"flow": "my-flow",
"request": {
"text": "What is quantum computing?"
}
}
],
"x-parser-schema-id": "<anonymous-schema-170>"
},
{
"type": "object",
"description": "WebSocket request for mcp-tool service (flow-hosted service)",
"required": [
"id",
"service",
"flow",
"request"
],
"properties": {
"id": {
"type": "string",
"description": "Unique request identifier",
"x-parser-schema-id": "<anonymous-schema-177>"
},
"service": {
"type": "string",
"const": "mcp-tool",
"description": "Service identifier for mcp-tool service",
"x-parser-schema-id": "<anonymous-schema-178>"
},
"flow": {
"type": "string",
"description": "Flow ID",
"x-parser-schema-id": "<anonymous-schema-179>"
},
"request": {
"type": "object",
"description": "MCP tool request - execute Model Context Protocol tool.\n",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Tool name to execute",
"example": "search",
"x-parser-schema-id": "<anonymous-schema-181>"
},
"parameters": {
"type": "object",
"description": "Tool parameters (JSON object, auto-converted to string internally)",
"additionalProperties": {
"x-parser-schema-id": "<anonymous-schema-183>"
},
"example": {
"query": "quantum computing",
"limit": 10
},
"x-parser-schema-id": "<anonymous-schema-182>"
}
},
"x-parser-schema-id": "<anonymous-schema-180>"
}
},
"examples": [
{
"id": "req-1",
"service": "mcp-tool",
"flow": "my-flow",
"request": {
"tool": "calculator",
"arguments": {
"operation": "add",
"a": 5,
"b": 3
}
}
}
],
"x-parser-schema-id": "<anonymous-schema-176>"
},
{
"type": "object",
"description": "WebSocket request for triples service (flow-hosted service)",
"required": [
"id",
"service",
"flow",
"request"
],
"properties": {
"id": {
"type": "string",
"description": "Unique request identifier",
"x-parser-schema-id": "<anonymous-schema-185>"
},
"service": {
"type": "string",
"const": "triples",
"description": "Service identifier for triples service",
"x-parser-schema-id": "<anonymous-schema-186>"
},
"flow": {
"type": "string",
"description": "Flow ID",
"x-parser-schema-id": "<anonymous-schema-187>"
},
"request": {
"type": "object",
"description": "Triples query request - query knowledge graph by subject/predicate/object pattern.\n",
"properties": {
"s": "$ref:$.channels.socket.messages.request.payload.oneOf[3].properties.request.properties.triples.properties.metadata.properties.metadata.items.properties.s",
"p": "$ref:$.channels.socket.messages.request.payload.oneOf[3].properties.request.properties.triples.properties.metadata.properties.metadata.items.properties.s",
"o": "$ref:$.channels.socket.messages.request.payload.oneOf[3].properties.request.properties.triples.properties.metadata.properties.metadata.items.properties.s",
"limit": {
"type": "integer",
"description": "Maximum number of triples to return",
"default": 10000,
"minimum": 1,
"maximum": 100000,
"example": 100,
"x-parser-schema-id": "<anonymous-schema-189>"
},
"user": {
"type": "string",
"description": "User identifier",
"default": "trustgraph",
"example": "alice",
"x-parser-schema-id": "<anonymous-schema-190>"
},
"collection": {
"type": "string",
"description": "Collection to query",
"default": "default",
"example": "research",
"x-parser-schema-id": "<anonymous-schema-191>"
},
"g": {
"type": "string",
"description": "Named graph filter (optional).\n- Omitted/null: all graphs\n- Empty string: default graph only\n- URI string: specific named graph (e.g., urn:graph:source, urn:graph:retrieval)\n",
"example": "urn:graph:source",
"x-parser-schema-id": "<anonymous-schema-192>"
},
"streaming": {
"type": "boolean",
"description": "Enable streaming response delivery",
"default": false,
"example": true,
"x-parser-schema-id": "<anonymous-schema-193>"
},
"batch-size": {
"type": "integer",
"description": "Number of triples per streaming batch",
"default": 20,
"minimum": 1,
"maximum": 1000,
"example": 50,
"x-parser-schema-id": "<anonymous-schema-194>"
}
},
"x-parser-schema-id": "<anonymous-schema-188>"
}
},
"examples": [
{
"id": "req-1",
"service": "triples",
"flow": "my-flow",
"request": {
"s": {
"v": "https://example.com/entity1",
"e": true
},
"limit": 100
}
}
],
"x-parser-schema-id": "<anonymous-schema-184>"
},
{
"type": "object",
"description": "WebSocket request for rows service (flow-hosted service)",
"required": [
"id",
"service",
"flow",
"request"
],
"properties": {
"id": {
"type": "string",
"description": "Unique request identifier",
"x-parser-schema-id": "<anonymous-schema-196>"
},
"service": {
"type": "string",
"const": "rows",
"description": "Service identifier for rows service",
"x-parser-schema-id": "<anonymous-schema-197>"
},
"flow": {
"type": "string",
"description": "Flow ID",
"x-parser-schema-id": "<anonymous-schema-198>"
},
"request": {
"type": "object",
"description": "Rows query request - GraphQL query over structured data.\n",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "GraphQL query string",
"example": "query GetPerson($id: ID!) {\n person(id: $id) {\n name\n email\n knows {\n name\n }\n }\n}\n",
"x-parser-schema-id": "<anonymous-schema-200>"
},
"variables": {
"type": "object",
"description": "GraphQL query variables",
"additionalProperties": {
"type": "string",
"x-parser-schema-id": "<anonymous-schema-202>"
},
"example": {
"id": "https://example.com/person/alice"
},
"x-parser-schema-id": "<anonymous-schema-201>"
},
"operation-name": {
"type": "string",
"description": "Operation name (for multi-operation documents)",
"example": "GetPerson",
"x-parser-schema-id": "<anonymous-schema-203>"
},
"user": {
"type": "string",
"description": "User identifier",
"default": "trustgraph",
"example": "alice",
"x-parser-schema-id": "<anonymous-schema-204>"
},
"collection": {
"type": "string",
"description": "Collection to query",
"default": "default",
"example": "research",
"x-parser-schema-id": "<anonymous-schema-205>"
}
},
"x-parser-schema-id": "<anonymous-schema-199>"
}
},
"examples": [
{
"id": "req-1",
"service": "rows",
"flow": "my-flow",
"request": {
"query": "{ entity(id: \"https://example.com/entity1\") { properties { key value } } }"
}
}
],
"x-parser-schema-id": "<anonymous-schema-195>"
},
{
"type": "object",
"description": "WebSocket request for nlp-query service (flow-hosted service)",
"required": [
"id",
"service",
"flow",
"request"
],
"properties": {
"id": {
"type": "string",
"description": "Unique request identifier",
"x-parser-schema-id": "<anonymous-schema-207>"
},
"service": {
"type": "string",
"const": "nlp-query",
"description": "Service identifier for nlp-query service",
"x-parser-schema-id": "<anonymous-schema-208>"
},
"flow": {
"type": "string",
"description": "Flow ID",
"x-parser-schema-id": "<anonymous-schema-209>"
},
"request": {
"type": "object",
"description": "NLP query request - convert natural language question to structured query.\n",
"required": [
"question"
],
"properties": {
"question": {
"type": "string",
"description": "Natural language question",
"example": "Who does Alice know that works in engineering?",
"x-parser-schema-id": "<anonymous-schema-211>"
},
"max-results": {
"type": "integer",
"description": "Maximum results to return when query is executed",
"default": 100,
"minimum": 1,
"maximum": 10000,
"example": 50,
"x-parser-schema-id": "<anonymous-schema-212>"
}
},
"x-parser-schema-id": "<anonymous-schema-210>"
}
},
"examples": [
{
"id": "req-1",
"service": "nlp-query",
"flow": "my-flow",
"request": {
"query": "Show me all entities related to quantum computing",
"limit": 50
}
}
],
"x-parser-schema-id": "<anonymous-schema-206>"
},
{
"type": "object",
"description": "WebSocket request for structured-query service (flow-hosted service)",
"required": [
"id",
"service",
"flow",
"request"
],
"properties": {
"id": {
"type": "string",
"description": "Unique request identifier",
"x-parser-schema-id": "<anonymous-schema-214>"
},
"service": {
"type": "string",
"const": "structured-query",
"description": "Service identifier for structured-query service",
"x-parser-schema-id": "<anonymous-schema-215>"
},
"flow": {
"type": "string",
"description": "Flow ID",
"x-parser-schema-id": "<anonymous-schema-216>"
},
"request": {
"type": "object",
"description": "Structured query request - natural language question with automatic execution.\n\nCombines NLP query generation and execution in one call.\n",
"required": [
"question"
],
"properties": {
"question": {
"type": "string",
"description": "Natural language question",
"example": "Who does Alice know that works in engineering?",
"x-parser-schema-id": "<anonymous-schema-218>"
},
"user": {
"type": "string",
"description": "User identifier",
"default": "trustgraph",
"example": "alice",
"x-parser-schema-id": "<anonymous-schema-219>"
},
"collection": {
"type": "string",
"description": "Collection to query",
"default": "default",
"example": "research",
"x-parser-schema-id": "<anonymous-schema-220>"
}
},
"x-parser-schema-id": "<anonymous-schema-217>"
}
},
"examples": [
{
"id": "req-1",
"service": "structured-query",
"flow": "my-flow",
"request": {
"query": {
"type": "entity",
"filters": [
{
"property": "type",
"value": "Person"
}
]
}
}
}
],
"x-parser-schema-id": "<anonymous-schema-213>"
},
{
"type": "object",
"description": "WebSocket request for structured-diag service (flow-hosted service)",
"required": [
"id",
"service",
"flow",
"request"
],
"properties": {
"id": {
"type": "string",
"description": "Unique request identifier",
"x-parser-schema-id": "<anonymous-schema-222>"
},
"service": {
"type": "string",
"const": "structured-diag",
"description": "Service identifier for structured-diag service",
"x-parser-schema-id": "<anonymous-schema-223>"
},
"flow": {
"type": "string",
"description": "Flow ID",
"x-parser-schema-id": "<anonymous-schema-224>"
},
"request": {
"type": "object",
"description": "Structured data diagnosis request - analyze and understand structured data formats.\n\nOperations: detect-type, generate-descriptor, diagnose, schema-selection\n",
"required": [
"operation",
"sample"
],
"properties": {
"operation": {
"type": "string",
"enum": [
"detect-type",
"generate-descriptor",
"diagnose",
"schema-selection"
],
"description": "Diagnosis operation:\n- `detect-type`: Identify data format (CSV, JSON, XML)\n- `generate-descriptor`: Create schema descriptor for data\n- `diagnose`: Full analysis (detect + generate descriptor)\n- `schema-selection`: Find matching schemas for data\n",
"x-parser-schema-id": "<anonymous-schema-226>"
},
"sample": {
"type": "string",
"description": "Data sample to analyze (text content)",
"example": "name,age,email\nAlice,30,alice@example.com\nBob,25,bob@example.com\n",
"x-parser-schema-id": "<anonymous-schema-227>"
},
"type": {
"type": "string",
"description": "Data type (required for generate-descriptor)",
"enum": [
"csv",
"json",
"xml"
],
"example": "csv",
"x-parser-schema-id": "<anonymous-schema-228>"
},
"schema-name": {
"type": "string",
"description": "Target schema name for descriptor generation (optional)",
"example": "person-records",
"x-parser-schema-id": "<anonymous-schema-229>"
},
"options": {
"type": "object",
"description": "Format-specific options (e.g., CSV delimiter)",
"additionalProperties": {
"type": "string",
"x-parser-schema-id": "<anonymous-schema-231>"
},
"example": {
"delimiter": ",",
"has_header": "true"
},
"x-parser-schema-id": "<anonymous-schema-230>"
}
},
"x-parser-schema-id": "<anonymous-schema-225>"
}
},
"examples": [
{
"id": "req-1",
"service": "structured-diag",
"flow": "my-flow",
"request": {
"operation": "status"
}
}
],
"x-parser-schema-id": "<anonymous-schema-221>"
},
{
"type": "object",
"description": "WebSocket request for graph-embeddings service (flow-hosted service)",
"required": [
"id",
"service",
"flow",
"request"
],
"properties": {
"id": {
"type": "string",
"description": "Unique request identifier",
"x-parser-schema-id": "<anonymous-schema-233>"
},
"service": {
"type": "string",
"const": "graph-embeddings",
"description": "Service identifier for graph-embeddings service",
"x-parser-schema-id": "<anonymous-schema-234>"
},
"flow": {
"type": "string",
"description": "Flow ID",
"x-parser-schema-id": "<anonymous-schema-235>"
},
"request": {
"type": "object",
"description": "Graph embeddings query request - find similar entities by vector similarity.\n",
"required": [
"vectors"
],
"properties": {
"vectors": {
"type": "array",
"description": "Query embedding vector",
"items": {
"type": "number",
"x-parser-schema-id": "<anonymous-schema-238>"
},
"example": [
0.023,
-0.142,
0.089,
0.234,
-0.067,
0.156
],
"x-parser-schema-id": "<anonymous-schema-237>"
},
"limit": {
"type": "integer",
"description": "Maximum number of entities to return",
"default": 10,
"minimum": 1,
"maximum": 1000,
"example": 20,
"x-parser-schema-id": "<anonymous-schema-239>"
},
"user": {
"type": "string",
"description": "User identifier",
"default": "trustgraph",
"example": "alice",
"x-parser-schema-id": "<anonymous-schema-240>"
},
"collection": {
"type": "string",
"description": "Collection to search",
"default": "default",
"example": "research",
"x-parser-schema-id": "<anonymous-schema-241>"
}
},
"x-parser-schema-id": "<anonymous-schema-236>"
}
},
"examples": [
{
"id": "req-1",
"service": "graph-embeddings",
"flow": "my-flow",
"request": {
"text": "quantum computing",
"limit": 10
}
}
],
"x-parser-schema-id": "<anonymous-schema-232>"
},
{
"type": "object",
"description": "WebSocket request for document-embeddings service (flow-hosted service)",
"required": [
"id",
"service",
"flow",
"request"
],
"properties": {
"id": {
"type": "string",
"description": "Unique request identifier",
"x-parser-schema-id": "<anonymous-schema-243>"
},
"service": {
"type": "string",
"const": "document-embeddings",
"description": "Service identifier for document-embeddings service",
"x-parser-schema-id": "<anonymous-schema-244>"
},
"flow": {
"type": "string",
"description": "Flow ID",
"x-parser-schema-id": "<anonymous-schema-245>"
},
"request": {
"type": "object",
"description": "Document embeddings query request - find similar documents by vector similarity.\n",
"required": [
"vectors"
],
"properties": {
"vectors": {
"type": "array",
"description": "Query embedding vector",
"items": {
"type": "number",
"x-parser-schema-id": "<anonymous-schema-248>"
},
"example": [
0.023,
-0.142,
0.089,
0.234,
-0.067,
0.156
],
"x-parser-schema-id": "<anonymous-schema-247>"
},
"limit": {
"type": "integer",
"description": "Maximum number of document chunks to return",
"default": 10,
"minimum": 1,
"maximum": 1000,
"example": 20,
"x-parser-schema-id": "<anonymous-schema-249>"
},
"user": {
"type": "string",
"description": "User identifier",
"default": "trustgraph",
"example": "alice",
"x-parser-schema-id": "<anonymous-schema-250>"
},
"collection": {
"type": "string",
"description": "Collection to search",
"default": "default",
"example": "research",
"x-parser-schema-id": "<anonymous-schema-251>"
}
},
"x-parser-schema-id": "<anonymous-schema-246>"
}
},
"examples": [
{
"id": "req-1",
"service": "document-embeddings",
"flow": "my-flow",
"request": {
"text": "quantum computing",
"limit": 10
}
}
],
"x-parser-schema-id": "<anonymous-schema-242>"
},
{
"type": "object",
"description": "WebSocket request for row-embeddings service (flow-hosted service)",
"required": [
"id",
"service",
"flow",
"request"
],
"properties": {
"id": {
"type": "string",
"description": "Unique request identifier",
"x-parser-schema-id": "<anonymous-schema-253>"
},
"service": {
"type": "string",
"const": "row-embeddings",
"description": "Service identifier for row-embeddings service",
"x-parser-schema-id": "<anonymous-schema-254>"
},
"flow": {
"type": "string",
"description": "Flow ID",
"x-parser-schema-id": "<anonymous-schema-255>"
},
"request": {
"type": "object",
"description": "Row embeddings query request - find similar rows by vector similarity on indexed fields.\nEnables semantic/fuzzy matching on structured data.\n",
"required": [
"vectors",
"schema_name"
],
"properties": {
"vectors": {
"type": "array",
"description": "Query embedding vector",
"items": {
"type": "number",
"x-parser-schema-id": "<anonymous-schema-258>"
},
"example": [
0.023,
-0.142,
0.089,
0.234,
-0.067,
0.156
],
"x-parser-schema-id": "<anonymous-schema-257>"
},
"schema_name": {
"type": "string",
"description": "Schema name to search within",
"example": "customers",
"x-parser-schema-id": "<anonymous-schema-259>"
},
"index_name": {
"type": "string",
"description": "Optional index name to filter search to specific index",
"example": "full_name",
"x-parser-schema-id": "<anonymous-schema-260>"
},
"limit": {
"type": "integer",
"description": "Maximum number of matches to return",
"default": 10,
"minimum": 1,
"maximum": 1000,
"example": 20,
"x-parser-schema-id": "<anonymous-schema-261>"
},
"user": {
"type": "string",
"description": "User identifier",
"default": "trustgraph",
"example": "alice",
"x-parser-schema-id": "<anonymous-schema-262>"
},
"collection": {
"type": "string",
"description": "Collection to search",
"default": "default",
"example": "sales",
"x-parser-schema-id": "<anonymous-schema-263>"
}
},
"x-parser-schema-id": "<anonymous-schema-256>"
}
},
"examples": [
{
"id": "req-1",
"service": "row-embeddings",
"flow": "my-flow",
"request": {
"vectors": [
0.023,
-0.142,
0.089,
0.234
],
"schema_name": "customers",
"limit": 10,
"user": "trustgraph",
"collection": "default"
}
}
],
"x-parser-schema-id": "<anonymous-schema-252>"
},
{
"type": "object",
"description": "WebSocket request for text-load service (flow-hosted service)",
"required": [
"id",
"service",
"flow",
"request"
],
"properties": {
"id": {
"type": "string",
"description": "Unique request identifier",
"x-parser-schema-id": "<anonymous-schema-265>"
},
"service": {
"type": "string",
"const": "text-load",
"description": "Service identifier for text-load service",
"x-parser-schema-id": "<anonymous-schema-266>"
},
"flow": {
"type": "string",
"description": "Flow ID",
"x-parser-schema-id": "<anonymous-schema-267>"
},
"request": {
"type": "object",
"description": "Text load request - load text document into processing pipeline.\n\nFire-and-forget operation (no response).\n",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"description": "Text content, either raw text or base64 encoded for compatibility with older clients",
"example": "VGhpcyBpcyB0aGUgZG9jdW1lbnQgdGV4dC4uLg==",
"x-parser-schema-id": "<anonymous-schema-269>"
},
"id": {
"type": "string",
"description": "Document identifier",
"example": "doc-123",
"x-parser-schema-id": "<anonymous-schema-270>"
},
"user": {
"type": "string",
"description": "User identifier",
"default": "trustgraph",
"example": "alice",
"x-parser-schema-id": "<anonymous-schema-271>"
},
"collection": {
"type": "string",
"description": "Collection for document",
"default": "default",
"example": "research",
"x-parser-schema-id": "<anonymous-schema-272>"
},
"charset": {
"type": "string",
"description": "Text character encoding",
"default": "utf-8",
"example": "utf-8",
"x-parser-schema-id": "<anonymous-schema-273>"
},
"metadata": {
"type": "array",
"description": "Document metadata as RDF triples",
"items": "$ref:$.channels.socket.messages.request.payload.oneOf[3].properties.request.properties.triples.properties.metadata.properties.metadata.items",
"x-parser-schema-id": "<anonymous-schema-274>"
}
},
"x-parser-schema-id": "<anonymous-schema-268>"
}
},
"examples": [
{
"id": "req-1",
"service": "text-load",
"flow": "my-flow",
"request": {
"text": "This is the document content to be loaded into the knowledge graph.",
"collection": "default"
}
}
],
"x-parser-schema-id": "<anonymous-schema-264>"
},
{
"type": "object",
"description": "WebSocket request for document-load service (flow-hosted service)",
"required": [
"id",
"service",
"flow",
"request"
],
"properties": {
"id": {
"type": "string",
"description": "Unique request identifier",
"x-parser-schema-id": "<anonymous-schema-276>"
},
"service": {
"type": "string",
"const": "document-load",
"description": "Service identifier for document-load service",
"x-parser-schema-id": "<anonymous-schema-277>"
},
"flow": {
"type": "string",
"description": "Flow ID",
"x-parser-schema-id": "<anonymous-schema-278>"
},
"request": {
"type": "object",
"description": "Document load request - load binary document (PDF, etc.) into processing pipeline.\n\nFire-and-forget operation (no response).\n",
"required": [
"data"
],
"properties": {
"data": {
"type": "string",
"description": "Document data (base64 encoded)",
"format": "byte",
"example": "JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PC9UeXBlL...",
"x-parser-schema-id": "<anonymous-schema-280>"
},
"id": {
"type": "string",
"description": "Document identifier",
"example": "doc-456",
"x-parser-schema-id": "<anonymous-schema-281>"
},
"user": {
"type": "string",
"description": "User identifier",
"default": "trustgraph",
"example": "alice",
"x-parser-schema-id": "<anonymous-schema-282>"
},
"collection": {
"type": "string",
"description": "Collection for document",
"default": "default",
"example": "research",
"x-parser-schema-id": "<anonymous-schema-283>"
},
"metadata": {
"type": "array",
"description": "Document metadata as RDF triples",
"items": "$ref:$.channels.socket.messages.request.payload.oneOf[3].properties.request.properties.triples.properties.metadata.properties.metadata.items",
"x-parser-schema-id": "<anonymous-schema-284>"
}
},
"x-parser-schema-id": "<anonymous-schema-279>"
}
},
"examples": [
{
"id": "req-1",
"service": "document-load",
"flow": "my-flow",
"request": {
"url": "https://example.com/document.pdf",
"collection": "default"
}
}
],
"x-parser-schema-id": "<anonymous-schema-275>"
},
{
"type": "object",
"description": "WebSocket request for sparql-query service (flow-hosted service)",
"required": [
"id",
"service",
"flow",
"request"
],
"properties": {
"id": {
"type": "string",
"description": "Unique request identifier",
"x-parser-schema-id": "<anonymous-schema-286>"
},
"service": {
"type": "string",
"const": "sparql-query",
"description": "Service identifier for sparql-query service",
"x-parser-schema-id": "<anonymous-schema-287>"
},
"flow": {
"type": "string",
"description": "Flow ID",
"x-parser-schema-id": "<anonymous-schema-288>"
},
"request": {
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "SPARQL 1.1 query string",
"x-parser-schema-id": "<anonymous-schema-290>"
},
"user": {
"type": "string",
"default": "trustgraph",
"description": "User/keyspace identifier",
"x-parser-schema-id": "<anonymous-schema-291>"
},
"collection": {
"type": "string",
"default": "default",
"description": "Collection identifier",
"x-parser-schema-id": "<anonymous-schema-292>"
},
"limit": {
"type": "integer",
"default": 10000,
"description": "Safety limit on number of results",
"x-parser-schema-id": "<anonymous-schema-293>"
}
},
"x-parser-schema-id": "<anonymous-schema-289>"
}
},
"examples": [
{
"id": "req-1",
"service": "sparql-query",
"flow": "my-flow",
"request": {
"query": "SELECT ?s ?p ?o WHERE { ?s ?p ?o } LIMIT 10",
"user": "trustgraph",
"collection": "default"
}
}
],
"x-parser-schema-id": "<anonymous-schema-285>"
}
],
"x-parser-schema-id": "<anonymous-schema-1>"
},
"examples": [
{
"name": "Config service request",
"summary": "List all flow configurations",
"payload": {
"id": "req-1",
"service": "config",
"request": {
"operation": "list",
"type": "flow"
}
}
},
{
"name": "Agent service request",
"summary": "Ask question to agent",
"payload": {
"id": "req-2",
"service": "agent",
"flow": "my-flow",
"request": {
"question": "What is quantum computing?",
"streaming": true
}
}
}
],
"x-parser-unique-object-id": "request"
},
"response": {
"name": "ServiceResponse",
"title": "Service Response Message",
"summary": "Successful response from any TrustGraph service",
"description": "Generic response message from any TrustGraph service.\n\nThe `response` field payload varies by service and matches the REST API response body schema.\n\nFor streaming services, multiple messages with the same `id` may be sent.\n",
"payload": {
"type": "object",
"description": "WebSocket response message envelope for successful responses.\n\nContains the request ID for correlation and the service-specific response payload.\n",
"required": [
"id",
"response"
],
"properties": {
"id": {
"type": "string",
"description": "Request identifier from the original request. Client uses this to match\nresponses to requests in multiplexed communication.\n",
"examples": [
"req-123",
"request-abc-456"
],
"x-parser-schema-id": "<anonymous-schema-295>"
},
"response": {
"type": "object",
"description": "Service-specific response payload. Structure is identical to the response body\nin the corresponding REST API endpoint.\n\nFor streaming services, multiple response messages may be sent with the same `id`.\nLook for `end-of-stream` or service-specific completion flags to detect the final message.\n\nSee OpenAPI specification for detailed schemas per service.\n",
"examples": [
{
"type": "flow",
"keys": [
"my-flow",
"production-flow"
]
},
{
"chunk-type": "answer",
"content": "Quantum computing uses quantum bits...",
"end-of-stream": false
}
],
"x-parser-schema-id": "<anonymous-schema-296>"
}
},
"x-parser-schema-id": "<anonymous-schema-294>"
},
"examples": [
{
"name": "Config service response",
"summary": "List of flow configurations",
"payload": {
"id": "req-1",
"response": {
"type": "flow",
"keys": [
"my-flow",
"production-flow"
]
}
}
},
{
"name": "Agent streaming response",
"summary": "Agent answer chunk",
"payload": {
"id": "req-2",
"response": {
"chunk-type": "answer",
"content": "Quantum computing uses quantum mechanical phenomena...",
"end-of-stream": false
}
}
}
],
"x-parser-unique-object-id": "response"
},
"error": {
"name": "ServiceError",
"title": "Service Error Message",
"summary": "Error response from any TrustGraph service",
"description": "Error message sent when a service request fails.\n\nContains the request ID and error details.\n",
"payload": {
"type": "object",
"description": "WebSocket error message envelope.\n\nSent when a request fails. Contains the request ID and error details.\n",
"required": [
"id",
"error"
],
"properties": {
"id": {
"type": "string",
"description": "Request identifier from the original request that failed.\n",
"examples": [
"req-123",
"request-abc-456"
],
"x-parser-schema-id": "<anonymous-schema-298>"
},
"error": {
"type": "object",
"description": "Error information",
"required": [
"type",
"message"
],
"properties": {
"type": {
"type": "string",
"description": "Error type/category",
"examples": [
"gateway-error",
"service-error",
"timeout"
],
"x-parser-schema-id": "<anonymous-schema-300>"
},
"message": {
"type": "string",
"description": "Human-readable error message",
"examples": [
"Flow not found",
"Service timeout",
"Invalid request format"
],
"x-parser-schema-id": "<anonymous-schema-301>"
}
},
"x-parser-schema-id": "<anonymous-schema-299>"
}
},
"x-parser-schema-id": "<anonymous-schema-297>"
},
"examples": [
{
"name": "Flow not found error",
"summary": "Requested flow does not exist",
"payload": {
"id": "req-2",
"error": {
"type": "gateway-error",
"message": "Flow 'my-flow' not found"
}
}
},
{
"name": "Service timeout error",
"summary": "Service processing timeout",
"payload": {
"id": "req-3",
"error": {
"type": "timeout",
"message": "Request exceeded 600s timeout"
}
}
}
],
"x-parser-unique-object-id": "error"
}
},
"x-parser-unique-object-id": "socket"
}
},
"components": {
"securitySchemes": {
"bearerAuth": "$ref:$.servers.production.security[0]"
},
"messages": {
"ServiceRequest": {
"name": "ServiceRequest",
"title": "Service Request Message",
"summary": "Request message for any TrustGraph service",
"description": "Generic request message that can invoke any TrustGraph service.\n\nThe `request` field payload varies by service and matches the REST API request body schema.\n",
"payload": {
"description": "Service request envelope with id, service, optional flow, and service-specific request payload",
"oneOf": [
"$ref:$.channels.socket.messages.request.payload.oneOf[0]",
"$ref:$.channels.socket.messages.request.payload.oneOf[1]",
"$ref:$.channels.socket.messages.request.payload.oneOf[2]",
"$ref:$.channels.socket.messages.request.payload.oneOf[3]",
"$ref:$.channels.socket.messages.request.payload.oneOf[4]",
"$ref:$.channels.socket.messages.request.payload.oneOf[5]",
"$ref:$.channels.socket.messages.request.payload.oneOf[6]",
"$ref:$.channels.socket.messages.request.payload.oneOf[7]",
"$ref:$.channels.socket.messages.request.payload.oneOf[8]",
"$ref:$.channels.socket.messages.request.payload.oneOf[9]",
"$ref:$.channels.socket.messages.request.payload.oneOf[10]",
"$ref:$.channels.socket.messages.request.payload.oneOf[11]",
"$ref:$.channels.socket.messages.request.payload.oneOf[12]",
"$ref:$.channels.socket.messages.request.payload.oneOf[13]",
"$ref:$.channels.socket.messages.request.payload.oneOf[14]",
"$ref:$.channels.socket.messages.request.payload.oneOf[15]",
"$ref:$.channels.socket.messages.request.payload.oneOf[16]",
"$ref:$.channels.socket.messages.request.payload.oneOf[17]",
"$ref:$.channels.socket.messages.request.payload.oneOf[18]",
"$ref:$.channels.socket.messages.request.payload.oneOf[19]",
"$ref:$.channels.socket.messages.request.payload.oneOf[20]",
"$ref:$.channels.socket.messages.request.payload.oneOf[21]",
"$ref:$.channels.socket.messages.request.payload.oneOf[22]"
],
"x-parser-schema-id": "<anonymous-schema-302>"
},
"examples": [
{
"name": "Config service request",
"summary": "List all flow configurations",
"payload": {
"id": "req-1",
"service": "config",
"request": {
"operation": "list",
"type": "flow"
}
}
},
{
"name": "Agent service request",
"summary": "Ask question to agent",
"payload": {
"id": "req-2",
"service": "agent",
"flow": "my-flow",
"request": {
"question": "What is quantum computing?",
"streaming": true
}
}
}
],
"x-parser-unique-object-id": "ServiceRequest"
},
"ServiceResponse": {
"name": "ServiceResponse",
"title": "Service Response Message",
"summary": "Successful response from any TrustGraph service",
"description": "Generic response message from any TrustGraph service.\n\nThe `response` field payload varies by service and matches the REST API response body schema.\n\nFor streaming services, multiple messages with the same `id` may be sent.\n",
"payload": "$ref:$.channels.socket.messages.response.payload",
"examples": [
{
"name": "Config service response",
"summary": "List of flow configurations",
"payload": {
"id": "req-1",
"response": {
"type": "flow",
"keys": [
"my-flow",
"production-flow"
]
}
}
},
{
"name": "Agent streaming response",
"summary": "Agent answer chunk",
"payload": {
"id": "req-2",
"response": {
"chunk-type": "answer",
"content": "Quantum computing uses quantum mechanical phenomena...",
"end-of-stream": false
}
}
}
],
"x-parser-unique-object-id": "ServiceResponse"
},
"ServiceError": {
"name": "ServiceError",
"title": "Service Error Message",
"summary": "Error response from any TrustGraph service",
"description": "Error message sent when a service request fails.\n\nContains the request ID and error details.\n",
"payload": "$ref:$.channels.socket.messages.error.payload",
"examples": [
{
"name": "Flow not found error",
"summary": "Requested flow does not exist",
"payload": {
"id": "req-2",
"error": {
"type": "gateway-error",
"message": "Flow 'my-flow' not found"
}
}
},
{
"name": "Service timeout error",
"summary": "Service processing timeout",
"payload": {
"id": "req-3",
"error": {
"type": "timeout",
"message": "Request exceeded 600s timeout"
}
}
}
],
"x-parser-unique-object-id": "ServiceError"
}
},
"schemas": {
"RequestEnvelope": {
"type": "object",
"description": "WebSocket request message envelope.\n\nWraps service-specific request payloads with routing and correlation metadata.\n",
"required": [
"id",
"service",
"request"
],
"properties": {
"id": {
"type": "string",
"description": "Client-generated unique identifier for this request within the WebSocket session.\nUsed to correlate responses with requests in multiplexed async communication.\nCan be any string, but must be unique per active request.\n",
"examples": [
"req-123",
"request-abc-456",
"b5f8d9a2-4c3e-11ef-9c8a-0242ac120002"
],
"x-parser-schema-id": "<anonymous-schema-303>"
},
"service": {
"type": "string",
"description": "Service identifier. Same as {kind} in REST API URLs.\n\nGlobal services: config, flow, librarian, knowledge, collection-management\nFlow-hosted services: agent, text-completion, prompt, document-rag, graph-rag,\nembeddings, graph-embeddings, document-embeddings, triples, objects,\nnlp-query, structured-query, structured-diag, text-load, document-load, mcp-tool\n",
"examples": [
"config",
"agent",
"document-rag"
],
"x-parser-schema-id": "<anonymous-schema-304>"
},
"flow": {
"type": "string",
"description": "Flow ID for flow-hosted services. Required for services accessed via\n/api/v1/flow/{flow}/service/{kind} in REST API.\n\nOmit this field for global services (config, flow, librarian, knowledge, collection-management).\n",
"examples": [
"my-flow",
"production-flow"
],
"x-parser-schema-id": "<anonymous-schema-305>"
},
"request": {
"type": "object",
"description": "Service-specific request payload. Structure is identical to the request body\nin the corresponding REST API endpoint.\n\nSee OpenAPI specification for detailed schemas per service.\n",
"examples": [
{
"operation": "list",
"type": "flow"
},
{
"question": "What is quantum computing?",
"streaming": true,
"system-prompt": "You are a helpful assistant"
}
],
"x-parser-schema-id": "<anonymous-schema-306>"
}
},
"x-parser-schema-id": "RequestEnvelope"
},
"ResponseEnvelope": {
"type": "object",
"description": "WebSocket response message envelope for successful responses.\n\nContains the request ID for correlation and the service-specific response payload.\n",
"required": [
"id",
"response"
],
"properties": {
"id": {
"type": "string",
"description": "Request identifier from the original request. Client uses this to match\nresponses to requests in multiplexed communication.\n",
"examples": [
"req-123",
"request-abc-456"
],
"x-parser-schema-id": "<anonymous-schema-307>"
},
"response": {
"type": "object",
"description": "Service-specific response payload. Structure is identical to the response body\nin the corresponding REST API endpoint.\n\nFor streaming services, multiple response messages may be sent with the same `id`.\nLook for `end-of-stream` or service-specific completion flags to detect the final message.\n\nSee OpenAPI specification for detailed schemas per service.\n",
"examples": [
{
"type": "flow",
"keys": [
"my-flow",
"production-flow"
]
},
{
"chunk-type": "answer",
"content": "Quantum computing uses quantum bits...",
"end-of-stream": false
}
],
"x-parser-schema-id": "<anonymous-schema-308>"
}
},
"x-parser-schema-id": "ResponseEnvelope"
},
"ErrorEnvelope": {
"type": "object",
"description": "WebSocket error message envelope.\n\nSent when a request fails. Contains the request ID and error details.\n",
"required": [
"id",
"error"
],
"properties": {
"id": {
"type": "string",
"description": "Request identifier from the original request that failed.\n",
"examples": [
"req-123",
"request-abc-456"
],
"x-parser-schema-id": "<anonymous-schema-309>"
},
"error": {
"type": "object",
"description": "Error information",
"required": [
"type",
"message"
],
"properties": {
"type": {
"type": "string",
"description": "Error type/category",
"examples": [
"gateway-error",
"service-error",
"timeout"
],
"x-parser-schema-id": "<anonymous-schema-311>"
},
"message": {
"type": "string",
"description": "Human-readable error message",
"examples": [
"Flow not found",
"Service timeout",
"Invalid request format"
],
"x-parser-schema-id": "<anonymous-schema-312>"
}
},
"x-parser-schema-id": "<anonymous-schema-310>"
}
},
"x-parser-schema-id": "ErrorEnvelope"
}
}
},
"x-parser-spec-parsed": true,
"x-parser-api-version": 3,
"x-parser-spec-stringified": true
};
const config = {"show":{"sidebar":true},"sidebar":{"showOperations":"byDefault"}};
const appRoot = document.getElementById('root');
AsyncApiStandalone.render(
{ schema, config, }, appRoot
);
</script>
</body>
</html>