title: DocuSign Python SDK - Retrieve newly generated document to sign?
body: <p>I am trying to develop a web app for my company that will generate a pdf to be signed by one user. The user enters information into a form, and then, using weasyprint, an html file that I've formatted generates a pdf containing the user information. Finally, using docusign's python SDK, I want a field that requires a signature to be able to be signed by the user. Everything up until the docusign bit is working.</p>
  
  <p>The following is the code I'm currently using, based on the example by @Lee.</p>
  
  <pre><code>def Signview(request):
      myobject = MYOBJECT.objects.filter().order_by('-id')[0]
      username = "myUsername"
      integrator_key = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"
      base_url = "https://demo.docusign.net/restapi"
      oauth_base_url = "account-d.docusign.com"
      redirect_uri = "http://localhost:8000/path/to/redirect/uri"
      private_key_filename = "path/to/pKey.txt"
      user_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
      client_user_id = 'Your System ID' #This is the actual string I'm using
  
      # Add a recipient to sign the document
      signer = docusign.Signer()
      signer.email = myobject.email #myobject is a model from my database, containing this information.
      signer.name = myobject.name
      signer.recipient_id = '1'
      signer.client_user_id = client_user_id
  
      sign_here = docusign.SignHere()
      sign_here.document_id = '1'
      sign_here.recipient_id = '1'
      sign_here.anchor_case_sensitive = 'true'
      sign_here.anchor_horizontal_alignment = 'left'
      sign_here.anchor_ignore_if_not_present = 'false'
      sign_here.anchor_match_whole_word = 'true'
  
      sign_here.anchor_string = 'Sign Here'
      sign_here.anchor_units = 'cms'
      sign_here.anchor_x_offset = '0'
      sign_here.anchor_y_offset = '0'
      sign_here.tab_label = 'sign_here'
      tabs = docusign.Tabs()
      tabs.sign_here_tabs = [sign_here]
  
      # Create a signers list, attach tabs to signer, append signer to signers.
      # Attach signers to recipients objects
      signers = []
      tabs = tabs
      signer.tabs = tabs
      signers.append(signer)
      recipients = docusign.Recipients()
      recipients.signers = signers
  
      # Create an envelope to be signed
      envelope_definition = docusign.EnvelopeDefinition()
      envelope_definition.email_subject = 'My email subject'
      envelope_definition.email_blurb = 'My email blurb.'
  
      # Add a document to the envelope_definition
      pdfpath = "path/to/mypdf.pdf"
      with open(pdfpath, 'rb') as signfile:
          file_data = signfile.read()
          doc = docusign.Document()
          base64_doc = base64.b64encode(file_data).decode('utf-8')
          doc.document_base64 = base64_doc
          doc.name = "mypdf_signed.pdf"
          doc.document_id = '1'
          envelope_definition.documents = [doc]
          signfile.close()
      envelope_definition.recipients = recipients
      envelope_definition.status = 'sent'
  
      api_client = docusign.ApiClient(base_url)
  
      oauth_login_url = api_client.get_jwt_uri(integrator_key, redirect_uri, oauth_base_url)
      print(oauth_login_url)
  
      api_client.configure_jwt_authorization_flow(private_key_filename, oauth_base_url, integrator_key, user_id, 3600)
      docusign.configuration.api_client = api_client
  
      auth_api = AuthenticationApi()
      envelopes_api = Envelopes_Api()
  
      try: #login here via code
          login_infoi = auth_api.login()
          login_accounts = login_info.login_accoutns
          base_url, _ = login_accounts[0].base_url.split('/v2')
          api_client.host = base_url
          docusign.configuration.api_client = api_client
  
          envelope_summary = envelopes_api.create_envelope(login_accounts[0].account_id, envelope_definition = envelope_definition)
  
          print(envelope_summary)
      except ApiException as e:
          raise Exception("Exception when calling DocuSign API: %s" % e)
      except Exception as e:
          print(e)
  </code></pre>
  
  <p>The following is the error that I'm receiving (Bad Request API Exception):</p>
  
  <pre><code>Environment:
  
  
  Request Method: GET
  Request URL: http://localhost:8000/createquote/genloa/sign/
  
  Django Version: 2.0.6
  Python Version: 3.7.0
  Installed Applications:
  ['createquote',
   'django.contrib.admin',
   'django.contrib.auth',
   'django.contrib.contenttypes',
   'django.contrib.sessions',
   'django.contrib.messages',
   'django.contrib.staticfiles']
  Installed Middleware:
  ['django.middleware.security.SecurityMiddleware',
   'django.contrib.sessions.middleware.SessionMiddleware',
   'django.middleware.common.CommonMiddleware',
   'django.middleware.csrf.CsrfViewMiddleware',
   'django.contrib.auth.middleware.AuthenticationMiddleware',
   'django.contrib.messages.middleware.MessageMiddleware',
   'django.middleware.clickjacking.XFrameOptionsMiddleware']
  
  
  
  Traceback:
  
  File "C:\users\wkstat\appdata\local\programs\python\python37\lib\site-packages\django\core\handlers\exception.py" in inner
    35.             response = get_response(request)
  
  File "C:\users\wkstat\appdata\local\programs\python\python37\lib\site-packages\django\core\handlers\base.py" in _get_response
    128.                 response = self.process_exception_by_middleware(e, request)
  
  File "C:\users\wkstat\appdata\local\programs\python\python37\lib\site-packages\django\core\handlers\base.py" in _get_response
    126.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)
  
  File "C:\Users\wkstat\Desktop\Development\LNQuoteTool\createquote\views.py" in Signview
    141.  api_client.configure_jwt_authorization_flow(private_key_filename, oauth_base_url, integrator_key, user_id, 3600)
  
  File "C:\users\wkstat\appdata\local\programs\python\python37\lib\site-packages\docusign_esign\api_client.py" in configure_jwt_authorization_flow
    126.                                 post_params=self.sanitize_for_serialization({"assertion": assertion, "grant_type": "urn:ietf:params:oauth:grant-type:jwt-bearer"}))
  
  File "C:\users\wkstat\appdata\local\programs\python\python37\lib\site-packages\docusign_esign\api_client.py" in request
    430.                                          body=body)
  
  File "C:\users\wkstat\appdata\local\programs\python\python37\lib\site-packages\docusign_esign\rest.py" in POST
    244.                             body=body)
  
  File "C:\users\wkstat\appdata\local\programs\python\python37\lib\site-packages\docusign_esign\rest.py" in request
    200.             raise ApiException(http_resp=r)
  
  Exception Type: ApiException at /createquote/genloa/sign/
  Exception Value: (400)
  Reason: Bad Request
  HTTP response headers: HTTPHeaderDict({'Cache-Control': 'private', 'Content-Type': 'text/html', 'X-AspNetMvc-Version': '5.2', 'X-DocuSign-TraceToken': 'ec891538-ed2f-4250-bc50-966c96065052', 'X-DocuSign-Node': 'DA1DFE4', 'Date': 'Tue, 31 Jul 2018 18:07:22 GMT', 'Content-Length': '11'})
  HTTP response body: b'Bad Request'
  </code></pre>
  
  <p>I have added the Redirect URI to my docusign admin account. I don't understand what it is I'm doing wrong.</p>
  
  <p>Below are a couple of requested variables:</p>
  
  <p><strong>oauth_base_url</strong>: account-d.docusign.com</p>
  
  <p><strong>oauth_login_url</strong>: <a href="https://account-d.docusign.com/oauth/auth?response_type=code&amp;client_id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&amp;scope=signature%20impersonation&amp;redirect_uri=http%3A%2F%2Flocalhost%3A8000%2Fcreatequote%2Fgenloa%2Fsign%2F" rel="nofollow noreferrer">https://account-d.docusign.com/oauth/auth?response_type=code&amp;client_id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&amp;scope=signature%20impersonation&amp;redirect_uri=http%3A%2F%2Flocalhost%3A8000%2Fcreatequote%2Fgenloa%2Fsign%2F</a></p>