@robosystems/client 1.17.2 → 2.1.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.js CHANGED
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.resendOrgInvitation = exports.revokeOrgInvitation = exports.createOrgInvitation = exports.listOrgInvitations = exports.updateOrgMemberRole = exports.removeOrgMember = exports.listOrgMembers = exports.listOrgGraphs = exports.updateOrg = exports.getOrg = exports.listUserOrgs = exports.revokeUserOAuthGrant = exports.listUserOAuthGrants = exports.updateUserApiKey = exports.revokeUserApiKey = exports.createUserApiKey = exports.listUserApiKeys = exports.updateUserPassword = exports.updateUser = exports.getCurrentUser = exports.getServiceStatus = exports.getAuthProviders = exports.getCaptchaConfig = exports.regenerateMfaRecoveryCodes = exports.getMfaStatus = exports.verifyMfa = exports.getMfaOptions = exports.verifyPasskeyLogin = exports.getPasskeyLoginOptions = exports.deleteUserPasskey = exports.getPasskeyReauthOptions = exports.listUserPasskeys = exports.verifyPasskeyRegistration = exports.getPasskeyRegistrationOptions = exports.completeSsoAuth = exports.ssoTokenExchange = exports.generateSsoToken = exports.resetPassword = exports.validateResetToken = exports.forgotPassword = exports.checkPasswordStrength = exports.getPasswordPolicy = exports.getInvitationPreview = exports.verifyEmail = exports.resendVerificationEmail = exports.refreshAuthSession = exports.getCurrentAuthUser = exports.logoutUser = exports.loginUser = exports.registerUser = void 0;
5
5
  exports.deleteGraph = exports.deleteSubgraph = exports.createSubgraph = exports.recallMemory = exports.getMemory = exports.listMemories = exports.getDocument = exports.listDocuments = exports.getDocumentSection = exports.searchDocuments = exports.listTables = exports.cancelRepositorySubscription = exports.createRepositorySubscription = exports.changeSubscriptionPlan = exports.getGraphSubscription = exports.getSubgraphInfo = exports.listSubgraphs = exports.updateGraphMemberRole = exports.removeGraphMember = exports.addGraphMember = exports.listGraphMembers = exports.getGraphLimits = exports.getDatabaseInfo = exports.getDatabaseHealth = exports.listCreditTransactions = exports.getCreditSummary = exports.exportGraphSchema = exports.getGraphSchema = exports.executeSql = exports.executeCypher = exports.getGraphUsage = exports.getGraphMetrics = exports.getBackupStats = exports.getBackupDownloadUrl = exports.listBackups = exports.executeSpecificOperator = exports.getOperatorMetadata = exports.autoSelectOperator = exports.listOperators = exports.setConnectionWritePolicy = exports.getConnection = exports.deleteConnection = exports.createConnection = exports.listConnections = exports.oauthCallback = exports.initOAuth = exports.getConnectionOptions = exports.syncConnection = exports.getOrgUsage = exports.getOrgLimits = void 0;
6
- exports.updateInformationBlock = exports.createInformationBlock = exports.autoMapElements = exports.deleteMappingAssociation = exports.createMappingAssociation = exports.linkEntityTaxonomy = exports.deleteTaxonomyBlock = exports.updateTaxonomyBlock = exports.initializeChartOfAccounts = exports.createTaxonomyBlock = exports.changeReportingStyle = exports.updateEntity = exports.initializeLedger = exports.handleHttpPostExtensionsGraphIdGraphqlPost = exports.handleHttpGetExtensionsGraphIdGraphqlGet = exports.getCheckoutStatus = exports.createCheckoutSession = exports.getOrgUpcomingInvoice = exports.listOrgInvoices = exports.cancelOrgSubscription = exports.getOrgSubscription = exports.listOrgSubscriptions = exports.createPortalSession = exports.getOrgBillingCustomer = exports.resumeOperation = exports.cancelOperation = exports.getOperationStatus = exports.streamOperationEvents = exports.getServiceOfferings = exports.validateSchema = exports.selectGraph = exports.getGraphCapacity = exports.getAvailableGraphTiers = exports.getAvailableExtensions = exports.createGraph = exports.getGraphs = exports.getFile = exports.listFiles = exports.deleteFile = exports.ingestFile = exports.createFileUpload = exports.deleteDocument = exports.indexDocument = exports.updateMemory = exports.forget = exports.remember = exports.materialize = exports.updateGraphMetadata = exports.changeTier = exports.createBackup = void 0;
7
- exports.deleteSecurity = exports.updateSecurity = exports.createSecurity = exports.deletePortfolioBlock = exports.updatePortfolioBlock = exports.createPortfolioBlock = exports.informationBlock = exports.disclosures = exports.financialStatementAnalysis = exports.buildFactGrid = exports.liveFinancialStatement = exports.unblockSourceGraph = exports.blockSourceGraph = exports.removePublishListMember = exports.addPublishListMembers = exports.deletePublishList = exports.updatePublishList = exports.createPublishList = exports.transitionFilingStatus = exports.fileReport = exports.revokeReportShare = exports.shareReport = exports.deleteReport = exports.regenerateReport = exports.createReport = exports.backfillPlanHistory = exports.reopenPeriod = exports.closePeriod = exports.setCloseTarget = exports.terminateSchedule = exports.rebuildSchedule = exports.promoteObligations = exports.deleteJournalEntry = exports.updateJournalEntry = exports.resolveReconcilingItem = exports.previewReconcilingItem = exports.previewEventBlock = exports.updateEventHandler = exports.createEventHandler = exports.executeEventBlock = exports.updateEventBlock = exports.createEventBlock = exports.updateAgent = exports.createAgent = exports.bindTextBlock = exports.computeForecast = exports.assertMetrics = exports.computeMetrics = exports.evaluateRules = exports.deleteInformationBlock = void 0;
6
+ exports.updateInformationBlock = exports.createInformationBlock = exports.autoMapElements = exports.deleteMappingAssociation = exports.createMappingAssociation = exports.linkEntityTaxonomy = exports.deleteTaxonomyBlock = exports.updateTaxonomyBlock = exports.createTaxonomyBlock = exports.changeReportingStyle = exports.updateEntity = exports.initializeChartOfAccounts = exports.initializeLedger = exports.handleHttpPostExtensionsGraphIdGraphqlPost = exports.handleHttpGetExtensionsGraphIdGraphqlGet = exports.getCheckoutStatus = exports.createCheckoutSession = exports.getOrgUpcomingInvoice = exports.listOrgInvoices = exports.cancelOrgSubscription = exports.getOrgSubscription = exports.listOrgSubscriptions = exports.createPortalSession = exports.getOrgBillingCustomer = exports.resumeOperation = exports.cancelOperation = exports.getOperationStatus = exports.streamOperationEvents = exports.getServiceOfferings = exports.validateSchema = exports.selectGraph = exports.getGraphCapacity = exports.getAvailableGraphTiers = exports.getAvailableExtensions = exports.createGraph = exports.getGraphs = exports.getFile = exports.listFiles = exports.deleteFile = exports.ingestFile = exports.createFileUpload = exports.deleteDocument = exports.indexDocument = exports.updateMemory = exports.forget = exports.remember = exports.materialize = exports.updateGraphMetadata = exports.changeTier = exports.createBackup = void 0;
7
+ exports.deleteSecurity = exports.updateSecurity = exports.createSecurity = exports.deletePortfolioBlock = exports.updatePortfolioBlock = exports.createPortfolioBlock = exports.liveFinancialStatement = exports.informationBlock = exports.disclosures = exports.financialStatementAnalysis = exports.buildFactGrid = exports.unblockSourceGraph = exports.blockSourceGraph = exports.removePublishListMember = exports.addPublishListMembers = exports.deletePublishList = exports.updatePublishList = exports.createPublishList = exports.revokeReportShare = exports.shareReport = exports.transitionFilingStatus = exports.fileReport = exports.deleteReport = exports.regenerateReport = exports.createReport = exports.terminateSchedule = exports.rebuildSchedule = exports.promoteObligations = exports.backfillPlanHistory = exports.reopenPeriod = exports.closePeriod = exports.setCloseTarget = exports.deleteJournalEntry = exports.updateJournalEntry = exports.resolveReconcilingItem = exports.previewReconcilingItem = exports.previewEventBlock = exports.updateEventHandler = exports.createEventHandler = exports.executeEventBlock = exports.updateEventBlock = exports.createEventBlock = exports.updateAgent = exports.createAgent = exports.bindTextBlock = exports.computeForecast = exports.assertMetrics = exports.computeMetrics = exports.evaluateRules = exports.deleteInformationBlock = void 0;
8
8
  const client_gen_1 = require("./client.gen");
9
9
  /**
10
10
  * Register New User
@@ -1619,13 +1619,17 @@ const getCheckoutStatus = (options) => (options.client ?? client_gen_1.client).g
1619
1619
  });
1620
1620
  exports.getCheckoutStatus = getCheckoutStatus;
1621
1621
  /**
1622
- * Handle Http Get
1622
+ * GraphQL explorer (development only)
1623
1623
  *
1624
+ * Serves the in-browser GraphiQL explorer on deployments that enable it, which is development only — it is not mounted on the hosted API. Run queries with `POST` to the same URL.
1624
1625
  *
1626
+ * Queries are scoped by the URL: `graph_id` is a path parameter and never a query argument, so a document cannot name a graph that disagrees with the path it was sent to. Reads hit the operational (OLTP) extensions database, so they reflect the books as they stand now; the analytical projection is Cypher at `POST /v1/graphs/{graph_id}/query/cypher`.
1627
+ *
1628
+ * The schema is composed per deployment: ledger fields require RoboLedger and investor fields require RoboInvestor, and a disabled domain is absent from introspection rather than failing at runtime. Every field carries a description, so introspection is the authoritative, deployment-specific reference.
1625
1629
  *
1626
1630
  * **Auth**: pass `X-API-Key` (or a JWT `Authorization: Bearer` header). Unauthenticated introspection queries are deliberately allowed for SDK codegen; data queries require credentials and raise `UNAUTHENTICATED`.
1627
1631
  *
1628
- * **Error codes**: `LEDGER_NOT_INITIALIZED`, `INVESTOR_NOT_INITIALIZED`, and `UNAUTHENTICATED` surface in the GraphQL `errors[].extensions.code` field — see `graphql/README.md` for the full vocabulary.
1632
+ * **Error codes**: `LEDGER_NOT_INITIALIZED`, `INVESTOR_NOT_INITIALIZED`, and `UNAUTHENTICATED` surface in the GraphQL `errors[].extensions.code` field. GraphQL reports errors with HTTP 200 and a populated `errors[]`, so check that array rather than the status code.
1629
1633
  */
1630
1634
  const handleHttpGetExtensionsGraphIdGraphqlGet = (options) => (options.client ?? client_gen_1.client).get({
1631
1635
  security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
@@ -1634,18 +1638,28 @@ const handleHttpGetExtensionsGraphIdGraphqlGet = (options) => (options.client ??
1634
1638
  });
1635
1639
  exports.handleHttpGetExtensionsGraphIdGraphqlGet = handleHttpGetExtensionsGraphIdGraphqlGet;
1636
1640
  /**
1637
- * Handle Http Post
1641
+ * Run a GraphQL query
1642
+ *
1643
+ * The typed read surface for a graph's extensions data — RoboLedger and RoboInvestor records as they stand right now. Writes are not here: they are the named operations at `POST /extensions/{domain}/{graph_id}/operations/{name}`.
1644
+ *
1645
+ * Send a standard GraphQL POST body: a `query` document, with optional `variables` and `operationName`.
1638
1646
  *
1647
+ * Queries are scoped by the URL: `graph_id` is a path parameter and never a query argument, so a document cannot name a graph that disagrees with the path it was sent to. Reads hit the operational (OLTP) extensions database, so they reflect the books as they stand now; the analytical projection is Cypher at `POST /v1/graphs/{graph_id}/query/cypher`.
1639
1648
  *
1649
+ * The schema is composed per deployment: ledger fields require RoboLedger and investor fields require RoboInvestor, and a disabled domain is absent from introspection rather than failing at runtime. Every field carries a description, so introspection is the authoritative, deployment-specific reference.
1640
1650
  *
1641
1651
  * **Auth**: pass `X-API-Key` (or a JWT `Authorization: Bearer` header). Unauthenticated introspection queries are deliberately allowed for SDK codegen; data queries require credentials and raise `UNAUTHENTICATED`.
1642
1652
  *
1643
- * **Error codes**: `LEDGER_NOT_INITIALIZED`, `INVESTOR_NOT_INITIALIZED`, and `UNAUTHENTICATED` surface in the GraphQL `errors[].extensions.code` field — see `graphql/README.md` for the full vocabulary.
1653
+ * **Error codes**: `LEDGER_NOT_INITIALIZED`, `INVESTOR_NOT_INITIALIZED`, and `UNAUTHENTICATED` surface in the GraphQL `errors[].extensions.code` field. GraphQL reports errors with HTTP 200 and a populated `errors[]`, so check that array rather than the status code.
1644
1654
  */
1645
1655
  const handleHttpPostExtensionsGraphIdGraphqlPost = (options) => (options.client ?? client_gen_1.client).post({
1646
1656
  security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
1647
1657
  url: '/extensions/{graph_id}/graphql',
1648
- ...options
1658
+ ...options,
1659
+ headers: {
1660
+ 'Content-Type': 'application/json',
1661
+ ...options.headers
1662
+ }
1649
1663
  });
1650
1664
  exports.handleHttpPostExtensionsGraphIdGraphqlPost = handleHttpPostExtensionsGraphIdGraphqlPost;
1651
1665
  /**
@@ -1665,6 +1679,23 @@ const initializeLedger = (options) => (options.client ?? client_gen_1.client).po
1665
1679
  }
1666
1680
  });
1667
1681
  exports.initializeLedger = initializeLedger;
1682
+ /**
1683
+ * Initialize Chart of Accounts
1684
+ *
1685
+ * 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.
1686
+ *
1687
+ * **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.
1688
+ */
1689
+ const initializeChartOfAccounts = (options) => (options.client ?? client_gen_1.client).post({
1690
+ security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
1691
+ url: '/extensions/roboledger/{graph_id}/operations/initialize-chart-of-accounts',
1692
+ ...options,
1693
+ headers: {
1694
+ 'Content-Type': 'application/json',
1695
+ ...options.headers
1696
+ }
1697
+ });
1698
+ exports.initializeChartOfAccounts = initializeChartOfAccounts;
1668
1699
  /**
1669
1700
  * Update Entity
1670
1701
  *
@@ -1716,23 +1747,6 @@ const createTaxonomyBlock = (options) => (options.client ?? client_gen_1.client)
1716
1747
  }
1717
1748
  });
1718
1749
  exports.createTaxonomyBlock = createTaxonomyBlock;
1719
- /**
1720
- * Initialize Chart of Accounts
1721
- *
1722
- * 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.
1723
- *
1724
- * **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.
1725
- */
1726
- const initializeChartOfAccounts = (options) => (options.client ?? client_gen_1.client).post({
1727
- security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
1728
- url: '/extensions/roboledger/{graph_id}/operations/initialize-chart-of-accounts',
1729
- ...options,
1730
- headers: {
1731
- 'Content-Type': 'application/json',
1732
- ...options.headers
1733
- }
1734
- });
1735
- exports.initializeChartOfAccounts = initializeChartOfAccounts;
1736
1750
  /**
1737
1751
  * Update Taxonomy Block
1738
1752
  *
@@ -2025,7 +2039,7 @@ exports.createEventBlock = createEventBlock;
2025
2039
  /**
2026
2040
  * Update Event Block
2027
2041
  *
2028
- * 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.
2042
+ * 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.
2029
2043
  *
2030
2044
  * **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.
2031
2045
  */
@@ -2176,124 +2190,124 @@ const deleteJournalEntry = (options) => (options.client ?? client_gen_1.client).
2176
2190
  });
2177
2191
  exports.deleteJournalEntry = deleteJournalEntry;
2178
2192
  /**
2179
- * Promote Due Schedule Obligations
2193
+ * Set Close Target
2180
2194
  *
2181
- * 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.
2195
+ * 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`.
2182
2196
  *
2183
2197
  * **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.
2184
2198
  */
2185
- const promoteObligations = (options) => (options.client ?? client_gen_1.client).post({
2199
+ const setCloseTarget = (options) => (options.client ?? client_gen_1.client).post({
2186
2200
  security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
2187
- url: '/extensions/roboledger/{graph_id}/operations/promote-obligations',
2201
+ url: '/extensions/roboledger/{graph_id}/operations/set-close-target',
2188
2202
  ...options,
2189
2203
  headers: {
2190
2204
  'Content-Type': 'application/json',
2191
2205
  ...options.headers
2192
2206
  }
2193
2207
  });
2194
- exports.promoteObligations = promoteObligations;
2208
+ exports.setCloseTarget = setCloseTarget;
2195
2209
  /**
2196
- * Rebuild Schedule In Place
2210
+ * Close Fiscal Period
2197
2211
  *
2198
- * 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.
2212
+ * 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).
2199
2213
  *
2200
2214
  * **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.
2201
2215
  */
2202
- const rebuildSchedule = (options) => (options.client ?? client_gen_1.client).post({
2216
+ const closePeriod = (options) => (options.client ?? client_gen_1.client).post({
2203
2217
  security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
2204
- url: '/extensions/roboledger/{graph_id}/operations/rebuild-schedule',
2218
+ url: '/extensions/roboledger/{graph_id}/operations/close-period',
2205
2219
  ...options,
2206
2220
  headers: {
2207
2221
  'Content-Type': 'application/json',
2208
2222
  ...options.headers
2209
2223
  }
2210
2224
  });
2211
- exports.rebuildSchedule = rebuildSchedule;
2225
+ exports.closePeriod = closePeriod;
2212
2226
  /**
2213
- * Terminate Schedule Early
2227
+ * Reopen Fiscal Period
2214
2228
  *
2215
- * 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.
2229
+ * 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).
2216
2230
  *
2217
2231
  * **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.
2218
2232
  */
2219
- const terminateSchedule = (options) => (options.client ?? client_gen_1.client).post({
2233
+ const reopenPeriod = (options) => (options.client ?? client_gen_1.client).post({
2220
2234
  security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
2221
- url: '/extensions/roboledger/{graph_id}/operations/terminate-schedule',
2235
+ url: '/extensions/roboledger/{graph_id}/operations/reopen-period',
2222
2236
  ...options,
2223
2237
  headers: {
2224
2238
  'Content-Type': 'application/json',
2225
2239
  ...options.headers
2226
2240
  }
2227
2241
  });
2228
- exports.terminateSchedule = terminateSchedule;
2242
+ exports.reopenPeriod = reopenPeriod;
2229
2243
  /**
2230
- * Set Close Target
2244
+ * Backfill Plan History
2231
2245
  *
2232
- * 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`.
2246
+ * 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.
2233
2247
  *
2234
2248
  * **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.
2235
2249
  */
2236
- const setCloseTarget = (options) => (options.client ?? client_gen_1.client).post({
2250
+ const backfillPlanHistory = (options) => (options.client ?? client_gen_1.client).post({
2237
2251
  security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
2238
- url: '/extensions/roboledger/{graph_id}/operations/set-close-target',
2252
+ url: '/extensions/roboledger/{graph_id}/operations/backfill-plan-history',
2239
2253
  ...options,
2240
2254
  headers: {
2241
2255
  'Content-Type': 'application/json',
2242
2256
  ...options.headers
2243
2257
  }
2244
2258
  });
2245
- exports.setCloseTarget = setCloseTarget;
2259
+ exports.backfillPlanHistory = backfillPlanHistory;
2246
2260
  /**
2247
- * Close Fiscal Period
2261
+ * Promote Due Schedule Obligations
2248
2262
  *
2249
- * 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).
2263
+ * 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.
2250
2264
  *
2251
2265
  * **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.
2252
2266
  */
2253
- const closePeriod = (options) => (options.client ?? client_gen_1.client).post({
2267
+ const promoteObligations = (options) => (options.client ?? client_gen_1.client).post({
2254
2268
  security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
2255
- url: '/extensions/roboledger/{graph_id}/operations/close-period',
2269
+ url: '/extensions/roboledger/{graph_id}/operations/promote-obligations',
2256
2270
  ...options,
2257
2271
  headers: {
2258
2272
  'Content-Type': 'application/json',
2259
2273
  ...options.headers
2260
2274
  }
2261
2275
  });
2262
- exports.closePeriod = closePeriod;
2276
+ exports.promoteObligations = promoteObligations;
2263
2277
  /**
2264
- * Reopen Fiscal Period
2278
+ * Rebuild Schedule In Place
2265
2279
  *
2266
- * 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).
2280
+ * 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.
2267
2281
  *
2268
2282
  * **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.
2269
2283
  */
2270
- const reopenPeriod = (options) => (options.client ?? client_gen_1.client).post({
2284
+ const rebuildSchedule = (options) => (options.client ?? client_gen_1.client).post({
2271
2285
  security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
2272
- url: '/extensions/roboledger/{graph_id}/operations/reopen-period',
2286
+ url: '/extensions/roboledger/{graph_id}/operations/rebuild-schedule',
2273
2287
  ...options,
2274
2288
  headers: {
2275
2289
  'Content-Type': 'application/json',
2276
2290
  ...options.headers
2277
2291
  }
2278
2292
  });
2279
- exports.reopenPeriod = reopenPeriod;
2293
+ exports.rebuildSchedule = rebuildSchedule;
2280
2294
  /**
2281
- * Backfill Plan History
2295
+ * Terminate Schedule Early
2282
2296
  *
2283
- * 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.
2297
+ * 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.
2284
2298
  *
2285
2299
  * **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.
2286
2300
  */
2287
- const backfillPlanHistory = (options) => (options.client ?? client_gen_1.client).post({
2301
+ const terminateSchedule = (options) => (options.client ?? client_gen_1.client).post({
2288
2302
  security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
2289
- url: '/extensions/roboledger/{graph_id}/operations/backfill-plan-history',
2303
+ url: '/extensions/roboledger/{graph_id}/operations/terminate-schedule',
2290
2304
  ...options,
2291
2305
  headers: {
2292
2306
  'Content-Type': 'application/json',
2293
2307
  ...options.headers
2294
2308
  }
2295
2309
  });
2296
- exports.backfillPlanHistory = backfillPlanHistory;
2310
+ exports.terminateSchedule = terminateSchedule;
2297
2311
  /**
2298
2312
  * Create Report
2299
2313
  *
@@ -2346,73 +2360,73 @@ const deleteReport = (options) => (options.client ?? client_gen_1.client).post({
2346
2360
  });
2347
2361
  exports.deleteReport = deleteReport;
2348
2362
  /**
2349
- * Share Report
2363
+ * File Report
2350
2364
  *
2351
- * 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`.
2365
+ * Transitions the Report's filing_status to 'filed' — locks the package. Allowed from 'draft' or 'under_review'. Stamps filed_at + filed_by.
2352
2366
  *
2353
2367
  * **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.
2354
2368
  */
2355
- const shareReport = (options) => (options.client ?? client_gen_1.client).post({
2369
+ const fileReport = (options) => (options.client ?? client_gen_1.client).post({
2356
2370
  security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
2357
- url: '/extensions/roboledger/{graph_id}/operations/share-report',
2371
+ url: '/extensions/roboledger/{graph_id}/operations/file-report',
2358
2372
  ...options,
2359
2373
  headers: {
2360
2374
  'Content-Type': 'application/json',
2361
2375
  ...options.headers
2362
2376
  }
2363
2377
  });
2364
- exports.shareReport = shareReport;
2378
+ exports.fileReport = fileReport;
2365
2379
  /**
2366
- * Revoke Report Share
2380
+ * Transition Filing Status
2367
2381
  *
2368
- * 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.
2382
+ * 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.
2369
2383
  *
2370
2384
  * **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.
2371
2385
  */
2372
- const revokeReportShare = (options) => (options.client ?? client_gen_1.client).post({
2386
+ const transitionFilingStatus = (options) => (options.client ?? client_gen_1.client).post({
2373
2387
  security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
2374
- url: '/extensions/roboledger/{graph_id}/operations/revoke-report-share',
2388
+ url: '/extensions/roboledger/{graph_id}/operations/transition-filing-status',
2375
2389
  ...options,
2376
2390
  headers: {
2377
2391
  'Content-Type': 'application/json',
2378
2392
  ...options.headers
2379
2393
  }
2380
2394
  });
2381
- exports.revokeReportShare = revokeReportShare;
2395
+ exports.transitionFilingStatus = transitionFilingStatus;
2382
2396
  /**
2383
- * File Report
2397
+ * Share Report
2384
2398
  *
2385
- * Transitions the Report's filing_status to 'filed' — locks the package. Allowed from 'draft' or 'under_review'. Stamps filed_at + filed_by.
2399
+ * 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`.
2386
2400
  *
2387
2401
  * **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.
2388
2402
  */
2389
- const fileReport = (options) => (options.client ?? client_gen_1.client).post({
2403
+ const shareReport = (options) => (options.client ?? client_gen_1.client).post({
2390
2404
  security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
2391
- url: '/extensions/roboledger/{graph_id}/operations/file-report',
2405
+ url: '/extensions/roboledger/{graph_id}/operations/share-report',
2392
2406
  ...options,
2393
2407
  headers: {
2394
2408
  'Content-Type': 'application/json',
2395
2409
  ...options.headers
2396
2410
  }
2397
2411
  });
2398
- exports.fileReport = fileReport;
2412
+ exports.shareReport = shareReport;
2399
2413
  /**
2400
- * Transition Filing Status
2414
+ * Revoke Report Share
2401
2415
  *
2402
- * 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.
2416
+ * 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.
2403
2417
  *
2404
2418
  * **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.
2405
2419
  */
2406
- const transitionFilingStatus = (options) => (options.client ?? client_gen_1.client).post({
2420
+ const revokeReportShare = (options) => (options.client ?? client_gen_1.client).post({
2407
2421
  security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
2408
- url: '/extensions/roboledger/{graph_id}/operations/transition-filing-status',
2422
+ url: '/extensions/roboledger/{graph_id}/operations/revoke-report-share',
2409
2423
  ...options,
2410
2424
  headers: {
2411
2425
  'Content-Type': 'application/json',
2412
2426
  ...options.headers
2413
2427
  }
2414
2428
  });
2415
- exports.transitionFilingStatus = transitionFilingStatus;
2429
+ exports.revokeReportShare = revokeReportShare;
2416
2430
  /**
2417
2431
  * Create Publish List
2418
2432
  *
@@ -2532,23 +2546,6 @@ const unblockSourceGraph = (options) => (options.client ?? client_gen_1.client).
2532
2546
  }
2533
2547
  });
2534
2548
  exports.unblockSourceGraph = unblockSourceGraph;
2535
- /**
2536
- * Live Financial Statement
2537
- *
2538
- * Generate an ad-hoc financial statement directly from the tenant's OLTP ledger data using the active CoA→GAAP mapping. This is the authoritative source for RoboLedger entity graphs — no graph materialization required. Rejected on shared-repository graphs; those should use `financial-statement-analysis` instead.
2539
- *
2540
- * **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.
2541
- */
2542
- const liveFinancialStatement = (options) => (options.client ?? client_gen_1.client).post({
2543
- security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
2544
- url: '/extensions/roboledger/{graph_id}/operations/live-financial-statement',
2545
- ...options,
2546
- headers: {
2547
- 'Content-Type': 'application/json',
2548
- ...options.headers
2549
- }
2550
- });
2551
- exports.liveFinancialStatement = liveFinancialStatement;
2552
2549
  /**
2553
2550
  * Build Fact Grid
2554
2551
  *
@@ -2617,6 +2614,23 @@ const informationBlock = (options) => (options.client ?? client_gen_1.client).po
2617
2614
  }
2618
2615
  });
2619
2616
  exports.informationBlock = informationBlock;
2617
+ /**
2618
+ * Live Financial Statement
2619
+ *
2620
+ * Generate an ad-hoc financial statement directly from the tenant's OLTP ledger data using the active CoA→GAAP mapping. This is the authoritative source for RoboLedger entity graphs — no graph materialization required. Rejected on shared-repository graphs; those should use `financial-statement-analysis` instead.
2621
+ *
2622
+ * **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.
2623
+ */
2624
+ const liveFinancialStatement = (options) => (options.client ?? client_gen_1.client).post({
2625
+ security: [{ name: 'X-API-Key', type: 'apiKey' }, { scheme: 'bearer', type: 'http' }],
2626
+ url: '/extensions/roboledger/{graph_id}/operations/live-financial-statement',
2627
+ ...options,
2628
+ headers: {
2629
+ 'Content-Type': 'application/json',
2630
+ ...options.headers
2631
+ }
2632
+ });
2633
+ exports.liveFinancialStatement = liveFinancialStatement;
2620
2634
  /**
2621
2635
  * Create Portfolio Block
2622
2636
  *