Skip to main content
Guides
DraftLast reviewed 2026-06-24

Operate end-of-day

This guide walks the operator flow for the current EOD surface:

  • POST /api/v1/eod/trigger
  • GET /api/v1/eod/status/{date}
  • GET /api/v1/eod/runs
  • POST /api/v1/eod/rerun
  • POST /api/v1/eod/catch-up

In local, you can call these directly. In auth-on or server, the caller needs system:batch.

1. Trigger an EOD run

Pick a business date and submit the trigger request:

EOD_DATE=2026-06-24

curl -sS -X POST \
"http://localhost:8080/api/v1/eod/trigger?mode=HALT_ON_ERROR" \
-H "Content-Type: application/json" \
-d "{\"eodDate\":\"${EOD_DATE}\"}" | jq .

Expected result: HTTP 202 Accepted with a run descriptor for the submitted date.

HALT_ON_ERROR is the safe default because it stops the pipeline on the first failed step.

2. Poll the live step snapshot

Use the status endpoint to watch the current run move through its ordered steps:

curl -sS "http://localhost:8080/api/v1/eod/status/${EOD_DATE}" | jq .

This is the operator-facing snapshot from domain.eod_runs, not the historical attempt ledger.

3. Inspect run history for the date

For reruns and prior attempts, query the historical view:

curl -sS \
"http://localhost:8080/api/v1/eod/runs?as_of_date=${EOD_DATE}" | jq .

Use this when you need to answer questions like:

  • Was this date already processed?
  • How many attempts have there been?
  • Was the current run a rerun or part of a catch-up sequence?

4. Rerun a business date

If a date needs a clean end-to-end replay, submit a rerun with a reason:

curl -sS -X POST \
"http://localhost:8080/api/v1/eod/rerun?mode=HALT_ON_ERROR" \
-H "Content-Type: application/json" \
-d "{
\"asOfDate\": \"${EOD_DATE}\",
\"reason\": \"Reprocessing after corrected market data load\"
}" | jq .

Rerun clears the current step snapshot for that date and starts a fresh attempt.

5. Catch up when the environment is behind

If the persisted business date is lagging behind several days, use catch-up:

TARGET_DATE=2026-06-28

curl -sS -X POST \
"http://localhost:8080/api/v1/eod/catch-up?mode=HALT_ON_ERROR" \
-H "Content-Type: application/json" \
-d "{\"targetAsOfDate\":\"${TARGET_DATE}\"}" | jq .

Catch-up always starts from the current stored business date and advances until the target date is reached or one of the daily runs fails.

6. Run a single step for targeted backfills

For one-off operational work, for example rebuilding spread history after a data reload, call the single-step endpoint directly:

for d in 2026-02-02 2026-02-03 2026-02-04; do
curl -sS -X POST http://localhost:8080/api/v1/eod/step \
-H "Content-Type: application/json" \
-d "{\"eodDate\":\"${d}\",\"step\":\"spread_history\"}"
done

Use this sparingly. The normal path is still the full EOD pipeline.