Page tree
Skip to end of metadata
Go to start of metadata


This document contains description of the main features of REST Transport Adaptor for FixEdge and common steps required to install REST Transport Adaptor (REST TA) for the FIX Edge.


FIXEdge REST adaptor is a REST server which handles REST requests with incoming messages in JSON form, converts them to FIX format and sends to the target. The adapter is designed for generic processing of messages, without lock-in to the specific message type.

Depending on configuration settings, the adaptor can transform incoming message to either FIX XML message of 'n' type, or map JSON fields into FIX tags. Type of resulting message should be defined in tag 35.

JSON format of message might look like follows:

'{"35":"D", "1":"12345", "56":"CITIGROUP", ..........}'

Adaptor supports repeating groups and nested repeating groups.

Requests are sent as HTTP POST requests to following URL: http://<Address>:<ListenPort>/messages

Example of REST request using curl for localhost and listen port 8001:

curl -H "Content-Type: application/json" -X POST -d "{\"35\":\"D\",\"1\":\"USD\",\"386\":[{\"336\":\"ABCD\"}]}" http://localhost:8001/messages

Resulting FIX messages can be optionally validated against FIX dictionaries defined in configuration file.

As a result of REST request the adapter should return HTTP status code:

  • 200 - Success
  • 202 - Accepted, returned when a message is successfully received and parsed, but couldn't be delivered to the client in FE
  • 400 - HTTP error Bad Request (with JSON content including error message), in case of wrong input message or validation errors
  • 404 - HTTP error Not found for requests with the wrong URL  

Logging for received and send messages

FIXEdge REST adaptor can be configured to write into separate log file the following data:

  • Content of input request
  • Resulting FIX messages
  • HTTP status returned to the caller

Integration with FIXICC

The adaptor supports monitoring of its current state with FIXICC. It provides the following monitorable properties:

  • number of received messages
  • number of sent messages
  • number of rejected messages

Description of JSON format for input messages:

  • Fields in input JSON message are listed as pairs of "FIXID":"FIXValue".
  • JSON message can contain repeating groups represented as follows:

    { "NoRecordsID": [      { "FIXID":"FIXValue", "FIXID":"FIXValue"... },      { "FIXID":"FIXValue", "FIXID":"FIXValue"... }     ...    ] }

Message Conversion Methods

REST Acceptor TA supports two conversion methods:

  1. Raw (available since FIXEdge 6.9.0)
           a. Adapter accepts any FIX message
           b. Adapter routes FIX message to BL
  2. WrapInXmlMessage 
    1. Adapter accepts any JSON
    2. Adapter creates FIX message 35=n (XML Message)
    3. Adapter stores received JSON as-is in tag 213 (XmlData)
    4. Adapter routes FIX message to BL
  3. NumericTagValueMapping
    1. Adapter accepts JSON, structured as described in JSON format for input messages section
    2. Adapter seeks tag-value pair "35":"XYZ" in incoming JSON
    3. If tag-value pair "35":"XYZ" is not found, or XYZ is not a valid FIX message type, adapter returns an error.
    4. The adapter creates empty FIX message with MsgType 35=XYZ 
    5. For every tag-value pair in JSON corresponding tags/values are filled in FIX message by Adapter
    6. Adapter routes FIX message to BL

Examples of input/output messages (pipe symbol stands for SOH symbol):

input (from external system)output (to BL)


8=FIX.4.4| 9=168| 35=E| 49=0| 56=RESTAdapter| 34=1| 50=30737| 66=List1| 116=OMS1| 52=20191101-11:11:01.080| 394=3| 68=2| 73=2| 11=0003| 67=1| 100=DSMD| 55=11| 54=1| 38=100| 11=0004| 67=2| 100=DSMD| 55=12|54=2| 38=200| 10=235

FIX (input message is marked orange):

8=FIX.4.4| 9=259| 35=n| 49=0| 56=0| 34=1| 52=20200317-10:23:55.068| 212=201| 213=8=FIX.4.4| 9=168| 35=E| 49=0| 56=RESTAdapter| 34=1| 50=30737| 66=List1| 116=OMS1|  52=20191101-11:11:01.080| 394=3| 68=2| 73=2| 11=0003| 67=1| 100=DSMD| 55=11| 54=1| 38=100| 11=0004| 67=2| 100=DSMD| 55=12| 54=2| 38=200| 10=235| 10=219


JSON (the example contains repeating groups):



8=FIX.4.4| 9=184| 35=E| 49=JAVA| 56=RESTAdapter| 34=3| 50=30737| 116=OMS1| 52=20150101-01:01:01.080| 66=List1| 394=3| 68=2| 73=2| 11=0003| 67=1| 100=DSMD| 55=MSFT| 54=1| 38=100| 11=0004| 67=2| 100=DSMD| 55=IBM| 54=2| 38=200| 10=249

FIX Message validation

REST Acceptor TA can be configured to validate converted FIX messages. FIX Message validation uses default validation options:

  • prohibitTagsWithoutValue = true
  • verifyDataTagsSequence = true
  • verifyTagsValues = true
  • prohibitUnknownTags = true
  • prohibitDuplicatedTags = true
  • verifyReperatingGroupBounds = true
  • checkRequiredGroupFields = true
  • allowZeroNumInGroup = false
  • ignoreUnknownFields = false 

Installation steps

 In order to setup REST TA for FIX Edge you need:

1. Copy FIXEdge distribution package to the FIX Edge home:

Unpack the content of distribution package to FIXEdge root directory, e.g. to the C:\FIXEdge.

2. Enable TA to be used by FIX Edge

In the ‘Transport Layer Section’ of the add REST TA to the list of supported adapters:

TransportLayer.TransportAdapters = TransportLayer.RestTA

Note: if you use other transport adapters, just add TransportLayer.RestTA to the end of the list, e.g:

TransportLayer.TransportAdapters = TransportLayer.SmtpTA, TransportLayer.RestTA

3. Configure TA

3.1.   Add REST TA section to the

A sample set of properties is given below:

TransportLayer.TransportAdapters = TransportLayer.RestTA

TransportLayer.RestTA.Description = REST Acceptor TA
TransportLayer.RestTA.DllName = bin/rest_acceptor_ta-vc10-MD-x64.dll
TransportLayer.RestTA.Type = DLL

TransportLayer.RestTA.ClientID = RestAcceptorClient
TransportLayer.RestTA.LogCategory = RestAcceptorClient
TransportLayer.RestTA.ListenPort = 8001
TransportLayer.RestTA.FIXVersion = FIX50
TransportLayer.RestTA.ConversionMethod = NumericTagValueMapping
TransportLayer.RestTA.ValidateFIXMessage = ValidateAndWarn

Note: sample settings could be copied from file (in doc folder of FIXEdge distribution package) to file.

3.2.  Optionally configure logging for received and sent messages in a separate log category:

Log.RESTTA.Device = File
Log.RESTTA.DebugIsOn = true
Log.RESTTA.TraceIsOn = true
Log.RESTTA.NoteIsOn = true
Log.RESTTA.File.Name = FIXEdge1/log/RESTTA.log

4.       Restart FIX Edge to apply the changes 

Routing Messages from REST TA

REST TA Client can be referred on the business layer (BL) by ClientID name specified in the file. Below is an example of the BL_Config.xml.

<?xml version="1.0" encoding="UTF-8" ?>
    FIXEdge - the XML Configuration file
    $Revision: $
<!DOCTYPE FIXEdge SYSTEM "BusinessLayer.dtd">
                <Client Name="RestAcceptorClient"/>
                <MatchField Field="35" Value=" D|G|F|n " />
                    <FixSession SenderCompID="FIXEDGE" TargetCompID="FIXCLIENT"/>

REST TA Configuration Parameters

Configuration of REST Adaptor contains list of adaptor properties, HTTP server properties, and log settings:


Property Name






Default Value




TA Description




REST Acceptor TA




TA library file name








TA library type








Transport adaptor Client ID which identifies the source of messages in BL config








Transport adaptor log category








TCP port number for incoming HTTP connections. Allowed range is 1 - 65535








FIX version of generated messages:

FIX40 - FIX 4.0

FIX41 - FIX 4.1

FIX42 - FIX 4.2

FIX43 - FIX 4.3

FIX44 - FIX 4.4

FIX50 - FIX 5.0

FIX50SP1 - FIX 5.0 SP1

FIX50SP2 - FIX 5.0 SP2








The method used to convert input messages into FIX format:

WrapInXmlMessage - put the input data into FIX XML message of 'n' type

NumericTagValueMapping - parse the input JSON file format to corresponding FIX message








Enables/disables validation of resulting FIX message:

No – validation disabled

ValidateAndWarn – validation enabled, a warning message is added to the log when validation fails

ValidateAndReject – validation enabled, service returns HHTP error 400 (bad request) and rejects the message if validation fails






HTTP Server Parameters




Connection timeout for HTTP connections in seconds.








Enables/disables persistent HTTP connections:

false – persistent HTTP connections are disabled true – persistent HTTP connections are enabled








Specifies the maximum number of requests allowed during a persistent connection. 0 means unlimited connections.








Connection timeout for persistent HTTP connections in seconds.








A maximum number of threads processing HTTP requests. Allowed range is 1 – 16. 






REST TA Log settings





Target device for logging the received and sent messages:

File – writes log to a separate file

Console – sends a log to console window










Filename used to log the received and sent messages





Security mode parameters (available since FIXEdge 6.9.0)

TransportLayer.RestTA.Protocol = <protocol_type> 

Security type of connection. Allows user to setup secure or non-secure http connection.   


HTTP - non-secure connections 

HTTPS - secure connections 

TransportLayer.RestTA.HTTPS.PrivateKey = <private_key> 

Path to private key

Conditional (if HTTPS protocol type is chosen)


TransportLayer.RestTA.HTTPS.Certificate = <certificate> 

Path to certificate 

Conditional (if HTTPS protocol type is chosen)


TransportLayer.RestTA.ConversionMethod = <conv_method_name> 

Conversion method is the way the incoming message is converted


Raw - raw FIX message (FIX message is sent to BL as is)

WrapInXmlMessage - incoming message is put to 213 tag of a new FIX message and is sent to BL  

NumericTagValueMapping - the incoming JSON message is converted to FIX message and is sent to BL

TransportLayer.RestTA.AuthHeader = <auth_header>Authentication header (may be used in HTTP mode also)No
TransportLayer.RestTA.AuthValue = <auth_value>Authentication value (may be used in HTTP mode also)No
TransportLayer.RestTA.HTTPS.PrivateKeyPassword = <private_key_password>Private key passwordConditional (if private key is password-encrypted)

Configuration example

The example of REST Acceptor configuration with security mode turned on:

TransportLayer.RestTA.Description = RESTAcceptorTA
TransportLayer.RestTA.DllName = bin/REST_Acceptor_TA-vc10-MDD-x64.dll
TransportLayer.RestTA.Type = DLL
TransportLayer.RestTA.ClientID = RestAcceptorClient
TransportLayer.RestTA.LogCategory = RestAcceptorClient
TransportLayer.RestTA.Protocol = HTTPS
TransportLayer.RestTA.HTTPS.PrivateKey = FIXEdge1/conf/AdminRESTAPI.key
TransportLayer.RestTA.HTTPS.Certificate = FIXEdge1/conf/AdminRESTAPI.crt
TransportLayer.RestTA.ListenPort = 8001
TransportLayer.RestTA.FIXVersion = FIX44
TransportLayer.RestTA.ConversionMethod = NumericTagValueMapping
TransportLayer.RestTA.ValidateFIXMessage = ValidateAndWarn
TransportLayer.RestTA.AuthHeader = apikey
TransportLayer.RestTA.AuthValue = QWERTY0123456789
TransportLayer.RestTA.PrivateKeyPassword = PKEYPASS123
  • No labels