Clear `metadata_hash` for every provider-backed series row in scope so the next refresh tick rewrites them. The persist layer short-circuits the series UPDATE when the incoming provider payload hashes to the stored value; that's the right call for steady-state refreshes, but it strands existing rows whenever a new denormalized column lands on the `series` table (the upstream payload is unchanged → hash matches → write skipped → new column stays NULL forever).
POST/api/v1/series/invalidate-metadata-hashes
This endpoint is the operator escape hatch for that scenario. It runs
synchronously and returns the affected count; the operator then
triggers /series/refresh-all (or waits for the next cron tick) to
actually rewrite the rows.
Manual rows (metadata_source = 'manual') are always left alone.
Request
Responses
- 200