Forum Discussion

hellinodreman's avatar
New Contributor
4 years ago

JWT generation

I am trying to generate a JWT using python. I followed the given example in the documentation, but I always get error 400. 


I am using the following code:

# BASE URL for Zephyr for Jira Cloud

# RELATIVE PATH for token generation and make request to api
RELATIVE_PATH = '/public/rest/api/1.0/cycle'

# CANONICAL PATH (Http Method & Relative Path & Query String)

# TOKEN HEADER: to generate jwt token
payload_token = {
'sub': ACCOUNT_ID,
'qsh': hashlib.sha256(CANONICAL_PATH.encode('utf-8')).hexdigest(),
'iss': ACCESS_KEY,
'exp': int(time.time())+JWT_EXPIRE,
'iat': int(time.time())

token = jwt.encode(payload_token, SECRET_KEY, algorithm='HS256').strip()

headers = {
'Content-Type': 'application/json',
'Authorization': 'JWT '+token,
'zapiAccessKey': ACCESS_KEY

# REQUEST PAYLOAD: to create cycle
cycle = {
'name': 'Sample Cycle',
'projectId': '10200',
'versionId': '5.X'

raw_result = + RELATIVE_PATH, headers=headers, json=cycle)

Could anyone tell me what I'm doing wrong? 

4 Replies

    • hellinodreman's avatar
      New Contributor

      Hi, thanks. I had the decode function, but I don't know if don't have the right jwt library, because when using it I get this error:


      token = jwt.encode(payload_token, SECRET_KEY, algorithm='HS256').strip().decode('utf-8')
      AttributeError: 'str' object has no attribute 'decode'

      • JagadeshMadhura's avatar

        Can you try installing  below version and then try again

        pip3 install pyjwt==1.5.3