Evenbead docs

Migrations

21 operations. All areas

POST/v1/migrations/qbwc/connections

Create a Web Connector migration connection (people only): read-only, for a migration window. Returns the password and a single-use .qwc download token ONCE; only their hashes are stored.

  • Operation createQbwcConnection
  • Scope: admin
  • Write: needs Idempotency-Key (or dry_run)
Request body
  • as_of string, required Export date: reports, aging and the last tie-out period (usually the cutover date).
  • include_tax_ids boolean Keep SSNs/tax IDs (needed for 1099s). Card numbers are always redacted.
Responses
  • 201 Created (object)
  • Errors 400, 401, 403, 409, 422, 429, 500, 503 (Error: error.type, message)

GET/v1/migrations/qbwc/connections

Web Connector migration connections, newest first

  • Operation listQbwcConnections
  • Scope: read
  • Read
Responses
  • 200 Connections (object)
  • Errors 400, 401, 403, 429, 500, 503 (Error: error.type, message)

GET/v1/migrations/qbwc/connections/{id}

A connection with live progress per extraction step, the bundle and its imports

  • Operation getQbwcConnection
  • Scope: read
  • Read
Parameters
  • id path, string, required
Responses
  • 200 Connection (object)
  • Errors 400, 401, 403, 404, 429, 500, 503 (Error: error.type, message)

POST/v1/migrations/qbwc/connections/{id}/qwc

Redeem the single-use download token for the .qwc file to add to Web Connector (people only; audited)

  • Operation downloadQbwcFile
  • Scope: admin
  • Write: needs Idempotency-Key (or dry_run)
Parameters
  • id path, string, required
Request body
  • download_token string, required
Responses
  • 200 The .qwc file (object)
  • Errors 400, 401, 403, 404, 409, 422, 429, 500, 503 (Error: error.type, message)

GET/v1/migrations/qbwc/connections/{id}/tieout

The extraction's tie-out report (JSON and the readable Markdown) once the bundle exists

  • Operation getQbwcTieout
  • Scope: read
  • Read
Parameters
  • id path, string, required
Responses
  • 200 Tie-out (object)
  • Errors 400, 401, 403, 404, 429, 500, 503 (Error: error.type, message)

POST/v1/migrations/qbwc/connections/{id}/revoke

Revoke a connection: Web Connector is refused from now on (nvu), sessions end, staged raw data is wiped. Final.

  • Operation revokeQbwcConnection
  • Scope: admin
  • Write: needs Idempotency-Key (or dry_run)
Parameters
  • id path, string, required
Request body
  • reason string, required
Responses
  • 200 Revoked (object)
  • Errors 400, 401, 403, 404, 409, 422, 429, 500, 503 (Error: error.type, message)

POST/v1/migrations/qbwc/connections/{id}/unlock

Unlock a connection locked after repeated wrong passwords

  • Operation unlockQbwcConnection
  • Scope: admin
  • Write: needs Idempotency-Key (or dry_run)
Parameters
  • id path, string, required
Request body

Empty object {}.

Responses
  • 200 Unlocked (object)
  • Errors 400, 401, 403, 404, 409, 422, 429, 500, 503 (Error: error.type, message)

POST/v1/migrations/qbwc/connections/{id}/import

Import the connection's bundle into these (empty) books (people only). Refused unless the extraction tie-out passed; the ledger then runs its own tie-out: on any difference nothing is kept and the attempt is recorded as failed.

  • Operation importQbwcBundle
  • Scope: admin
  • Write: needs Idempotency-Key (or dry_run)
Parameters
  • id path, string, required
Request body

Empty object {}.

Responses
  • 201 Recorded: imported (result PASS) or failed (result FAIL, with the report) (object)
  • Errors 400, 401, 403, 404, 409, 422, 429, 500, 503 (Error: error.type, message)

GET/v1/migrations

Migration imports into this company with their tie-out results

  • Operation listMigrations
  • Scope: read
  • Read
Responses
  • 200 Migrations (object)
  • Errors 400, 401, 403, 429, 500, 503 (Error: error.type, message)

POST/v1/migrations/{id}/cutover

Cut over to Evenbead (people only): needs an imported migration whose tie-out passed; revokes its Web Connector or QuickBooks Online connection. Final.

  • Operation cutoverMigration
  • Scope: admin
  • Write: needs Idempotency-Key (or dry_run)
Parameters
  • id path, string, required
Request body

Empty object {}.

Responses
  • 200 Cut over (object)
  • Errors 400, 401, 403, 404, 409, 422, 429, 500, 503 (Error: error.type, message)

POST/v1/migrations/qbo/connections

Start a QuickBooks Online migration (people only): returns Intuit's consent URL once, with a single-use state valid for 15 minutes. Read-only access (accounting scope); nothing is written to QuickBooks.

  • Operation createQboConnection
  • Scope: admin
  • Write: needs Idempotency-Key (or dry_run)
Request body
  • as_of string, required Export date: transactions through this date, reports and aging as of it.
  • include_tax_ids boolean Keep vendor tax IDs (QBO returns them masked).
Responses
  • 201 Created (object)
  • Errors 400, 401, 403, 409, 422, 429, 500, 503 (Error: error.type, message)

GET/v1/migrations/qbo/connections

QuickBooks Online migration connections, newest first

  • Operation listQboConnections
  • Scope: read
  • Read
Responses
  • 200 Connections (object)
  • Errors 400, 401, 403, 429, 500, 503 (Error: error.type, message)

GET/v1/migrations/qbo/connections/{id}

A QuickBooks Online connection with its bundle and import attempts

  • Operation getQboConnection
  • Scope: read
  • Read
Parameters
  • id path, string, required
Responses
  • 200 Connection (object)
  • Errors 400, 401, 403, 404, 429, 500, 503 (Error: error.type, message)

POST/v1/migrations/qbo/connections/{id}/authorize

Finish Intuit's consent (people only): the code, state and realmId Intuit sent to the redirect URI. The code is exchanged once; tokens are sealed at rest and rotated on refresh; the QuickBooks company is recorded once.

  • Operation authorizeQboConnection
  • Scope: admin
  • Write: needs Idempotency-Key (or dry_run)
Parameters
  • id path, string, required
Request body
  • code string, required
  • state string, required
  • realm_id string, required
Responses
  • 200 Authorized (object)
  • Errors 400, 401, 403, 404, 409, 422, 429, 500, 502, 503 (Error: error.type, message)

POST/v1/migrations/qbo/connections/{id}/estimate

Pre-flight: count the company's records (metered reads themselves) and estimate the extraction's calls against this month's read budget

  • Operation estimateQboConnection
  • Scope: admin
  • Write: needs Idempotency-Key (or dry_run)
Parameters
  • id path, string, required
Request body

Empty object {}.

Responses
  • 200 Estimate (object)
  • Errors 400, 401, 403, 404, 409, 422, 429, 500, 502, 503 (Error: error.type, message)

POST/v1/migrations/qbo/connections/{id}/extract

Run the extraction: every list and posting transaction through the export date (pages of 1,000), Trial Balance per month-end, General Ledger per month, AR/AP aging; the evenbead-export bundle (sealed at rest), the Desktop tie-out and the disclosure report. Refused (budget_exceeded) when the last estimate does not fit this month's remaining reads.

  • Operation extractQboConnection
  • Scope: admin
  • Write: needs Idempotency-Key (or dry_run)
Parameters
  • id path, string, required
Request body

Empty object {}.

Responses
  • 200 Extracted (status extracted) or tie-out failed (status failed) (object)
  • Errors 400, 401, 403, 404, 409, 422, 429, 500, 502, 503 (Error: error.type, message)

GET/v1/migrations/qbo/connections/{id}/tieout

The extraction's tie-out (JSON and Markdown): trial balance per month-end, coverage, per-document checks, AR/AP aging

  • Operation getQboTieout
  • Scope: read
  • Read
Parameters
  • id path, string, required
Responses
  • 200 Tie-out (object)
  • Errors 400, 401, 403, 404, 429, 500, 503 (Error: error.type, message)

GET/v1/migrations/qbo/connections/{id}/disclosure

What QuickBooks Online could not export for this company (audit log, reconciliation state, bank rules, attachments, ...) and how each is handled

  • Operation getQboDisclosure
  • Scope: read
  • Read
Parameters
  • id path, string, required
Responses
  • 200 Disclosure (object)
  • Errors 400, 401, 403, 404, 429, 500, 503 (Error: error.type, message)

POST/v1/migrations/qbo/connections/{id}/import

Import the extraction's bundle into these (empty) books (people only), with the same importer and ledger tie-out as Desktop; then cut over with POST /v1/migrations/{id}/cutover

  • Operation importQboBundle
  • Scope: admin
  • Write: needs Idempotency-Key (or dry_run)
Parameters
  • id path, string, required
Request body

Empty object {}.

Responses
  • 201 Recorded: imported (PASS) or failed (FAIL, with the report) (object)
  • Errors 400, 401, 403, 404, 409, 422, 429, 500, 503 (Error: error.type, message)

POST/v1/migrations/qbo/connections/{id}/revoke

Revoke a connection: tokens revoked at Intuit (best effort) and wiped here. Final.

  • Operation revokeQboConnection
  • Scope: admin
  • Write: needs Idempotency-Key (or dry_run)
Parameters
  • id path, string, required
Request body
  • reason string, required
Responses
  • 200 Revoked (object)
  • Errors 400, 401, 403, 404, 409, 422, 429, 500, 503 (Error: error.type, message)

GET/v1/migrations/qbo/usage

This month's metered QuickBooks Online reads for the deployment against its budget (reads of our own data are never metered; Intuit meters ours)

  • Operation getQboUsage
  • Scope: read
  • Read
Responses
  • 200 Usage (QboUsage)
  • Errors 400, 401, 403, 429, 500, 503 (Error: error.type, message)