docs: def jwt_create_token(user_id=None, additional_data=None):
      """Encode the JWT token.
  
      :param int user_id: Addition of user_id.
      :param dict additional_data: Additional information for the token.
      :returns: The encoded token.
      :rtype: str
  
      .. note::
          Definition of the JWT claims:
  
          * exp: ((Expiration Time) expiration time of the JWT.
          * sub: (subject) the principal that is the subject of the JWT.
          * jti: (JWT ID) UID for the JWT.
      """
      # Create an ID
      uid = str(uuid.uuid4())
      # The time in UTC now
      now = datetime.utcnow()
      # Build the token data
      token_data = {
          'exp': now + current_app.config['ACCOUNTS_JWT_EXPIRATION_DELTA'],
          'sub': user_id or current_user.get_id(),
          'jti': uid,
      }
      # Add any additional data to the token
      if additional_data is not None:
          token_data.update(additional_data)
  
      # Encode the token and send it back
      encoded_token = encode(
          token_data,
          current_app.config['ACCOUNTS_JWT_SECRET_KEY'],
          current_app.config['ACCOUNTS_JWT_ALOGORITHM']
      ).decode('utf-8')
      return encoded_token