> For the complete documentation index, see [llms.txt](https://guide.ssi.com.vn/ssi-products/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://guide.ssi.com.vn/ssi-products/fastconnect-trading/streaming-data.md).

# Streaming data

## 1. Order Event

Realtime update of orders through streaming:

<table><thead><tr><th width="181.33333333333331">Field</th><th width="139">Type</th><th>Description</th></tr></thead><tbody><tr><td>type</td><td>string</td><td>orderEvent</td></tr><tr><td>uniqueID</td><td>string</td><td></td></tr><tr><td>prefix</td><td>string</td><td></td></tr><tr><td>ipAddress</td><td>string</td><td></td></tr><tr><td>notifyID</td><td>string</td><td></td></tr><tr><td>orderID</td><td>string</td><td></td></tr><tr><td>instrumentID</td><td>string</td><td></td></tr><tr><td>buySell</td><td>string</td><td><p>B: Buy</p><p>S: Sell</p></td></tr><tr><td>orderType</td><td>string</td><td>LO|ATO|ATC|MP|MTL|MOK|MAK|PLO</td></tr><tr><td>price</td><td>number</td><td></td></tr><tr><td>quantity</td><td>number</td><td></td></tr><tr><td>marketID</td><td>string</td><td><p> VN: cash market</p><p>VNFE: derivatives market</p></td></tr><tr><td>origRequestID</td><td>string</td><td></td></tr><tr><td>account</td><td>string</td><td></td></tr><tr><td>cancelQty</td><td>number</td><td></td></tr><tr><td>osqty</td><td>number</td><td></td></tr><tr><td>filledQty</td><td>number</td><td></td></tr><tr><td>avgPrice</td><td>number</td><td></td></tr><tr><td>channel</td><td>string</td><td></td></tr><tr><td>inputTime</td><td>string</td><td>Unixtime</td></tr><tr><td>modifiedTime</td><td>string</td><td>Unixtime</td></tr><tr><td>isForceSell</td><td>Boolean</td><td></td></tr><tr><td>orderStatus</td><td>Boolean</td><td><a href="/pages/41pq3aNlfuq4A9vRPxVT">Order status</a></td></tr><tr><td>origOrderID</td><td>string</td><td></td></tr><tr><td>rejectReason</td><td>string</td><td></td></tr><tr><td>stopOrder</td><td>string</td><td><p>True: conditional order </p><p>False: normal order</p></td></tr><tr><td>stopType</td><td>string</td><td></td></tr><tr><td>stopStep</td><td>number</td><td></td></tr><tr><td>stopPrice</td><td>number</td><td></td></tr><tr><td>profitPrice</td><td>number</td><td></td></tr></tbody></table>

**Sample**

*Successful order streaming*

{% tabs %}
{% tab title="Place order request" %}

```json
{ 
instrumentID: "SSI",
market: "VN",
buySell: "B",
orderType: "LO",
channelID: "IW",
price: 21000,
quantity: 300,
account: "0901351",
stopOrder: false,
stopPrice: 0,
stopType: "string",
stopStep: 0,
lossStep: 0,
profitStep: 0
requestID: "1678195",
code: “123456789”,
deviceID: "MAC Address",
userAgent: “FCTrading”
 }
```

{% endtab %}

{% tab title="Streaming orderEvent" %}

```json
{
"type":"orderEvent",
"data": {
"orderID":"12663204",
"notifyID":10, 
“instrumentID":"VN30F2106",
"uniqueID":"30304045",
"buySell":"B",
“orderType":"LO",
"ipAddress":"192.168.202.36",
"price":1410,"prefix":"2mw",
"quantity":10,
"marketID":"VNFE",
"origOrderId":"",
"account":"0901358",
"cancelQty":0,"osQty":10,
"filledQty":0,
"avgPrice":0,
"channel":"TA",
"inputTime":"1606277281849",
"modifiedTime":"1606277281850",
"isForceSell":"F",
"isShortSell":"F",
"orderStatus":"RS",
"rejectReason":"",
"origRequestID":"30304045",
"stopOrder":false,
"stopPrice":0,
"stopType":"",
"stopStep":0,
"profitPrice":0
}
}
```

{% endtab %}
{% endtabs %}

Unsuccessful order streaming

{% tabs %}
{% tab title="Place order request" %}

```json
{ 
instrumentID: "SSI",
market: "VN",
buySell: "B",
orderType: "LO",
channelID: "IW",
price: 1600,
quantity: 300,
account: "0901351",
stopOrder: false,
stopPrice: 0,
stopType: "string",
stopStep: 0,
lossStep: 0,
profitStep: 0
requestID: "1678195",
code: “123456789”,
deviceID: "MAC Address",
userAgent: “FCTrading”
 }
```

{% endtab %}

{% tab title="Streaming orderError" %}

```json
{
  "type": "orderError",
  "data": {
    "message": "Price 1,600.00 exceeds ceiling price 808.50!",
    "notifyID": 15455,
    "data": null,
    "errorCode": "ERR500",
    "uniqueID": "02365132",
    "connectionID": "",
    "ipAddress": "192.168.202.87",
    "prefix": "23o"
  }
}
```

{% endtab %}
{% endtabs %}

*Successful order amendment streaming*

{% tabs %}
{% tab title="Amend order request" %}

```json
{
requestID: "93235974",
orderID: "12658867",
price: 1410,
quantity: 2,
account: "0901358",
instrumentID: "VN30F2106",
marketID: "VNFE",
buySell: "B",
orderType: "LO"
code:”123456789”,
deviceID: "MAC Address",
userAgent: “FCTrading”
}son
```

{% endtab %}

{% tab title="Streaming orderEvent" %}

```json
{
"type":"orderEvent",
"data": {
"orderID":"12663204",
"notifyID":11,
"instrumentID":"VN30F2106",
"uniqueID":"31618366",
"buySell":"B",
"orderType":"LO",
"ipAddress":"192.168.202.36",
"price":1410,
"prefix":"2mw",
"quantity":2,
"marketID":"VNFE",
"origOrderId":"",
"account":"0901358",
"cancelQty":0,
"osQty":2,
"filledQty":0,
"avgPrice":0,
"channel":"TA",
"inputTime":"1606277281849",
"modifiedTime":"1606277330852",
"isForceSell":"F",
"isShortSell":"F",
"orderStatus":"RS",
"rejectReason":"",
"origRequestID":"30304045",
"stopOrder": false,
"stopPrice":0,
"stopType":"",
"stopStep":0,
"profitPrice":0
}
}
```

{% endtab %}
{% endtabs %}

Unsuccessful order amendment streaming

{% tabs %}
{% tab title="Amend request" %}

```json
{
requestID: "93235974",
orderID: "12658867",
price: 1000,
quantity: 2,
account: "0901358",
instrumentID: "VN30F2106",
marketID: "VNFE",
buySell: "B",
orderType: "LO"
code:”123456789”,
deviceID: "MAC Address",
userAgent: “FCTrading”
}
```

{% endtab %}

{% tab title="Streaming orderError" %}

```json
{
  "type": "orderError",
  "data": {
    "message": "Price 1,000.00 exceeds ceiling price 808.50!",
    "notifyID": 15460,
    "data": null,
    "errorCode": "ERR500",
    "uniqueID": "65896571",
    "connectionID": "",
    "ipAddress": "192.168.202.87",
    "prefix": "23o"
  }
}
```

{% endtab %}
{% endtabs %}

*Successful order cancellation streaming*

{% tabs %}
{% tab title="Cancel request" %}

```json
{
orderID: "12658867",
account: "0901358",
marketID: "VNFE",
instrumentID: "VN30F2106",
buySell: "B",
requestID: "52513603"
code:”123456789”,
deviceID: "MAC Address",
userAgent: “FCTrading”
}
```

{% endtab %}

{% tab title="Streaming orderEvent" %}

```json
{
"type":"orderEvent",
"data": {
"orderID":"12663204",
"notifyID":12,
"instrumentID":"VN30F2106",
"uniqueID":"59028516",
"buySell":"B",
"orderType":"LO",
"ipAddress":"192.168.202.36",
"price":1410
,"prefix":"2mw",
"quantity":2,
"marketID":"VNFE",
"origOrderId":"",
"account":"0901358",
"cancelQty":2,
"osQty":0,
"filledQty":0,
"avgPrice":0,
"channel":"TA",
"inputTime":"1606277281849",
"modifiedTime":"1606277330861",
"isForceSell":"F",
"isShortSell":"F",
"orderStatus":"CL",
"rejectReason":"",
"origRequestID":"30304045",
"stopOrder": false,
"stopPrice":0,
"stopType":"",
"stopStep":0,
"profitPrice":0
}
}
```

{% endtab %}
{% endtabs %}

Unsuccessful order cancellation streaming

{% tabs %}
{% tab title="Cancel request" %}

```json
{
orderID: "12658867",
account: "0901358",
marketID: "VNFE",
instrumentID: "VN30F2106",
buySell: "B",
requestID: "52513603"
code:”123456789”,
deviceID: "MAC Address",
userAgent: “FCTrading”
}
```

{% endtab %}

{% tab title="Streaming orderError" %}

```json
{
  "type": "orderError",
  "data": {
    "message": "Invalid Order Transition Error!",
    "notifyID": 15468,
    "data": null,
    "errorCode": "ERR500",
    "uniqueID": "25162310",
    "ipAddress": ":",
    "192.168.202.87": ",",
    "prefix": ":",
    "23o": "}}"
  }
}
```

{% endtab %}
{% endtabs %}

## 2. OrderError

To notify if an instruction (place/amend/cancel) has error. &#x20;

<table><thead><tr><th width="179.33333333333331">Field</th><th width="155">Type</th><th>Description</th></tr></thead><tbody><tr><td>type</td><td>string</td><td>orderError</td></tr><tr><td>data</td><td> </td><td></td></tr><tr><td>Detail of data</td><td></td><td></td></tr><tr><td>uniqueid</td><td>string</td><td></td></tr><tr><td>ipaddress</td><td>string</td><td></td></tr><tr><td>notifyID</td><td>string</td><td></td></tr><tr><td>errorCode</td><td>string</td><td></td></tr><tr><td>message</td><td>string</td><td></td></tr><tr><td>orderID</td><td>string</td><td></td></tr><tr><td>instrumentID</td><td>string</td><td></td></tr><tr><td>buySell</td><td>string</td><td></td></tr><tr><td></td><td></td><td></td></tr><tr><td>prefix</td><td>string</td><td> </td></tr><tr><td>orderType</td><td>string</td><td></td></tr><tr><td>price</td><td>number</td><td></td></tr><tr><td>quantity</td><td>number</td><td></td></tr><tr><td>marketID</td><td>string</td><td></td></tr><tr><td>origOrderID</td><td>string</td><td> </td></tr><tr><td>account</td><td>string</td><td></td></tr><tr><td>channel</td><td>string</td><td></td></tr><tr><td>inputTime</td><td>string</td><td></td></tr><tr><td>modifiedTime</td><td>string</td><td></td></tr><tr><td>isForceSell</td><td>Boolean</td><td></td></tr><tr><td>isShortSell</td><td>Boolean</td><td></td></tr><tr><td>origRequestID</td><td>string</td><td> </td></tr><tr><td>stopOrder</td><td>string</td><td></td></tr><tr><td>stopPrice</td><td>number</td><td> </td></tr><tr><td>stopType</td><td>string</td><td></td></tr><tr><td>stopStep</td><td>number</td><td> </td></tr><tr><td>profitPrice</td><td>number</td><td> </td></tr><tr><td>modifiable</td><td>string</td><td> </td></tr><tr><td>note</td><td>string</td><td></td></tr></tbody></table>

**Sample**

```json
{
  "type": "orderError",
  "data": {
    "message": "This channel has been block; disallow to place order ",
    "notifyID": 0,
    "errorCode": "ORD015",
    "uniqueID": "6163422",
    "orderID": "T20230504w3806163422",
    "instrumentID": "SSI",
    "ipAddress": "10.255.241.47",
    "buySell": "B",
    "prefix": "w38",
    "orderType": "LO",
    "price": 19600,
    "quantity": 200,
    "marketID": "VN",
    "origOrderId": "T20230504w3806163422",
    "account": "0322206",
    "channel": "TA",
    "inputTime": "1683165600160",
    "modifiedTime": "1683165600161",
    "isForceSell": "F",
    "isShortSell": "F",
    "origRequestID": "6163422",
    "stopOrder": false,
    "stopPrice": 0,
    "stopType": "",
    "stopStep": 0,
    "profitPrice": 0,
    "modifiable": false,
    "note": ""
  }
}
```

## 3. Order Match Event

To notify of matched deal:&#x20;

<table><thead><tr><th width="182">Field</th><th width="160">Type</th><th width="282">Description</th></tr></thead><tbody><tr><td>type</td><td>string</td><td>orderMatchEvent</td></tr><tr><td>data</td><td> </td><td></td></tr><tr><td>orderID</td><td>string</td><td></td></tr><tr><td>instrumentID</td><td>string</td><td></td></tr><tr><td>ipAddress</td><td>string</td><td></td></tr><tr><td>uniqueID</td><td> string</td><td></td></tr><tr><td>notifyid</td><td>string</td><td></td></tr><tr><td>buySell</td><td>string</td><td> </td></tr><tr><td>matchPrice</td><td>number</td><td> </td></tr><tr><td>matchQty</td><td>number</td><td> </td></tr><tr><td>prefix</td><td>string</td><td> </td></tr><tr><td>account</td><td>string</td><td></td></tr><tr><td>matchTime</td><td>string</td><td> </td></tr></tbody></table>

**Sample**

```json
{
  "type": "orderMatchEvent",
  "data": {
    "orderID": "16201867",
    "notifyID": 101180,
    "instrumentID": "BVS",
    "uniqueID": "24194396",
    "buySell": "B",
    "matchPrice": 1000,
    "ipAddress": "10.48.41.16",
    "matchQty": 100,
    "prefix": "t4c",
    "account": "1184411",
    "matchTime": "1656665019000"
  }
}
```

## 4. Derivatives position

To notify realtime open and close position for derivatives account. &#x20;

<table><thead><tr><th width="177.33333333333331">Field</th><th width="121">Type</th><th>Description</th></tr></thead><tbody><tr><td>type</td><td>string</td><td>clientPortfolioEvent</td></tr><tr><td>uniqueid</td><td>string</td><td> </td></tr><tr><td>connectionid</td><td>string</td><td> </td></tr><tr><td>ipaddress</td><td>string</td><td></td></tr><tr><td>notifyid</td><td>string</td><td></td></tr><tr><td>account</td><td> string</td><td></td></tr><tr><td>marketid</td><td>string</td><td></td></tr><tr><td>instrumentid</td><td>string</td><td></td></tr><tr><td>longqty</td><td>number</td><td></td></tr><tr><td>shortqty</td><td>number</td><td></td></tr><tr><td>Net</td><td>number</td><td></td></tr><tr><td>bidavgprice</td><td>number</td><td></td></tr><tr><td>askavgprice</td><td>number</td><td></td></tr><tr><td>tradeprice</td><td>number</td><td></td></tr><tr><td>marketprice</td><td>number</td><td></td></tr><tr><td>floatingpl</td><td>number</td><td></td></tr><tr><td>tradingpl</td><td>number</td><td></td></tr></tbody></table>

**Sample**&#x20;

```json
{
  "type": "clientPortfolioEvent",
  "data": {
    "account": "0901358",
    "notifyID": 27,
    "data": null,
    "clientPortfoliosOpen": [
      {
        "martketID": "VNFE",
        "instrumentID": "VN30F2106",
        "longQty": 9,
        "shortQty": 0,
        "net": 9,
        "bidAvgPrice": 1402.4000244140625,
        "askAvgPrice": 0,
        "tradePrice": 0,
        "marketPrice": 873,
        "floatingPL": -476460000,
        "tradingPL": 0
      },
      {
        "martketID": "VNFE",
        "instrumentID": "VN30F2107",
        "longQty": 2,
        "shortQty": 0,
        "net": 2,
        "bidAvgPrice": 830,
        "askAvgPrice": 0,
        "tradePrice": 0,
        "marketPrice": 830,
        "floatingPL": 0,
        "tradingPL": 0
      }
    ],
    "uniqueID": null,
    "clientPortfoliosClose": null,
    "connectionID": "",
    "ipAddress": null,
    "prefix": null
  }
}
```
