Curiosity
Three vertically stacked code panels with numerals and labels on a light slide.

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