API Reference

Data Warehouse API

The Versus data warehouse — exports, inventory import, reverse-ETL, and shares. Auto-generated from the platform OpenAPI schema so it matches the running API.

REST API for this feature — 23 operations across 15 resource paths, auto-generated from the platform's live OpenAPI schema (drf-spectacular).

Base URL https://<your-versus-host>/api · Auth Authorization: Bearer <JWT> (from POST /api/auth/token/) · 📄 Download the OpenAPI spec for Postman/Insomnia/Swagger · see the API overview for pagination, filtering, and errors.

Connections

GET /api/warehouse/connections/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
orderingquerynostringWhich field to use when ordering the results.
pagequerynointegerA page number within the paginated result set.
page_sizequerynointegerNumber of results to return per page.
searchquerynostringA search term.

Responses: 200 → PaginatedSnowflakeConnectionList

POST /api/warehouse/connections/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

Request body (application/json): SnowflakeConnectionRequest

Responses: 201 → SnowflakeConnection

GET /api/warehouse/connections/{id}/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this snowflake connection.

Responses: 200 → SnowflakeConnection

PUT /api/warehouse/connections/{id}/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this snowflake connection.

Request body (application/json): SnowflakeConnectionRequest

Responses: 200 → SnowflakeConnection

PATCH /api/warehouse/connections/{id}/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this snowflake connection.

Request body (application/json): PatchedSnowflakeConnectionRequest

Responses: 200 → SnowflakeConnection

DELETE /api/warehouse/connections/{id}/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this snowflake connection.

Responses: 204

POST /api/warehouse/connections/{id}/enrich/

Enrichment write-back (§14): update allow-listed Device fields from a

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this snowflake connection.

Request body (application/json): SnowflakeConnectionRequest

Responses: 200 → SnowflakeConnection

POST /api/warehouse/connections/{id}/named_query/

Run a governed catalog query (reverse-ETL pushdown, §14).

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this snowflake connection.

Request body (application/json): SnowflakeConnectionRequest

Responses: 200 → SnowflakeConnection

POST /api/warehouse/connections/{id}/provision/

Create Snowflake objects idempotently (§9, §10). Body flags select what:

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this snowflake connection.

Request body (application/json): SnowflakeConnectionRequest

Responses: 200 → SnowflakeConnection

GET /api/warehouse/connections/{id}/runs/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this snowflake connection.

Responses: 200 → SnowflakeConnection

POST /api/warehouse/connections/{id}/sync/

Trigger an incremental export. Body: {domain, dry_run?, load?}. Runs

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this snowflake connection.

Request body (application/json): SnowflakeConnectionRequest

Responses: 200 → SnowflakeConnection

POST /api/warehouse/connections/{id}/test/

Validate auth + reachability against Snowflake. Updates the connection's

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this snowflake connection.

Request body (application/json): SnowflakeConnectionRequest

Responses: 200 → SnowflakeConnection


Inventory sources

GET /api/warehouse/inventory-sources/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
orderingquerynostringWhich field to use when ordering the results.
pagequerynointegerA page number within the paginated result set.
page_sizequerynointegerNumber of results to return per page.
searchquerynostringA search term.

Responses: 200 → PaginatedInventorySourceList

POST /api/warehouse/inventory-sources/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

Request body (application/json): InventorySourceRequest

Responses: 201 → InventorySource

GET /api/warehouse/inventory-sources/{id}/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this inventory source.

Responses: 200 → InventorySource

PUT /api/warehouse/inventory-sources/{id}/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this inventory source.

Request body (application/json): InventorySourceRequest

Responses: 200 → InventorySource

PATCH /api/warehouse/inventory-sources/{id}/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this inventory source.

Request body (application/json): PatchedInventorySourceRequest

Responses: 200 → InventorySource

DELETE /api/warehouse/inventory-sources/{id}/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this inventory source.

Responses: 204

POST /api/warehouse/inventory-sources/{id}/apply/

Apply a previously-previewed plan (run id in body) — §14a.5. Writes

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this inventory source.

Request body (application/json): InventorySourceRequest

Responses: 200 → InventorySource

POST /api/warehouse/inventory-sources/{id}/preview/

Dry-run plan (create/update/conflict/retire/noop per source row) —

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this inventory source.

Request body (application/json): InventorySourceRequest

Responses: 200 → InventorySource

GET /api/warehouse/inventory-sources/{id}/runs/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this inventory source.

Responses: 200 → InventorySource


Runs

GET /api/warehouse/runs/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
orderingquerynostringWhich field to use when ordering the results.
pagequerynointegerA page number within the paginated result set.
page_sizequerynointegerNumber of results to return per page.
searchquerynostringA search term.

Responses: 200 → PaginatedWarehouseSyncRunList

GET /api/warehouse/runs/{id}/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesstringA UUID string identifying this warehouse sync run.

Responses: 200 → WarehouseSyncRun


Auto-generated from drf-spectacular OpenAPI. Endpoint descriptions come from viewset docstrings/serializers; enriching those improves this page on the next generation.