Documentation & Help
Supported database pairs, known limitations, and migration guides
Run migrations from CI
Every action in the app is also an API call. Create a key under API Keys, store it as a repo secret, and trigger migrations from any pipeline. The Idempotency-Key header makes retried workflow runs safe — the same key replays the original response instead of starting a duplicate job.
GitHub Actions — nightly staging refresh
name: Nightly staging refresh
on:
schedule:
- cron: "0 3 * * *" # 03:00 UTC daily
workflow_dispatch: {} # manual runs too
jobs:
migrate:
runs-on: ubuntu-latest
steps:
- name: Trigger migration
run: |
curl -sf -X POST "$DBSHIFT_URL/api/v1/projects/$PROJECT_ID/migrate" \
-H "Authorization: Bearer $DBSHIFT_API_KEY" \
-H "Idempotency-Key: gh-${{ github.run_id }}"
env:
DBSHIFT_URL: ${{ vars.DBSHIFT_URL }}
PROJECT_ID: ${{ vars.DBSHIFT_PROJECT_ID }}
DBSHIFT_API_KEY: ${{ secrets.DBSHIFT_API_KEY }}
- name: Wait for completion
run: |
for i in $(seq 1 240); do
STATUS=$(curl -sf "$DBSHIFT_URL/api/v1/projects/$PROJECT_ID" \
-H "Authorization: Bearer $DBSHIFT_API_KEY" | jq -r .status)
echo "status: $STATUS"
case "$STATUS" in
completed) exit 0 ;;
completed_with_errors|failed|cancelled) exit 1 ;;
esac
sleep 30
done
echo "timed out"; exit 1
env:
DBSHIFT_URL: ${{ vars.DBSHIFT_URL }}
PROJECT_ID: ${{ vars.DBSHIFT_PROJECT_ID }}
DBSHIFT_API_KEY: ${{ secrets.DBSHIFT_API_KEY }}This file also ships in the repo at examples/github-actions/dbshift-migrate.yml. Prefer in-app scheduling? The Schedules page supports recurring cron runs natively — CI is for gating deploys on a fresh migration.
Raw API calls
# Create an API key once (Dashboard → API Keys), then: # Trigger analyze / migrate / validate curl -X POST https://your-host/api/v1/projects/<id>/analyze \ -H "Authorization: Bearer dbshift_..." # Poll project status (created → analyzing → analyzed → migrating → completed) curl https://your-host/api/v1/projects/<id> \ -H "Authorization: Bearer dbshift_..." # Fetch validation results after a run curl https://your-host/api/v1/projects/<id> \ -H "Authorization: Bearer dbshift_..." | jq .validationResult.status
Full interactive reference at /api/docs (Swagger) on your API host.
Need more help? Use the migration guides or the error reference, or contact your workspace administrator for support.