---
title: "Revoke Report Share"
method: POST
path: "/extensions/roboledger/{graph_id}/operations/revoke-report-share"
tags: ["RoboLedger: Report Distribution"]
---

# Revoke Report Share

`POST /extensions/roboledger/{graph_id}/operations/revoke-report-share`

## Request

- Base URL: `https://api.robosystems.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.robosystems.ai/extensions/roboledger/{graph_id}/operations/revoke-report-share`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

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.

**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.

## Path parameters

- `graph_id` string, required

## Headers

- `Idempotency-Key` string, nullable

## Request body

- RevokeReportShareOperation: Withdraw a shared Report from one recipient graph.
  - `target_graph_id` string, required: Recipient graph whose copy should be withdrawn.
  - `report_id` string, required: The Report whose share to withdraw.

## Response `200`

Successful Response

- OperationEnvelopeRevokeReportShareResponse
  - `operation` string, required: Kebab-case operation name
  - `operationId` string, required: op_-prefixed ULID for audit and SSE correlation
  - `status` 'completed' | 'pending' | 'failed', required: Operation lifecycle state
  - `result` RevokeReportShareResponse: Outcome of withdrawing a shared report from one recipient.
    - `report_id` string, required: The report whose share was revoked.
    - `target_graph_id` string, required: Recipient the copy was pulled from.
    - `revoked_at` string, date-time, required: When the share was revoked.
    - `copy_deleted` boolean, required: True when a copy was found and deleted in the recipient's schema. False when the recipient had already deleted it themselves — the share is still marked revoked.
  - `at` string, required: ISO-8601 UTC timestamp
  - `createdBy` string, nullable: User ID that initiated the operation
  - `idempotentReplay` boolean: True when this envelope came from the idempotency cache — the underlying command did not execute again. False on fresh executions.

## Other responses

- `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

---

[API](https://skmtc.dev/robosystems/apis/robosystems-api.md) · [All operations](https://skmtc.dev/robosystems/apis/robosystems-api/llms.txt) · [OpenAPI document](https://skmtc.dev/robosystems/apis/robosystems-api/revisions/28ffd375c457?raw)
