# Trade model: EditStrategy

This page describes the FX Integration API's **EditStrategy** trade model, as defined in the file `config/TradingAdapter/Blade/DataSource/etc/trademodels.xml` in the FX Integration API Kit.

This documentation is for the FX Integration API 12.10.0.

Trade models are XML-defined state machines used by the [Java Trading API](https://docs.caplin.com/developer/api/trading_java/latest/) and Caplin Trader's [Trading API](../caplin-trader/4/trading-api/index.md) to manage trading workflows. For more information on trade model XML definitions, see the [Trade model XML schema](../caplin-platform/cis/cis-trade-model-schema.md) reference.

## State model

The EditStrategy trade model's state model in Mermaid JS format:

```mermaid
%% State diagram for the EditStrategy trade model
stateDiagram-v2
    [*] --> Initial
    Initial --> EditOpenSent : EditOpen (client)
    EditOpenSent --> Error : Error (server)
    EditOpenSent --> EditPending : EditOpenAck (server)
    Error --> [*] 
    EditPending --> Error : Error (server)
    EditPending --> Editable : EditAccept (server)
    EditPending --> ClientCloseSent : ClientClose (client)
    Editable --> Error : Error (server)
    Editable --> Editable : Refresh (server)
    Editable --> Saving : Save (client)
    Editable --> ClientCloseSent : ClientClose (client)
    Saving --> Complete : SaveAndComplete (server)
    Saving --> Editable : SaveAccept (server)
    Saving --> Error : Error (server)
    Saving --> Editable : ValidationError (server)
    Complete --> [*] 
    ClientCloseSent --> ClientClosed : ClientCloseAck (server)
    ClientClosed --> [*] 
```

The EditStrategy trade model's state model in a flat state-transition matrix:

| Source state | Event trigger | Origin | Target state |
| ------------ | ------------- | ------ | ------------ |
| [*] | - | - | Initial |
| Initial | EditOpen | client | EditOpenSent |
| EditOpenSent | Error | server | Error |
| EditOpenSent | EditOpenAck | server | EditPending |
| Error | - | - | [*] |
| EditPending | Error | server | Error |
| EditPending | EditAccept | server | Editable |
| EditPending | ClientClose | client | ClientCloseSent |
| Editable | Error | server | Error |
| Editable | Refresh | server | Editable |
| Editable | Save | client | Saving |
| Editable | ClientClose | client | ClientCloseSent |
| Saving | SaveAndComplete | server | Complete |
| Saving | SaveAccept | server | Editable |
| Saving | Error | server | Error |
| Saving | ValidationError | server | Editable |
| Complete | - | - | [*] |
| ClientCloseSent | ClientCloseAck | server | ClientClosed |
| ClientClosed | - | - | [*] |

## Event message specifications

This section describes the messages sent between client and server when a state-model event occurs. The origin of an event (the client or the server) is specified in brackets after the name of the event.

The specification of some events depends on the type of financial product being traded, and when this applies, the variant specifications are detailed under level-4 headings.

Back-end developers build server events by using classes in the Caplin's FX Integration API, a Java library that makes it easy to provide data to Caplin's web applications. Where appropriate, the specifications below include references to JavaDoc documentation and code examples.

### Event: EditOpen (client)

Message specification:

```json
{
  "trade_model_name": "EditStrategy",
  "trade_model_trigger": "EditOpen",
  "message_origin": "client",
  "fields": [
    {
      "name": "MsgType",
      "type": "String",
      "flags": "",
      "definition": "Name of the transition",
      "example_value": "EditOpen",
      "deprecated": false
    },
    {
      "name": "RequestID",
      "type": "String",
      "flags": "",
      "definition": "The RequestID. A Unique identifier, must remain the same for each event in the trade model",
      "example_value": "",
      "deprecated": false
    },
    {
      "name": "TradingSubProtocol",
      "type": "string",
      "flags": "",
      "definition": "This field is used to indicate to the back end that the user is requesting a trade with Sales functionality.",
      "example_value": "SALES_RFS",
      "deprecated": false
    },
    {
      "name": "OrderID",
      "type": "string",
      "flags": "",
      "definition": "The id of the order.",
      "example_value": "000012345",
      "deprecated": false
    },
    {
      "name": "AppID",
      "type": "",
      "flags": "",
      "definition": "A unique identifier for the client application",
      "example_value": "",
      "deprecated": false
    }
  ]
}
```

### Event: Save (client)

Message specification:

```json
{
  "trade_model_name": "EditStrategy",
  "trade_model_trigger": "Save",
  "message_origin": "client",
  "parts": [
    {
      "part_name": "OrderDetails",
      "parts": [
        {
          "part_name": "LegDetails",
          "fields": [
            {
              "name": "Ln_OrderID",
              "type": "string",
              "flags": "",
              "definition": "The id of the order.",
              "example_value": "000012345",
              "deprecated": false
            },
            {
              "name": "Ln_Amount",
              "type": "decimal",
              "flags": "",
              "definition": "The amount of a trade or order in the DealtCurrency.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_MonitorSide",
              "type": "string",
              "flags": "",
              "definition": "The side that should be monitored for an order to be triggered.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_DealtCurrency",
              "type": "string",
              "flags": "",
              "definition": "The currency of the Amount of a trade or order.",
              "example_value": "GBP",
              "deprecated": false
            },
            {
              "name": "Ln_BuySell",
              "type": "string",
              "flags": "",
              "definition": "The direction of the trade or trade leg, from the client's perspective. This always refers to the BaseCurrency, NOT the DealtCurrency.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_ExecutionType",
              "type": "string",
              "flags": "",
              "definition": "The order type. Caplin supported types are [BENCHMARK, CALL-ORDER, MARKET, PEGGED, STOP-LOSS, TAKE-PROFIT]",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_BenchmarkType",
              "type": "string",
              "flags": "",
              "definition": "The benchmark order name. For example, ECB.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_BenchmarkDate",
              "type": "date",
              "flags": "",
              "definition": "The fixing date of the benchmark in ISO-8601 format",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_BenchmarkTime",
              "type": "time",
              "flags": "",
              "definition": "The fixing time of the benchmark in ISO-8601 format",
              "example_value": "18:00",
              "deprecated": false
            },
            {
              "name": "Ln_BenchmarkTimeZone",
              "type": "timezone",
              "flags": "",
              "definition": "The TZ format timezone for the provided time and date",
              "example_value": "Europe/London",
              "deprecated": false
            },
            {
              "name": "Ln_LimitPrice",
              "type": "decimal",
              "flags": "",
              "definition": "The price at which a leg should fill.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_Margin",
              "type": "decimal",
              "flags": "",
              "definition": "The amount of margin",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_Remarks",
              "type": "string",
              "flags": "",
              "definition": "The text content of a comment left on a leg of a trade or order, visible to Client and sales and possibly the trader, set/edited by Client or sales",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_TraderRemarks",
              "type": "string",
              "flags": "",
              "definition": "The sale's comments on an order leg - visible to only the Trader and sales, set/edited only by the sales",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_ChildLegId",
              "type": "integer",
              "flags": "",
              "definition": "The id of the child leg, if the order has a child leg",
              "example_value": "1",
              "deprecated": false
            },
            {
              "name": "Ln_ChildRelationship",
              "type": "string",
              "flags": "",
              "definition": "Describes the relationship with the child if it exists.",
              "example_value": "IF-DONE",
              "deprecated": false
            },
            {
              "name": "Ln_PartnerLegId",
              "type": "integer",
              "flags": "",
              "definition": "The id of the partner leg, if the order has a partner leg",
              "example_value": "1",
              "deprecated": false
            },
            {
              "name": "Ln_PartnerRelationship",
              "type": "string",
              "flags": "",
              "definition": "Describes the relationship with the partner leg if it exists.",
              "example_value": "OCO",
              "deprecated": false
            },
            {
              "name": "Ln_LoopLegId",
              "type": "integer",
              "flags": "",
              "definition": "The leg to loop back to upon completion.",
              "example_value": "1",
              "deprecated": false
            },
            {
              "name": "Ln_AllowPartialFill",
              "type": "boolean",
              "flags": "",
              "definition": "Indicates whether the order leg can be partially filled",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_FillMode",
              "type": "",
              "flags": "",
              "definition": "The permitted fill types for this leg, e.g. ANY, MANUAL or AUTO",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_Trigger",
              "type": "string",
              "flags": "",
              "definition": "The trigger type for the order",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_FillRate",
              "type": "string",
              "flags": "",
              "definition": "",
              "example_value": "",
              "deprecated": true
            },
            {
              "name": "Ln_Discretion",
              "type": "decimal",
              "flags": "",
              "definition": "Number of points the trader has discretion to fill the order",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_OrderTenor",
              "type": "string",
              "flags": "",
              "definition": "The tenor the order will settle on for Forward and NDF orders. Either OrderTenor or OrderSettlementDate should be provided but not both.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_OrderSettlementDate",
              "type": "date",
              "flags": "",
              "definition": "The settlement date the order will settle on for Forward and NDF orders. Either OrderTenor or OrderSettlementDate should be provided but not both.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_OrderFixingDate",
              "type": "date",
              "flags": "",
              "definition": "The date an NDF order will fix on if filled.",
              "example_value": "",
              "deprecated": false
            }
          ]
        }
      ],
      "fields": [
        {
          "name": "CurrencyPair",
          "type": "string",
          "flags": "",
          "definition": "The currency pair for the trade. For example, EURUSD",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Account",
          "type": "string",
          "flags": "",
          "definition": "The account a trade or order has been submitted against. The format is <description>|<name> or <name>|<name>",
          "example_value": "Garfields|GARF",
          "deprecated": false
        },
        {
          "name": "ActivationType",
          "type": "string",
          "flags": "",
          "definition": "How the order should be activated. Caplin supported statuses are [GFA, EXPLICIT]",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "ActivationDateTime",
          "type": "datetime",
          "flags": "",
          "definition": "The time and date the order will become active. This is in ISO-8601 format.",
          "example_value": "2013-07-24T17:13:59.985",
          "deprecated": false
        },
        {
          "name": "ActivationDisplayTimeZone",
          "type": "timezone",
          "flags": "",
          "definition": "The timezone that the activation time and date should be formatted to for display. This is in the TZ database format.",
          "example_value": "Europe/London",
          "deprecated": false
        },
        {
          "name": "ExpirationType",
          "type": "string",
          "flags": "",
          "definition": "How the order should be deactivated. Caplin supported statuses are [IOC, GTC, GFD, FOK, EXPLICIT]",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "ExpirationDateTime",
          "type": "datetime",
          "flags": "",
          "definition": "The time and date the order will be deactivated. This is in ISO-8601 format.",
          "example_value": "2013-07-24T17:13:59.985",
          "deprecated": false
        },
        {
          "name": "ExpirationDisplayTimeZone",
          "type": "timezone",
          "flags": "",
          "definition": "The timezone that the expiration time and date should be formatted to for display. This is in the TZ database format.",
          "example_value": "Europe/London",
          "deprecated": false
        },
        {
          "name": "AlertType",
          "type": "string",
          "flags": "",
          "definition": "The type of alert that an order will send. Caplin supported statuses are [EMAIL, SMS].",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "EntityId",
          "type": "string",
          "flags": "",
          "definition": "The entity the trade is on behalf of. For example, if the logged in user user1@customer.co.za wishes to make a trade on behalf of entity CUSTONE, then the value of this field will be CUSTONE. If this field is absent on a leg then the default entity should be presumed.",
          "example_value": "CUSTONE",
          "deprecated": false
        },
        {
          "name": "TOBOUser",
          "type": "string",
          "flags": "",
          "definition": "The user the trade is on behalf of. For example, if the logged in user dealer1@novobank.co.za wishes to make a trade on behalf of user client@customer.co.za, then the value of this field will be client@customer.co.za.",
          "example_value": "client@customer.co.za",
          "deprecated": false
        },
        {
          "name": "StrategyType",
          "type": "string",
          "flags": "",
          "definition": "The strategy the order was submitted with. This field should not be used by the front end for structuring orders. Comma separated list of Caplin supported values are [SINGLE, IF-DONE-OCO, OCO, IF-DONE, IF-TIMEOUT, IF-DONE-LOOP, LOOP]. OTHER denotes a strategy type that is unsupported.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AppID",
          "type": "",
          "flags": "",
          "definition": "A unique identifier for the client application",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertPhoneNumber1",
          "type": "string",
          "flags": "",
          "definition": "Phone number that should be called when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertPhoneNumber2",
          "type": "string",
          "flags": "",
          "definition": "Phone number that should be called when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertPhoneNumber3",
          "type": "string",
          "flags": "",
          "definition": "Phone number that should be called when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertPhoneNumber4",
          "type": "string",
          "flags": "",
          "definition": "Phone number that should be called when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertPhoneNumber5",
          "type": "string",
          "flags": "",
          "definition": "Phone number that should be called when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertPhoneNumber6",
          "type": "string",
          "flags": "",
          "definition": "Phone number that should be called when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertPhoneNumber7",
          "type": "string",
          "flags": "",
          "definition": "Phone number that should be called when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertPhoneNumber8",
          "type": "string",
          "flags": "",
          "definition": "Phone number that should be called when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertPhoneNumber9",
          "type": "string",
          "flags": "",
          "definition": "Phone number that should be called when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertPhoneNumber10",
          "type": "string",
          "flags": "",
          "definition": "Phone number that should be called when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertEmailAddress1",
          "type": "string",
          "flags": "",
          "definition": "Email address that should be mailed when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertEmailAddress2",
          "type": "string",
          "flags": "",
          "definition": "Email address that should be mailed when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertEmailAddress3",
          "type": "string",
          "flags": "",
          "definition": "Email address that should be mailed when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertEmailAddress4",
          "type": "string",
          "flags": "",
          "definition": "Email address that should be mailed when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertEmailAddress5",
          "type": "string",
          "flags": "",
          "definition": "Email address that should be mailed when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertEmailAddress6",
          "type": "string",
          "flags": "",
          "definition": "Email address that should be mailed when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertEmailAddress7",
          "type": "string",
          "flags": "",
          "definition": "Email address that should be mailed when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertEmailAddress8",
          "type": "string",
          "flags": "",
          "definition": "Email address that should be mailed when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertEmailAddress9",
          "type": "string",
          "flags": "",
          "definition": "Email address that should be mailed when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertEmailAddress10",
          "type": "string",
          "flags": "",
          "definition": "Email address that should be mailed when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "FixingSource",
          "type": "string",
          "flags": "",
          "definition": "Specifies where the fixing rate comes from.",
          "example_value": "WMR 8am London Time",
          "deprecated": false
        },
        {
          "name": "SettlementCurrency",
          "type": "string",
          "flags": "",
          "definition": "A currency for of settlement instruction",
          "example_value": "GBP",
          "deprecated": false
        },
        {
          "name": "Duration",
          "type": "",
          "flags": "",
          "definition": "The duration of the TWAP strategy in ISO-8601 format, e.g. PT5M",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "NumberOfSlices",
          "type": "",
          "flags": "",
          "definition": "The number of slices the strategy should release over its lifetime",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "SliceAmountVariance",
          "type": "",
          "flags": "",
          "definition": "The allowed variance of each slice. For example, an amount of 10,000 over 2 slices with a variance of 0.5 (50%) means the slice sizes will be in the range 2,500 to 7,500 (10,000/2 * (1 ± 0.5))",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "ActivationDate",
          "type": "string",
          "flags": "",
          "definition": "What date the strategy should be activated.",
          "example_value": "",
          "deprecated": true
        },
        {
          "name": "ActivationTime",
          "type": "string",
          "flags": "",
          "definition": "What time the strategy should be activated if the ActivationDate was in the format of yyyymmdd.",
          "example_value": "",
          "deprecated": true
        },
        {
          "name": "ActivationLocation",
          "type": "string",
          "flags": "",
          "definition": "When location should be used to evaluate the time to activate if the ActivationDate was in the format of yyyymmdd.",
          "example_value": "Europe/London",
          "deprecated": true
        },
        {
          "name": "ActivationUTCOffset",
          "type": "string",
          "flags": "",
          "definition": "",
          "example_value": "",
          "deprecated": true
        },
        {
          "name": "ExpirationDate",
          "type": "string",
          "flags": "",
          "definition": "What date the strategy should expire.",
          "example_value": "",
          "deprecated": true
        },
        {
          "name": "ExpirationTime",
          "type": "string",
          "flags": "",
          "definition": "What time the strategy should be activated if the ExpirationDate was in the format of yyyymmdd.",
          "example_value": "",
          "deprecated": true
        },
        {
          "name": "ExpirationLocation",
          "type": "string",
          "flags": "",
          "definition": "When location should be used to evaluate the time to expire if the ExpirationDate was in the format of yyyymmdd.",
          "example_value": "",
          "deprecated": true
        },
        {
          "name": "ExpirationUTCOffset",
          "type": "string",
          "flags": "",
          "definition": "",
          "example_value": "",
          "deprecated": true
        }
      ]
    }
  ],
  "fields": [
    {
      "name": "MsgType",
      "type": "String",
      "flags": "",
      "definition": "Name of the transition",
      "example_value": "Save",
      "deprecated": false
    },
    {
      "name": "RequestID",
      "type": "String",
      "flags": "",
      "definition": "The RequestID. A Unique identifier, must remain the same for each event in the trade model",
      "example_value": "",
      "deprecated": false
    }
  ]
}
```

### Event: ClientClose (client)

Message specification:

```json
{
  "trade_model_name": "EditStrategy",
  "trade_model_trigger": "ClientClose",
  "message_origin": "client",
  "fields": [
    {
      "name": "MsgType",
      "type": "String",
      "flags": "",
      "definition": "Name of the transition",
      "example_value": "ClientClose",
      "deprecated": false
    },
    {
      "name": "RequestID",
      "type": "String",
      "flags": "",
      "definition": "The RequestID. A Unique identifier, must remain the same for each event in the trade model",
      "example_value": "",
      "deprecated": false
    }
  ]
}
```


### Event: ClientCloseAck (server)

Message specification:

```json
{
  "trade_model_name": "EditStrategy",
  "trade_model_trigger": "ClientCloseAck",
  "message_origin": "server"
}
```

### Event: EditAccept (server)

The EditAccept event is polymorphic. When building an EditAccept event message, choose the specification appropriate to the client's web application (Caplin FX Professional or Caplin FX Sales).

#### Caplin FX Professional

Message specification:

```json
{
  "trade_model_name": "EditStrategy",
  "trade_model_trigger": "EditAccept",
  "message_origin": "server",
  "java_class": "com.caplin.generated.motif.fx.orders.OrderDetailsTypesDef.OrderDetails",
  "javadoc": "https://docs.caplin.com/developer/api/fxintegration/com/caplin/generated/motif/fx/orders/OrderDetailsTypesDef.OrderDetails.html",
  "instantiation_pattern": "Builder (via .newBuilder())",
  "code_example": "https://docs.caplin.com/developer/api/fxintegration/latest/com/caplin/examples/fxapi/generated/motif/fx/orders/OrderDetailsTypesDef/OrderDetailsExample.html",
  "parts": [
    {
      "part_name": "CommonFields",
      "java_class": "com.caplin.generated.motif.fx.orders.OrderDetailsPartsDef.CommonFields",
      "javadoc": "https://docs.caplin.com/developer/api/fxintegration/com/caplin/generated/motif/fx/orders/OrderDetailsPartsDef.CommonFields.html",
      "fields": [
        {
          "name": "CurrencyPair",
          "type": "string",
          "flags": "Editable",
          "definition": "The currency pair for the trade. For example, EURUSD",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Account",
          "type": "string",
          "flags": "Editable",
          "definition": "The account a trade or order has been submitted against. The format is <description>|<name> or <name>|<name>",
          "example_value": "Garfields|GARF",
          "deprecated": false
        },
        {
          "name": "AllowedActions",
          "type": "string",
          "flags": "",
          "definition": "Comma separated list of Caplin supported values. See the constants defined within com.caplin.motif.fx.orders.AllowedActions",
          "example_value": "View,AuditTrail,Cancel,Deactivate,Duplicate,Edit",
          "deprecated": false
        },
        {
          "name": "ActivationType",
          "type": "string",
          "flags": "Editable",
          "definition": "How the order should be activated. Caplin supported statuses are [GFA, EXPLICIT]",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "ActivationDateTime",
          "type": "datetime",
          "flags": "Editable",
          "definition": "The time and date the order will become active. This is in ISO-8601 format.",
          "example_value": "2013-07-24T17:13:59.985",
          "deprecated": false
        },
        {
          "name": "ActivationDisplayTimeZone",
          "type": "timezone",
          "flags": "Editable",
          "definition": "The timezone that the activation time and date should be formatted to for display. This is in the TZ database format.",
          "example_value": "Europe/London",
          "deprecated": false
        },
        {
          "name": "ExpirationType",
          "type": "string",
          "flags": "Editable",
          "definition": "How the order should be deactivated. Caplin supported statuses are [IOC, GTC, GFD, FOK, EXPLICIT]",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "ExpirationDateTime",
          "type": "datetime",
          "flags": "Editable",
          "definition": "The time and date the order will be deactivated. This is in ISO-8601 format.",
          "example_value": "2013-07-24T17:13:59.985",
          "deprecated": false
        },
        {
          "name": "ExpirationDisplayTimeZone",
          "type": "timezone",
          "flags": "Editable",
          "definition": "The timezone that the expiration time and date should be formatted to for display. This is in the TZ database format.",
          "example_value": "Europe/London",
          "deprecated": false
        },
        {
          "name": "AlertType",
          "type": "string",
          "flags": "Editable",
          "definition": "The type of alert that an order will send. Caplin supported statuses are [EMAIL, SMS].",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "StrategyID",
          "type": "string",
          "flags": "",
          "definition": "The strategy Id of the order.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "StrategyType",
          "type": "string",
          "flags": "Editable",
          "definition": "The strategy the order was submitted with. This field should not be used by the front end for structuring orders. Comma separated list of Caplin supported values are [SINGLE, IF-DONE-OCO, OCO, IF-DONE, IF-TIMEOUT, IF-DONE-LOOP, LOOP]. OTHER denotes a strategy type that is unsupported.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "TraderUsername",
          "type": "string",
          "flags": "",
          "definition": "The user who entered the trade. This may be on behalf of themselves, or on behalf of someone else. For example, if the logged in user dealer1@novobank.co.za wishes to make a trade on behalf of user client@customer.co.za, then the value of this field will be dealer1@novobank.co.za. If the user client@customer.co.za makes a trade on behalf of themselves it will be client@customer.co.za.",
          "example_value": "sales_trader@novobank.co.za",
          "deprecated": false
        },
        {
          "name": "TOBOUser",
          "type": "string",
          "flags": "Editable",
          "definition": "The user the trade is on behalf of. For example, if the logged in user dealer1@novobank.co.za wishes to make a trade on behalf of user client@customer.co.za, then the value of this field will be client@customer.co.za.",
          "example_value": "client@customer.co.za",
          "deprecated": false
        },
        {
          "name": "FullName",
          "type": "string",
          "flags": "",
          "definition": "The full name of the user the trade is on behalf of",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "EntityId",
          "type": "string",
          "flags": "",
          "definition": "The entity the trade is on behalf of. For example, if the logged in user user1@customer.co.za wishes to make a trade on behalf of entity CUSTONE, then the value of this field will be CUSTONE. If this field is absent on a leg then the default entity should be presumed.",
          "example_value": "CUSTONE",
          "deprecated": false
        },
        {
          "name": "EntityDescription",
          "type": "string",
          "flags": "",
          "definition": "The description of a trade on behalf of entity.",
          "example_value": "Customer 1",
          "deprecated": false
        },
        {
          "name": "OrderCount",
          "type": "integer",
          "flags": "",
          "definition": "",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "OrderID",
          "type": "string",
          "flags": "",
          "definition": "The id of the order.",
          "example_value": "000012345",
          "deprecated": false
        },
        {
          "name": "ActivationDate",
          "type": "string",
          "flags": "Editable",
          "definition": "What date the strategy should be activated.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "ActivationTime",
          "type": "string",
          "flags": "Editable",
          "definition": "What time the strategy should be activated if the ActivationDate was in the format of yyyymmdd.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "ActivationLocation",
          "type": "string",
          "flags": "Editable",
          "definition": "When location should be used to evaluate the time to activate if the ActivationDate was in the format of yyyymmdd.",
          "example_value": "Europe/London",
          "deprecated": false
        },
        {
          "name": "ActivationUTCOffset",
          "type": "string",
          "flags": "Editable",
          "definition": "",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "ExpirationDate",
          "type": "string",
          "flags": "Editable",
          "definition": "What date the strategy should expire.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "ExpirationTime",
          "type": "string",
          "flags": "Editable",
          "definition": "What time the strategy should be activated if the ExpirationDate was in the format of yyyymmdd.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "ExpirationLocation",
          "type": "string",
          "flags": "Editable",
          "definition": "When location should be used to evaluate the time to expire if the ExpirationDate was in the format of yyyymmdd.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "ExpirationUTCOffset",
          "type": "string",
          "flags": "Editable",
          "definition": "",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Temperature",
          "type": "string",
          "flags": "",
          "definition": "Shows how close an Order is to its trigger point at the leg level. Shows the maximum of the leg temperatures at the common level [1=cold,2=warm,3=hot,4=very hot,5=target rate reached].",
          "example_value": "2",
          "deprecated": false
        },
        {
          "name": "SubmittedDateTime",
          "type": "datetime",
          "flags": "",
          "definition": "The time and date a trade or order was submitted",
          "example_value": "2023-04-19T11:09:45.00Z",
          "deprecated": false
        },
        {
          "name": "FixingSource",
          "type": "string",
          "flags": "",
          "definition": "Specifies where the fixing rate comes from.",
          "example_value": "WMR 8am London Time",
          "deprecated": false
        },
        {
          "name": "SettlementCurrency",
          "type": "string",
          "flags": "",
          "definition": "A currency for of settlement instruction",
          "example_value": "GBP",
          "deprecated": false
        },
        {
          "name": "Tags",
          "type": "string",
          "flags": "",
          "definition": "Tags for a trade (see also `com.caplin.motif.fx.config.DefaultTag`) or order (see also `com.caplin.motif.fx.orders.DefaultOrderTag`).",
          "example_value": "method={'import':'static com.caplin.motif.fx.config.definitions.common.Tag','name':'Arrays.asList'}",
          "deprecated": false
        },
        {
          "name": "OrderRateDPS",
          "type": "integer",
          "flags": "",
          "definition": "The precision to use for order rate information.",
          "example_value": "5",
          "deprecated": false
        }
      ]
    },
    {
      "part_name": "AlertFields",
      "java_class": "com.caplin.generated.motif.fx.orders.OrderDetailsPartsDef.AlertFields",
      "javadoc": "https://docs.caplin.com/developer/api/fxintegration/com/caplin/generated/motif/fx/orders/OrderDetailsPartsDef.AlertFields.html",
      "fields": [
        {
          "name": "AlertPhoneNumber1",
          "type": "string",
          "flags": "Editable",
          "definition": "Phone number that should be called when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertPhoneNumber2",
          "type": "string",
          "flags": "Editable",
          "definition": "Phone number that should be called when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertPhoneNumber3",
          "type": "string",
          "flags": "Editable",
          "definition": "Phone number that should be called when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertPhoneNumber4",
          "type": "string",
          "flags": "Editable",
          "definition": "Phone number that should be called when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertPhoneNumber5",
          "type": "string",
          "flags": "Editable",
          "definition": "Phone number that should be called when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertPhoneNumber6",
          "type": "string",
          "flags": "Editable",
          "definition": "Phone number that should be called when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertPhoneNumber7",
          "type": "string",
          "flags": "Editable",
          "definition": "Phone number that should be called when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertPhoneNumber8",
          "type": "string",
          "flags": "Editable",
          "definition": "Phone number that should be called when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertPhoneNumber9",
          "type": "string",
          "flags": "Editable",
          "definition": "Phone number that should be called when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertPhoneNumber10",
          "type": "string",
          "flags": "Editable",
          "definition": "Phone number that should be called when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertEmailAddress1",
          "type": "string",
          "flags": "Editable",
          "definition": "Email address that should be mailed when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertEmailAddress2",
          "type": "string",
          "flags": "Editable",
          "definition": "Email address that should be mailed when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertEmailAddress3",
          "type": "string",
          "flags": "Editable",
          "definition": "Email address that should be mailed when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertEmailAddress4",
          "type": "string",
          "flags": "Editable",
          "definition": "Email address that should be mailed when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertEmailAddress5",
          "type": "string",
          "flags": "Editable",
          "definition": "Email address that should be mailed when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertEmailAddress6",
          "type": "string",
          "flags": "Editable",
          "definition": "Email address that should be mailed when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertEmailAddress7",
          "type": "string",
          "flags": "Editable",
          "definition": "Email address that should be mailed when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertEmailAddress8",
          "type": "string",
          "flags": "Editable",
          "definition": "Email address that should be mailed when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertEmailAddress9",
          "type": "string",
          "flags": "Editable",
          "definition": "Email address that should be mailed when an order event occurs",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "AlertEmailAddress10",
          "type": "string",
          "flags": "Editable",
          "definition": "Email address that should be mailed when an order event occurs",
          "example_value": "",
          "deprecated": false
        }
      ]
    },
    {
      "part_name": "LegFields",
      "java_class": "com.caplin.generated.motif.fx.orders.OrderDetailsPartsDef.LegFields",
      "javadoc": "https://docs.caplin.com/developer/api/fxintegration/com/caplin/generated/motif/fx/orders/OrderDetailsPartsDef.LegFields.html",
      "fields": [
        {
          "name": "Ln_Editable",
          "type": "boolean",
          "flags": "",
          "definition": "Whether a trade or order is editable.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Ln_OrderID",
          "type": "string",
          "flags": "",
          "definition": "The id of the order.",
          "example_value": "000012345",
          "deprecated": false
        },
        {
          "name": "Ln_Status",
          "type": "string",
          "flags": "",
          "definition": "Status of the trade. Frontends may use this value for display purpose, but no logic is associated with it. Use Can* flags to drive post-trade logic.",
          "example_value": "Completed",
          "deprecated": false
        },
        {
          "name": "Ln_OrderStatus",
          "type": "string",
          "flags": "",
          "definition": "Caplin supported statuses are [PENDING-ACCEPT, PENDING-ACTIVATION, PENDING-CONFIRMATION, ACTIVE, PARENT-ACTIVE, PENDING-DEACTIVATION, DEACTIVATED, EXPIRED, COMPLETED, REJECTED, PENDING-CANCEL, CANCELLED, CANCELLED-BY-PARTNER]",
          "example_value": "ACTIVE",
          "deprecated": false
        },
        {
          "name": "Ln_SubmittedDateTime",
          "type": "datetime",
          "flags": "",
          "definition": "The time and date a trade or order was submitted",
          "example_value": "2023-04-19T11:09:45.00Z",
          "deprecated": false
        },
        {
          "name": "Ln_LastActionBy",
          "type": "string",
          "flags": "",
          "definition": "The last person or system to perform an action on an order.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Ln_LastActionDateTime",
          "type": "datetime",
          "flags": "",
          "definition": "The time and date of the last action on an order.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Ln_Amount",
          "type": "decimal",
          "flags": "Editable",
          "definition": "The amount of a trade or order in the DealtCurrency.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Ln_Filled",
          "type": "decimal",
          "flags": "",
          "definition": "The amount of an order that has been filled.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Ln_Remaining",
          "type": "decimal",
          "flags": "",
          "definition": "The amount of an order that has not been filled.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Ln_MonitorSide",
          "type": "string",
          "flags": "Editable",
          "definition": "The side that should be monitored for an order to be triggered.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Ln_DealtCurrency",
          "type": "string",
          "flags": "Editable",
          "definition": "The currency of the Amount of a trade or order.",
          "example_value": "GBP",
          "deprecated": false
        },
        {
          "name": "Ln_BuySell",
          "type": "string",
          "flags": "Editable",
          "definition": "The direction of the trade or trade leg, from the client's perspective. This always refers to the BaseCurrency, NOT the DealtCurrency.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Ln_ExecutionType",
          "type": "string",
          "flags": "Editable",
          "definition": "The order type. Caplin supported types are [BENCHMARK, CALL-ORDER, MARKET, PEGGED, STOP-LOSS, TAKE-PROFIT]",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Ln_BenchmarkType",
          "type": "string",
          "flags": "Editable",
          "definition": "The benchmark order name. For example, ECB.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Ln_BenchmarkTime",
          "type": "time",
          "flags": "Editable",
          "definition": "The fixing time of the benchmark in ISO-8601 format",
          "example_value": "18:00",
          "deprecated": false
        },
        {
          "name": "Ln_BenchmarkDate",
          "type": "date",
          "flags": "Editable",
          "definition": "The fixing date of the benchmark in ISO-8601 format",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Ln_BenchmarkTimeZone",
          "type": "timezone",
          "flags": "Editable",
          "definition": "The TZ format timezone for the provided time and date",
          "example_value": "Europe/London",
          "deprecated": false
        },
        {
          "name": "Ln_LimitPrice",
          "type": "decimal",
          "flags": "Editable",
          "definition": "The price at which a leg should fill.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Ln_Remarks",
          "type": "string",
          "flags": "Editable",
          "definition": "The text content of a comment left on a leg of a trade or order, visible to Client and sales and possibly the trader, set/edited by Client or sales",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Ln_ChildLegId",
          "type": "integer",
          "flags": "Editable",
          "definition": "The id of the child leg, if the order has a child leg",
          "example_value": "1",
          "deprecated": false
        },
        {
          "name": "Ln_ChildRelationship",
          "type": "string",
          "flags": "Editable",
          "definition": "Describes the relationship with the child if it exists.",
          "example_value": "IF-DONE",
          "deprecated": false
        },
        {
          "name": "Ln_PartnerLegId",
          "type": "integer",
          "flags": "Editable",
          "definition": "The id of the partner leg, if the order has a partner leg",
          "example_value": "1",
          "deprecated": false
        },
        {
          "name": "Ln_PartnerRelationship",
          "type": "string",
          "flags": "Editable",
          "definition": "Describes the relationship with the partner leg if it exists.",
          "example_value": "OCO",
          "deprecated": false
        },
        {
          "name": "Ln_LoopLegId",
          "type": "integer",
          "flags": "Editable",
          "definition": "The leg to loop back to upon completion.",
          "example_value": "1",
          "deprecated": false
        },
        {
          "name": "Ln_FillRate",
          "type": "string",
          "flags": "Editable",
          "definition": "",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Ln_OrderTenor",
          "type": "string",
          "flags": "Editable",
          "definition": "The tenor the order will settle on for Forward and NDF orders. Either OrderTenor or OrderSettlementDate should be provided but not both.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Ln_OrderSettlementDate",
          "type": "date",
          "flags": "Editable",
          "definition": "The settlement date the order will settle on for Forward and NDF orders. Either OrderTenor or OrderSettlementDate should be provided but not both.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Ln_OrderFixingDate",
          "type": "date",
          "flags": "",
          "definition": "The date an NDF order will fix on if filled.",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Ln_Temperature",
          "type": "string",
          "flags": "",
          "definition": "Shows how close an Order is to its trigger point at the leg level. Shows the maximum of the leg temperatures at the common level [1=cold,2=warm,3=hot,4=very hot,5=target rate reached].",
          "example_value": "2",
          "deprecated": false
        },
        {
          "name": "Ln_FilledRate",
          "type": "decimal",
          "flags": "",
          "definition": "The rate at which an order has been filled.",
          "example_value": "123.012345",
          "deprecated": false
        },
        {
          "name": "Ln_OrderType",
          "type": "string",
          "flags": "",
          "definition": "The order execution type. Caplin supported types are TAKE-PROFIT, STOP-LOSS, CALL-ORDER, MARKET, BENCHMARK, MARKET, PEGGED.",
          "example_value": "TAKE-PROFIT, STOP-LOSS",
          "deprecated": false
        },
        {
          "name": "Ln_FillID",
          "type": "string",
          "flags": "",
          "definition": "The Trade ID of the trade created when an order is fully filled by a single fill.",
          "example_value": "00001561",
          "deprecated": false
        },
        {
          "name": "Ln_Trigger",
          "type": "string",
          "flags": "",
          "definition": "The trigger type for the order",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Ln_SettlementDate",
          "type": "string",
          "flags": "",
          "definition": "The date on which the two currencies in the FX trade are exchanged. Can be a tenor or a broken date, i.e. SPOT or 20160314.",
          "example_value": "20160314",
          "deprecated": false
        },
        {
          "name": "Ln_AllowPartialFill",
          "type": "boolean",
          "flags": "",
          "definition": "Indicates whether the order leg can be partially filled",
          "example_value": "",
          "deprecated": false
        }
      ]
    }
  ]
}
```

Java class: [com.caplin.generated.motif.fx.orders.OrderDetailsTypesDef.OrderDetails](https://docs.caplin.com/developer/api/fxintegration/latest/com/caplin/generated/motif/fx/orders/OrderDetailsTypesDef.OrderDetails.html)

Instantiation pattern: Static Factory Method (via `OrderDetailsTypesDef.OrderDetails.newBuilder()`)

Java code example:

```java
package com.caplin.examples.fxapi.generated.motif.fx.orders.OrderDetailsTypesDef; 

import java.math.BigInteger;
import java.time.ZoneId;
import static com.caplin.motif.fx.config.definitions.common.Tag;

import com.caplin.generated.motif.fx.orders.OrderDetailsPartsDef;
import com.caplin.generated.motif.fx.orders.OrderDetailsTypesDef;

public class OrderDetailsExample {
    public static void main(String[] args) {
                    		
		OrderDetailsTypesDef.OrderDetails orderDetails =
		OrderDetailsTypesDef.OrderDetails
			.newBuilder()
			.addLegFields(
			OrderDetailsPartsDef.LegFields
				.newBuilder()
				.setAllowPartialFill(true)
				.setAmount(BigDecimal.valueOf(0.0), true)
				.setAmountEditable()
				.setBenchmarkDate(LocalDate.now())
				.setBenchmarkDateEditable()
				.setBenchmarkTime("18:00")
				.setBenchmarkTimeEditable()
				.setBenchmarkTimeZone("Europe/London")
				.setBenchmarkTimeZoneEditable()
				.setBenchmarkType("")
				.setBenchmarkTypeEditable()
				.setBuySell("", true)
				.setBuySellEditable()
				.setChildLegId(1)
				.setChildLegIdEditable()
				.setChildRelationship("IF-DONE")
				.setChildRelationshipEditable()
				.setDealtCurrency("GBP")
				.setDealtCurrencyEditable()
				.setEditable(true)
				.setExecutionType("")
				.setExecutionTypeEditable()
				.setFillID("00001561")
				.setFillRate("", true)
				.setFillRateEditable()
				.setFilled(BigDecimal.valueOf(0.0))
				.setFilledRate("123.012345")
				.setLastActionBy("")
				.setLastActionDateTime("")
				.setLimitPrice(BigDecimal.valueOf(0.0), true)
				.setLimitPriceEditable()
				.setLoopLegId("1")
				.setLoopLegIdEditable()
				.setMonitorSide("", true)
				.setMonitorSideEditable()
				.setOrderFixingDate("")
				.setOrderID("000012345")
				.setOrderSettlementDate("", true)
				.setOrderSettlementDateEditable()
				.setOrderStatus("ACTIVE")
				.setOrderTenor("")
				.setOrderTenorEditable()
				.setOrderType("TAKE-PROFIT, STOP-LOSS")
				.setPartnerLegId("1")
				.setPartnerLegIdEditable()
				.setPartnerRelationship("", true)
				.setPartnerRelationshipEditable()
				.setRemaining("")
				.setRemarks("")
				.setRemarksEditable()
				.setSettlementDate("20160314")
				.setStatus("Completed")
				.setStatusCategory("SUCCESS")
				.setStatusIsFinal("true")
				.setSubmittedDateTime(Instant.now())
				.setTemperature("2")
				.setTrigger("")
				.build())
			.setAlertFields(
			OrderDetailsPartsDef.AlertFields
				.newBuilder()
				.setAlertEmailAddress1("")
				.setAlertEmailAddress10("")
				.setAlertEmailAddress10Editable()
				.setAlertEmailAddress1Editable()
				.setAlertEmailAddress2("")
				.setAlertEmailAddress2Editable()
				.setAlertEmailAddress3("")
				.setAlertEmailAddress3Editable()
				.setAlertEmailAddress4("")
				.setAlertEmailAddress4Editable()
				.setAlertEmailAddress5("")
				.setAlertEmailAddress5Editable()
				.setAlertEmailAddress6("")
				.setAlertEmailAddress6Editable()
				.setAlertEmailAddress7("")
				.setAlertEmailAddress7Editable()
				.setAlertEmailAddress8("")
				.setAlertEmailAddress8Editable()
				.setAlertEmailAddress9("")
				.setAlertEmailAddress9Editable()
				.setAlertPhoneNumber1("")
				.setAlertPhoneNumber10("")
				.setAlertPhoneNumber10Editable()
				.setAlertPhoneNumber1Editable()
				.setAlertPhoneNumber2("")
				.setAlertPhoneNumber2Editable()
				.setAlertPhoneNumber3("")
				.setAlertPhoneNumber3Editable()
				.setAlertPhoneNumber4("")
				.setAlertPhoneNumber4Editable()
				.setAlertPhoneNumber5("")
				.setAlertPhoneNumber5Editable()
				.setAlertPhoneNumber6("")
				.setAlertPhoneNumber6Editable()
				.setAlertPhoneNumber7("")
				.setAlertPhoneNumber7Editable()
				.setAlertPhoneNumber8("")
				.setAlertPhoneNumber8Editable()
				.setAlertPhoneNumber9("")
				.setAlertPhoneNumber9Editable()
				.build())
			.setCommonFields(
			OrderDetailsPartsDef.CommonFields
				.newBuilder()
				.setAccount("", true)
				.setAccountEditable()
				.setActivationDate("", true)
				.setActivationDateEditable()
				.setActivationDateTime("2013-07-24T17:13:59.985")
				.setActivationDateTimeEditable()
				.setActivationDisplayTimeZone(ZoneId.systemDefault())
				.setActivationDisplayTimeZoneEditable()
				.setActivationLocation("Europe/London")
				.setActivationLocationEditable()
				.setActivationTime("", true)
				.setActivationTimeEditable()
				.setActivationType("")
				.setActivationTypeEditable()
				.setActivationUTCOffset("")
				.setActivationUTCOffsetEditable()
				.setAlertType("", true)
				.setAlertTypeEditable()
				.setAllowedActions("View,AuditTrail,Cancel,Deactivate,Duplicate,Edit")
				.setCurrencyPair("", true)
				.setCurrencyPairEditable()
				.setEntityDescription("Customer 1")
				.setEntityId("CUSTONE")
				.setExpirationDate("")
				.setExpirationDateEditable()
				.setExpirationDateTime(Instant.now(), true)
				.setExpirationDateTimeEditable()
				.setExpirationDisplayTimeZone(ZoneId.systemDefault(), true)
				.setExpirationDisplayTimeZoneEditable()
				.setExpirationLocation("", true)
				.setExpirationLocationEditable()
				.setExpirationTime("", true)
				.setExpirationTimeEditable()
				.setExpirationType("")
				.setExpirationTypeEditable()
				.setExpirationUTCOffset("")
				.setExpirationUTCOffsetEditable()
				.setFixingSource("WMR 8am London Time")
				.setFullName("")
				.setOrderCount("")
				.setOrderID("000012345")
				.setOrderRateDPS("5")
				.setSettlementCurrency("GBP")
				.setStrategyID("")
				.setStrategyType("")
				.setStrategyTypeEditable()
				.setSubmittedDateTime("2023-04-19T11:09:45.00Z")
				.setTOBOUser("client@customer.co.za")
				.setTOBOUserEditable()
				.setTags(Arrays.asList(/* ... */))
				.setTemperature("2")
				.setTraderUsername("sales_trader@novobank.co.za")
				.build())
			.build();
            
    }
}
```

#### Caplin FX Sales

Message specification:

```json
{
  "trade_model_name": "EditStrategy",
  "trade_model_trigger": "EditAccept",
  "message_origin": "server",
  "java_class": "com.caplin.generated.motif.fx.orders.OrderDetailsTypesDef.OrderSalesDetails",
  "javadoc": "https://docs.caplin.com/developer/api/fxintegration/com/caplin/generated/motif/fx/orders/OrderDetailsTypesDef.OrderSalesDetails.html",
  "instantiation_pattern": "Builder (via .newBuilder())",
  "code_example": "https://docs.caplin.com/developer/api/fxintegration/latest/com/caplin/examples/fxapi/generated/motif/fx/orders/OrderDetailsTypesDef/OrderSalesDetailsExample.html",
  "parts": [
    {
      "part_name": "OrderDetails",
      "java_class": "com.caplin.generated.motif.fx.orders.OrderDetailsTypesDef.OrderDetails",
      "javadoc": "https://docs.caplin.com/developer/api/fxintegration/com/caplin/generated/motif/fx/orders/OrderDetailsTypesDef.OrderDetails.html",
      "parts": [
        {
          "part_name": "CommonFields",
          "java_class": "com.caplin.generated.motif.fx.orders.OrderDetailsPartsDef.CommonFields",
          "javadoc": "https://docs.caplin.com/developer/api/fxintegration/com/caplin/generated/motif/fx/orders/OrderDetailsPartsDef.CommonFields.html",
          "fields": [
            {
              "name": "CurrencyPair",
              "type": "string",
              "flags": "Editable",
              "definition": "The currency pair for the trade. For example, EURUSD",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Account",
              "type": "string",
              "flags": "Editable",
              "definition": "The account a trade or order has been submitted against. The format is <description>|<name> or <name>|<name>",
              "example_value": "Garfields|GARF",
              "deprecated": false
            },
            {
              "name": "AllowedActions",
              "type": "string",
              "flags": "",
              "definition": "Comma separated list of Caplin supported values. See the constants defined within com.caplin.motif.fx.orders.AllowedActions",
              "example_value": "View,AuditTrail,Cancel,Deactivate,Duplicate,Edit",
              "deprecated": false
            },
            {
              "name": "ActivationType",
              "type": "string",
              "flags": "Editable",
              "definition": "How the order should be activated. Caplin supported statuses are [GFA, EXPLICIT]",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "ActivationDateTime",
              "type": "datetime",
              "flags": "Editable",
              "definition": "The time and date the order will become active. This is in ISO-8601 format.",
              "example_value": "2013-07-24T17:13:59.985",
              "deprecated": false
            },
            {
              "name": "ActivationDisplayTimeZone",
              "type": "timezone",
              "flags": "Editable",
              "definition": "The timezone that the activation time and date should be formatted to for display. This is in the TZ database format.",
              "example_value": "Europe/London",
              "deprecated": false
            },
            {
              "name": "ExpirationType",
              "type": "string",
              "flags": "Editable",
              "definition": "How the order should be deactivated. Caplin supported statuses are [IOC, GTC, GFD, FOK, EXPLICIT]",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "ExpirationDateTime",
              "type": "datetime",
              "flags": "Editable",
              "definition": "The time and date the order will be deactivated. This is in ISO-8601 format.",
              "example_value": "2013-07-24T17:13:59.985",
              "deprecated": false
            },
            {
              "name": "ExpirationDisplayTimeZone",
              "type": "timezone",
              "flags": "Editable",
              "definition": "The timezone that the expiration time and date should be formatted to for display. This is in the TZ database format.",
              "example_value": "Europe/London",
              "deprecated": false
            },
            {
              "name": "AlertType",
              "type": "string",
              "flags": "Editable",
              "definition": "The type of alert that an order will send. Caplin supported statuses are [EMAIL, SMS].",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "StrategyID",
              "type": "string",
              "flags": "",
              "definition": "The strategy Id of the order.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "StrategyType",
              "type": "string",
              "flags": "Editable",
              "definition": "The strategy the order was submitted with. This field should not be used by the front end for structuring orders. Comma separated list of Caplin supported values are [SINGLE, IF-DONE-OCO, OCO, IF-DONE, IF-TIMEOUT, IF-DONE-LOOP, LOOP]. OTHER denotes a strategy type that is unsupported.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "TraderUsername",
              "type": "string",
              "flags": "",
              "definition": "The user who entered the trade. This may be on behalf of themselves, or on behalf of someone else. For example, if the logged in user dealer1@novobank.co.za wishes to make a trade on behalf of user client@customer.co.za, then the value of this field will be dealer1@novobank.co.za. If the user client@customer.co.za makes a trade on behalf of themselves it will be client@customer.co.za.",
              "example_value": "sales_trader@novobank.co.za",
              "deprecated": false
            },
            {
              "name": "TOBOUser",
              "type": "string",
              "flags": "Editable",
              "definition": "The user the trade is on behalf of. For example, if the logged in user dealer1@novobank.co.za wishes to make a trade on behalf of user client@customer.co.za, then the value of this field will be client@customer.co.za.",
              "example_value": "client@customer.co.za",
              "deprecated": false
            },
            {
              "name": "FullName",
              "type": "string",
              "flags": "",
              "definition": "The full name of the user the trade is on behalf of",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "EntityId",
              "type": "string",
              "flags": "",
              "definition": "The entity the trade is on behalf of. For example, if the logged in user user1@customer.co.za wishes to make a trade on behalf of entity CUSTONE, then the value of this field will be CUSTONE. If this field is absent on a leg then the default entity should be presumed.",
              "example_value": "CUSTONE",
              "deprecated": false
            },
            {
              "name": "EntityDescription",
              "type": "string",
              "flags": "",
              "definition": "The description of a trade on behalf of entity.",
              "example_value": "Customer 1",
              "deprecated": false
            },
            {
              "name": "OrderCount",
              "type": "integer",
              "flags": "",
              "definition": "",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "OrderID",
              "type": "string",
              "flags": "",
              "definition": "The id of the order.",
              "example_value": "000012345",
              "deprecated": false
            },
            {
              "name": "ActivationDate",
              "type": "string",
              "flags": "Editable",
              "definition": "What date the strategy should be activated.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "ActivationTime",
              "type": "string",
              "flags": "Editable",
              "definition": "What time the strategy should be activated if the ActivationDate was in the format of yyyymmdd.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "ActivationLocation",
              "type": "string",
              "flags": "Editable",
              "definition": "When location should be used to evaluate the time to activate if the ActivationDate was in the format of yyyymmdd.",
              "example_value": "Europe/London",
              "deprecated": false
            },
            {
              "name": "ActivationUTCOffset",
              "type": "string",
              "flags": "Editable",
              "definition": "",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "ExpirationDate",
              "type": "string",
              "flags": "Editable",
              "definition": "What date the strategy should expire.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "ExpirationTime",
              "type": "string",
              "flags": "Editable",
              "definition": "What time the strategy should be activated if the ExpirationDate was in the format of yyyymmdd.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "ExpirationLocation",
              "type": "string",
              "flags": "Editable",
              "definition": "When location should be used to evaluate the time to expire if the ExpirationDate was in the format of yyyymmdd.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "ExpirationUTCOffset",
              "type": "string",
              "flags": "Editable",
              "definition": "",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Temperature",
              "type": "string",
              "flags": "",
              "definition": "Shows how close an Order is to its trigger point at the leg level. Shows the maximum of the leg temperatures at the common level [1=cold,2=warm,3=hot,4=very hot,5=target rate reached].",
              "example_value": "2",
              "deprecated": false
            },
            {
              "name": "SubmittedDateTime",
              "type": "datetime",
              "flags": "",
              "definition": "The time and date a trade or order was submitted",
              "example_value": "2023-04-19T11:09:45.00Z",
              "deprecated": false
            },
            {
              "name": "FixingSource",
              "type": "string",
              "flags": "",
              "definition": "Specifies where the fixing rate comes from.",
              "example_value": "WMR 8am London Time",
              "deprecated": false
            },
            {
              "name": "SettlementCurrency",
              "type": "string",
              "flags": "",
              "definition": "A currency for of settlement instruction",
              "example_value": "GBP",
              "deprecated": false
            },
            {
              "name": "Tags",
              "type": "string",
              "flags": "",
              "definition": "Tags for a trade (see also `com.caplin.motif.fx.config.DefaultTag`) or order (see also `com.caplin.motif.fx.orders.DefaultOrderTag`).",
              "example_value": "method={'import':'static com.caplin.motif.fx.config.definitions.common.Tag','name':'Arrays.asList'}",
              "deprecated": false
            },
            {
              "name": "OrderRateDPS",
              "type": "integer",
              "flags": "",
              "definition": "The precision to use for order rate information.",
              "example_value": "5",
              "deprecated": false
            }
          ]
        },
        {
          "part_name": "AlertFields",
          "java_class": "com.caplin.generated.motif.fx.orders.OrderDetailsPartsDef.AlertFields",
          "javadoc": "https://docs.caplin.com/developer/api/fxintegration/com/caplin/generated/motif/fx/orders/OrderDetailsPartsDef.AlertFields.html",
          "fields": [
            {
              "name": "AlertPhoneNumber1",
              "type": "string",
              "flags": "Editable",
              "definition": "Phone number that should be called when an order event occurs",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "AlertPhoneNumber2",
              "type": "string",
              "flags": "Editable",
              "definition": "Phone number that should be called when an order event occurs",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "AlertPhoneNumber3",
              "type": "string",
              "flags": "Editable",
              "definition": "Phone number that should be called when an order event occurs",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "AlertPhoneNumber4",
              "type": "string",
              "flags": "Editable",
              "definition": "Phone number that should be called when an order event occurs",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "AlertPhoneNumber5",
              "type": "string",
              "flags": "Editable",
              "definition": "Phone number that should be called when an order event occurs",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "AlertPhoneNumber6",
              "type": "string",
              "flags": "Editable",
              "definition": "Phone number that should be called when an order event occurs",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "AlertPhoneNumber7",
              "type": "string",
              "flags": "Editable",
              "definition": "Phone number that should be called when an order event occurs",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "AlertPhoneNumber8",
              "type": "string",
              "flags": "Editable",
              "definition": "Phone number that should be called when an order event occurs",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "AlertPhoneNumber9",
              "type": "string",
              "flags": "Editable",
              "definition": "Phone number that should be called when an order event occurs",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "AlertPhoneNumber10",
              "type": "string",
              "flags": "Editable",
              "definition": "Phone number that should be called when an order event occurs",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "AlertEmailAddress1",
              "type": "string",
              "flags": "Editable",
              "definition": "Email address that should be mailed when an order event occurs",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "AlertEmailAddress2",
              "type": "string",
              "flags": "Editable",
              "definition": "Email address that should be mailed when an order event occurs",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "AlertEmailAddress3",
              "type": "string",
              "flags": "Editable",
              "definition": "Email address that should be mailed when an order event occurs",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "AlertEmailAddress4",
              "type": "string",
              "flags": "Editable",
              "definition": "Email address that should be mailed when an order event occurs",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "AlertEmailAddress5",
              "type": "string",
              "flags": "Editable",
              "definition": "Email address that should be mailed when an order event occurs",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "AlertEmailAddress6",
              "type": "string",
              "flags": "Editable",
              "definition": "Email address that should be mailed when an order event occurs",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "AlertEmailAddress7",
              "type": "string",
              "flags": "Editable",
              "definition": "Email address that should be mailed when an order event occurs",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "AlertEmailAddress8",
              "type": "string",
              "flags": "Editable",
              "definition": "Email address that should be mailed when an order event occurs",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "AlertEmailAddress9",
              "type": "string",
              "flags": "Editable",
              "definition": "Email address that should be mailed when an order event occurs",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "AlertEmailAddress10",
              "type": "string",
              "flags": "Editable",
              "definition": "Email address that should be mailed when an order event occurs",
              "example_value": "",
              "deprecated": false
            }
          ]
        },
        {
          "part_name": "LegFields",
          "java_class": "com.caplin.generated.motif.fx.orders.OrderDetailsPartsDef.LegFields",
          "javadoc": "https://docs.caplin.com/developer/api/fxintegration/com/caplin/generated/motif/fx/orders/OrderDetailsPartsDef.LegFields.html",
          "fields": [
            {
              "name": "Ln_Editable",
              "type": "boolean",
              "flags": "",
              "definition": "Whether a trade or order is editable.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_OrderID",
              "type": "string",
              "flags": "",
              "definition": "The id of the order.",
              "example_value": "000012345",
              "deprecated": false
            },
            {
              "name": "Ln_Status",
              "type": "string",
              "flags": "",
              "definition": "Status of the trade. Frontends may use this value for display purpose, but no logic is associated with it. Use Can* flags to drive post-trade logic.",
              "example_value": "Completed",
              "deprecated": false
            },
            {
              "name": "Ln_OrderStatus",
              "type": "string",
              "flags": "",
              "definition": "Caplin supported statuses are [PENDING-ACCEPT, PENDING-ACTIVATION, PENDING-CONFIRMATION, ACTIVE, PARENT-ACTIVE, PENDING-DEACTIVATION, DEACTIVATED, EXPIRED, COMPLETED, REJECTED, PENDING-CANCEL, CANCELLED, CANCELLED-BY-PARTNER]",
              "example_value": "ACTIVE",
              "deprecated": false
            },
            {
              "name": "Ln_SubmittedDateTime",
              "type": "datetime",
              "flags": "",
              "definition": "The time and date a trade or order was submitted",
              "example_value": "2023-04-19T11:09:45.00Z",
              "deprecated": false
            },
            {
              "name": "Ln_LastActionBy",
              "type": "string",
              "flags": "",
              "definition": "The last person or system to perform an action on an order.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_LastActionDateTime",
              "type": "datetime",
              "flags": "",
              "definition": "The time and date of the last action on an order.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_Amount",
              "type": "decimal",
              "flags": "Editable",
              "definition": "The amount of a trade or order in the DealtCurrency.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_Filled",
              "type": "decimal",
              "flags": "",
              "definition": "The amount of an order that has been filled.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_Remaining",
              "type": "decimal",
              "flags": "",
              "definition": "The amount of an order that has not been filled.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_MonitorSide",
              "type": "string",
              "flags": "Editable",
              "definition": "The side that should be monitored for an order to be triggered.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_DealtCurrency",
              "type": "string",
              "flags": "Editable",
              "definition": "The currency of the Amount of a trade or order.",
              "example_value": "GBP",
              "deprecated": false
            },
            {
              "name": "Ln_BuySell",
              "type": "string",
              "flags": "Editable",
              "definition": "The direction of the trade or trade leg, from the client's perspective. This always refers to the BaseCurrency, NOT the DealtCurrency.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_ExecutionType",
              "type": "string",
              "flags": "Editable",
              "definition": "The order type. Caplin supported types are [BENCHMARK, CALL-ORDER, MARKET, PEGGED, STOP-LOSS, TAKE-PROFIT]",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_BenchmarkType",
              "type": "string",
              "flags": "Editable",
              "definition": "The benchmark order name. For example, ECB.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_BenchmarkTime",
              "type": "time",
              "flags": "Editable",
              "definition": "The fixing time of the benchmark in ISO-8601 format",
              "example_value": "18:00",
              "deprecated": false
            },
            {
              "name": "Ln_BenchmarkDate",
              "type": "date",
              "flags": "Editable",
              "definition": "The fixing date of the benchmark in ISO-8601 format",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_BenchmarkTimeZone",
              "type": "timezone",
              "flags": "Editable",
              "definition": "The TZ format timezone for the provided time and date",
              "example_value": "Europe/London",
              "deprecated": false
            },
            {
              "name": "Ln_LimitPrice",
              "type": "decimal",
              "flags": "Editable",
              "definition": "The price at which a leg should fill.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_Remarks",
              "type": "string",
              "flags": "Editable",
              "definition": "The text content of a comment left on a leg of a trade or order, visible to Client and sales and possibly the trader, set/edited by Client or sales",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_ChildLegId",
              "type": "integer",
              "flags": "Editable",
              "definition": "The id of the child leg, if the order has a child leg",
              "example_value": "1",
              "deprecated": false
            },
            {
              "name": "Ln_ChildRelationship",
              "type": "string",
              "flags": "Editable",
              "definition": "Describes the relationship with the child if it exists.",
              "example_value": "IF-DONE",
              "deprecated": false
            },
            {
              "name": "Ln_PartnerLegId",
              "type": "integer",
              "flags": "Editable",
              "definition": "The id of the partner leg, if the order has a partner leg",
              "example_value": "1",
              "deprecated": false
            },
            {
              "name": "Ln_PartnerRelationship",
              "type": "string",
              "flags": "Editable",
              "definition": "Describes the relationship with the partner leg if it exists.",
              "example_value": "OCO",
              "deprecated": false
            },
            {
              "name": "Ln_LoopLegId",
              "type": "integer",
              "flags": "Editable",
              "definition": "The leg to loop back to upon completion.",
              "example_value": "1",
              "deprecated": false
            },
            {
              "name": "Ln_FillRate",
              "type": "string",
              "flags": "Editable",
              "definition": "",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_OrderTenor",
              "type": "string",
              "flags": "Editable",
              "definition": "The tenor the order will settle on for Forward and NDF orders. Either OrderTenor or OrderSettlementDate should be provided but not both.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_OrderSettlementDate",
              "type": "date",
              "flags": "Editable",
              "definition": "The settlement date the order will settle on for Forward and NDF orders. Either OrderTenor or OrderSettlementDate should be provided but not both.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_OrderFixingDate",
              "type": "date",
              "flags": "",
              "definition": "The date an NDF order will fix on if filled.",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_Temperature",
              "type": "string",
              "flags": "",
              "definition": "Shows how close an Order is to its trigger point at the leg level. Shows the maximum of the leg temperatures at the common level [1=cold,2=warm,3=hot,4=very hot,5=target rate reached].",
              "example_value": "2",
              "deprecated": false
            },
            {
              "name": "Ln_FilledRate",
              "type": "decimal",
              "flags": "",
              "definition": "The rate at which an order has been filled.",
              "example_value": "123.012345",
              "deprecated": false
            },
            {
              "name": "Ln_OrderType",
              "type": "string",
              "flags": "",
              "definition": "The order execution type. Caplin supported types are TAKE-PROFIT, STOP-LOSS, CALL-ORDER, MARKET, BENCHMARK, MARKET, PEGGED.",
              "example_value": "TAKE-PROFIT, STOP-LOSS",
              "deprecated": false
            },
            {
              "name": "Ln_FillID",
              "type": "string",
              "flags": "",
              "definition": "The Trade ID of the trade created when an order is fully filled by a single fill.",
              "example_value": "00001561",
              "deprecated": false
            },
            {
              "name": "Ln_Trigger",
              "type": "string",
              "flags": "",
              "definition": "The trigger type for the order",
              "example_value": "",
              "deprecated": false
            },
            {
              "name": "Ln_SettlementDate",
              "type": "string",
              "flags": "",
              "definition": "The date on which the two currencies in the FX trade are exchanged. Can be a tenor or a broken date, i.e. SPOT or 20160314.",
              "example_value": "20160314",
              "deprecated": false
            },
            {
              "name": "Ln_AllowPartialFill",
              "type": "boolean",
              "flags": "",
              "definition": "Indicates whether the order leg can be partially filled",
              "example_value": "",
              "deprecated": false
            }
          ]
        }
      ]
    },
    {
      "part_name": "SalesLegFields",
      "java_class": "com.caplin.generated.motif.fx.orders.OrderDetailsPartsDef.SalesLegFields",
      "javadoc": "https://docs.caplin.com/developer/api/fxintegration/com/caplin/generated/motif/fx/orders/OrderDetailsPartsDef.SalesLegFields.html",
      "fields": [
        {
          "name": "Ln_Margin",
          "type": "decimal",
          "flags": "Editable",
          "definition": "The amount of margin",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Ln_Discretion",
          "type": "decimal",
          "flags": "Editable",
          "definition": "Number of points the trader has discretion to fill the order",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Ln_TraderRemarks",
          "type": "string",
          "flags": "Editable",
          "definition": "The sale's comments on an order leg - visible to only the Trader and sales, set/edited only by the sales",
          "example_value": "",
          "deprecated": false
        },
        {
          "name": "Ln_ExternalRemarks",
          "type": "string",
          "flags": "",
          "definition": "The trader's comments on an order leg - visible to only the sales, set/edited only by the Trader",
          "example_value": "",
          "deprecated": false
        }
      ]
    }
  ]
}
```

Java class: [com.caplin.generated.motif.fx.orders.OrderDetailsTypesDef.OrderSalesDetails](https://docs.caplin.com/developer/api/fxintegration/latest/com/caplin/generated/motif/fx/orders/OrderDetailsTypesDef.OrderSalesDetails.html)

Instantiation pattern: Static Factory Method (via `OrderDetailsTypesDef.OrderSalesDetails.newBuilder()`)

Java code example:

```java
package com.caplin.examples.fxapi.generated.motif.fx.orders.OrderDetailsTypesDef; 

import java.math.BigInteger;
import java.time.ZoneId;
import static com.caplin.motif.fx.config.definitions.common.Tag;

import com.caplin.generated.motif.fx.orders.OrderDetailsPartsDef;
import com.caplin.generated.motif.fx.orders.OrderDetailsTypesDef;

public class OrderSalesDetailsExample {
    public static void main(String[] args) {
                    		
		OrderDetailsTypesDef.OrderSalesDetails orderSalesDetails =
		OrderDetailsTypesDef.OrderSalesDetails
			.newBuilder()
			.addSalesLegFields(
			OrderDetailsPartsDef.SalesLegFields
				.newBuilder()
				.setDiscretion("")
				.setDiscretionEditable()
				.setExternalRemarks("")
				.setMargin("1.08341")
				.setMarginEditable()
				.setTraderRemarks("")
				.setTraderRemarksEditable()
				.build())
			.setOrderDetails(
			OrderDetailsTypesDef.OrderDetails
				.newBuilder()
				.addLegFields(
				OrderDetailsPartsDef.LegFields
					.newBuilder()
					.setAllowPartialFill(true)
					.setAmount(BigDecimal.valueOf(0.0), true)
					.setAmountEditable()
					.setBenchmarkDate(LocalDate.now())
					.setBenchmarkDateEditable()
					.setBenchmarkTime("18:00")
					.setBenchmarkTimeEditable()
					.setBenchmarkTimeZone("Europe/London")
					.setBenchmarkTimeZoneEditable()
					.setBenchmarkType("")
					.setBenchmarkTypeEditable()
					.setBuySell("", true)
					.setBuySellEditable()
					.setChildLegId(1)
					.setChildLegIdEditable()
					.setChildRelationship("IF-DONE")
					.setChildRelationshipEditable()
					.setDealtCurrency("GBP")
					.setDealtCurrencyEditable()
					.setEditable(true)
					.setExecutionType("")
					.setExecutionTypeEditable()
					.setFillID("00001561")
					.setFillRate("", true)
					.setFillRateEditable()
					.setFilled(BigDecimal.valueOf(0.0))
					.setFilledRate("123.012345")
					.setLastActionBy("")
					.setLastActionDateTime("")
					.setLimitPrice(BigDecimal.valueOf(0.0), true)
					.setLimitPriceEditable()
					.setLoopLegId("1")
					.setLoopLegIdEditable()
					.setMonitorSide("", true)
					.setMonitorSideEditable()
					.setOrderFixingDate("")
					.setOrderID("000012345")
					.setOrderSettlementDate("", true)
					.setOrderSettlementDateEditable()
					.setOrderStatus("ACTIVE")
					.setOrderTenor("")
					.setOrderTenorEditable()
					.setOrderType("TAKE-PROFIT, STOP-LOSS")
					.setPartnerLegId("1")
					.setPartnerLegIdEditable()
					.setPartnerRelationship("", true)
					.setPartnerRelationshipEditable()
					.setRemaining("")
					.setRemarks("")
					.setRemarksEditable()
					.setSettlementDate("20160314")
					.setStatus("Completed")
					.setStatusCategory("SUCCESS")
					.setStatusIsFinal("true")
					.setSubmittedDateTime(Instant.now())
					.setTemperature("2")
					.setTrigger("")
					.build())
				.setAlertFields(
				OrderDetailsPartsDef.AlertFields
					.newBuilder()
					.setAlertEmailAddress1("")
					.setAlertEmailAddress10("")
					.setAlertEmailAddress10Editable()
					.setAlertEmailAddress1Editable()
					.setAlertEmailAddress2("")
					.setAlertEmailAddress2Editable()
					.setAlertEmailAddress3("")
					.setAlertEmailAddress3Editable()
					.setAlertEmailAddress4("")
					.setAlertEmailAddress4Editable()
					.setAlertEmailAddress5("")
					.setAlertEmailAddress5Editable()
					.setAlertEmailAddress6("")
					.setAlertEmailAddress6Editable()
					.setAlertEmailAddress7("")
					.setAlertEmailAddress7Editable()
					.setAlertEmailAddress8("")
					.setAlertEmailAddress8Editable()
					.setAlertEmailAddress9("")
					.setAlertEmailAddress9Editable()
					.setAlertPhoneNumber1("")
					.setAlertPhoneNumber10("")
					.setAlertPhoneNumber10Editable()
					.setAlertPhoneNumber1Editable()
					.setAlertPhoneNumber2("")
					.setAlertPhoneNumber2Editable()
					.setAlertPhoneNumber3("")
					.setAlertPhoneNumber3Editable()
					.setAlertPhoneNumber4("")
					.setAlertPhoneNumber4Editable()
					.setAlertPhoneNumber5("")
					.setAlertPhoneNumber5Editable()
					.setAlertPhoneNumber6("")
					.setAlertPhoneNumber6Editable()
					.setAlertPhoneNumber7("")
					.setAlertPhoneNumber7Editable()
					.setAlertPhoneNumber8("")
					.setAlertPhoneNumber8Editable()
					.setAlertPhoneNumber9("")
					.setAlertPhoneNumber9Editable()
					.build())
				.setCommonFields(
				OrderDetailsPartsDef.CommonFields
					.newBuilder()
					.setAccount("", true)
					.setAccountEditable()
					.setActivationDate("", true)
					.setActivationDateEditable()
					.setActivationDateTime("2013-07-24T17:13:59.985")
					.setActivationDateTimeEditable()
					.setActivationDisplayTimeZone(ZoneId.systemDefault())
					.setActivationDisplayTimeZoneEditable()
					.setActivationLocation("Europe/London")
					.setActivationLocationEditable()
					.setActivationTime("", true)
					.setActivationTimeEditable()
					.setActivationType("")
					.setActivationTypeEditable()
					.setActivationUTCOffset("")
					.setActivationUTCOffsetEditable()
					.setAlertType("", true)
					.setAlertTypeEditable()
					.setAllowedActions("View,AuditTrail,Cancel,Deactivate,Duplicate,Edit")
					.setCurrencyPair("", true)
					.setCurrencyPairEditable()
					.setEntityDescription("Customer 1")
					.setEntityId("CUSTONE")
					.setExpirationDate("")
					.setExpirationDateEditable()
					.setExpirationDateTime(Instant.now(), true)
					.setExpirationDateTimeEditable()
					.setExpirationDisplayTimeZone(ZoneId.systemDefault(), true)
					.setExpirationDisplayTimeZoneEditable()
					.setExpirationLocation("", true)
					.setExpirationLocationEditable()
					.setExpirationTime("", true)
					.setExpirationTimeEditable()
					.setExpirationType("")
					.setExpirationTypeEditable()
					.setExpirationUTCOffset("")
					.setExpirationUTCOffsetEditable()
					.setFixingSource("WMR 8am London Time")
					.setFullName("")
					.setOrderCount("")
					.setOrderID("000012345")
					.setOrderRateDPS("5")
					.setSettlementCurrency("GBP")
					.setStrategyID("")
					.setStrategyType("")
					.setStrategyTypeEditable()
					.setSubmittedDateTime("2023-04-19T11:09:45.00Z")
					.setTOBOUser("client@customer.co.za")
					.setTOBOUserEditable()
					.setTags(Arrays.asList(/* ... */))
					.setTemperature("2")
					.setTraderUsername("sales_trader@novobank.co.za")
					.build())
				.build())
			.build();
            
    }
}
```


### Event: EditOpenAck (server)

Message specification:

```json
{
  "trade_model_name": "EditStrategy",
  "trade_model_trigger": "EditOpenAck",
  "message_origin": "server"
}
```

### Event: Refresh (server)

Message specification:

```json
{
  "trade_model_name": "EditStrategy",
  "trade_model_trigger": "Refresh",
  "message_origin": "server"
}
```
