Position Green API: Uppladdning av filer

Ändrad den Mån, 9 juni vid 3:55 E.M.

Infoga data i Position Green


För att importera filer till Position Green kan du HTTP POSTa en fil till https://apiurl/imports.


Du måste också ange giltiga inloggningsuppgifter i form av en access-token.


Begäran måste ha innehållstypen multipart/form-data och den fil som skickas som variabel fil. Detta tillsammans med en filetype (sträng) identifierar typen av importerad fil, om du har många olika importer används det för att identifiera vilken som ska starta processen. Se exempel i referenskapitlet i slutet för mer detaljerad användning av hur det används.


Anmärkning om fileType-värden


fileType är ett strängvärde som måste matcha en befintlig importkonfigurationsnyckel i Position Green.


Dessa strängvärden tillhandahålls av Position Green på begäran. 


Om ytterligare importkonfigurationer läggs till på plattformen där API-uppladdning önskas måste det tillgängliga fileType-värdet återigen begäras.


Exempel 1 - Importera en fil till Position Green API med användning av enbart HTTP


namespace TestClient;
public class Program
{
    private static string apiUrl = "https://apiurl"; //Provided by Position Green on request
    private static string loginUrl = "https://oidcurl"; //Provided by Position Green on request
    public static async Task Main()
    {
        Console.Title = "Console Client Credentials Flow";
        var token = await RequestToken("clientid", "clientsecret"); //Provided by Position Green on request
        var fileType = "file type"; //Provided by Position Green on request
        await UploadFile(token, "data.xml", fileType);
    }
    private static async Task<string> RequestToken(string clientId, string clientSecret)
    {
        var client = new HttpClient();
        client.DefaultRequestHeaders.Add("Accept", "application/json");
        client.BaseAddress = new Uri(loginUrl);
        var grant_type = "client_credentials";
        var data = new Dictionary<string, string>
        {
            { "client_id", clientId },
            { "client_secret", clientSecret },
            { "grant_type", grant_type },
        };
        var postTask = client.PostAsync("/connect/token", new FormUrlEncodedContent(data));
        postTask.Wait();
        var response = postTask.Result;
        var token = await response.Content.ReadFromJsonAsync<Token>();
        return token.access_token;
    }
    static async Task UploadFile(string token, string file, string fileType)
    {
        var handler = new HttpClientHandler()
        {
            AllowAutoRedirect = false
        };
        var client = new HttpClient(handler)
        {
            BaseAddress = new Uri(apiUrl)
        };
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
        var form = new MultipartFormDataContent();
        var fileData = File.ReadAllBytes(file);
        var byteArrayContent = new ByteArrayContent(fileData);
        byteArrayContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
        {
            FileName = file,
            Name = "file"
        };
        byteArrayContent.Headers.ContentType = MediaTypeHeaderValue.Parse("text/xml");
        form.Add(byteArrayContent, "file");
        form.Add(new StringContent(fileType), "fileType");
        var response = await client.PostAsync("/imports", form);
        if (response.StatusCode != HttpStatusCode.OK)
        {
            throw new Exception(await response.Content.ReadAsStringAsync());
        }
        return;
    }
}
public class Token
{
    public string access_token { get; set; }
}


Exempel 2 - Importera en fil till Position Green API med användning av biblioteket för hantering av OpenID Connect


namespace TestClient
{
   class ProgramIdentityModel
   {
       public static async Task Main()
       {
           var loginUrl = "https://oidcurl"; //Provided by Position Green on request
           var clientId = "clientid"; //Provided by Position Green on request
           var clientSecret = "testclient"; //Provided by Position Green on request
           var response = await RequestTokenAsync(loginUrl, clientId, clientSecret);
           var apiUrl = "https://apiurl"; //Provided by Position Green on request
           var fileToUpload = "data.xml";
           var fileType = "file type"; //Provided by Position Green on request
           var redirectUrl = await UploadFile(response.AccessToken, fileToUpload, apiUrl, fileType);
       }
       static async Task<TokenResponse> RequestTokenAsync(string loginUrl, string clientId, string clientSecret)
       {
           var disco = await DiscoveryClient.GetAsync(loginUrl);
           if (disco.IsError) throw new Exception(disco.Error);
           var client = new TokenClient(
               disco.TokenEndpoint,
               clientId,
               clientSecret);
           return await client.RequestClientCredentialsAsync();
       }
       static async Task<Uri> UploadFile(string token, string file, string apiUrl, string fileType)
       {
           var handler = new HttpClientHandler()
           {
               AllowAutoRedirect = false
           };
           var client = new HttpClient(handler)
           {
               BaseAddress = new Uri(apiUrl),
           };
           client.SetBearerToken(token);
           var form = new MultipartFormDataContent();
           var fileData = await File.ReadAllBytesAsync(file);
           var byteArrayContent = new ByteArrayContent(fileData);
           byteArrayContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
           {
               FileName = file,
               Name = "file"
           };
           byteArrayContent.Headers.ContentType = MediaTypeHeaderValue.Parse("text/xml");
           form.Add(byteArrayContent, "file");
           form.Add(new StringContent(fileType), "fileType");
           var response = await client.PostAsync("/imports", form);
           if (response.StatusCode != HttpStatusCode.OK)
           {
               throw new Exception(await response.Content.ReadAsStringAsync());
           }
           return response.Headers.Location;
       } }
   }
}


Importera JSON


Importkonfigurationen kan skickas via slutpunkten /imports/json om konfigurationen är i JSON-format. I så fall måste JSON-konfigurationen skickas som en sträng i innehållsparametern. Se detaljerna för slutpunkten nedan:


POST /imports/json

Utforska importavsnittet på vår Swagger-sida.


Importera base64-sträng

Importkonfigurationen kan skickas via slutpunkten /imports/base64 om konfigurationen är i Base64-strängformat. I detta fall måste Base64-konfigurationen skickas som en sträng i innehållsparametern. Se detaljerna för slutpunkten nedan:


POST /imports/base64


Utforska importavsnittet på vår Swagger-sida.

Var artikeln till hjälp?

Toppen!

Tack för din feedback

Vi beklagar att det inte var till hjälp

Tack för din feedback

Berätta för oss hur vi kan förbättra den här artikeln!

Välj minst en av orsakerna
CAPTCHA-verifiering krävs.

Feddback skickat

Vi uppskattar din feedback och uppdaterar artikeln vid behov