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

Last updated