# Polychart

Polychart collaboration APIs (reference-only).

`client.polychart` wraps collaborative chart-layer RPCs: market/inbox reads, snapshots, subscribe tokens, share links, publish/unpublish, revisioned layer/drawing mutations, and layer subscriptions.

## Methods

| Group         | Methods                                                                                             |
| ------------- | --------------------------------------------------------------------------------------------------- |
| Discovery     | `get_market_layers`, `list_inbox_market_layers`, `get_layer_snapshot`, `get_layer_subscribe_tokens` |
| Share links   | `resolve_layer_share_token`, `create_layer_share_link`, `revoke_layer_share_link`                   |
| Publishing    | `list_owner_published_layers`, `publish_layer`, `unpublish_layer`                                   |
| Layer data    | `upsert_layer`, `delete_layer`, `upsert_drawing`, `delete_drawing`                                  |
| Subscriptions | `set_layer_subscriptions`                                                                           |

```python
layers = await client.polychart.get_market_layers(engine_symbol_id=1)
snapshot = await client.polychart.get_layer_snapshot(
    layer={"engine_symbol_id": 1, "layer_id": "..."},
)
```

Methods accept keyword arguments plus raw dict-shaped Protobuf data for layer/drawing identities and return `ApiData`. Mutation methods that accept `expected_revision` must use the latest revision from a read. `AUTH_REVISION_CONFLICT` is a state conflict, re-read and reconcile rather than blindly retrying. Most results are `ApiData` forward-compatible trees.

This collaboration surface is not required for trading and is not a supported production API-key workflow. It may require JWT/session auth or be unmounted on a deployment. Use the TypeScript app/session client for interactive chart collaboration.

Keep chart failures isolated from order placement, cancellation, and risk loops.
