@robosystems/client 1.17.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/sdk/sdk.gen.ts CHANGED
@@ -1678,15 +1678,15 @@ export const initializeLedger = <ThrowOnError extends boolean = false>(options:
1678
1678
  });
1679
1679
 
1680
1680
  /**
1681
- * Update Entity
1681
+ * Initialize Chart of Accounts
1682
1682
  *
1683
- * Update the graph's primary entity. Only provided (non-null) fields are updated. The graph is implicit in the URL — the operation always targets the graph's primary entity.
1683
+ * Create the graph's chart of accounts from a shipped template — the fresh-company path to native books. Use when the graph has NO chart (a QuickBooks-synced tenant never needs this: its chart arrives with the sync and stays after a sever) and before connecting a bank feed, which needs a chart to resolve against. Templates: `saas` (subscription software), `services` (professional services), `product` (inventory and COGS) — the `chartTemplates` GraphQL field lists them with names and account counts. Creates the chart, its `coa_mapping` structure and the template's CoA → rs-gaap mapping associations in one transaction, with the equity rows mapped by the entity's legal form (`entity_type`, defaulting to the graph's primary entity). One-time: 409 once a chart exists — a chart is never replaced. Customize afterwards with update-taxonomy-block; accounts that carry activity are never deleted.
1684
1684
  *
1685
1685
  * **Idempotency**: supply an `Idempotency-Key` header to make safe retries; replays within 24 hours return the same envelope. Reusing the key with a different body returns HTTP 409 Conflict.
1686
1686
  */
1687
- export const updateEntity = <ThrowOnError extends boolean = false>(options: Options<UpdateEntityData, ThrowOnError>): RequestResult<UpdateEntityResponses, UpdateEntityErrors, ThrowOnError> => (options.client ?? client).post<UpdateEntityResponses, UpdateEntityErrors, ThrowOnError>({
1687
+ export const initializeChartOfAccounts = <ThrowOnError extends boolean = false>(options: Options<InitializeChartOfAccountsData, ThrowOnError>): RequestResult<InitializeChartOfAccountsResponses, InitializeChartOfAccountsErrors, ThrowOnError> => (options.client ?? client).post<InitializeChartOfAccountsResponses, InitializeChartOfAccountsErrors, ThrowOnError>({
1688
1688
  security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
1689
- url: '/extensions/roboledger/{graph_id}/operations/update-entity',
1689
+ url: '/extensions/roboledger/{graph_id}/operations/initialize-chart-of-accounts',
1690
1690
  ...options,
1691
1691
  headers: {
1692
1692
  'Content-Type': 'application/json',
@@ -1695,15 +1695,15 @@ export const updateEntity = <ThrowOnError extends boolean = false>(options: Opti
1695
1695
  });
1696
1696
 
1697
1697
  /**
1698
- * Change Reporting Style
1698
+ * Update Entity
1699
1699
  *
1700
- * Switch the reporting entity's Reporting Style — how its statements are laid out (equity-form, close-target concept, per-statement Networks). Validates that the target Style has a complete composition in the tenant schema, then flips `entities.reporting_style_id`. Omit `entity_id` to target the graph's primary entity. Filed Reports are unaffected (their FactSet rows pin their structures at create-time); new reports use the new Style. Idempotent on the same id.
1700
+ * Update the graph's primary entity. Only provided (non-null) fields are updated. The graph is implicit in the URL — the operation always targets the graph's primary entity.
1701
1701
  *
1702
1702
  * **Idempotency**: supply an `Idempotency-Key` header to make safe retries; replays within 24 hours return the same envelope. Reusing the key with a different body returns HTTP 409 Conflict.
1703
1703
  */
1704
- export const changeReportingStyle = <ThrowOnError extends boolean = false>(options: Options<ChangeReportingStyleData, ThrowOnError>): RequestResult<ChangeReportingStyleResponses, ChangeReportingStyleErrors, ThrowOnError> => (options.client ?? client).post<ChangeReportingStyleResponses, ChangeReportingStyleErrors, ThrowOnError>({
1704
+ export const updateEntity = <ThrowOnError extends boolean = false>(options: Options<UpdateEntityData, ThrowOnError>): RequestResult<UpdateEntityResponses, UpdateEntityErrors, ThrowOnError> => (options.client ?? client).post<UpdateEntityResponses, UpdateEntityErrors, ThrowOnError>({
1705
1705
  security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
1706
- url: '/extensions/roboledger/{graph_id}/operations/change-reporting-style',
1706
+ url: '/extensions/roboledger/{graph_id}/operations/update-entity',
1707
1707
  ...options,
1708
1708
  headers: {
1709
1709
  'Content-Type': 'application/json',
@@ -1712,15 +1712,15 @@ export const changeReportingStyle = <ThrowOnError extends boolean = false>(optio
1712
1712
  });
1713
1713
 
1714
1714
  /**
1715
- * Create Taxonomy Block
1715
+ * Change Reporting Style
1716
1716
  *
1717
- * Create a taxonomy block atomically: one envelope carrying the taxonomy row plus its structures, elements, associations, and rules. Dispatches by `taxonomy_type` — `chart_of_accounts` (declarative tenant CoA), `reporting_extension`, and `custom_ontology` are supported; `reporting_standard` is library-origin (501). `reporting_extension` / `custom_ontology` authoring may be disabled per environment (TAXONOMY_AUTHORING_ENABLED) — disabled surfaces 403. NOT the path for a functional close schedule: a structure with block_type='schedule' here is a bare ontology row with none of the schedule machinery (per-period facts, schedule_entry_due obligations, closing-entry generator). To create a working schedule use create-information-block(block_type='schedule').
1717
+ * Switch the reporting entity's Reporting Style — how its statements are laid out (equity-form, close-target concept, per-statement Networks). Validates that the target Style has a complete composition in the tenant schema, then flips `entities.reporting_style_id`. Omit `entity_id` to target the graph's primary entity. Filed Reports are unaffected (their FactSet rows pin their structures at create-time); new reports use the new Style. Idempotent on the same id.
1718
1718
  *
1719
1719
  * **Idempotency**: supply an `Idempotency-Key` header to make safe retries; replays within 24 hours return the same envelope. Reusing the key with a different body returns HTTP 409 Conflict.
1720
1720
  */
1721
- export const createTaxonomyBlock = <ThrowOnError extends boolean = false>(options: Options<CreateTaxonomyBlockData, ThrowOnError>): RequestResult<CreateTaxonomyBlockResponses, CreateTaxonomyBlockErrors, ThrowOnError> => (options.client ?? client).post<CreateTaxonomyBlockResponses, CreateTaxonomyBlockErrors, ThrowOnError>({
1721
+ export const changeReportingStyle = <ThrowOnError extends boolean = false>(options: Options<ChangeReportingStyleData, ThrowOnError>): RequestResult<ChangeReportingStyleResponses, ChangeReportingStyleErrors, ThrowOnError> => (options.client ?? client).post<ChangeReportingStyleResponses, ChangeReportingStyleErrors, ThrowOnError>({
1722
1722
  security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
1723
- url: '/extensions/roboledger/{graph_id}/operations/create-taxonomy-block',
1723
+ url: '/extensions/roboledger/{graph_id}/operations/change-reporting-style',
1724
1724
  ...options,
1725
1725
  headers: {
1726
1726
  'Content-Type': 'application/json',
@@ -1729,15 +1729,15 @@ export const createTaxonomyBlock = <ThrowOnError extends boolean = false>(option
1729
1729
  });
1730
1730
 
1731
1731
  /**
1732
- * Initialize Chart of Accounts
1732
+ * Create Taxonomy Block
1733
1733
  *
1734
- * Create the graph's chart of accounts from a shipped template — the fresh-company path to native books. Use when the graph has NO chart (a QuickBooks-synced tenant never needs this: its chart arrives with the sync and stays after a sever) and before connecting a bank feed, which needs a chart to resolve against. Templates: `saas` (subscription software), `services` (professional services), `product` (inventory and COGS) — the `chartTemplates` GraphQL field lists them with names and account counts. Creates the chart, its `coa_mapping` structure and the template's CoA → rs-gaap mapping associations in one transaction, with the equity rows mapped by the entity's legal form (`entity_type`, defaulting to the graph's primary entity). One-time: 409 once a chart exists — a chart is never replaced. Customize afterwards with update-taxonomy-block; accounts that carry activity are never deleted.
1734
+ * Create a taxonomy block atomically: one envelope carrying the taxonomy row plus its structures, elements, associations, and rules. Dispatches by `taxonomy_type` — `chart_of_accounts` (declarative tenant CoA), `reporting_extension`, and `custom_ontology` are supported; `reporting_standard` is library-origin (501). `reporting_extension` / `custom_ontology` authoring may be disabled per environment (TAXONOMY_AUTHORING_ENABLED) — disabled surfaces 403. NOT the path for a functional close schedule: a structure with block_type='schedule' here is a bare ontology row with none of the schedule machinery (per-period facts, schedule_entry_due obligations, closing-entry generator). To create a working schedule use create-information-block(block_type='schedule').
1735
1735
  *
1736
1736
  * **Idempotency**: supply an `Idempotency-Key` header to make safe retries; replays within 24 hours return the same envelope. Reusing the key with a different body returns HTTP 409 Conflict.
1737
1737
  */
1738
- export const initializeChartOfAccounts = <ThrowOnError extends boolean = false>(options: Options<InitializeChartOfAccountsData, ThrowOnError>): RequestResult<InitializeChartOfAccountsResponses, InitializeChartOfAccountsErrors, ThrowOnError> => (options.client ?? client).post<InitializeChartOfAccountsResponses, InitializeChartOfAccountsErrors, ThrowOnError>({
1738
+ export const createTaxonomyBlock = <ThrowOnError extends boolean = false>(options: Options<CreateTaxonomyBlockData, ThrowOnError>): RequestResult<CreateTaxonomyBlockResponses, CreateTaxonomyBlockErrors, ThrowOnError> => (options.client ?? client).post<CreateTaxonomyBlockResponses, CreateTaxonomyBlockErrors, ThrowOnError>({
1739
1739
  security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
1740
- url: '/extensions/roboledger/{graph_id}/operations/initialize-chart-of-accounts',
1740
+ url: '/extensions/roboledger/{graph_id}/operations/create-taxonomy-block',
1741
1741
  ...options,
1742
1742
  headers: {
1743
1743
  'Content-Type': 'application/json',
@@ -2037,7 +2037,7 @@ export const createEventBlock = <ThrowOnError extends boolean = false>(options:
2037
2037
  /**
2038
2038
  * Update Event Block
2039
2039
  *
2040
- * Apply a status transition (captured → classified | committed | voided) and/or field corrections (description, effective_at, metadata_patch) to an existing event block. Only supplied fields are updated. captured → classified records an account choice without posting — for a bank-feed line, patch metadata.classified_element_id (or accept_suggestion: true) in the same call. When the transition is captured/classified → committed, the registered Python handler fires against the captured metadata to produce the GL rows; a bank-feed line with no account chosen and no matching rule is refused. Errors from the handler (validation, element resolution, closed period, unbalanced lines) surface as 422 here so the inbox UI can display the failure reason without retry.
2040
+ * Apply a status transition (captured → classified | committed | voided) and/or field corrections (description, effective_at, metadata_patch) to an existing event block. Only supplied fields are updated. captured → classified records an account choice without posting — for a bank-feed line, patch metadata.classified_element_id (or accept_suggestion: true) in the same call. When the transition is captured/classified → committed, the registered Python handler fires against the captured metadata to produce the GL rows, unless it already wrote them when the event was created; a bank-feed line with no account chosen and no matching rule is refused. Errors from the handler (validation, element resolution, closed period, unbalanced lines) surface as 422 here so the inbox UI can display the failure reason without retry.
2041
2041
  *
2042
2042
  * **Idempotency**: supply an `Idempotency-Key` header to make safe retries; replays within 24 hours return the same envelope. Reusing the key with a different body returns HTTP 409 Conflict.
2043
2043
  */
@@ -2188,15 +2188,15 @@ export const deleteJournalEntry = <ThrowOnError extends boolean = false>(options
2188
2188
  });
2189
2189
 
2190
2190
  /**
2191
- * Promote Due Schedule Obligations
2191
+ * Set Close Target
2192
2192
  *
2193
- * Promote matured pending schedule obligations (schedule_entry_due events whose period boundary has passed) to 'classified', and — when dispatch_handlers=true (default) — draft their closing entries in the same transaction. Also reaches stranded obligations: events already 'classified' (by an earlier flip-only sweep) whose closing entry was never drafted are dispatched in the same pass, and reported via stranded_count. This is the on-demand form of the background obligation-promotion sweep; run it before close-period when a schedule was just created or when you can't wait for the Dagster sensor. Idempotent: re-running skips already-classified obligations and reconciles to existing drafts.
2193
+ * Set the user-controlled goal period for closing (`close_target`). Format: YYYY-MM. Distinct from `closed_through` (what's actually locked) — setting a target doesn't close anything; call `close-period` for that. The catch-up sequence between `closed_through` and this target appears on the response's `fiscal_calendar.catch_up_sequence`.
2194
2194
  *
2195
2195
  * **Idempotency**: supply an `Idempotency-Key` header to make safe retries; replays within 24 hours return the same envelope. Reusing the key with a different body returns HTTP 409 Conflict.
2196
2196
  */
2197
- export const promoteObligations = <ThrowOnError extends boolean = false>(options: Options<PromoteObligationsData, ThrowOnError>): RequestResult<PromoteObligationsResponses, PromoteObligationsErrors, ThrowOnError> => (options.client ?? client).post<PromoteObligationsResponses, PromoteObligationsErrors, ThrowOnError>({
2197
+ export const setCloseTarget = <ThrowOnError extends boolean = false>(options: Options<SetCloseTargetData, ThrowOnError>): RequestResult<SetCloseTargetResponses, SetCloseTargetErrors, ThrowOnError> => (options.client ?? client).post<SetCloseTargetResponses, SetCloseTargetErrors, ThrowOnError>({
2198
2198
  security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
2199
- url: '/extensions/roboledger/{graph_id}/operations/promote-obligations',
2199
+ url: '/extensions/roboledger/{graph_id}/operations/set-close-target',
2200
2200
  ...options,
2201
2201
  headers: {
2202
2202
  'Content-Type': 'application/json',
@@ -2205,15 +2205,15 @@ export const promoteObligations = <ThrowOnError extends boolean = false>(options
2205
2205
  });
2206
2206
 
2207
2207
  /**
2208
- * Rebuild Schedule In Place
2208
+ * Close Fiscal Period
2209
2209
  *
2210
- * Re-run the schedule generator in place on an existing schedule. Atomic alternative to delete-then-recreate (which orphans pending obligations): preserves the structure id + element associations + taxonomy, voids the old pending obligation chain, deletes the old facts and SumEquals rules, and regenerates fresh forward facts + a fresh obligation chain from the schedule's stored definition (entry_template / schedule_metadata / monthly_amount / period bounds). The historical-vs-in-scope split is re-derived from the CURRENT fiscal calendar closed_through. Use this to pick up a fixed generator (e.g. the roll-forward direction fix) without orphaning obligations.
2210
+ * Lock a single fiscal period. Posts draft entries, runs the balance-sheet equation check, advances `closed_through` by one, auto-advances `close_target` if this close caught up to it, and stamps the period's canonical statement FactSets from the posted ledger (`statements_stamped` / `stamped_statement_sets` in the response; soft-skipped with `statement_stamp_note` when reporting isn't set up). Period must be exactly `closed_through + 1` — sequence violations return 422 with structured `blockers`. Common blockers: `sync_stale` (override with `allow_stale_sync=true` after manual verification), `period_incomplete` (draft entries unbalanced), `sequence_violation` (out-of-order).
2211
2211
  *
2212
2212
  * **Idempotency**: supply an `Idempotency-Key` header to make safe retries; replays within 24 hours return the same envelope. Reusing the key with a different body returns HTTP 409 Conflict.
2213
2213
  */
2214
- export const rebuildSchedule = <ThrowOnError extends boolean = false>(options: Options<RebuildScheduleData, ThrowOnError>): RequestResult<RebuildScheduleResponses, RebuildScheduleErrors, ThrowOnError> => (options.client ?? client).post<RebuildScheduleResponses, RebuildScheduleErrors, ThrowOnError>({
2214
+ export const closePeriod = <ThrowOnError extends boolean = false>(options: Options<ClosePeriodData, ThrowOnError>): RequestResult<ClosePeriodResponses, ClosePeriodErrors, ThrowOnError> => (options.client ?? client).post<ClosePeriodResponses, ClosePeriodErrors, ThrowOnError>({
2215
2215
  security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
2216
- url: '/extensions/roboledger/{graph_id}/operations/rebuild-schedule',
2216
+ url: '/extensions/roboledger/{graph_id}/operations/close-period',
2217
2217
  ...options,
2218
2218
  headers: {
2219
2219
  'Content-Type': 'application/json',
@@ -2222,15 +2222,15 @@ export const rebuildSchedule = <ThrowOnError extends boolean = false>(options: O
2222
2222
  });
2223
2223
 
2224
2224
  /**
2225
- * Terminate Schedule Early
2225
+ * Reopen Fiscal Period
2226
2226
  *
2227
- * End a schedule early at a month-end cutoff without booking any entry. In one transaction: deletes forward facts past the cutoff (refusing when posted entries exist past it; stale drafts past it are deleted), voids the remaining obligation chain past the cutoff (pending and classified rows), and rewrites the SumEquals rule to prove the truncated curve. History at or before the cutoff is untouched, so open months the schedule still covers close normally. Use this when the termination's GL effect is already booked (an asset transferred via a manual entry, a prepaid refunded in the source system) or none is wanted; when the derecognition entry still needs to be booked, use create-event-block(event_type='asset_disposed') instead — the disposal handler posts it atomically with the same obligation void. Run BEFORE promote-obligations at close so terminated periods are never drafted.
2227
+ * Reopen a closed period for adjustment. Only the latest closed period (`closed_through`) can be reopened; it decrements by one and the period's entries become writable again. To reach an earlier month, reopen latest-first down to it, then re-close forward — an out-of-order reopen is refused (422) with the ordered list, because every later closed month carries statements stamped from the earlier month's numbers. Retracts the month's canonical statement FactSets (a reopened month is no longer a closed assertion; re-closing restamps them). The required `reason` is captured in the audit log. Use sparingly — reopen invalidates downstream artifacts that trusted the closed state (reports, shared filings).
2228
2228
  *
2229
2229
  * **Idempotency**: supply an `Idempotency-Key` header to make safe retries; replays within 24 hours return the same envelope. Reusing the key with a different body returns HTTP 409 Conflict.
2230
2230
  */
2231
- export const terminateSchedule = <ThrowOnError extends boolean = false>(options: Options<TerminateScheduleData, ThrowOnError>): RequestResult<TerminateScheduleResponses, TerminateScheduleErrors, ThrowOnError> => (options.client ?? client).post<TerminateScheduleResponses, TerminateScheduleErrors, ThrowOnError>({
2231
+ export const reopenPeriod = <ThrowOnError extends boolean = false>(options: Options<ReopenPeriodData, ThrowOnError>): RequestResult<ReopenPeriodResponses, ReopenPeriodErrors, ThrowOnError> => (options.client ?? client).post<ReopenPeriodResponses, ReopenPeriodErrors, ThrowOnError>({
2232
2232
  security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
2233
- url: '/extensions/roboledger/{graph_id}/operations/terminate-schedule',
2233
+ url: '/extensions/roboledger/{graph_id}/operations/reopen-period',
2234
2234
  ...options,
2235
2235
  headers: {
2236
2236
  'Content-Type': 'application/json',
@@ -2239,15 +2239,15 @@ export const terminateSchedule = <ThrowOnError extends boolean = false>(options:
2239
2239
  });
2240
2240
 
2241
2241
  /**
2242
- * Set Close Target
2242
+ * Backfill Plan History
2243
2243
  *
2244
- * Set the user-controlled goal period for closing (`close_target`). Format: YYYY-MM. Distinct from `closed_through` (what's actually locked) — setting a target doesn't close anything; call `close-period` for that. The catch-up sequence between `closed_through` and this target appears on the response's `fiscal_calendar.catch_up_sequence`.
2244
+ * Compile monthly statement history behind the close boundary — the plan's historical columns. Seeds any missing FiscalPeriod rows (baseline-closed) back to the clamped `start_period`, then restamps each month lacking canonical statement FactSets by running the real reopen → reclose cycle (balance validation, statement rules, and audit events per month). Chunked: at most `max_periods` months per call, oldest first — loop until `remaining_periods` comes back empty. Idempotent: already-stamped months are never touched. Months holding draft entries are skipped, never posted. `start_period` is clamped to the earliest month with ledger data, so deep-history tenants only backfill what actually exists.
2245
2245
  *
2246
2246
  * **Idempotency**: supply an `Idempotency-Key` header to make safe retries; replays within 24 hours return the same envelope. Reusing the key with a different body returns HTTP 409 Conflict.
2247
2247
  */
2248
- export const setCloseTarget = <ThrowOnError extends boolean = false>(options: Options<SetCloseTargetData, ThrowOnError>): RequestResult<SetCloseTargetResponses, SetCloseTargetErrors, ThrowOnError> => (options.client ?? client).post<SetCloseTargetResponses, SetCloseTargetErrors, ThrowOnError>({
2248
+ export const backfillPlanHistory = <ThrowOnError extends boolean = false>(options: Options<BackfillPlanHistoryData, ThrowOnError>): RequestResult<BackfillPlanHistoryResponses, BackfillPlanHistoryErrors, ThrowOnError> => (options.client ?? client).post<BackfillPlanHistoryResponses, BackfillPlanHistoryErrors, ThrowOnError>({
2249
2249
  security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
2250
- url: '/extensions/roboledger/{graph_id}/operations/set-close-target',
2250
+ url: '/extensions/roboledger/{graph_id}/operations/backfill-plan-history',
2251
2251
  ...options,
2252
2252
  headers: {
2253
2253
  'Content-Type': 'application/json',
@@ -2256,15 +2256,15 @@ export const setCloseTarget = <ThrowOnError extends boolean = false>(options: Op
2256
2256
  });
2257
2257
 
2258
2258
  /**
2259
- * Close Fiscal Period
2259
+ * Promote Due Schedule Obligations
2260
2260
  *
2261
- * Lock a single fiscal period. Posts draft entries, runs the balance-sheet equation check, advances `closed_through` by one, auto-advances `close_target` if this close caught up to it, and stamps the period's canonical statement FactSets from the posted ledger (`statements_stamped` / `stamped_statement_sets` in the response; soft-skipped with `statement_stamp_note` when reporting isn't set up). Period must be exactly `closed_through + 1` — sequence violations return 422 with structured `blockers`. Common blockers: `sync_stale` (override with `allow_stale_sync=true` after manual verification), `period_incomplete` (draft entries unbalanced), `sequence_violation` (out-of-order).
2261
+ * Promote matured pending schedule obligations (schedule_entry_due events whose period boundary has passed) to 'classified', and — when dispatch_handlers=true (default) — draft their closing entries in the same transaction. Also reaches stranded obligations: events already 'classified' (by an earlier flip-only sweep) whose closing entry was never drafted are dispatched in the same pass, and reported via stranded_count. This is the on-demand form of the background obligation-promotion sweep; run it before close-period when a schedule was just created or when you can't wait for the Dagster sensor. Idempotent: re-running skips already-classified obligations and reconciles to existing drafts.
2262
2262
  *
2263
2263
  * **Idempotency**: supply an `Idempotency-Key` header to make safe retries; replays within 24 hours return the same envelope. Reusing the key with a different body returns HTTP 409 Conflict.
2264
2264
  */
2265
- export const closePeriod = <ThrowOnError extends boolean = false>(options: Options<ClosePeriodData, ThrowOnError>): RequestResult<ClosePeriodResponses, ClosePeriodErrors, ThrowOnError> => (options.client ?? client).post<ClosePeriodResponses, ClosePeriodErrors, ThrowOnError>({
2265
+ export const promoteObligations = <ThrowOnError extends boolean = false>(options: Options<PromoteObligationsData, ThrowOnError>): RequestResult<PromoteObligationsResponses, PromoteObligationsErrors, ThrowOnError> => (options.client ?? client).post<PromoteObligationsResponses, PromoteObligationsErrors, ThrowOnError>({
2266
2266
  security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
2267
- url: '/extensions/roboledger/{graph_id}/operations/close-period',
2267
+ url: '/extensions/roboledger/{graph_id}/operations/promote-obligations',
2268
2268
  ...options,
2269
2269
  headers: {
2270
2270
  'Content-Type': 'application/json',
@@ -2273,15 +2273,15 @@ export const closePeriod = <ThrowOnError extends boolean = false>(options: Optio
2273
2273
  });
2274
2274
 
2275
2275
  /**
2276
- * Reopen Fiscal Period
2276
+ * Rebuild Schedule In Place
2277
2277
  *
2278
- * Reopen a closed period for adjustment. Only the latest closed period (`closed_through`) can be reopened; it decrements by one and the period's entries become writable again. To reach an earlier month, reopen latest-first down to it, then re-close forward — an out-of-order reopen is refused (422) with the ordered list, because every later closed month carries statements stamped from the earlier month's numbers. Retracts the month's canonical statement FactSets (a reopened month is no longer a closed assertion; re-closing restamps them). The required `reason` is captured in the audit log. Use sparingly — reopen invalidates downstream artifacts that trusted the closed state (reports, shared filings).
2278
+ * Re-run the schedule generator in place on an existing schedule. Atomic alternative to delete-then-recreate (which orphans pending obligations): preserves the structure id + element associations + taxonomy, voids the old pending obligation chain, deletes the old facts and SumEquals rules, and regenerates fresh forward facts + a fresh obligation chain from the schedule's stored definition (entry_template / schedule_metadata / monthly_amount / period bounds). The historical-vs-in-scope split is re-derived from the CURRENT fiscal calendar closed_through. Use this to pick up a fixed generator (e.g. the roll-forward direction fix) without orphaning obligations.
2279
2279
  *
2280
2280
  * **Idempotency**: supply an `Idempotency-Key` header to make safe retries; replays within 24 hours return the same envelope. Reusing the key with a different body returns HTTP 409 Conflict.
2281
2281
  */
2282
- export const reopenPeriod = <ThrowOnError extends boolean = false>(options: Options<ReopenPeriodData, ThrowOnError>): RequestResult<ReopenPeriodResponses, ReopenPeriodErrors, ThrowOnError> => (options.client ?? client).post<ReopenPeriodResponses, ReopenPeriodErrors, ThrowOnError>({
2282
+ export const rebuildSchedule = <ThrowOnError extends boolean = false>(options: Options<RebuildScheduleData, ThrowOnError>): RequestResult<RebuildScheduleResponses, RebuildScheduleErrors, ThrowOnError> => (options.client ?? client).post<RebuildScheduleResponses, RebuildScheduleErrors, ThrowOnError>({
2283
2283
  security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
2284
- url: '/extensions/roboledger/{graph_id}/operations/reopen-period',
2284
+ url: '/extensions/roboledger/{graph_id}/operations/rebuild-schedule',
2285
2285
  ...options,
2286
2286
  headers: {
2287
2287
  'Content-Type': 'application/json',
@@ -2290,15 +2290,15 @@ export const reopenPeriod = <ThrowOnError extends boolean = false>(options: Opti
2290
2290
  });
2291
2291
 
2292
2292
  /**
2293
- * Backfill Plan History
2293
+ * Terminate Schedule Early
2294
2294
  *
2295
- * Compile monthly statement history behind the close boundary — the plan's historical columns. Seeds any missing FiscalPeriod rows (baseline-closed) back to the clamped `start_period`, then restamps each month lacking canonical statement FactSets by running the real reopen → reclose cycle (balance validation, statement rules, and audit events per month). Chunked: at most `max_periods` months per call, oldest first — loop until `remaining_periods` comes back empty. Idempotent: already-stamped months are never touched. Months holding draft entries are skipped, never posted. `start_period` is clamped to the earliest month with ledger data, so deep-history tenants only backfill what actually exists.
2295
+ * End a schedule early at a month-end cutoff without booking any entry. In one transaction: deletes forward facts past the cutoff (refusing when posted entries exist past it; stale drafts past it are deleted), voids the remaining obligation chain past the cutoff (pending and classified rows), and rewrites the SumEquals rule to prove the truncated curve. History at or before the cutoff is untouched, so open months the schedule still covers close normally. Use this when the termination's GL effect is already booked (an asset transferred via a manual entry, a prepaid refunded in the source system) or none is wanted; when the derecognition entry still needs to be booked, use create-event-block(event_type='asset_disposed') instead — the disposal handler posts it atomically with the same obligation void. Run BEFORE promote-obligations at close so terminated periods are never drafted.
2296
2296
  *
2297
2297
  * **Idempotency**: supply an `Idempotency-Key` header to make safe retries; replays within 24 hours return the same envelope. Reusing the key with a different body returns HTTP 409 Conflict.
2298
2298
  */
2299
- export const backfillPlanHistory = <ThrowOnError extends boolean = false>(options: Options<BackfillPlanHistoryData, ThrowOnError>): RequestResult<BackfillPlanHistoryResponses, BackfillPlanHistoryErrors, ThrowOnError> => (options.client ?? client).post<BackfillPlanHistoryResponses, BackfillPlanHistoryErrors, ThrowOnError>({
2299
+ export const terminateSchedule = <ThrowOnError extends boolean = false>(options: Options<TerminateScheduleData, ThrowOnError>): RequestResult<TerminateScheduleResponses, TerminateScheduleErrors, ThrowOnError> => (options.client ?? client).post<TerminateScheduleResponses, TerminateScheduleErrors, ThrowOnError>({
2300
2300
  security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
2301
- url: '/extensions/roboledger/{graph_id}/operations/backfill-plan-history',
2301
+ url: '/extensions/roboledger/{graph_id}/operations/terminate-schedule',
2302
2302
  ...options,
2303
2303
  headers: {
2304
2304
  'Content-Type': 'application/json',
@@ -2358,15 +2358,15 @@ export const deleteReport = <ThrowOnError extends boolean = false>(options: Opti
2358
2358
  });
2359
2359
 
2360
2360
  /**
2361
- * Share Report
2361
+ * File Report
2362
2362
  *
2363
- * Pushes a published report to every member of the target publish list. Each share is an independent copy: the report row + all its facts are cloned into the recipient's tenant schema with `source_graph_id` / `source_report_id` provenance fields populated. Per-target outcomes (success or error) surface in the response — share does not fail-fast across targets. Recipients that have blocked this graph come back as an error for that target; withdraw a delivered copy with `revoke-report-share`.
2363
+ * Transitions the Report's filing_status to 'filed' — locks the package. Allowed from 'draft' or 'under_review'. Stamps filed_at + filed_by.
2364
2364
  *
2365
2365
  * **Idempotency**: supply an `Idempotency-Key` header to make safe retries; replays within 24 hours return the same envelope. Reusing the key with a different body returns HTTP 409 Conflict.
2366
2366
  */
2367
- export const shareReport = <ThrowOnError extends boolean = false>(options: Options<ShareReportData, ThrowOnError>): RequestResult<ShareReportResponses, ShareReportErrors, ThrowOnError> => (options.client ?? client).post<ShareReportResponses, ShareReportErrors, ThrowOnError>({
2367
+ export const fileReport = <ThrowOnError extends boolean = false>(options: Options<FileReportData, ThrowOnError>): RequestResult<FileReportResponses, FileReportErrors, ThrowOnError> => (options.client ?? client).post<FileReportResponses, FileReportErrors, ThrowOnError>({
2368
2368
  security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
2369
- url: '/extensions/roboledger/{graph_id}/operations/share-report',
2369
+ url: '/extensions/roboledger/{graph_id}/operations/file-report',
2370
2370
  ...options,
2371
2371
  headers: {
2372
2372
  'Content-Type': 'application/json',
@@ -2375,15 +2375,15 @@ export const shareReport = <ThrowOnError extends boolean = false>(options: Optio
2375
2375
  });
2376
2376
 
2377
2377
  /**
2378
- * Revoke Report Share
2378
+ * Transition Filing Status
2379
2379
  *
2380
- * Withdraws a report previously shared to one recipient graph: deletes the copy from that recipient's schema and stamps the share record revoked. Scoped to a single recipient — withdrawing a distribution to a whole publish list is one call per member. A recipient who already deleted the copy is not an error; the share is still marked revoked and `copy_deleted` returns false. The linked entity in the recipient's graph is left in place, so an investor's declared holding survives.
2380
+ * Move a Report along the non-file legs of the filing lifecycle (draft ↔ under_review, filed → archived). Use 'file-report' to reach 'filed' so audit fields land cleanly.
2381
2381
  *
2382
2382
  * **Idempotency**: supply an `Idempotency-Key` header to make safe retries; replays within 24 hours return the same envelope. Reusing the key with a different body returns HTTP 409 Conflict.
2383
2383
  */
2384
- export const revokeReportShare = <ThrowOnError extends boolean = false>(options: Options<RevokeReportShareData, ThrowOnError>): RequestResult<RevokeReportShareResponses, RevokeReportShareErrors, ThrowOnError> => (options.client ?? client).post<RevokeReportShareResponses, RevokeReportShareErrors, ThrowOnError>({
2384
+ export const transitionFilingStatus = <ThrowOnError extends boolean = false>(options: Options<TransitionFilingStatusData, ThrowOnError>): RequestResult<TransitionFilingStatusResponses, TransitionFilingStatusErrors, ThrowOnError> => (options.client ?? client).post<TransitionFilingStatusResponses, TransitionFilingStatusErrors, ThrowOnError>({
2385
2385
  security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
2386
- url: '/extensions/roboledger/{graph_id}/operations/revoke-report-share',
2386
+ url: '/extensions/roboledger/{graph_id}/operations/transition-filing-status',
2387
2387
  ...options,
2388
2388
  headers: {
2389
2389
  'Content-Type': 'application/json',
@@ -2392,15 +2392,15 @@ export const revokeReportShare = <ThrowOnError extends boolean = false>(options:
2392
2392
  });
2393
2393
 
2394
2394
  /**
2395
- * File Report
2395
+ * Share Report
2396
2396
  *
2397
- * Transitions the Report's filing_status to 'filed' — locks the package. Allowed from 'draft' or 'under_review'. Stamps filed_at + filed_by.
2397
+ * Pushes a published report to every member of the target publish list. Each share is an independent copy: the report row + all its facts are cloned into the recipient's tenant schema with `source_graph_id` / `source_report_id` provenance fields populated. Per-target outcomes (success or error) surface in the response — share does not fail-fast across targets. Recipients that have blocked this graph come back as an error for that target; withdraw a delivered copy with `revoke-report-share`.
2398
2398
  *
2399
2399
  * **Idempotency**: supply an `Idempotency-Key` header to make safe retries; replays within 24 hours return the same envelope. Reusing the key with a different body returns HTTP 409 Conflict.
2400
2400
  */
2401
- export const fileReport = <ThrowOnError extends boolean = false>(options: Options<FileReportData, ThrowOnError>): RequestResult<FileReportResponses, FileReportErrors, ThrowOnError> => (options.client ?? client).post<FileReportResponses, FileReportErrors, ThrowOnError>({
2401
+ export const shareReport = <ThrowOnError extends boolean = false>(options: Options<ShareReportData, ThrowOnError>): RequestResult<ShareReportResponses, ShareReportErrors, ThrowOnError> => (options.client ?? client).post<ShareReportResponses, ShareReportErrors, ThrowOnError>({
2402
2402
  security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
2403
- url: '/extensions/roboledger/{graph_id}/operations/file-report',
2403
+ url: '/extensions/roboledger/{graph_id}/operations/share-report',
2404
2404
  ...options,
2405
2405
  headers: {
2406
2406
  'Content-Type': 'application/json',
@@ -2409,15 +2409,15 @@ export const fileReport = <ThrowOnError extends boolean = false>(options: Option
2409
2409
  });
2410
2410
 
2411
2411
  /**
2412
- * Transition Filing Status
2412
+ * Revoke Report Share
2413
2413
  *
2414
- * Move a Report along the non-file legs of the filing lifecycle (draft ↔ under_review, filed → archived). Use 'file-report' to reach 'filed' so audit fields land cleanly.
2414
+ * Withdraws a report previously shared to one recipient graph: deletes the copy from that recipient's schema and stamps the share record revoked. Scoped to a single recipient — withdrawing a distribution to a whole publish list is one call per member. A recipient who already deleted the copy is not an error; the share is still marked revoked and `copy_deleted` returns false. The linked entity in the recipient's graph is left in place, so an investor's declared holding survives.
2415
2415
  *
2416
2416
  * **Idempotency**: supply an `Idempotency-Key` header to make safe retries; replays within 24 hours return the same envelope. Reusing the key with a different body returns HTTP 409 Conflict.
2417
2417
  */
2418
- export const transitionFilingStatus = <ThrowOnError extends boolean = false>(options: Options<TransitionFilingStatusData, ThrowOnError>): RequestResult<TransitionFilingStatusResponses, TransitionFilingStatusErrors, ThrowOnError> => (options.client ?? client).post<TransitionFilingStatusResponses, TransitionFilingStatusErrors, ThrowOnError>({
2418
+ export const revokeReportShare = <ThrowOnError extends boolean = false>(options: Options<RevokeReportShareData, ThrowOnError>): RequestResult<RevokeReportShareResponses, RevokeReportShareErrors, ThrowOnError> => (options.client ?? client).post<RevokeReportShareResponses, RevokeReportShareErrors, ThrowOnError>({
2419
2419
  security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
2420
- url: '/extensions/roboledger/{graph_id}/operations/transition-filing-status',
2420
+ url: '/extensions/roboledger/{graph_id}/operations/revoke-report-share',
2421
2421
  ...options,
2422
2422
  headers: {
2423
2423
  'Content-Type': 'application/json',