Curiosity
Four rounded pattern cards in a 2x2 grid showing different API endpoint patterns with icons and code snippets.

Common endpoint patterns

Query endpoint — graph traversal, returns nodes:

return Q().StartAt("Customer", req.CustomerId)
          .Out("HasTicket").Take(50).Emit("N");

Search endpoint — permission-aware search with scope:

var search = SearchRequest.For(req.Query);
search.BeforeTypesFacet = new(["Ticket"]);
search.TargetUIDs = Q().StartAt("Product", req.Sku).In("ForProduct")
                       .AsUIDEnumerable().ToArray();
return (await Graph.CreateSearchAsUserAsync(search, CurrentUser, ct)).Take(20).Emit("N");

RAG endpoint — retrieve, format, generate:

var hits   = (await Graph.CreateSearchAsUserAsync(search, CurrentUser, ct)).Take(8).ToArray();
var prompt = BuildPrompt(userQuery, hits.Select(n => Graph.GetIndexedText(n.UID, 4000)));
var answer = await Graph.CallChatModelAsync(prompt, ct);
return new { answer, citations = hits.Select(n => n.UID) };

Action endpoint — validate, check permissions, mutate:

var ticket = Node.FromKey("Ticket", req.TicketId);
if (!await Graph.CanUserSeeAsync(ticket, CurrentUser)) return NotFound();
Graph.Link(ticket, assignee, "AssignedTo");
await Graph.CommitPendingAsync();
return new { ok = true };

Custom endpoints