Quote Cancel Workflow

⛔ Old “GRFQ” Workflow

Successful Quote Cancellation

  1. API Request Returns 204 OK, no Response Body

  2. Event is sent to quote channel with kind: CANCELED

  3. Event is sent to quote_book channel with kind: REMOVED

Error Quote Cancellation

  1. API Returns 400

  2. No Websockets Messages

✅ New “OB” Workflow

Successful Quote Cancellation

  1. API Request Returns 202 OK, including action_id field with status: PENDING

  2. Event is sent to quote channel with kind: CANCELED

  3. Event is sent to quote_book channel with kind: REMOVED

  4. Event is sent to quote_status channel with matching action_id and success: true

Error Quote Cancellation - Quote Unavailable

  1. API Returns HTTP 400, Error 3308 "Unavailable Quote"

  2. No Websockets Messages

Error Quote Cancellation - Too Late to Cancel (Fails API Validation)

  1. API Returns HTTP 400, Error 3306 "Too late to cancel"

  2. No Websockets Messages

Error Quote Cancellation - Too Late to Cancel (API validation success, fails OrderBook Validation)

  1. API Returns HTTP 202 Accepted

  2. Event is sent to quote_status WebSocket Channel with Error 3306 "Too late to cancel"

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

💬 Sample Messages

  • [DELETE] /quotes/{quote_id}/ API Response, Pending Quote Cancellation

    {
      "action_id": "7a27eaf2-fbb0-4163-8d23-e1a571df13cc"
    }
  • quote Channel, Successfully Cancelled Quote

    {
      "jsonrpc": "2.0",
      "method": "subscription",
      "params": {
        "channel": "quote",
        "data": {
          "kind": "CANCELED",
          "quote": {
            "side": "BUY",
            "status": "CLOSED",
            "maker": "PARA0",
            "product_codes": [
              "DO"
            ],
            "remaining_quantity": "25.3",
            "created": 1701395244088.892,
            "last_activity": 1701395290853.689,
            "legs": [
              {
                "side": "BUY",
                "price": "0.053"
              }
            ],
            "price": "0.053",
            "description": "Call  15 Dec 23  35000",
            "original_quantity": "25.3",
            "type": "LIMIT",
            "legacy_id": 50070251,
            "filled_quantity": "0",
            "id": "q_2Yv9ZpWB3Xg5tqClUyMx6Esjdlh",
            "rfq_id": 50000631,
            "client_order_id": "bcbb0fdf-3af6-4db7-9b04-00b133f3f803"
          }
        },
        "meta": {
          "seq_group": 2490988106,
          "seq_num": 12
        }
      }
    }
  • quote_book Channel, Successfully Cancelled Quote

    {
      "jsonrpc": "2.0",
      "method": "subscription",
      "params": {
        "channel": "quote_book",
        "data": {
          "kind": "REMOVED",
          "quote": {
            "legs": [
              {
                "side": "BUY",
                "price": "0.053"
              }
            ],
            "remaining_quantity": "25.3",
            "price": "0.053",
            "side": "BUY",
            "status": "CLOSED",
            "legacy_id": 50070251,
            "id": "q_2Yv9ZpWB3Xg5tqClUyMx6Esjdlh",
            "rfq_id": 50000631,
            "created": 1701395244088.892,
            "last_activity": 1701395290853.689
          }
        },
        "meta": {
          "seq_group": 80552588,
          "seq_num": 459
        }
      }
    }
  • quote_status Channel, Successful API Request

    {
      "jsonrpc": "2.0",
      "method": "subscription",
      "params": {
        "channel": "quote_status",
        "data": {
          "action_id": "4ce0a024-712b-4431-83a5-db28460c82c7",
          "kind": "cancel",
          "success": true
        },
        "meta": {
          "seq_group": 768255716,
          "seq_num": 6
        }
      }
    }

Last updated