> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.paradigm.co/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.paradigm.co/_mcp/server.

# Enums & Explanations

There are six resources present through the DRFQv2 API. They are the *Instrument*, *RFQ*, *Order*, *RFQ Orders*, *Trade*, and *Trade Tape* resources.

Users are able to engage with Paradigm via the *RESToverHTTP* and *JSON-RPCoverWebSockets* interfaces.

Resources have a `state` attribute which denotes the status or availability of the object.

The *JSON-RPCoverWebSockets* interface publishes messages which include an `event` key to help communicate what update the message is referring too.

### *Instrument*

This information is available from the *RESToverHTTP* inferface, but not the *JSON-RPCoverWebSockets* interface.

Valid `state` values include `ACTIVE`, `EXPIRED`.

There are no valid `event` values as there is no corresponding WebSockets Notifications channel.

*Instrument* objects with the following `state` values, mean the following things to users:

* An *Instrument* is instantiated as `ACTIVE` when made available to trade by Paradigm.
* An *Instrument* becomes `EXPIRED` when it reaches settlement or is no longer available to trade upon Paradigm.

The *Instrument* `state` enums can only transition from `ACTIVE` -> `EXPIRED`.

### *RFQ*

This information is available from both the *RESToverHTTP* and the *JSON-RPCoverWebSockets* interfaces.

Valid `state` values include `OPEN`, `CLOSED`.

Valid `event` values include `ADDED`, `REMOVED`.

*RFQ* objects with the following `state` values, mean the following things to users:

* An *RFQ* is instantiated as `OPEN` when it is available to be actioned by users.
* An *RFQ* becomes `CLOSED` when it is no longer actionable by any user.

Published via the `rfqs` *JSON-RPCoverWebSockets* notifications channel, `event` values mean the following to users:

* `ADDED` indicates a new RFQ is available to be actioned.
* `REMOVED` indicates an existing RFQ is no longer available to be actioned.

### *Order*

This information is available from both the *RESToverHTTP* and the *JSON-RPCoverWebSockets* interfaces.

Users are strongly encouraged to use the `quantity`, `pending_fill_quantity`, `canceled_quantity`, `filled_quantity` attributes of an Order to be certain of the value at risk.

Valid `state` values include `PENDING`, `OPEN`, `CLOSED`.

Valid `event` values include `NEW`, `CANCELED`, `PENDING_FILL`, `FILLED`.

*Order* objects with the following `state` values, mean the following things to users:

* An *Order* is instantiated as `PENDING` when it is being processed by the Paradigm matching engine.
* An *Order* becomes `OPEN` when it is available to be actioned by users.
* An *Order* becomes `CLOSED` when it is no longer actionable by any user.

Published via the `orders` *JSON-RPCoverWebSockets* notifications channel, `event` values mean the following to users:

* `NEW` indicates a new order is available to be actioned by the user.
* `CANCELED` indicates an existing order has been canceled by the user or is apart of a trade rejection.
* `PENDING_FILL` indicates an order is in the process of being cleared as apart of a trade by the underlying settlement venue.
* `FILLED` indicates an order's quantity has been completed filled and there is no more available amount to trade.

### *RFQ Orders*

This information is available from both the *RESToverHTTP* and the *JSON-RPCoverWebSockets* interfaces.

There are no valid `state` values as the *RFQ Orders* resource solely communicates actionable *Maker* Orders to the *Taker*.

Valid `event` values include `ADDED`, `REMOVED`, `UPDATED`.

Published via the `rfq_orders` *JSON-RPCoverWebSockets* notifications channel, `event` values mean the following to users:

* `ADDED` indicates a new Order upon an RFQ is available to be actioned.
* `REMOVED` indicates an existing Order upon an RFQ is no longer available to be actioned.
* `UPDATED` indicates an existing Order upon an RFQ has had an attribute updated.

### *Trade*

This information is available from both the *RESToverHTTP* and the *JSON-RPCoverWebSockets* interfaces.

Valid `state` values include `PENDING_SETTLEMENT`, `FILLED`, `REJECTED`.

Valid `event` values include `PENDING_SETTLEMENT`, `FILLED`, `REJECTED`.

*Trade* objects with the following `state` values, mean the following things to users:

* A *Trade* is instantiated as `PENDING_SETTLEMENT` when it is being cleared by the underlying settlement venue.
* A *Trade* becomes as `FILLED` when it is has reached settlement finality and has been successfully cleared by underlying settlement venue.
* A *Trade* becomes `REJECTED` when it is has reached settlement finality and has been rejected at clearing by underlying settlement venue.

Published via the `trades` *JSON-RPCoverWebSockets* notifications channel, `event` values mean the following to users:

* `PENDING_SETTLEMENT` indicates a trade is being cleared by the underlying settlement venue.
* `FILLED` indicates a trade has reached settlement finality and has been successfully cleared by the underlying settlement venue.
* `REJECTED` indicates a trade has reached settlement finality and has been rejected at clearing by the underlying settlement venue.

### *Trade Tape*

This information is available from both the *RESToverHTTP* and the *JSON-RPCoverWebSockets* interfaces.

Valid `state` values include `FILLED`.

Valid `event` values include `FILLED`.

*Trade Tape* objects with the following `state` values, mean the following things to users:

* A *Trade Tape* is instantiated as `FILLED` given it has reached settlement finality and been successfully cleared by the underlying settlement venue.

Published via the `trade_tape` *JSON-RPCoverWebSockets* notifications channel, `event` values mean the following to users:

* `FILLED` indicates a trade has reached settlement finality and been successfully cleared by the underlying settlement venue.