using Newtonsoft.Json.Linq;
using System.Threading.Tasks;
public class IssueCredentialClient
private static readonly string ApiEndpoint = "https://v3.legitdoc.com/credential/issue";
public async Task<string> IssueCredentialAsync(
using (var client = new HttpClient())
using (var formData = new MultipartFormDataContent())
formData.Headers.Add("token", authToken);
formData.Add(new StringContent(batchName), "batchName");
formData.Add(new StringContent(fields), "fields");
formData.Add(new StringContent(signatureB64), "signatureB64");
formData.Add(new StringContent(qrX), "qrX");
formData.Add(new StringContent(qrY), "qrY");
formData.Add(new StringContent(qrSize), "qrSize");
formData.Add(new ByteArrayContent(File.ReadAllBytes(filePath)), "document", Path.GetFileName(filePath));
var response = await client.PostAsync(ApiEndpoint, formData);
response.EnsureSuccessStatusCode();
var responseBody = await response.Content.ReadAsStringAsync();
var jObject = JObject.Parse(responseBody);
if (jObject.TryGetValue("documentURL", out documentUrlToken))
var documentUrl = documentUrlToken.Value<string>();
if (!string.IsNullOrEmpty(documentUrl))
var downloadPath = "downloaded_"+Path.GetFileName(filePath);
await DownloadDocumentAsync(client, documentUrl, downloadPath);
private static async Task DownloadDocumentAsync(HttpClient client, string documentUrl, string downloadPath)
using (var response = await client.GetAsync(documentUrl))
response.EnsureSuccessStatusCode();
using (var fs = new FileStream(downloadPath, FileMode.Create))
await response.Content.CopyToAsync(fs);
public static void Main(string[] args)
var client = new IssueCredentialClient();
var downloadedPath = client.IssueCredentialAsync("eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InNoYXJpZi5oYXNzYW5AaWVlZS5vcmciLCJwdWJLZXkiOiJ2VEFzeFdQNldRVWM4dGVPa2xHNGozalB1c3hla09qVlI0bm5nWGVNUDJFPSIsInNpZ25lZF9vbiI6IjIwMjMtMDktMTlUMDU6MDA6MTkuMTE0WiIsInVzZXJfdHlwZSI6Imlzc3VlciIsIm5hbWUiOiJJRUVFIiwidHlwZSI6ImFwaV90b2tlbiIsImlkIjoiNjRmODExMTcyOTk1ZTM1NWZmNWI4N2I0IiwiYWxsb3dlZF9uZXR3b3JrcyI6W10sImlhdCI6MTY5NTA5OTYxOX0.7AEgutuDE6w1ILN1IK4V8E-GRA2tvMdZeLAx8fX6ZYI",
"{\"First Name\":\"BLPuserSS\",\"Program Name\":\"CDAC Certificate program\",\"Program Completion Date\":\"Mar 05 2023\",\"Certificate Number\":\"1181520553\"}",
"6sNiihFpA/sBKsRPOddAN1t0mGl35ActQ2Oa8SBWWKg71wHKGMzcRm5aqWhUwyeNFmRUb+KjDD2Qkyz/MXOCCQ==",
if (!string.IsNullOrEmpty(downloadedPath))
Console.WriteLine("Document downloaded to: " + downloadedPath);
Console.WriteLine("Failed to download document.");