Requirement of additional roles or permissions to the access token for Market Data Feed V3

Hi Team,

Is there a requirement to give additional roles or permissions to access the live Market Data Feed V3 ?

Hi @RISHIKUL_29593713

There are no additional roles/ permissions needed to access the live market data feed V3.
However, to access Depth 30 mode, you’ll have to be on the plus plan.

Hi Mohit,
Thank you for your response. I want to access d_30 data for a given option.
I have been struggling quite a lot with it to get d_30 information. Could you or someone from the team help review. Also, I did upgrade to the plus plan earlier this week.
Code is below
“”"

Import necessary modules
import asyncio
import json
import ssl
import upstox_client
import websockets
from google.protobuf.json_format import MessageToDict

import MarketDataFeedV3_pb2 as pb

def get_market_data_feed_authorize(api_version, configuration):
“”“Get authorization for market data feed.”“”
api_instance = upstox_client.WebsocketApi(
upstox_client.ApiClient(configuration))
api_response = api_instance.get_market_data_feed_authorize(api_version)
return api_response

def decode_protobuf(buffer):
“”“Decode protobuf message.”“”
feed_response = pb.FeedResponse()
feed_response.ParseFromString(buffer)
return feed_response

async def fetch_market_data():
“”“Fetch market data using WebSocket and print it.”“”

Create default SSL context
ssl_context = ssl.create_default_context()
ssl_context.check_hostname = False
ssl_context.verify_mode = ssl.CERT_NONE

Configure OAuth2 access token for authorization
configuration = upstox_client.Configuration()

api_version = '3.0'
configuration.access_token = ''

response = get_market_data_feed_authorize(
    api_version, configuration)

Connect to the WebSocket with SSL context
async with websockets.connect(response.data.authorized_redirect_uri, ssl=ssl_context) as websocket:
    print('Connection established')

    await asyncio.sleep(1) 


    data = {
        "guid": "hdjhfjkd-3452s2-df",
        "method": "sub",
        "data": {
            "mode": "full_d30",
            "instrumentKeys": ["NSE_FO|50917"]
        }
    }


    binary_data = json.dumps(data).encode('utf-8')
    await websocket.send(binary_data)


    while True:
        message = await websocket.recv()
        decoded_data = decode_protobuf(message)


        data_dict = MessageToDict(decoded_data)

        Print the dictionary representation
        print(json.dumps(data_dict))

asyncio.run(fetch_market_data())
“”"

Hi @RISHIKUL_29593713, It looks like you’re trying to use the V3 WebSocket for full_d30 but are fetching the authorization URL using the V2 method. Please use the correct method: get_market_data_feed_authorize_v3 instead of get_market_data_feed_authorize to obtain the appropriate authorization URL.

Also, ensure you’re using the latest version of the upstox-client that includes the newly added methods.

For further guidance, you can also refer to the sample WebSocket example.

Let us know if you continue to face any issues.

1 Like