Skip to content

Synchronization started#

About#

Notifies consumer that terminal state synchronization is started.

For more information see AsyncApi documentation

Description#

This event is emitted by MetaApi upon initial terminal state synchronization

The message below can be received from the synchronization event.

Name Type Required Description
type string Yes The value of this field will be synchronizationStarted
synchronizationId string Yes Id of the synchronization request
accountId string Yes account id specified in the request
sequenceNumber number Yes an ordinal number of the packet. Increases by 1 with each new packet. Starts with 0 in every new session. Can be used to check for packet loss during synchronization.
sequenceTimestamp number Yes an ordinal number of packets, but this field is increased by a random number in each new packet. Always increases regardless of the session.
specificationsUpdated boolean flag indicating that specifications update will be streamed
positionsUpdated boolean flag indicating that positions update will be streamed
ordersUpdated boolean flag indicating that orders update will be streamed
specificationsHashIndex number index number of matching specifications hash
positionsHashIndex number index number of matching positions hash
ordersHashIndex number index number of matching orders hash

Code example:

import ioClient from 'socket.io-client';

const socket = ioClient('https://mt-client-api-v1.agiliumtrade.agiliumtrade.ai', {
    path: '/ws',
    reconnection: false,
    query: {
        'auth-token': 'token'
    }
});

const request = {
  accountId: '865d3a4d-3803-486d-bdf3-a85679d9fad2',
  type: 'synchronize',
  requestId: '57bfbc9f-108d-4131-a300-5f7d9e69c11b',
  startingDealTime: '2019-01-13T10:29:26.000Z',
  startingHistoryOrderTime: '2019-01-13T10:29:26.000Z'
};

socket.on('connect', () => {
  socket.emit('request', request);
});

socket.on('synchronization', data => {
  console.log(data);
  if (data.type === 'authenticated') {
    request.requestId = uuid.v4();
    socket.emit('request', request);
  }
});

socket.on('processingError', err => {
  console.error(err);
});

An example of a synchronization payload:

{
  "type": "synchronizationStarted",
  "synchronizationId": "57bfbc9f-108d-4131-a300-5f7d9e69c11b",
  "accountId": "865d3a4d-3803-486d-bdf3-a85679d9fad2",
  "specificationsUpdated": true,
  "positionsUpdated": true,
  "ordersUpdated": true
}