Quote Creation Workflow

⛔ Old “GRFQ” Workflow

Successful Quote Creation

  1. API Request Returns 200 OK with status: OPEN
  2. Event is sent to quote channel with kind: NEW
  3. Event is sent to quote_book channel with kind: ADDED

Error Quote Creation

  1. API Returns 400
  2. No Websockets Messages

✅ New “OB” Workflow

Successful Quote Creation

  1. API Request Returns 202 OK, including action_id field with status: PENDING
  2. Event is sent to quote channel with kind: NEW
  3. Event is sent to quote_book channel with kind: ADDED
  4. Event is sent to quote_status channel with matching action_id and success: true

Error Quote Creation - API Validations Fail

  1. API Returns 400

Error Quote Creation - Order Book Validations Fail

  1. API Request Returns 202 OK, including action_id field with status: PENDING
  2. Event is sent to quote channel with kind: CANCELED and status: CLOSED
  3. Event is sent to quote_status channel, with matching action_id, and success: false

No WebSocket message is sent with the details of the pending quote, these details are only returned in the API Response

💬 Sample Messages

  • [POST] /rfqs/{rfq_id}/quotes/ API Response, Pending Quote Creation

    {
    "id": "q_2YpMiJJRxTl6N66lGF5LOPsTdJY",
    "rfq_id": 50126520,
    "action_id": "538da55e-2617-418b-a60f-0fae2413ebdb",
    "client_order_id": "a823e52e-9238-4ca2-ac78-13ff96cdd732",
    "description": "Call 30 Nov 23 35000",
    "maker": "PDGM",
    "price": "0.053",
    "side": "BUY",
    "type": "LIMIT",
    "product_codes": [
    "DO"
    ],
    "created": 1701218193752.5461,
    "status": "PENDING"
    }
  • quote Channel, Successfully Created Quote

    {
    "jsonrpc": "2.0",
    "method": "subscription",
    "params": {
    "channel": "quote",
    "data": {
    "kind": "NEW",
    "quote": {
    "status": "OPEN",
    "side": "BUY",
    "maker": "JAMMN",
    "original_quantity": "25.3",
    "client_order_id": "d62f11b5-e7a7-42c4-b28f-bef368de2d22",
    "legacy_id": 72983001,
    "price": "0.053",
    "id": "q_2Ym0K4wTjVfLEkditbWH5tFQ9ZW",
    "legs": [
    {
    "side": "BUY",
    "price": "0.053"
    }
    ],
    "remaining_quantity": "25.3",
    "filled_quantity": "0",
    "rfq_id": 50126134,
    "product_codes": [
    "DO"
    ],
    "type": "LIMIT",
    "created": 1701115380798.1218,
    "last_activity": 1701115380856.506,
    "description": "Call 30 Nov 23 35000"
    }
    },
    "meta": {
    "seq_group": 605630333,
    "seq_num": 10
    }
    }
    }
  • quote_book Channel, Successfully Created Quote

    {
    "jsonrpc": "2.0",
    "method": "subscription",
    "params": {
    "channel": "quote_book",
    "data": {
    "kind": "ADDED",
    "quote": {
    "status": "OPEN",
    "side": "BUY",
    "legacy_id": 72983001,
    "price": "0.053",
    "created": 1701115380798.1218,
    "last_activity": 1701115380856.506,
    "id": "q_2Ym0K4wTjVfLEkditbWH5tFQ9ZW",
    "legs": [
    {
    "side": "BUY",
    "price": "0.053"
    }
    ],
    "remaining_quantity": "25.3",
    "rfq_id": 50126134
    }
    },
    "meta": {
    "seq_group": 80552588,
    "seq_num": 3324
    }
    }
    }
  • quote_status Channel, Successful API Request

    {
    "jsonrpc": "2.0",
    "method": "subscription",
    "params": {
    "channel": "quote_status",
    "data": {
    "action_id": "71561c1f-f43b-4fb0-abc5-d7dcfbc81b0c",
    "kind": "create",
    "success": true
    },
    "meta": {
    "seq_group": 4113064136,
    "seq_num": 3
    }
    }
    }
  • quote_status Channel, Error API Request

    {
    "jsonrpc": "2.0",
    "method": "subscription",
    "params": {
    "channel": "quote_status",
    "data": {
    "action_id": "71561c1f-f43b-4fb0-abc5-d7dcfbc81b0c",
    "kind": "create",
    "success": false,
    "error_code": 3303,
    "error_message": "Limit of 2 for BUY-side quote reached. Please cancel an active quote before submitting a new one."
    },
    "meta": {
    "seq_group": 4113064136,
    "seq_num": 3
    }
    }
    }