Publishing Processors

Every processor has one editable draft and a history of immutable published versions. All edits, whether made in Studio or with extractors.update / classifiers.update / splitters.update, land on the draft. Publishing snapshots the draft into a new version string ("1.0", "1.1", "2.0") that never changes afterwards.

Publishing does not affect anything already using the processor. A workflow step or API call that references "1.0" keeps running "1.0"; only references that say "latest" pick up the new version. That is what lets you iterate on the draft freely and promote a version only when your evaluation set says it is ready.

Major or minor?

The release type decides how the version number increments. Nothing else about the version differs; the distinction is a signal to the people and workflows consuming the processor.

Publish asWhenExample
Minor (1.01.1)The change does not alter the shape of the output. Field description or prompt wording tweaks, rule adjustments, a base processor change. Safe for consumers pinned to the previous minor to adopt without code changes.Rewording the description of invoice_total so the model stops picking up the subtotal.
Major (1.12.0)The change alters the output shape or how the processor interacts with a workflow. Adding, removing, renaming, or retyping schema fields; changing classification types; changing split identifiers. Downstream code must be updated.Adding a required line_items array to the schema.

Via the API

1

Update the draft

Make your configuration change on the draft first. The update endpoints accept the full config for the processor type and write it to the draft; see Extraction configuration, Classification configuration, or Splitting configuration for the config shape. Run your evaluation set against "draft" before publishing.

2

Publish a version

Publish snapshots the current draft. releaseType is "major" or "minor"; description is free text that shows in the version history and is worth writing for whoever reads the history later.

1from extend_ai import Extend
2
3client = Extend()
4
5published = client.extractor_versions.create(
6 "ex_Xj8mK2pL9nR4vT7qY5wZ",
7 release_type="minor",
8 description="Clarify invoice_total description to exclude subtotals",
9)
10print(published.version) # "1.1"

The same call exists for the other processor types: classifierVersions.create (classifier_versions.create) and splitterVersions.create (splitter_versions.create), with the same releaseType and description fields.

3

Reference the version

Anywhere a processor is referenced you can pass a version. The three special forms:

versionResolves to
omitted or "latest"The most recent published version. If nothing is published yet, the draft.
"draft"The current draft. Development only.
"1.1"Exactly that published version. Pin this in production.

In a standalone run:

1result = client.extract(
2 file={"url": "https://example.com/invoice.pdf"},
3 extractor={"id": "ex_Xj8mK2pL9nR4vT7qY5wZ", "version": "1.1"},
4)

In a workflow step definition, the extractor reference must include an explicit version:

1{
2 "name": "extract",
3 "type": "EXTRACT",
4 "config": {
5 "extractor": { "id": "ex_Xj8mK2pL9nR4vT7qY5wZ", "version": "1.1" }
6 },
7 "next": [{ "step": "review" }]
8}

A deployed workflow version freezes this reference. Choose "1.1" for reproducibility or "latest" to let the workflow adopt future publishes automatically. See Configuring Workflows via API and Workflow Versioning.

4

List versions

list returns versions newest-first with draft at the top. Use it to find the version string to pin, or to check whether the draft has unpublished changes.

1versions = client.extractor_versions.list("ex_Xj8mK2pL9nR4vT7qY5wZ")
2for v in versions.data:
3 print(v.version, v.description or "")

Via Extend Studio

From the processor page in Studio, you can publish new versions of your processor, which can then be selected and used in one or more workflows deployed on Extend.

Extractor page in Studio with the Publish button and the "Unpublished changes" indicator

When you save changes to a processor, they update the draft. You can make as many changes as you want to the draft before publishing. Once you publish, the draft changes are rolled into the new version and the draft goes back to having no “Unpublished changes”.

Minor version

To publish a minor version, click the “Publish” button and select the “Minor” radio option:

Publish dialog with the Minor release type selected

Major version

To publish a major version, click the “Publish” button and select the “Major” radio option:

Publish dialog with the Major release type selected

Viewing published versions

Once a version is published, it cannot be updated and is viewable in read-only mode.

Select a published version on the processor Overview tab to see its details and the configuration it was published with:

Processor Overview tab showing the version selector and a published version's read-only configuration

Reference