Forum Discussion

rostyslavpopov's avatar
rostyslavpopov
Explorer | Level 4
1 year ago

Missing parameter: client_id for lwc

Im working on a lwc where id like to embed a signing process in iframe, I was able to successfully retrieve sign URL, but when I try to use it on iframe I got following error, at which step do I need to set my client id?
So far I used this with client id in request body

String apiUrl = 'https://api.hellosign.com/v3/signature_request/create_embedded_with_template';
and 

request.setEndpoint('https://api.hellosign.com/v3/embedded/sign_url/' + signatureId);

with just signature id in request body

Also I have a problem setting body for my request, I used this class to generate json string, but when I use this approach I get error({"error":{"error_msg":"No template_id or template_ids specified","error_path":"template_id","error_name":"bad_request"}})

HelloSignJSON.Signing_options so = new HelloSignJSON.Signing_options();

so.default_type = 'draw';

so.draw = true;

so.phone = true;

so.type = true;

so.upload = true;

HelloSignJSON.Signers signer = new HelloSignJSON.Signers();

signer.role = 'Lead.Customer';

signer.name = 'Rostyslav';

signer.email_address = 'popov.rst@gmail.com';

List<HelloSignJSON.Signers> signers = new List<HelloSignJSON.Signers>{signer};

HelloSignJSON hsj = new HelloSignJSON();

hsj.template_ids = new List<String>{'90c43afee504f24a2dcd67ab7991f8f3f5900ef3'};

hsj.client_id = 'CLIENT_ID';

hsj.subject = 'Embedded Subject';

hsj.message = 'Embedded message';

hsj.signing_options = so;

hsj.test_mode = true;

hsj.signers = signers;

String requestBody = JSON.serialize(hsj);

17 Replies

Replies have been turned off for this discussion
  • DB-Des's avatar
    DB-Des
    Icon for Dropbox Community Moderator rankDropbox Community Moderator
    1 year ago

    Hi eappsiadvancenow123,

    It would appear as though the payload request you are sending to the API is not being formed properly. Could you please share a full code snippet of the code being used to generate the payload request? As well as the language, SDK, or library being used to generate and send the request.

  • rostyslavpopov's avatar
    rostyslavpopov
    Explorer | Level 4
    1 year ago

    Yes, using apex approach i needed to modify URL by placing client id as first or last URL argument. But I switched to JS SKD approach and its easier in there and provides better user experience

  • eappsiadvancenow123's avatar
    eappsiadvancenow123
    New member | Level 1
    1 year ago

    DB-DesI'm passing the following request but still I'm getting the same error:

    {"client_id":"MY_CLIENT_ID","template_ids":["xyz"],"signers":"[{"role":"Lead","name":"Test Template","email_address":"test@mycompany.com"}]"}

    the above request has template_ids in JSON array format only but still the API response is {"error":{"error_msg":"No template_id or template_ids specified","error_path":"template_id","error_name":"bad_request"}}

  • DB-Des's avatar
    DB-Des
    Icon for Dropbox Community Moderator rankDropbox Community Moderator
    1 year ago

    Hi rostyslavpopov

    If the Client ID is a required parameter for the endpoint(s) you are using, it must be included to ensure proper functionality.

    Including the Client ID in your requests is both standard practice and safe. The Dropbox Sign API is designed with robust security measures in place to protect data and ensure the integrity of all interactions. Rest assured, we wouldn’t request this information if it posed a security risk.

  • rostyslavpopov's avatar
    rostyslavpopov
    Explorer | Level 4
    1 year ago

    and what about the first problem with missing client id? I figured out that I can put client id into URL and it will work, but this is not secure, right? So I need to know how to make it secure

  • DB-Des's avatar
    DB-Des
    Icon for Dropbox Community Moderator rankDropbox Community Moderator
    1 year ago

    Hi rostyslavpopov

    It appears as though the JSON serialization process in your code is producing an unexpected result — the List<String> is somehow being serialized into a JSON object rather than a JSON array, which is what the API expects.

    We would recommend reviewing your code to ensure the template IDs are being sent in an array and not a JSON object.