Delete Information Block
/extensions/roboledger/{graph_id}/operations/delete-information-blockPart of RoboLedger: Information Blocks.
Generic Information Block deletion entry. Returns a thin confirmation (deleted / structure_id / block_type / name). Block types whose Structures are library-seeded cannot be deleted per tenant and surface 501.
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.
Authentication
Authenticate in any one of these ways — not all of them:
- API key in the
X-API-Keyheader. - Bearer token in the
Authorizationheader.
Path parameters
| Name | Type | Description |
|---|---|---|
graph_idrequired | string | Graph Id Constraints: matches |
Header parameters
| Name | Type | Description |
|---|---|---|
Idempotency-Keyoptional | string | Idempotency-Key |
Request body
Required, application/json.
One of 4 shapes, chosen by block_type.
block_type = schedule
Delete-information-block body for block_type="schedule".
Carries a typed schedule delete payload — just the structure_id.
| Field | Type | Description | ||||||
|---|---|---|---|---|---|---|---|---|
block_typerequired | string | Discriminator value selecting this arm. | ||||||
payloadrequired | DeleteScheduleRequest | Schedule delete payload. DeleteScheduleRequest fields
|
block_type = rollforward
Delete-information-block body for block_type="rollforward".
Cascades through any synthetic facts produced by this block's filter evaluations. The underlying ledger LineItems are not touched.
| Field | Type | Description | ||||||
|---|---|---|---|---|---|---|---|---|
block_typerequired | string | Discriminator value selecting this arm. | ||||||
payloadrequired | DeleteRollforwardRequest | Rollforward delete payload. DeleteRollforwardRequest fields
|
block_type = forecast
Delete-information-block body for block_type="forecast".
Removes the scenario's entire parallel universe — the lever FactSet and every computed scenario FactSet. Actuals are never touched.
| Field | Type | Description | ||||||
|---|---|---|---|---|---|---|---|---|
block_typerequired | string | Discriminator value selecting this arm. | ||||||
payloadrequired | DeleteForecastRequest | Forecast delete payload. DeleteForecastRequest fields
|
block_type = balance_sheet, cash_flow_statement, comprehensive_income, equity_statement, income_statement, metric, reconciliation, regulatory_disclosure
Delete-information-block body for block types that don't yet have a typed delete path at the API boundary.
Statement-family blocks cannot be deleted per tenant (the underlying Report should be archived via the report APIs instead). Metric deletion is not yet implemented. Calls return HTTP 501.
| Field | Type | Description |
|---|---|---|
block_typerequired | string | Statement-family or metric block type. Deletion returns 501 — statements are library-seeded (archive the underlying Report instead); metric deletion is pending. One of: |
payloadoptional | object | Untyped payload — typed-arm validation is skipped because the dispatch handler raises 501 before the payload is consumed. |
Example request
curl -X POST "https://api.robosystems.ai/extensions/roboledger/{graph_id}/operations/delete-information-block" \
-H "X-API-Key: $ROBOSYSTEMS_API_KEY" \
-H "Idempotency-Key: <Idempotency-Key>" \
-H "Content-Type: application/json" \
-d '{
"block_type": "schedule",
"payload": {
"structure_id": "struct_depr_office_2026"
}
}'curl -X POST "https://api.robosystems.ai/extensions/roboledger/{graph_id}/operations/delete-information-block" \
-H "X-API-Key: $ROBOSYSTEMS_API_KEY" \
-H "Idempotency-Key: <Idempotency-Key>" \
-H "Content-Type: application/json" \
-d '{
"block_type": "rollforward",
"payload": {
"structure_id": "struct_rf_cash_2026"
}
}'curl -X POST "https://api.robosystems.ai/extensions/roboledger/{graph_id}/operations/delete-information-block" \
-H "X-API-Key: $ROBOSYSTEMS_API_KEY" \
-H "Idempotency-Key: <Idempotency-Key>" \
-H "Content-Type: application/json" \
-d '{
"block_type": "forecast",
"payload": {
"structure_id": "struct_fy26_budget"
}
}'Responses
200 Successful Response
| Field | Type | Description | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operationrequired | string | Kebab-case operation name | |||||||||||||||
operationIdrequired | string | op_-prefixed ULID for audit and SSE correlation | |||||||||||||||
statusrequired | string | Operation lifecycle state One of: | |||||||||||||||
resultoptional | DeleteInformationBlockResponse | Command-specific result payload DeleteInformationBlockResponse fields
| |||||||||||||||
atrequired | string | ISO-8601 UTC timestamp | |||||||||||||||
createdByoptional | string | User ID that initiated the operation | |||||||||||||||
idempotentReplayoptional | boolean | True when this envelope came from the idempotency cache — the underlying command did not execute again. False on fresh executions. Default: |
| Status | Meaning |
|---|---|
| 400 | Invalid request |
| 401 | Authentication required |
| 403 | Access denied |
| 404 | Resource not found |
| 409 | Idempotency-Key conflict — key reused with different body |
| 422 | Validation error |
| 429 | Rate limit exceeded |
| 500 | Internal server error |