Hi , Say i place a limit order successfully . The status of the order is now "OPEN". I place a modify request on the same order . in that case - a) the modify request is accepted , but if the modify request fails at the backend check (or exchange) , what would be the status of the order when i retrieve the order details ? b) if the modify request is accepted , then response will provide a new order-id or the original order-id will continue ?
Let me add more description to the intent of (a) question - the original order was "healthy" for execution and hence is in OPEN status . Only the modification failed , so the original order is still "healthy" for execution . So in this case , the status will reflect the latest failed status of the modification (i.e REJECTED) or the actual "still healthy" status (i.e OPEN). The corollary to the question would be , since there are no separate fields in response to known the "modification status" and the "order status " , how do you diffirentiate the case of (LATEST MODIFICATION OK , ORDER STATUS OPEN FOR EXECUTION) versus (LATEST MODIFICATION FAILED, ORDER STATUS OPEN FOR EXECUTION (i.e with old values) ) scenerios.
Once a modify request is received an order status changes as follows for successful modification PUT ORDER RECEIVED > VALIDATION PENDING > MODIFIED > OPEN PENDING > OPEN. For a modification failed scenario it will something like this, PUT ORDER RECEIVED > VALIDATION PENDING > NOT MODIFIED > OPEN PENDING > OPEN. In this case, you can see that there will be rejection status message in the order details. The above statutes are representational, for exact status change chain you can modify and fetch an order history as mentioned here.
Thanks @Sujith. 1)in that case, given that order status could change fast enough that I would see a OPEN status before and after failed modification . If I dont want to fetch order history and rely only on order detail, one way is to compare the actual values that was intended to be changed to confirm the modification. Is that understanding correct? (I dont want rely on websocket updates either bcos it can be missed due to network issues)
2) the response to modification and cancellation request will have the same orderid as the original orderid. Is this correct?
the original order was "healthy" for execution and hence is in OPEN status . Only the modification failed , so the original order is still "healthy" for execution . So in this case , the status will reflect the latest failed status of the modification (i.e REJECTED) or the actual "still healthy" status (i.e OPEN).
The corollary to the question would be , since there are no separate fields in response to known the "modification status" and the "order status " , how do you diffirentiate the case of (LATEST MODIFICATION OK , ORDER STATUS OPEN FOR EXECUTION) versus (LATEST MODIFICATION FAILED, ORDER STATUS OPEN FOR EXECUTION (i.e with old values) ) scenerios.
For a modification failed scenario it will something like this, PUT ORDER RECEIVED > VALIDATION PENDING > NOT MODIFIED > OPEN PENDING > OPEN. In this case, you can see that there will be rejection status message in the order details.
The above statutes are representational, for exact status change chain you can modify and fetch an order history as mentioned here.
2) the response to modification and cancellation request will have the same orderid as the original orderid. Is this correct?
Yes, you can check for values that were supposed to be changed and also check for status_message.
Yes, once an order is created in the system it's number won't change.