Skip to content
OpenTrain AIOpenTrain AIOpenTrain AIDocs

Ask OpenTrain

Answers from the documentation, with sources.

What would you like to do with OpenTrain?

AI answers can be mistaken. Check the linked sources. Don’t include private account information.

Open app

DEVELOPER DOCUMENTATION

Preflight a Project To-do Mutation

Preview the exact recipients and effects of a create, update, assign, or archive without writing, and mint the receipt broad audiences require.

POST/api/public/v1/project-todos/manage

Validates one intended mutation without writing anything. Requires project_todos:write and employer access to the job. Preflight is the only manage action with no idempotencyKey.

actionstringbodyrequired
preflight
jobIdstringbodyrequired
operationstringbodyrequired

create_item, update_item, assign, or archive_item.

audiencestringbody

Required for create_item, update_item, and assign.

selectedContractIdsstring[]body

SELECTED only. Validated as strictly as the live mutation — offenders fail the preflight with per-ID reasons.

versionobjectbody

The exact version definition. Required for create_item and update_item.

itemIdstringbody

Required for update_item, assign, and archive_item.

preflight contains:

  • job — the exact job ID and title.
  • audience — the live blast radius: masked recipient names with contract IDs, the current count, and whether future hires will be auto-assigned.
  • due and blocking — the projected due and block times, computed with the same schedule logic the live assignment uses.
  • evidence and instructionLinkage — required review evidence and any linked instruction page.
  • duplicates — exact lists active items whose complete request matches yours (the live create refuses these without allowDuplicate: true); titleMatches is a weaker advisory signal.
  • archive — for archive_item: the exact number of open assignments that would close, plus the irreversibility and history-retention semantics.
  • receipt — for broad audiences only: { token, expiresAt }. Pass token back unchanged as preflightReceipt on the live mutation.
  • warnings — human-readable advisories.

The receipt lives about 15 minutes and is bound to your account, the job, the operation, the audience, the live roster, and the exact payload. Any change invalidates it; run preflight again. The token is opaque — it never contains recipient identifiers.