{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "MarketOrder",
  "description": "A MarketOrder is an order that is filled immediately upon creation using the current market price.",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "The Order's identifier, unique within the Order's Account.",
      "format": "The string representation of the OANDA-assigned OrderID. OANDA-assigned OrderIDs are positive integers, and are derived from the TransactionID of the Transaction that created the Order."
    },
    "createTime": {
      "type": "string",
      "description": "The time when the Order was created.",
      "format": "The RFC 3339 representation is a string conforming to https://tools.ietf.org/rfc/rfc3339.txt. The Unix representation is a string representing the number of seconds since the Unix Epoch (January 1st, 1970 at UTC). The value is a fractional number, where the fractional part represents a fraction of a second (up to nine decimal places)."
    },
    "state": {
      "type": "string",
      "description": "The current state of the Order.",
      "enum": [
        "PENDING",
        "FILLED",
        "TRIGGERED",
        "CANCELLED"
      ]
    },
    "clientExtensions": {
      "$ref": "#/definitions/ClientExtensions"
    },
    "type": {
      "type": "string",
      "description": "The type of the Order. Always set to \"MARKET\" for Market Orders.",
      "enum": [
        "MARKET",
        "LIMIT",
        "STOP",
        "MARKET_IF_TOUCHED",
        "TAKE_PROFIT",
        "STOP_LOSS",
        "TRAILING_STOP_LOSS",
        "FIXED_PRICE"
      ]
    },
    "instrument": {
      "type": "string",
      "description": "The Market Order's Instrument.",
      "format": "A string containing the base currency and quote currency delimited by a \"_\"."
    },
    "units": {
      "type": "string",
      "description": "The quantity requested to be filled by the Market Order. A posititive number of units results in a long Order, and a negative number of units results in a short Order.",
      "format": "A decimal number encoded as a string. The amount of precision provided depends on what the number represents."
    },
    "timeInForce": {
      "type": "string",
      "description": "The time-in-force requested for the Market Order. Restricted to FOK or IOC for a MarketOrder.",
      "enum": [
        "GTC",
        "GTD",
        "GFD",
        "FOK",
        "IOC"
      ]
    },
    "priceBound": {
      "type": "string",
      "description": "The worst price that the client is willing to have the Market Order filled at.",
      "format": "A decimal number encodes as a string. The amount of precision provided depends on the Instrument."
    },
    "positionFill": {
      "type": "string",
      "description": "Specification of how Positions in the Account are modified when the Order is filled.",
      "enum": [
        "OPEN_ONLY",
        "REDUCE_FIRST",
        "REDUCE_ONLY",
        "DEFAULT"
      ]
    },
    "tradeClose": {
      "$ref": "#/definitions/MarketOrderTradeClose"
    },
    "longPositionCloseout": {
      "$ref": "#/definitions/MarketOrderPositionCloseout"
    },
    "shortPositionCloseout": {
      "$ref": "#/definitions/MarketOrderPositionCloseout"
    },
    "marginCloseout": {
      "$ref": "#/definitions/MarketOrderMarginCloseout"
    },
    "delayedTradeClose": {
      "$ref": "#/definitions/MarketOrderDelayedTradeClose"
    },
    "takeProfitOnFill": {
      "$ref": "#/definitions/TakeProfitDetails"
    },
    "stopLossOnFill": {
      "$ref": "#/definitions/StopLossDetails"
    },
    "trailingStopLossOnFill": {
      "$ref": "#/definitions/TrailingStopLossDetails"
    },
    "tradeClientExtensions": {
      "$ref": "#/definitions/ClientExtensions"
    },
    "fillingTransactionID": {
      "type": "string",
      "description": "ID of the Transaction that filled this Order (only provided when the Order's state is FILLED)",
      "format": "String representation of the numerical OANDA-assigned TransactionID"
    },
    "filledTime": {
      "type": "string",
      "description": "Date/time when the Order was filled (only provided when the Order's state is FILLED)",
      "format": "The RFC 3339 representation is a string conforming to https://tools.ietf.org/rfc/rfc3339.txt. The Unix representation is a string representing the number of seconds since the Unix Epoch (January 1st, 1970 at UTC). The value is a fractional number, where the fractional part represents a fraction of a second (up to nine decimal places)."
    },
    "tradeOpenedID": {
      "type": "string",
      "description": "Trade ID of Trade opened when the Order was filled (only provided when the Order's state is FILLED and a Trade was opened as a result of the fill)",
      "format": "The string representation of the OANDA-assigned TradeID. OANDA-assigned TradeIDs are positive integers, and are derived from the TransactionID of the Transaction that opened the Trade."
    },
    "tradeReducedID": {
      "type": "string",
      "description": "Trade ID of Trade reduced when the Order was filled (only provided when the Order's state is FILLED and a Trade was reduced as a result of the fill)",
      "format": "The string representation of the OANDA-assigned TradeID. OANDA-assigned TradeIDs are positive integers, and are derived from the TransactionID of the Transaction that opened the Trade."
    },
    "tradeClosedIDs": {
      "type": "array",
      "description": "Trade IDs of Trades closed when the Order was filled (only provided when the Order's state is FILLED and one or more Trades were closed as a result of the fill)",
      "items": {
        "type": "string",
        "description": "The Trade's identifier, unique within the Trade's Account.",
        "format": "The string representation of the OANDA-assigned TradeID. OANDA-assigned TradeIDs are positive integers, and are derived from the TransactionID of the Transaction that opened the Trade."
      }
    },
    "cancellingTransactionID": {
      "type": "string",
      "description": "ID of the Transaction that cancelled the Order (only provided when the Order's state is CANCELLED)",
      "format": "String representation of the numerical OANDA-assigned TransactionID"
    },
    "cancelledTime": {
      "type": "string",
      "description": "Date/time when the Order was cancelled (only provided when the state of the Order is CANCELLED)",
      "format": "The RFC 3339 representation is a string conforming to https://tools.ietf.org/rfc/rfc3339.txt. The Unix representation is a string representing the number of seconds since the Unix Epoch (January 1st, 1970 at UTC). The value is a fractional number, where the fractional part represents a fraction of a second (up to nine decimal places)."
    }
  }
}