[{"data":1,"prerenderedAt":664},["ShallowReactive",2],{"i-lucide:rocket":3,"i-lucide:shapes":8,"i-lucide:server":10,"i-lucide:git-compare":12,"i-lucide:log-in":14,"i-lucide:library":16,"i-lucide:list-checks":18,"i-lucide:waypoints":20,"i-lucide:calendar-range":22,"i-lucide:layers":24,"i-lucide:notebook-pen":26,"i-lucide:swords":28,"i-lucide:message-circle":30,"i-lucide:terminal":32,"i-lucide:code-xml":34,"i-lucide:key-round":36,"i-lucide:bot":38,"i-lucide:fingerprint":40,"i-lucide:list":42,"i-lucide:blocks":44,"i-lucide:octagon-alert":46,"i-lucide:gauge":48,"i-lucide:webhook":50,"i-lucide:home":52,"i-lucide:layout-grid":54,"i-lucide:tag":56,"i-lucide:newspaper":58,"i-lucide:map":60,"i-lucide:flask-conical":62,"i-lucide:arrow-right":64,"i-lucide:book-open":66,"i-lucide:chevron-right":68,"i-lucide:search":70,"i-lucide:monitor":72,"content:\u002Fdocs\u002Fclient-generation":74,"i-lucide:info":646,"i-lucide:lightbulb":648,"i-lucide:id-card-lanyard":650,"shiki:bash:kwcu60":652,"shiki:typescript:18bz4wy":653,"shiki:bash:1jw4mzs":654,"shiki:yaml:sjf60a":655,"shiki:go:1j4xqc2":656,"shiki:bash:16vu9oy":657,"shiki:bash:ezwali":658,"shiki:python:1fgmfi1":659,"i-lucide:file-code":660,"i-lucide:copy":662},{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":7},0,24,false,"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09\"\u002F>\u003Cpath d=\"M9 12a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.4 22.4 0 0 1-4 2z\"\u002F>\u003Cpath d=\"M9 12H4s.55-3.03 2-4c1.62-1.08 5 .05 5 .05\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":9},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M8.3 10a.7.7 0 0 1-.626-1.079L11.4 3a.7.7 0 0 1 1.198-.043L16.3 8.9a.7.7 0 0 1-.572 1.1Z\"\u002F>\u003Crect width=\"7\" height=\"7\" x=\"3\" y=\"14\" rx=\"1\"\u002F>\u003Ccircle cx=\"17.5\" cy=\"17.5\" r=\"3.5\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":11},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Crect width=\"20\" height=\"8\" x=\"2\" y=\"2\" rx=\"2\" ry=\"2\"\u002F>\u003Crect width=\"20\" height=\"8\" x=\"2\" y=\"14\" rx=\"2\" ry=\"2\"\u002F>\u003Cpath d=\"M6 6h.01M6 18h.01\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":13},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Ccircle cx=\"18\" cy=\"18\" r=\"3\"\u002F>\u003Ccircle cx=\"6\" cy=\"6\" r=\"3\"\u002F>\u003Cpath d=\"M13 6h3a2 2 0 0 1 2 2v7m-7 3H8a2 2 0 0 1-2-2V9\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":15},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m10 17l5-5l-5-5m5 5H3m12-9h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":17},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m16 6l4 14M12 6v14M8 8v12M4 4v16\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":19},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M13 5h8m-8 7h8m-8 7h8M3 17l2 2l4-4M3 7l2 2l4-4\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":21},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"m10.586 5.414l-5.172 5.172m13.172 2.828l-5.172 5.172M6 12h12\"\u002F>\u003Ccircle cx=\"12\" cy=\"20\" r=\"2\"\u002F>\u003Ccircle cx=\"12\" cy=\"4\" r=\"2\"\u002F>\u003Ccircle cx=\"20\" cy=\"12\" r=\"2\"\u002F>\u003Ccircle cx=\"4\" cy=\"12\" r=\"2\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":23},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Crect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"\u002F>\u003Cpath d=\"M16 2v3M3 9h18M8 2v3m9 8h-6m2 4H7m0-4h.01M17 17h.01\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":25},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z\"\u002F>\u003Cpath d=\"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12\"\u002F>\u003Cpath d=\"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":27},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M13.4 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-7.4M2 6h4m-4 4h4m-4 4h4m-4 4h4\"\u002F>\u003Cpath d=\"M21.378 5.626a1 1 0 1 0-3.004-3.004l-5.01 5.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":29},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M14.5 17.5L3 6V3h3l11.5 11.5M13 19l6-6m-3 3l4 4m-1 1l2-2M14.5 6.5L18 3h3v3l-3.5 3.5M5 14l4 4m-2-1l-3 3m-1-1l2 2\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":31},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M2.992 16.342a2 2 0 0 1 .094 1.167l-1.065 3.29a1 1 0 0 0 1.236 1.168l3.413-.998a2 2 0 0 1 1.099.092a10 10 0 1 0-4.777-4.719\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":33},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 19h8M4 17l6-6l-6-6\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":35},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m18 16l4-4l-4-4M6 8l-4 4l4 4m8.5-12l-5 16\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":37},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z\"\u002F>\u003Ccircle cx=\"16.5\" cy=\"7.5\" r=\".5\" fill=\"currentColor\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":39},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M12 8V4H8\"\u002F>\u003Crect width=\"16\" height=\"12\" x=\"4\" y=\"8\" rx=\"2\"\u002F>\u003Cpath d=\"M2 14h2m16 0h2m-7-1v2m-6-2v2\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":41},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4M14 13.12c0 2.38 0 6.38-1 8.88m4.29-.98c.12-.6.43-2.3.5-3.02M2 12a10 10 0 0 1 18-6M2 16h.01m19.79 0c.2-2 .131-5.354 0-6\"\u002F>\u003Cpath d=\"M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2m2.31 12c.21-.66.45-1.32.57-2M9 6.8a6 6 0 0 1 9 5.2v2\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":43},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M3 5h.01M3 12h.01M3 19h.01M8 5h13M8 12h13M8 19h13\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":45},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M10 22V7a1 1 0 0 0-1-1H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-5a1 1 0 0 0-1-1H2\"\u002F>\u003Crect width=\"8\" height=\"8\" x=\"14\" y=\"2\" rx=\"1\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":47},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 16h.01M12 8v4m3.312-10a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586l-4.688-4.688A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":49},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m12 14l4-4M3.34 19a10 10 0 1 1 17.32 0\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":51},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M18 16.98h-5.99c-1.1 0-1.95.94-2.48 1.9A4 4 0 0 1 2 17c.01-.7.2-1.4.57-2\"\u002F>\u003Cpath d=\"m6 17l3.13-5.78c.53-.97.1-2.18-.5-3.1a4 4 0 1 1 6.89-4.06\"\u002F>\u003Cpath d=\"m12 6l3.13 5.73C15.66 12.7 16.9 13 18 13a4 4 0 0 1 0 8\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":53},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8\"\u002F>\u003Cpath d=\"M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":55},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Crect width=\"7\" height=\"7\" x=\"3\" y=\"3\" rx=\"1\"\u002F>\u003Crect width=\"7\" height=\"7\" x=\"14\" y=\"3\" rx=\"1\"\u002F>\u003Crect width=\"7\" height=\"7\" x=\"14\" y=\"14\" rx=\"1\"\u002F>\u003Crect width=\"7\" height=\"7\" x=\"3\" y=\"14\" rx=\"1\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":57},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z\"\u002F>\u003Ccircle cx=\"7.5\" cy=\"7.5\" r=\".5\" fill=\"currentColor\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":59},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M15 18h-5m8-4h-8m-6 8h16a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v16a2 2 0 0 1-4 0v-9a2 2 0 0 1 2-2h2\"\u002F>\u003Crect width=\"8\" height=\"4\" x=\"10\" y=\"6\" rx=\"1\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":61},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0zm.894.211v15M9 3.236v15\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":63},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M14 2v6a2 2 0 0 0 .245.96l5.51 10.08A2 2 0 0 1 18 22H6a2 2 0 0 1-1.755-2.96l5.51-10.08A2 2 0 0 0 10 8V2M6.453 15h11.094M8.5 2h7\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":65},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 12h14m-7-7l7 7l-7 7\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":67},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M12 5v16m8.001-2A2 2 0 0 0 22 17V5a2 2 0 0 0-1.999-2L16 3.002A5 5 0 0 0 12 5a5 5 0 0 0-4-2H4a2 2 0 0 0-2 2v12a2 2 0 0 0 1.999 2H8a5 5 0 0 1 4 2a5 5 0 0 1 4-2z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":69},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m9 18l6-6l-6-6\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":71},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"m21 21l-4.34-4.34\"\u002F>\u003Ccircle cx=\"11\" cy=\"11\" r=\"8\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":73},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Crect width=\"20\" height=\"14\" x=\"2\" y=\"3\" rx=\"2\"\u002F>\u003Cpath d=\"M8 21h8m-4-4v4\"\u002F>\u003C\u002Fg>",{"id":75,"title":76,"access":77,"body":78,"description":636,"extension":637,"eyebrow":638,"hostedOnly":6,"meta":639,"navigation":640,"path":641,"seo":642,"short":643,"stem":644,"__hash__":645},"docs\u002Fdocs\u002Fclient-generation.md","Typed clients","public",{"type":79,"value":80,"toc":628},"minimark",[81,90,99,104,107,124,135,143,147,157,188,201,290,294,302,338,353,503,516,520,528,546,554,574,577,599,606,624],[82,83,84,85,89],"p",{},"The Chronicler API ships a full ",[86,87,88],"strong",{},"OpenAPI 3 document",". Do not hand-write requests or model types. Point a generator at the document, and it produces typed models and one function per operation for your language. When the API changes, you regenerate, and your compiler shows you every call that moved.",[82,91,92,93,98],{},"The code samples across these docs, such as the one in ",[94,95,97],"a",{"href":96},"\u002Fdocs\u002Fgetting-started","Quickstart",", call a generated client of this kind.",[100,101,103],"h2",{"id":102},"the-openapi-document","The OpenAPI document",[82,105,106],{},"Every Chronicler server serves its own document. Use it as the generator input.",[108,109,110,118],"ul",{},[111,112,113,114],"li",{},"Hosted: ",[115,116,117],"code",{},"https:\u002F\u002Fapi.chronicler.one\u002Fopenapi.json",[111,119,120,121],{},"Self-hosted or local: ",[115,122,123],{},"http:\u002F\u002F127.0.0.1:7777\u002Fopenapi.json",[82,125,126,127,130,131,134],{},"The document names each operation with a stable ",[115,128,129],{},"operationId",", such as ",[115,132,133],{},"relationship.create",". Every generator turns that id into the function or method name, so the names stay predictable across languages.",[136,137,140],"callout",{"title":138,"tone":139},"Generate against a running server","note",[82,141,142],{},"The document is served by the API, not committed to a repository. Start the server first, then point the generator at its URL. A CI job that regenerates the client starts the server, or reads a document you export in a build step.",[100,144,146],{"id":145},"typescript-node-bun","TypeScript (Node & Bun)",[82,148,149,150,156],{},"Use ",[94,151,155],{"href":152,"rel":153},"https:\u002F\u002Forval.dev",[154],"nofollow","Orval",", just like we do in the frontend application. It reads the document and writes typed fetch functions plus their models.",[158,159,165],"task-example",{":docLink":160,":snippets":161,"title":162,"uiIcon":163,"uiLabel":164},"false","[{\"label\":\"Install\",\"lang\":\"bash\",\"code\":\"bun add -d orval\\n\"},{\"label\":\"orval.config.ts\",\"lang\":\"typescript\",\"filename\":\"orval.config.ts\",\"code\":\"import { defineConfig } from \\\"orval\\\"\\n\\nexport default defineConfig({\\n  chronicler: {\\n    input: {\\n      target: \\\"http:\u002F\u002F127.0.0.1:7777\u002Fopenapi.json\\\",\\n    },\\n    output: {\\n      mode: \\\"split\\\",\\n      target: \\\".\u002Fsrc\u002Fapi-client\u002Fendpoints\\\",\\n      schemas: \\\".\u002Fsrc\u002Fapi-client\u002Fmodel\\\",\\n      client: \\\"fetch\\\",\\n      clean: true,\\n      override: {\\n        \u002F\u002F The one hand-written file. It sets the base URL and adds the\\n        \u002F\u002F bearer token to every request. See \\\"Authenticating the client\\\".\\n        mutator: {\\n          path: \\\".\u002Fsrc\u002Fapi-client\u002Fhttp.ts\\\",\\n          name: \\\"customFetch\\\",\\n        },\\n      },\\n    },\\n  },\\n})\\n\"},{\"label\":\"Generate\",\"lang\":\"bash\",\"code\":\"bunx orval\\n\"}]","Generate the TypeScript client","lucide:list-checks","What you need to do",[166,167,168,171,178,181],"ol",{},[111,169,170],{},"Add Orval as a dev dependency.",[111,172,173,174,177],{},"Write ",[115,175,176],{},"orval.config.ts"," with the document URL and the output paths.",[111,179,180],{},"Add the mutator file that sets the base URL and the bearer token.",[111,182,183,184,187],{},"Run ",[115,185,186],{},"bunx orval"," to write the client. Rerun it after any API change.",[82,189,190,191,193,194,196,197,200],{},"The generator writes one function per operation, named from the ",[115,192,129],{},". So ",[115,195,133],{}," becomes ",[115,198,199],{},"relationshipCreate",", and it takes the typed body and returns the typed result.",[202,203,208],"pre",{"className":204,"code":205,"language":206,"meta":207,"style":207},"language-typescript shiki shiki-themes github-light github-dark","import { relationshipCreate } from \".\u002Fapi-client\u002Fendpoints\u002Fchronicler\"\n\nawait relationshipCreate(chronicleId, {\n  from: \"res_01jq8p9k7mf4rb2xn0z9v6t3wy\",\n  type: \"rel_ally_of\",\n  to: \"res_01jqb2m5x8k7wr4n0z9v6t3sya\",\n})\n","typescript","",[115,209,210,230,237,250,262,273,284],{"__ignoreMap":207},[211,212,215,219,223,226],"span",{"class":213,"line":214},"line",1,[211,216,218],{"class":217},"szBVR","import",[211,220,222],{"class":221},"sVt8B"," { relationshipCreate } ",[211,224,225],{"class":217},"from",[211,227,229],{"class":228},"sZZnC"," \".\u002Fapi-client\u002Fendpoints\u002Fchronicler\"\n",[211,231,233],{"class":213,"line":232},2,[211,234,236],{"emptyLinePlaceholder":235},true,"\n",[211,238,240,243,247],{"class":213,"line":239},3,[211,241,242],{"class":217},"await",[211,244,246],{"class":245},"sScJk"," relationshipCreate",[211,248,249],{"class":221},"(chronicleId, {\n",[211,251,253,256,259],{"class":213,"line":252},4,[211,254,255],{"class":221},"  from: ",[211,257,258],{"class":228},"\"res_01jq8p9k7mf4rb2xn0z9v6t3wy\"",[211,260,261],{"class":221},",\n",[211,263,265,268,271],{"class":213,"line":264},5,[211,266,267],{"class":221},"  type: ",[211,269,270],{"class":228},"\"rel_ally_of\"",[211,272,261],{"class":221},[211,274,276,279,282],{"class":213,"line":275},6,[211,277,278],{"class":221},"  to: ",[211,280,281],{"class":228},"\"res_01jqb2m5x8k7wr4n0z9v6t3sya\"",[211,283,261],{"class":221},[211,285,287],{"class":213,"line":286},7,[211,288,289],{"class":221},"})\n",[100,291,293],{"id":292},"go","Go",[82,295,149,296,301],{},[94,297,300],{"href":298,"rel":299},"https:\u002F\u002Fgithub.com\u002Foapi-codegen\u002Foapi-codegen",[154],"oapi-codegen",". It reads the document and writes a typed client with the request and response models. It is the closest Go match to the Orval setup, since both give you typed models and a thin client with no runtime reflection.",[158,303,306],{":docLink":160,":snippets":304,"title":305,"uiIcon":163,"uiLabel":164},"[{\"label\":\"config.yaml\",\"lang\":\"yaml\",\"filename\":\"internal\u002Fchronicler\u002Fconfig.yaml\",\"code\":\"package: chronicler\\noutput: client.gen.go\\ngenerate:\\n  models: true\\n  client: true\\n\"},{\"label\":\"generate.go\",\"lang\":\"go\",\"filename\":\"internal\u002Fchronicler\u002Fgenerate.go\",\"code\":\"package chronicler\\n\\n\u002F\u002Fgo:generate go tool oapi-codegen -config config.yaml http:\u002F\u002F127.0.0.1:7777\u002Fopenapi.json\\n\"},{\"label\":\"Generate\",\"lang\":\"bash\",\"code\":\"go get -tool github.com\u002Foapi-codegen\u002Foapi-codegen\u002Fv2\u002Fcmd\u002Foapi-codegen\\ngo generate .\u002F...\\n\"}]","Generate the Go client",[166,307,308,315,321,328],{},[111,309,310,311,314],{},"Add oapi-codegen as a tool dependency with ",[115,312,313],{},"go get -tool",".",[111,316,173,317,320],{},[115,318,319],{},"config.yaml"," with the package name and what to generate.",[111,322,323,324,327],{},"Add a ",[115,325,326],{},"\u002F\u002Fgo:generate"," directive that points at the document URL.",[111,329,183,330,333,334,337],{},[115,331,332],{},"go generate .\u002F..."," to write ",[115,335,336],{},"client.gen.go",". Rerun it after any API change.",[82,339,340,341,344,345,193,347,196,349,352],{},"The generator writes one method per operation on a ",[115,342,343],{},"ClientWithResponses",", named from the ",[115,346,129],{},[115,348,133],{},[115,350,351],{},"RelationshipCreate",", and it takes a typed body and a context.",[202,354,357],{"className":355,"code":356,"language":292,"meta":207,"style":207},"language-go shiki shiki-themes github-light github-dark","client, err := chronicler.NewClientWithResponses(\"https:\u002F\u002Fapi.chronicler.one\")\nif err != nil {\n    return err\n}\n\n_, err = client.RelationshipCreate(ctx, chronicleID, chronicler.CreateRelationshipBody{\n    From: \"res_01jq8p9k7mf4rb2xn0z9v6t3wy\",\n    Type: \"rel_ally_of\",\n    To:   \"res_01jqb2m5x8k7wr4n0z9v6t3sya\",\n})\nif err != nil {\n    return err\n}\n",[115,358,359,382,400,408,413,417,444,453,463,473,478,491,498],{"__ignoreMap":207},[211,360,361,364,367,370,373,376,379],{"class":213,"line":214},[211,362,363],{"class":221},"client, err ",[211,365,366],{"class":217},":=",[211,368,369],{"class":221}," chronicler.",[211,371,372],{"class":245},"NewClientWithResponses",[211,374,375],{"class":221},"(",[211,377,378],{"class":228},"\"https:\u002F\u002Fapi.chronicler.one\"",[211,380,381],{"class":221},")\n",[211,383,384,387,390,393,397],{"class":213,"line":232},[211,385,386],{"class":217},"if",[211,388,389],{"class":221}," err ",[211,391,392],{"class":217},"!=",[211,394,396],{"class":395},"sj4cs"," nil",[211,398,399],{"class":221}," {\n",[211,401,402,405],{"class":213,"line":239},[211,403,404],{"class":217},"    return",[211,406,407],{"class":221}," err\n",[211,409,410],{"class":213,"line":252},[211,411,412],{"class":221},"}\n",[211,414,415],{"class":213,"line":264},[211,416,236],{"emptyLinePlaceholder":235},[211,418,419,422,425,428,430,433,436,438,441],{"class":213,"line":275},[211,420,421],{"class":221},"_, err ",[211,423,424],{"class":217},"=",[211,426,427],{"class":221}," client.",[211,429,351],{"class":245},[211,431,432],{"class":221},"(ctx, chronicleID, ",[211,434,435],{"class":245},"chronicler",[211,437,314],{"class":221},[211,439,440],{"class":245},"CreateRelationshipBody",[211,442,443],{"class":221},"{\n",[211,445,446,449,451],{"class":213,"line":286},[211,447,448],{"class":221},"    From: ",[211,450,258],{"class":228},[211,452,261],{"class":221},[211,454,456,459,461],{"class":213,"line":455},8,[211,457,458],{"class":221},"    Type: ",[211,460,270],{"class":228},[211,462,261],{"class":221},[211,464,466,469,471],{"class":213,"line":465},9,[211,467,468],{"class":221},"    To:   ",[211,470,281],{"class":228},[211,472,261],{"class":221},[211,474,476],{"class":213,"line":475},10,[211,477,289],{"class":221},[211,479,481,483,485,487,489],{"class":213,"line":480},11,[211,482,386],{"class":217},[211,484,389],{"class":221},[211,486,392],{"class":217},[211,488,396],{"class":395},[211,490,399],{"class":221},[211,492,494,496],{"class":213,"line":493},12,[211,495,404],{"class":217},[211,497,407],{"class":221},[211,499,501],{"class":213,"line":500},13,[211,502,412],{"class":221},[136,504,507],{"title":505,"tone":506},"A fully typed alternative","tip",[82,508,509,510,515],{},"For a spec-first client with strict validation and no reflection, use ",[94,511,514],{"href":512,"rel":513},"https:\u002F\u002Fgithub.com\u002Fogen-go\u002Fogen",[154],"ogen",". It generates a complete typed client and server from the same document. Prefer oapi-codegen for a lighter client that drops into an existing HTTP setup.",[100,517,519],{"id":518},"python","Python",[82,521,149,522,527],{},[94,523,526],{"href":524,"rel":525},"https:\u002F\u002Fgithub.com\u002Fopenapi-generators\u002Fopenapi-python-client",[154],"openapi-python-client",". It writes a typed package with dataclass models and one module per operation.",[158,529,532],{":docLink":160,":snippets":530,"title":531,"uiIcon":163,"uiLabel":164},"[{\"label\":\"Generate\",\"lang\":\"bash\",\"code\":\"pipx run openapi-python-client generate \\\\\\n  --url http:\u002F\u002F127.0.0.1:7777\u002Fopenapi.json\\n\"},{\"label\":\"Use\",\"lang\":\"python\",\"filename\":\"connect.py\",\"code\":\"from chronicler_client import Client\\nfrom chronicler_client.models import CreateRelationshipBody\\nfrom chronicler_client.api.relationship import relationship_create\\n\\nclient = Client(\\n    base_url=\\\"https:\u002F\u002Fapi.chronicler.one\\\",\\n    headers={\\\"Authorization\\\": f\\\"Bearer {token}\\\"},\\n)\\n\\nrelationship_create.sync(\\n    chronicle_id,\\n    client=client,\\n    body=CreateRelationshipBody(\\n        from_=\\\"res_01jq8p9k7mf4rb2xn0z9v6t3wy\\\",\\n        type=\\\"rel_ally_of\\\",\\n        to=\\\"res_01jqb2m5x8k7wr4n0z9v6t3sya\\\",\\n    ),\\n)\\n\"}]","Generate the Python client",[166,533,534,537,540,543],{},[111,535,536],{},"Run the generator against the document URL.",[111,538,539],{},"Import the operation module and its typed model.",[111,541,542],{},"Build the client with the base URL and the bearer token.",[111,544,545],{},"Call the operation. Regenerate after any API change.",[100,547,549,553],{"id":548},"authenticating-the-client",[550,551],"icon",{"name":552},"lucide:id-card-lanyard"," Authenticating the client",[82,555,556,557,560,561,564,565,569,570,573],{},"Every call carries a ",[86,558,559],{},"bearer token"," in the ",[115,562,563],{},"Authorization"," header. See ",[94,566,568],{"href":567},"\u002F","Authentication"," for how to get one, and ",[94,571,572],{"href":567},"Service accounts & tokens"," for a machine identity.",[82,575,576],{},"Set the token in one place, not on every call.",[108,578,579,586,592],{},[111,580,581,582,585],{},"TypeScript: add it in the Orval mutator, so ",[115,583,584],{},"customFetch"," attaches it to every request.",[111,587,588,589,591],{},"Go: pass a request editor to ",[115,590,372],{}," that sets the header.",[111,593,594,595,598],{},"Python: pass it in the ",[115,596,597],{},"Client"," headers, as shown above.",[100,600,602,605],{"id":601},"where-to-go-next",[550,603],{"name":604},"lucide:arrow-right"," Where to go next",[108,607,608,613,619],{},[111,609,610,611,314],{},"Try a first call in ",[94,612,97],{"href":96},[111,614,615,616,618],{},"Read ",[94,617,568],{"href":567}," to get a token.",[111,620,621,622,314],{},"Create a machine identity in ",[94,623,572],{"href":567},[625,626,627],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}",{"title":207,"searchDepth":232,"depth":232,"links":629},[630,631,632,633,634,635],{"id":102,"depth":232,"text":103},{"id":145,"depth":232,"text":146},{"id":292,"depth":232,"text":293},{"id":518,"depth":232,"text":519},{"id":548,"depth":232,"text":553},{"id":601,"depth":232,"text":605},"Generate a typed API client from the Chronicler OpenAPI document. One generator per language keeps the models and calls in step with the server, so you never hand-write a request.\n","md","Developers",{},{"title":76},"\u002Fdocs\u002Fclient-generation",{"title":76,"description":636},null,"docs\u002Fclient-generation","wA75s9DrTZT56feJP4Pu4RMgC8cIItE3OOi8B6mh1T8",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":647},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Ccircle cx=\"12\" cy=\"12\" r=\"10\"\u002F>\u003Cpath d=\"M12 16v-4m0-4h.01\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":649},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M15 14c.2-1 .7-1.7 1.5-2.5c1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5c.7.7 1.3 1.5 1.5 2.5m0 4h6m-5 4h4\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":651},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M13.5 8h-3M15 2l-1 2h3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h3\"\u002F>\u003Cpath d=\"M16.899 22A5 5 0 0 0 7.1 22M9 2l3 6\"\u002F>\u003Ccircle cx=\"12\" cy=\"15\" r=\"3\"\u002F>\u003C\u002Fg>","\u003Cpre class=\"shiki shiki-themes github-light github-dark\" style=\"--shiki-default:#24292e;--shiki-dark:#e1e4e8;--shiki-default-bg:#fff;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#6F42C1;--shiki-dark:#B392F0\">bun\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#032F62;--shiki-dark:#9ECBFF\"> add\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#005CC5;--shiki-dark:#79B8FF\"> -d\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#032F62;--shiki-dark:#9ECBFF\"> orval\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki shiki-themes github-light github-dark\" style=\"--shiki-default:#24292e;--shiki-dark:#e1e4e8;--shiki-default-bg:#fff;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#D73A49;--shiki-dark:#F97583\">import\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\"> { defineConfig } \u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#D73A49;--shiki-dark:#F97583\">from\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#032F62;--shiki-dark:#9ECBFF\"> \"orval\"\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#D73A49;--shiki-dark:#F97583\">export\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#D73A49;--shiki-dark:#F97583\"> default\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#6F42C1;--shiki-dark:#B392F0\"> defineConfig\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">({\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">  chronicler: {\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">    input: {\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">      target: \u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#032F62;--shiki-dark:#9ECBFF\">\"http:\u002F\u002F127.0.0.1:7777\u002Fopenapi.json\"\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">,\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">    },\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">    output: {\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">      mode: \u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#032F62;--shiki-dark:#9ECBFF\">\"split\"\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">,\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">      target: \u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#032F62;--shiki-dark:#9ECBFF\">\".\u002Fsrc\u002Fapi-client\u002Fendpoints\"\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">,\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">      schemas: \u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#032F62;--shiki-dark:#9ECBFF\">\".\u002Fsrc\u002Fapi-client\u002Fmodel\"\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">,\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">      client: \u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#032F62;--shiki-dark:#9ECBFF\">\"fetch\"\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">,\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">      clean: \u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#005CC5;--shiki-dark:#79B8FF\">true\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">,\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">      override: {\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#6A737D;--shiki-dark:#6A737D\">        \u002F\u002F The one hand-written file. It sets the base URL and adds the\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#6A737D;--shiki-dark:#6A737D\">        \u002F\u002F bearer token to every request. See \"Authenticating the client\".\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">        mutator: {\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">          path: \u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#032F62;--shiki-dark:#9ECBFF\">\".\u002Fsrc\u002Fapi-client\u002Fhttp.ts\"\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">,\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">          name: \u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#032F62;--shiki-dark:#9ECBFF\">\"customFetch\"\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">,\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">        },\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">      },\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">    },\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">  },\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">})\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki shiki-themes github-light github-dark\" style=\"--shiki-default:#24292e;--shiki-dark:#e1e4e8;--shiki-default-bg:#fff;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#6F42C1;--shiki-dark:#B392F0\">bunx\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#032F62;--shiki-dark:#9ECBFF\"> orval\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki shiki-themes github-light github-dark\" style=\"--shiki-default:#24292e;--shiki-dark:#e1e4e8;--shiki-default-bg:#fff;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#22863A;--shiki-dark:#85E89D\">package\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">: \u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#032F62;--shiki-dark:#9ECBFF\">chronicler\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#22863A;--shiki-dark:#85E89D\">output\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">: \u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#032F62;--shiki-dark:#9ECBFF\">client.gen.go\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#22863A;--shiki-dark:#85E89D\">generate\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">:\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#22863A;--shiki-dark:#85E89D\">  models\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">: \u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#005CC5;--shiki-dark:#79B8FF\">true\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#22863A;--shiki-dark:#85E89D\">  client\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">: \u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#005CC5;--shiki-dark:#79B8FF\">true\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki shiki-themes github-light github-dark\" style=\"--shiki-default:#24292e;--shiki-dark:#e1e4e8;--shiki-default-bg:#fff;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#D73A49;--shiki-dark:#F97583\">package\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#6F42C1;--shiki-dark:#B392F0\"> chronicler\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#6A737D;--shiki-dark:#6A737D\">\u002F\u002Fgo:generate go tool oapi-codegen -config config.yaml http:\u002F\u002F127.0.0.1:7777\u002Fopenapi.json\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki shiki-themes github-light github-dark\" style=\"--shiki-default:#24292e;--shiki-dark:#e1e4e8;--shiki-default-bg:#fff;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#6F42C1;--shiki-dark:#B392F0\">go\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#032F62;--shiki-dark:#9ECBFF\"> get\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#005CC5;--shiki-dark:#79B8FF\"> -tool\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#032F62;--shiki-dark:#9ECBFF\"> github.com\u002Foapi-codegen\u002Foapi-codegen\u002Fv2\u002Fcmd\u002Foapi-codegen\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#6F42C1;--shiki-dark:#B392F0\">go\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#032F62;--shiki-dark:#9ECBFF\"> generate\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#032F62;--shiki-dark:#9ECBFF\"> .\u002F...\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki shiki-themes github-light github-dark\" style=\"--shiki-default:#24292e;--shiki-dark:#e1e4e8;--shiki-default-bg:#fff;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#6F42C1;--shiki-dark:#B392F0\">pipx\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#032F62;--shiki-dark:#9ECBFF\"> run\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#032F62;--shiki-dark:#9ECBFF\"> openapi-python-client\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#032F62;--shiki-dark:#9ECBFF\"> generate\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#005CC5;--shiki-dark:#79B8FF\"> \\\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#005CC5;--shiki-dark:#79B8FF\">  --url\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#032F62;--shiki-dark:#9ECBFF\"> http:\u002F\u002F127.0.0.1:7777\u002Fopenapi.json\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>","\u003Cpre class=\"shiki shiki-themes github-light github-dark\" style=\"--shiki-default:#24292e;--shiki-dark:#e1e4e8;--shiki-default-bg:#fff;--shiki-dark-bg:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#D73A49;--shiki-dark:#F97583\">from\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\"> chronicler_client \u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#D73A49;--shiki-dark:#F97583\">import\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\"> Client\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#D73A49;--shiki-dark:#F97583\">from\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\"> chronicler_client.models \u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#D73A49;--shiki-dark:#F97583\">import\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\"> CreateRelationshipBody\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#D73A49;--shiki-dark:#F97583\">from\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\"> chronicler_client.api.relationship \u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#D73A49;--shiki-dark:#F97583\">import\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\"> relationship_create\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">client \u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#D73A49;--shiki-dark:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\"> Client(\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#E36209;--shiki-dark:#FFAB70\">    base_url\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#D73A49;--shiki-dark:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#032F62;--shiki-dark:#9ECBFF\">\"https:\u002F\u002Fapi.chronicler.one\"\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">,\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#E36209;--shiki-dark:#FFAB70\">    headers\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#D73A49;--shiki-dark:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">{\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#032F62;--shiki-dark:#9ECBFF\">\"Authorization\"\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">: \u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#D73A49;--shiki-dark:#F97583\">f\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#032F62;--shiki-dark:#9ECBFF\">\"Bearer \u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#005CC5;--shiki-dark:#79B8FF\">{\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">token\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#005CC5;--shiki-dark:#79B8FF\">}\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#032F62;--shiki-dark:#9ECBFF\">\"\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">},\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">)\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">relationship_create.sync(\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">    chronicle_id,\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#E36209;--shiki-dark:#FFAB70\">    client\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#D73A49;--shiki-dark:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">client,\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#E36209;--shiki-dark:#FFAB70\">    body\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#D73A49;--shiki-dark:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">CreateRelationshipBody(\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#E36209;--shiki-dark:#FFAB70\">        from_\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#D73A49;--shiki-dark:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#032F62;--shiki-dark:#9ECBFF\">\"res_01jq8p9k7mf4rb2xn0z9v6t3wy\"\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">,\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#E36209;--shiki-dark:#FFAB70\">        type\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#D73A49;--shiki-dark:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#032F62;--shiki-dark:#9ECBFF\">\"rel_ally_of\"\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">,\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#E36209;--shiki-dark:#FFAB70\">        to\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#D73A49;--shiki-dark:#F97583\">=\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#032F62;--shiki-dark:#9ECBFF\">\"res_01jqb2m5x8k7wr4n0z9v6t3sya\"\u003C\u002Fspan>\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">,\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">    ),\u003C\u002Fspan>\u003C\u002Fspan>\u003Cspan class=\"line\">\u003Cspan style=\"--shiki-default:#24292E;--shiki-dark:#E1E4E8\">)\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":661},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z\"\u002F>\u003Cpath d=\"M14 2v5a1 1 0 0 0 1 1h5m-10 4.5L8 15l2 2.5m4-5l2 2.5l-2 2.5\"\u002F>\u003C\u002Fg>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":663},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fg>",1789123332574]