Skip to main content
This endpoint requires authentication. Include your Bearer token in the Authorization header.

Description

GET /publisher/statements//setup-checklist Runs the ledger post as a dry run and returns what it would refuse, grouped by the bridge’s own reasons, so the client can show what to fix before posting. Works for any publisher statement (manual, Reconcile wizard or built from files), in every payee mode (publisher, writer_collected, writer_at_source), posted or not. Read-only: it never writes a ledger transaction or entry and never opens a transaction. data.groups always carries every key; an empty group has count: 0 and items: []. The keys are the writer reasons no_tenant_user, no_payee_writer, payee_writer_not_found, no_active_agreement, no_agreement_in_period, no_agreement_territory, no_manuscript_share and negative_net, then worksWithoutWriters, zeroShareWorkWriters and missing_fx (a non-USD statement with no exchange rate; the rest of the list is still computed). Every item has writerId (null where there is no writer record), publisherId, gross and currency. Unmatched participants all have a null writerId; tell them apart by participant (name, ipi) or by key. negative_net items come from the dry run (source: live) and, for a statement built from files, from the net the build recorded. A writer the dry run listed under any reason is described once, there, and the recorded entry is skipped. A recorded writer entry the dry run never placed belongs to a writer with no matched lines left, so it is out of date: it is returned as a warning (source: build, liveConfirmed: false, warning: true, gross: 0, storedNet). A recorded work entry (publisher mode) is re-checked against the lines now and dropped when it no longer nets negative. unmatched, disputed and held are summed from the statement’s lines on every call, not read from the build summary, so a line held by a rebuild is counted as held. ready is true when no blocking group has an item; unmatched, disputed and held lines are reported apart. Do not add gross across groups. Each group says so with additive. missing_fx carries the whole matched gross (every other group is a slice of it), zeroShareWorkWriters carries 0, and a negative_net is already inside its writer’s group or the postable gross (for example a work that nets -5 in publisher mode is already part of the gross of a writer with no active agreement), so adding it again would double count. Some items are warnings (warning: true, and warning: true on the group when all its items are): they do not block a post, so they are counted in summary.warnings, not summary.items, and do not change ready. These are every zeroShareWorkWriters item (a writer on a work with a 0% share is owed nothing there, because the work’s money goes to its other writers; the work’s total is context in workGross, and a writer already under no_manuscript_share is not repeated) and a recorded negative_net for a writer with no matched lines left (see below; gross is 0 and the recorded net is in storedNet). Amounts keep ledger precision (6 decimal places); round for display. A statement the ledger refuses to post (a client statement under an administration agreement, an unrecognised payee mode) answers 422 with the original code. Authorization: admin role + publisher capability enabled.

Code Examples