Examples and CLI¶
Practical recipes for integrating with the Data API. Full curl set also lives in rda_back/docs/integration-examples.md.
Environment¶
export RDA_API_BASE_URL=http://localhost:9006/api # include /api prefix
export RDA_API_KEY=rda_live_… # from create_api_key.py
If your deployment uses API_V1_PREFIX=/api/v1:
export RDA_API_BASE_URL=http://localhost:9006/api/v1
Discover assets¶
curl -s -H "Authorization: Bearer $RDA_API_KEY" \
"$RDA_API_BASE_URL/data/assets" | jq .
Paginate with cursor (location _id from the previous response).
List tracks (cursor pagination)¶
First page:
curl -s -H "Authorization: Bearer $RDA_API_KEY" \
"$RDA_API_BASE_URL/data/scans/{scanId}/tracks?limit=1000" | jq .
Next page:
curl -s -H "Authorization: Bearer $RDA_API_KEY" \
"$RDA_API_BASE_URL/data/scans/{scanId}/tracks?limit=1000&cursor=2025-01-01T10:15:00|abc123…"
Incremental sync¶
curl -s -H "Authorization: Bearer $RDA_API_KEY" \
"$RDA_API_BASE_URL/data/scans/{scanId}/tracks?since=2025-01-01T10:00:00&since_id=last-uuid"
Track detail¶
curl -s -H "Authorization: Bearer $RDA_API_KEY" \
"$RDA_API_BASE_URL/data/scans/{scanId}/tracks/{trackUuid}" | jq .
Metrics¶
curl -s -H "Authorization: Bearer $RDA_API_KEY" \
"$RDA_API_BASE_URL/data/scans/{scanId}/metrics?metric=density.avg&series_kind=total&limit=1000" | jq .
List available metrics:
curl -s -H "Authorization: Bearer $RDA_API_KEY" \
"$RDA_API_BASE_URL/data/metrics/definitions" | jq .
Streaming export¶
curl -s -H "Authorization: Bearer $RDA_API_KEY" \
"$RDA_API_BASE_URL/data/scans/{scanId}/tracks/export?format=csv" \
-o tracks.csv
Async export job¶
# Create
curl -s -X POST -H "Authorization: Bearer $RDA_API_KEY" \
"$RDA_API_BASE_URL/data/scans/{scanId}/exports/tracks?format=ndjson"
# Poll
curl -s -H "Authorization: Bearer $RDA_API_KEY" \
"$RDA_API_BASE_URL/data/exports/{jobId}"
# Download
curl -s -H "Authorization: Bearer $RDA_API_KEY" \
"$RDA_API_BASE_URL/data/exports/{jobId}/download" \
-o tracks.ndjson
Reference CLI (fetch_integration_data.py)¶
From the rda_back repository:
python scripts/fetch_integration_data.py --api-key rda_live_… # smoke: GET /data/assets
python scripts/fetch_integration_data.py --api-key rda_live_… assets
python scripts/fetch_integration_data.py --api-key rda_live_… tracks <scanId> --output tracks.ndjson
python scripts/fetch_integration_data.py --api-key rda_live_… metrics <scanId> --metric density.avg
python scripts/fetch_integration_data.py --api-key rda_live_… export <scanId> --format csv --output tracks.csv
python scripts/fetch_integration_data.py --api-key rda_live_… export-job <scanId> --format ndjson --output tracks.ndjson
JWT fallback (when RDA_API_KEY is not set):
export RDA_API_EMAIL=admin@localhost
export RDA_API_PASSWORD=admin
python scripts/fetch_integration_data.py assets