Ingest

Every ingest path declares purpose and respects tenant scope. on_conflict (upsert|skip|error) and per-call detect_packs (SmartIngest override) are uniform across bulk/CSV/iter. OTLP and document ingest land in the same bi-temporal store as everything else.

10 methods across this domain. Signatures, parameters (incl. keyword-only tunable defaults), and the three SDK spellings are ported from the live SDK source; flagship methods carry a hand-written When to use + example.

IngestClient

bulk(object_type, rows, purpose=None, detect_packs=None, on_conflict=None, tenant_id=None)

When to use. Insert/upsert many rows of one type with a conflict strategy and SmartIngest.

  • Pythonclient.ingestclient.bulk(object_type, rows, purpose=None, detect_packs=None, on_conflict=None, tenant_id=None)
  • TypeScriptbulk(objectType, rows, opts)
  • GoBulk(objectType, rows)

Parameters: object_type, rows, purpose=None, detect_packs=None, on_conflict=None, tenant_id=None

Example

IngestClient.from_client(relata).bulk(
    "Person",
    [{"_pk": "p1", "name": "Alice", "email": "a@x.io"}],
    on_conflict="upsert", detect_packs=["email", "phone"])
await relata.bulk("Person", [{_pk:'p1', name:'Alice'}], {onConflict:'upsert'})
_, _ = ingest.Bulk(ctx, "Person", []map[string]any{{"_pk":"p1","name":"Alice"}})

ingest_iter(object_type, rows, purpose=None, batch_size=500)

When to use. Stream a generator/iterator of rows in batches without loading all in memory.

  • Pythonclient.ingestclient.ingest_iter(object_type, rows, purpose=None, batch_size=500)
  • GoIngestIter(objectType, rows, purpose, batchSize)

Parameters: object_type, rows, purpose=None, batch_size=500

Example

def gen():
    for i in range(100_000):
        yield {"_pk": f"p{i}", "name": f"n{i}"}
IngestClient.from_client(relata).ingest_iter("Person", gen(), batch_size=2000)

bulk_csv(object_type, csv_text, purpose=None, detect_packs=None)

bulk_csv(object_type, csv_text, purpose=None, detect_packs=None)`

  • Pythonclient.ingestclient.bulk_csv(object_type, csv_text, purpose=None, detect_packs=None)
  • TypeScriptbulkCsv(objectType, csvText, opts)
  • GoBulkCSV(objectType, csvText)

Parameters: object_type, csv_text, purpose=None, detect_packs=None

ingest_cdr(rows, purpose=None)

ingest_cdr(rows, purpose=None)`

  • Pythonclient.ingestclient.ingest_cdr(rows, purpose=None)
  • TypeScriptingestCdr(rows, opts)
  • GoIngestCDR(rows)

Parameters: rows, purpose=None

media_status(task_id)

media_status(task_id)`

  • Pythonclient.ingestclient.media_status(task_id)
  • TypeScriptmediaStatus(taskId)
  • GoMediaStatus(taskID)

Parameters: task_id

otlp_logs(payload, purpose=None)

otlp_logs(payload, purpose=None)`

  • Pythonclient.ingestclient.otlp_logs(payload, purpose=None)
  • TypeScriptotlpLogs(payload, opts)
  • GoOTLPLogs(payload)

Parameters: payload, purpose=None

otlp_metrics(payload, purpose=None)

otlp_metrics(payload, purpose=None)`

  • Pythonclient.ingestclient.otlp_metrics(payload, purpose=None)
  • TypeScriptotlpMetrics(payload, opts)
  • GoOTLPMetrics(payload)

Parameters: payload, purpose=None

otlp_traces(payload, purpose=None)

otlp_traces(payload, purpose=None)`

  • Pythonclient.ingestclient.otlp_traces(payload, purpose=None)
  • TypeScriptotlpTraces(payload, opts)
  • GoOTLPTraces(payload)

Parameters: payload, purpose=None

ingestAuto(objectType, rows, opts)

ingestAuto(objectType, rows, opts)`

  • TypeScriptingestAuto(objectType, rows, opts)
  • GoIngestAuto(objectType, rows)

Parameters: objectType, rows, opts

RelataClient

ingest_document(chunks_jsonl, manifest_json)

ingest_document(chunks_jsonl, manifest_json)`

  • Pythonclient.relataclient.ingest_document(chunks_jsonl, manifest_json)
  • TypeScriptingestDocument(chunksJsonl, manifestJson)
  • GoIngestDocument(chunksJSONL, manifestJSON)

Parameters: chunks_jsonl, manifest_json