---
title: "Preview a configuration workflow's next run"
method: POST
path: "/api/south/{southId}/workflows/{workflowId}/preview"
tags: ["Configuration Workflows"]
---

# Preview a configuration workflow's next run

`POST /api/south/{southId}/workflows/{workflowId}/preview`

Dry-runs a configuration workflow: identical discovery and classification as a real run, but
nothing is written - no items, no point metadata, no run history entry. Discovery itself is a real
round-trip to the data source, so this costs what a real run costs, minus the writes.

## Path parameters

- `southId` string, required
- `workflowId` string, required

## Response `200`

What the next run would find and how it would classify it

- WorkflowPreviewResultDTO — A dry run of a Configuration Workflow: identical discovery as a real run, but nothing is written - no items, no point metadata, no `workflow_runs` record, no OIAnalytics push. Discovery itself is a real round-trip to the data source, so a preview costs what a run costs minus the writes.
  - `discoveredCount` number, double, required
  - `eligibleCount` number, double, required
  - `entries` WorkflowPreviewEntryDTO[], required — Local (item-creating) workflow only - the per-entry new/changed/unchanged/missing classification against the previous run. Empty for a remote workflow.
    - `key` string, required — The identity key computed from the workflow's `identityKeyFields`.
    - `status` 'new' | 'changed' | 'unchanged' | 'reactivated' | 'missing', required — How a preview classifies one discovered/tracked entry against the workflow's previous run - the same classification a real run's Decide step uses, before Act would touch anything.
    - `record` OIBusRecord, required — Construct a type with a set of properties K of type T
    - `previousMetadata` RecordStringUnknown, required — Construct a type with a set of properties K of type T
  - `records` OIBusRecord[], required — Remote (push-to-OIAnalytics) workflow only - the raw eligible records that would be sent, exactly as discovered, with no mapping or diffing applied. Empty for a local workflow.

## Changes

- **2026-09-23** `92023a2f20ae` — 1 info
  - endpoint added
- **2026-09-21** `fbefadfe3be3` — 1 breaking
  - api path removed without deprecation
- **2026-09-21** `91dba375a461` — 1 info
  - endpoint added
- **2026-09-21** `52d824185a20` — 1 breaking
  - api path removed without deprecation
- **2026-09-08** `6cc2578622b5` — 1 info
  - endpoint added

[Full history](https://skmtc.dev/optimistiksas/apis/oibus-api/changes/api/south/:southId/workflows/:workflowId/preview/post.md)

---

[API](https://skmtc.dev/optimistiksas/apis/oibus-api.md) · [All operations](https://skmtc.dev/optimistiksas/apis/oibus-api/llms.txt) · [OpenAPI document](https://skmtc.dev/optimistiksas/apis/oibus-api/revisions/a34e6afd34e1?raw)
