Adobe Sign (eco sign) API enviando el documento usando C #

Bueno, tengo un conocimiento limitado de trabajar con API

Estoy tratando de familiarizarme con la API de Adobe Sign y llegar a un callejón sin salida, en la página de prueba he ingresado esto y funciona

introduzca la descripción de la imagen aquí

Pero no tengo idea de cómo hacer eso en C #

He intentado lo siguiente, pero sé que faltan las cosas de OAuth y no estoy seguro de qué intentar a continuación. por cierto, foo.GetAgreementCreationInfo () solo obtiene la cadena que se encuentra en la captura de pantalla, simplemente la moví hacia afuera porque era grande y fea

var foo = new Models(); var client = new RestClient("https://api.na1.echosign.com/api/rest/v5"); // client.Authenticator = new HttpBasicAuthenticator(username, password); var request = new RestRequest("agreements/{AgreementCreationInfo}", Method.POST); request.AddParameter("name", "value"); // adds to POST or URL querystring based on Method request.AddUrlSegment("AgreementCreationInfo", foo.GetAgreementCreationInfo()); // replaces matching token in request.Resource IRestResponse response = client.Execute(request); var content = response.Content; // raw content as string 

Estás malinterpretando la documentación de la API. El parámetro Access-Token necesario en su API es claramente un encabezado HTTP, mientras que AgreementCreationInfo es simplemente el cuerpo de la solicitud en formato JSON. No hay un segmento de URI, por lo que vuelva a escribir su código de la siguiente manera:

 var foo = new Models(); //populate foo var client = new RestClient("https://api.na1.echosign.com/api/rest/v5"); var request = new RestRequest("agreements", Method.POST); request.AddHeader("Access-Token", "access_token_here!"); // request.AddHeader("x-api-user", "userid:jondoe"); //if you want to add the second header request.AddParameter("application/json", foo.GetAgreementCreationInfo(), ParameterType.RequestBody); IRestResponse response = client.Execute(request); var content = response.Content; 

Tenga en cuenta también que en RESTSharp no necesita en absoluto serializar su cuerpo en JSON. Si creas un objeto fuertemente tipado (o solo un objeto anónimo podría ser suficiente) que tenga la misma estructura de tu JSON final, RESTSharp lo serializará por ti.

Para un mejor enfoque, le sugiero que reemplace esta línea:

 request.AddParameter("application/json", foo.GetAgreementCreationInfo(), ParameterType.RequestBody); 

Con ésos:

 request.RequestFormat = DataFormat.Json; request.AddBody(foo); 

Asumiendo que su objeto foo es de tipo Models y tiene la siguiente estructura junto con sus propiedades:

 public class Models { public DocumentCreationInfo documentCreationInfo { get; set; } } public class DocumentCreationInfo { public List fileInfos { get; set; } public string name { get; set; } public List recipientSetInfos { get; set; } public string signatureType { get; set; } public string signatureFlow { get; set; } } public class FileInfo { public string transientDocumentId { get; set; } } public class RecipientSetInfo { public List recipientSetMemberInfos { get; set; } public string recipientSetRole { get; set; } } public class RecipientSetMemberInfo { public string email { get; set; } public string fax { get; set; } }