Ingest

Bulk ingest. Upload a full dataset to mint a new index version. Single-record updates use the Records endpoints; this group is for whole-index uploads.

POST /v1/uploads/start

Begin a bulk upload

Returns a 15-minute upload URL the client PUTs bytes to, plus the version id the upload will produce. Multi-GB files are supported.

The new version becomes a candidate once ingest completes; earlier versions remain queryable subject to retention.

Three-call flow:

  1. POST /v1/uploads/start — get the upload URL + assigned version.
  2. PUT <uploadUrl> — upload bytes.
  3. POST /v1/uploads/complete — kick off ingest.

Version ids are sequential per index (e.g. 1, 2, 3, ...).

Request body

json
{
  "indexName": "doctors"
}

Example request

bash
curl -X POST \
  'https://api.eztype.io/v1/uploads/start' \
  -H 'Content-Type: application/json' \
  -d '{
  "indexName": "doctors"
}'

Responses

200 — Upload URL + assigned version id.

json
{
  "uploadUrl": "https://uploads.eztype.io/indexes/1/doctors/3?signature=...",
  "indexVersion": "3"
}

400 — Index not found.

POST /v1/uploads/complete

Trigger ingest after the upload completes

Signals that the bytes are in place. EZType parses the file (CSV / JSON Lines / JSON Array auto-detected), assigns ids (using the record's id if present, else a UUID), and bulk-loads. Returns immediately; ingest runs asynchronously and the new version goes live once it's complete.

Uploaded data should be one of:

  • CSV with header row. Columns map to record fields by name.
  • JSON Lines (one JSON object per line).
  • JSON Array (single top-level array).

Request body

json
{
  "indexName": "doctors",
  "indexVersion": "3"
}

Example request

bash
curl -X POST \
  'https://api.eztype.io/v1/uploads/complete' \
  -H 'Content-Type: application/json' \
  -d '{
  "indexName": "doctors",
  "indexVersion": "3"
}'

Responses

200 — Ingest queued.

json
{
  "resultCode": "SUCCESS",
  "message": "OK"
}