
Steps 2–4 — Connect, register, ingest
Connect to the workspace:
using var workspace = await Workspace.ConnectAsync(
baseUrl: Environment.GetEnvironmentVariable("WORKSPACE_URL"),
apiToken: Environment.GetEnvironmentVariable("WORKSPACE_TOKEN"));
var graph = workspace.Graph;
Register schemas (once at startup):
await graph.CreateNodeSchemaAsync<Customer>();
await graph.CreateNodeSchemaAsync<Ticket>();
await graph.CreateEdgeSchemaAsync(typeof(Edges));
Ingest, link, commit:
await foreach (var row in source.ReadAllAsync())
{
var c = graph.TryAdd(new Customer { Id = row.CustomerId, Name = row.Name });
var t = graph.TryAdd(new Ticket { Id = row.TicketId, Subject = row.Subject, Body = row.Body });
graph.Link(c, t, Edges.HasTicket, Edges.TicketOf);
if (row.Index % 500 == 0) await graph.CommitPendingAsync();
}
await graph.CommitPendingAsync();
Run it:
export WORKSPACE_URL=https://your-workspace.example.com
export WORKSPACE_TOKEN=<ingestion-scoped token>
dotnet run --project MyConnector
Token scope
Create an ingestion token in Admin → API Tokens. Keep it in an environment variable or secret manager — never in source code. → Token scopes