Retrieving Services Availability with Websocket API

Hi team, I am currently using Websocket API with Python and trying to get a response from the ADS server about available services to be using by the application at a certain point in time.

The expected results are like mapping "ServiceName" with "State", when accessing ADSMON >> Services Statistics. For example:

  • ELEKTRON_DD : UP
  • DELAYED_CONF : UP

Is there any request to be used with Python Websocket API to retrieve such information?

Best Answer

  • Jirapongse
    Answer ✓

    @Dustinn

    Thank you for reaching out to us.

    Yes, you can use the source directory request message.

    {
        "ID": 2,
        "Domain": "Source",
        "Key": {
            "Filter": 3
        }
    }

    The response is:

    [
    {
    "ID": 2,
    "Type": "Refresh",
    "Domain": "Source",
    "Key": {
    "Filter": 3
    },
    "State": {
    "Stream": "Open",
    "Data": "Ok"
    },
    "Map": {
    "KeyType": "UInt",
    "Entries": [
    {
    "Action": "Add",
    "Key": 257,
    "FilterList": {
    "Entries": [
    {
    "ID": 1,
    "Action": "Set",
    "Elements": {
     "Name": "ELEKTRON_DD",
    "SupportsQoSRange": 0,
    "Capabilities": {
    "Type": "Array",
    "Data": {
    "Type": "UInt",
    "Data": [
    5,
    6,
    ...
    ]
    }
    },
    "QoS": {
    "Type": "Array",
    "Data": {
    "Type": "Qos",
    "Data": [
    {
    "Timeliness": "Realtime",
    "Rate": "JitConflated"
    }
    ]
    }
    },
    ...,

    }
    },
    {
    "ID": 2,
    "Action": "Set",
    "Elements": {
     "ServiceState": 1,
                                       "AcceptingRequests": 1

    }
    }
    ]
    }
    },
    ...
    }
    ]

Answers

  • Hello @Dustinn

    Just want to add more information from @Jirapongse answer. You can check the service status from the ServiceState property.

    • 0: Down
    • 1: Up

    1693292859023.png

    Additionally, you can customize the filter parameter based on your preference:

    {
      "Key": {
        "Filter": <Filter>
      },
      "ID": 2,
      "Domain": "Source"
    }

    The "Filter" value is a mask that provides different levels of details:

    • 1 (SERVICE_INFO_FILTER) - info that identifies a service
    • 2 (SERVICE_STATE_FILTER) - info about the current state of a service
    • 4 (SERVICE_GROUP_FILTER) - item group status and item group merge info
    • 8 (SERVICE_LOAD_FILTER) - info about the service workload
    • 24 (SERVICE_DATA_FILTER) - info that should be applied to all items associated
    • 32 (SERVICE_LINK_FILTER) - info about the upstream sources

    which will provide more details in the response.

    The filter that suggested Jirapongse is 3 which means SERVICE_INFO_FILTER (1) + SERVICE_STATE_FILTER (2).


  • @wasin.w

    Many thanks for your additional information. May I know in which document I can view those details? The "Websocket API Protocol Specification" does not seems to contain those.
  • Hello @Dustinn

    This information is available in the "Source Directory Domain" section of the Refinitiv Domain Model Usage Guide document (RDM Usage Guide).

    You can find the documents from the following links: