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.
- Python —
client.ingestclient.bulk(object_type, rows, purpose=None, detect_packs=None, on_conflict=None, tenant_id=None) - TypeScript —
bulk(objectType, rows, opts) - Go —
Bulk(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.
- Python —
client.ingestclient.ingest_iter(object_type, rows, purpose=None, batch_size=500) - Go —
IngestIter(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)`
- Python —
client.ingestclient.bulk_csv(object_type, csv_text, purpose=None, detect_packs=None) - TypeScript —
bulkCsv(objectType, csvText, opts) - Go —
BulkCSV(objectType, csvText)
Parameters: object_type, csv_text, purpose=None, detect_packs=None
ingest_cdr(rows, purpose=None)
ingest_cdr(rows, purpose=None)`
- Python —
client.ingestclient.ingest_cdr(rows, purpose=None) - TypeScript —
ingestCdr(rows, opts) - Go —
IngestCDR(rows)
Parameters: rows, purpose=None
media_status(task_id)
media_status(task_id)`
- Python —
client.ingestclient.media_status(task_id) - TypeScript —
mediaStatus(taskId) - Go —
MediaStatus(taskID)
Parameters: task_id
otlp_logs(payload, purpose=None)
otlp_logs(payload, purpose=None)`
- Python —
client.ingestclient.otlp_logs(payload, purpose=None) - TypeScript —
otlpLogs(payload, opts) - Go —
OTLPLogs(payload)
Parameters: payload, purpose=None
otlp_metrics(payload, purpose=None)
otlp_metrics(payload, purpose=None)`
- Python —
client.ingestclient.otlp_metrics(payload, purpose=None) - TypeScript —
otlpMetrics(payload, opts) - Go —
OTLPMetrics(payload)
Parameters: payload, purpose=None
otlp_traces(payload, purpose=None)
otlp_traces(payload, purpose=None)`
- Python —
client.ingestclient.otlp_traces(payload, purpose=None) - TypeScript —
otlpTraces(payload, opts) - Go —
OTLPTraces(payload)
Parameters: payload, purpose=None
ingestAuto(objectType, rows, opts)
ingestAuto(objectType, rows, opts)`
- TypeScript —
ingestAuto(objectType, rows, opts) - Go —
IngestAuto(objectType, rows)
Parameters: objectType, rows, opts
RelataClient
ingest_document(chunks_jsonl, manifest_json)
ingest_document(chunks_jsonl, manifest_json)`
- Python —
client.relataclient.ingest_document(chunks_jsonl, manifest_json) - TypeScript —
ingestDocument(chunksJsonl, manifestJson) - Go —
IngestDocument(chunksJSONL, manifestJSON)
Parameters: chunks_jsonl, manifest_json