Peter Julian
Peter Julian

Reputation: 11

CreateEnvelope() throws exception. No message

I am trying to create and send an envelope on the demo environment using the docusign C# API. I am using JWT as my OAuth2 flow. I am able to properly grab the access code needed to authorized my embedded signing.

The function CreateEnvelope fails and throws an exception. The exception shows no information other than that the function failed. Image of Exception

Has anyone encountered a similar situation before? I have provided a snippet of the code below. Is there anything clearly wrong with how I may be trying to create the envelope?

    public static void DocusignFormatter()
    {
        EnvelopeDefinition envDef = new EnvelopeDefinition();
        Document doc = new Document();
        doc.DocumentBase64 = System.Convert.ToBase64String(pdfFileInfo.fileBytes);
        doc.Name = pdfFileInfo.DocName;
        doc.DocumentId = "1";
        
        envDef.Documents = new List<Document>();
        envDef.Documents.Add(doc);
        envDef.Recipients = new Recipients();
        envDef.Recipients.Signers = new List<Signer>();

        for (int i = 0; i < signatureFields.Count; i++)
        {
            Signer signer = new Signer();
            signer.Email = docRegistrant.Email;
            signer.Name = docApplicants[i].FirstName + " " + docApplicants[i].LastName;
            signer.RecipientId = $"{i+1}";
            signer.Tabs = new Tabs();
            signer.Tabs.SignHereTabs = new List<SignHere>();
            List<MyPdfSignatureField> fields;
            signatureFields.TryGetValue(i, out fields);
            foreach (MyPdfSignatureField field in fields)
            {
                SignHere signHere = new SignHere();
                signHere.DocumentId = "1";
                signHere.PageNumber = field.PageNum.ToString();
                signHere.RecipientId = i.ToString();
                signHere.XPosition = field.XLocation.ToString();
                signHere.YPosition = field.YLocation.ToString();
                signer.Tabs.SignHereTabs.Add(signHere);
            }
            envDef.Recipients.Signers.Add(signer);
        }
        envDef.Status = "created";
        


        ApiClient apiClient = new ApiClient(DocusignHelpers.OAuthBasePath);

        Configuration cfi = new Configuration(apiClient);
        

        cfi.AddDefaultHeader("Authorization", "Bearer " + DocusignHelpers.AccessToken);
        cfi.AccessToken = DocusignHelpers.AccessToken;
        cfi.Password = DocusignHelpers.Password;


        EnvelopesApi envelopesApi = new EnvelopesApi(cfi);

        EnvelopeSummary envelopeSummary = envelopesApi.CreateEnvelope(DocusignHelpers.AccountId, envDef);

Caught Exception values

Upvotes: 1

Views: 146

Answers (2)

Peter Julian
Peter Julian

Reputation: 11

I solved this friends.

My api url was incorrect.

My key confusion was that the auth endpoints have a separate base url than the rest of the RESTful API.

Authorization url for the demo was: https://account-d.docusign.com

The API client object actually has static fields that contain the urls for the different platforms demo, prod, staging.

I ended up using

ApiClient.Demo_REST_BasePath = "https://demo.docusign.net/restapi"

Thank you all for the replies and help

Upvotes: 0

Inbar Gazit
Inbar Gazit

Reputation: 14015

you are missing this line:

envDef.EmailSubject = "Test, please sign.";

But that's not the reason for the exception, since you created it as "created" (draft) mode, but it would be the issue once you try to send it.

You may want to confirm the values of all your recipients and ensure you're not sending something that's not an email (for example) in an email field etc.

Upvotes: 1

Related Questions