Added
OnSched 3.14.0 - appointment cursor pagination and durable Bulk Migration Sync
about 7 hours ago by ReadMe GitHub Action
API
GET /v3/appointments/cursor: Traverse large appointment histories without
deep offsets or total-count queries. The first request accepts existing appointment
filters, sort, order, and a limit up to 100. Later requests send only the opaque
nextCursor; stop when it is null.- Compatibility:
GET /v3/appointmentsremains available for page/count UIs.
The deprecated/v3/appointments/filteralias remains available with the same
offset and request safeguards while clients migrate. - Operational behavior: Cursor traversal has a separate relaxed Company request
budget and still honorsRetry-Afterwhen shared database admission is full.
See Cursor Pagination for Appointments.
Bulk Migration Sync
- Enqueue a Bulk Migration Sync:
POST /v3/migration/jobswith a dashboard JWT and{ "v1CompanyIds": ["…"] }returns202and{ "success": true, "jobId": "<uuid>" }within seconds. Company Sync then runs sequentially on the server. IDs must belong to that operator's V1 companies (400otherwise). An empty or missingv1CompanyIdsarray returns400. A second start while that operator already has apendingorrunningjob returns409with the existingjobId. - Poll progress:
GET /v3/migration/jobs/{id}returns the jobstatus, per-companypending/running/done/errorrows, counters, anderrors[]. Only the owning operator can read the job; other operators get404. - Active job:
GET /v3/migration/jobsreturns the operator's currentpendingorrunningjob, or404if none. POST /v3/migration/syncis an alias: Same body, same202{ jobId }(or400). It does not hold the HTTP request until import finishes, and it does not sync every company for the operator email whenv1CompanyIdsis omitted.- Company list unchanged:
GET /v3/migration/companiesstill returns the full V1 company list for the signed-in email. - Job completion: The job is
completedwhen every selected company isdoneorerror. A company-level error does not by itself mark the jobfailed.failedis reserved for enqueue blowing up before work starts.
These routes use a dashboard JWT, not OAuth2 client credentials. See Migrating from v1 to v3.
Dashboard
- Bulk Migration Sync modal: Getting Started and API Settings both open the same company picker. Choose V1 companies, then start the job. The table pages 20 companies at a time; Select all applies to the full loaded list, not only the current page.
- Close the tab: Import continues on the server. Re-open the modal to attach to the active job. Large sets may take hours.
