Upload a CSV file as a queryable data source.
Converts a CSV upload to Parquet via the analytics engine and stores it in R2 as a parquet_s3 data source (DVT-753 PR-2). This durable CSV→R2 storage path is trial-only: per ADR-0011 (as amended by SEC-61), a paid org's data must land only in its own warehouse, never dvt-hosted R2, so a paid or converted org's request is refused with 403 even though it holds connection:manage.
Auth: Requires connection:manage scope (admin or owner role) on a plan entitled to it — this is the same entitlement check every warehouse-connection write path uses — AND the org must be an active or pending (minted, clock not yet started) unconverted trial. Both checks must pass; either failing returns 403.
Side effect: a successful upload by a minted-but-unstarted trial starts the 14-day trial clock (trial_ends_at); clients should refetch /v1/me after a 201.
File limits: Maximum 50 MB. Filename must end in .csv. Content-Type must be one of: text/csv, application/csv, application/vnd.ms-excel, text/plain.
Cap: Up to 5 uploaded sources per org. Uploaded sources are counted separately from warehouse connections and do not consume a trial's 1-connection budget.
Internal representation: Uploaded sources are stored with auth_method=platform_managed. This is an internal implementation detail — platform_managed sources are never returned by GET /v1/connections or GET /v1/connections/{id}; use GET /v1/uploads / DELETE /v1/uploads/{id} to list or remove them. Use POST /v1/data/query with the returned name as the sourceId to query the uploaded data.
Request
- Base URL: http://localhost:8080
- URL: http://localhost:8080/v1/uploads
- Auth: one of:
- API key in cookie dvt_session
- HTTP bearer
Response
CSV uploaded and registered as a queryable data source.
Changes
No recorded changes to this operation across all 1 revision of this API.