Do you need to migrate?
Only the reporting endpoints have a v2. v2 is not a new version of the whole API — it is a reporting-focused subset.If your integration does not call
GET /v1/reporting or GET /v1/reporting/{data_table_id}/records, you have nothing to migrate.Support status of every endpoint
The deprecated reporting endpoints are still served today and no removal date
is announced. As with any breaking change on the Qobra API, you would be
notified by email two months in advance. The endpoints maintained on v1 have
no end-of-life date — there is no v2 equivalent to move to.
What changes on reporting
Tables are addressed by ID
Statements now take a
table_id, discovered through /v2/data-structuresFields are discoverable
/v2/data-structures/{table_id}/fields returns the exact keys, types and
formats of your dataID-based pagination
offset is replaced by start_id, and the response hands you a ready-made
next_urlIncremental syncs
last_modified_after / last_modified_before let you pull only what movedEndpoint mapping
The v1 statements endpoint took no table in its path. In v2 both endpoints do,
so start by listing your data structures to get the
table_id to call.
Parameter mapping
Response shape
The envelope changes and the record keys are prefixed.- Envelope:
count/next/databecomesdata/meta. Page forward withmeta.next_urland stop onmeta.has_more. - Prefixed keys: every field is namespaced by its origin —
standard.for built-in fields,custom.for your custom metrics,datatable.for data table fields. - Currency amounts: the v1 pair
<field>+<field>_currencybecomes a single object{ "value": …, "currency": … }.
Migrate in three steps
1
Find your table_id
Call
GET /v2/data-structures. Each entry carries its id, its type
(statement_reporting or record_reporting) and links pointing at the
endpoints to call next.2
Map your fields
Call
GET /v2/data-structures/{table_id}/fields and match each v1 key you
consume to its v2 api_key. Store the returned schema_hash to detect
later schema changes.3
Switch your extraction loop
Replace the
offset loop with meta.next_url, and unwrap currency objects
where your v1 code read a _currency sibling key.X-API-Key header authenticates both
versions, and v1 and v2 can run side by side while you test.
Checklist
My ETL reads /v1/reporting with offset pagination
My ETL reads /v1/reporting with offset pagination
Call
/v2/data-structures once to resolve the statement reporting
table_id, then paginate with meta.next_url instead of incrementing
offset.My warehouse schema has <field>_currency columns
My warehouse schema has <field>_currency columns
Those columns disappear. Read
value and currency from the field’s
object instead, or flatten it back to two columns in your transformation
layer.I only push users, groups and managers to Qobra
I only push users, groups and managers to Qobra
Nothing to migrate. Those endpoints stay on v1 and are maintained.
I need to detect when fields change
I need to detect when fields change
Compare the
schema_hash returned by the fields endpoint between two runs.
This has no v1 equivalent.Next steps
Quickstart Guide
Run the three v2 calls end to end in 5 minutes
Endpoints Reference
Every v2 parameter and response field