Position Green API: Dateien hochladen

Geändert am Do, 17 Jul um 6:59 NACHMITTAGS

Daten in Position Green einfügen


Um Dateien in Position Green zu importieren, können Sie eine Datei per HTTP POST an https://apiurl/imports senden.


Zudem müssen Sie gültige Anmeldedaten in Form eines Zugangstokens angeben.


Die Anfrage muss die Inhaltsart multipart/form-data haben und die Datei muss als variable Datei gesendet werden. Zusammen mit der Dateiart (String) gibt dies die Art der importierten Datei an. Wenn Sie mehrere verschiedene Importe haben, wird diese Angabe verwendet, um festzulegen, mit welchem Import begonnen werden soll. Ausführlichere Informationen zur Verwendung dieser Funktion finden Sie in den Beispielen im Abschnitt "Referenzen" am Ende des Artikels.


Hinweis zu fileType-Werten


fileType ist ein String-Wert, der mit einem vorhandenen Import-Konfigurationsschlüssel in Position Green übereinstimmen muss.


Diese String-Werte werden von Position Green auf Anfrage zur Verfügung gestellt. 


Werden weitere Import-Konfigurationen zur Plattform hinzugefügt, wenn das Hochladen über API gewünscht ist, dann muss der verfügbare fileType-Wert erneut angefragt werden.


Beispiel 1 - Eine Datei nur mit HTTP in die Position Green API importieren


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; }
}


Beispiel 2 - Eine Datei mittels der Datenbank zur Verwaltung von OpenID Connect in die Position Green API importieren


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;
       }
   }
}


JSON importieren


Wenn die Konfiguration im JSON-Format vorliegt, kann die Importkonfiguration über den Endpunkt /imports/json eingegeben werden. In diesem Fall muss die JSON-Konfiguration als String im Parameter content gesendet werden. Hier sehen Sie die Einzelheiten zum Endpunkt:


POST /imports/json

Erkunden Sie den Importbereich auf unserer Swagger-Seite.


Base64-String importieren

Wenn die Konfiguration im Base64-String-Format vorliegt, kann die Importkonfiguration über den Endpunkt /imports/base64 eingegeben werden. In diesem Fall muss die Base64-Konfiguration als String im Parameter content gesendet werden. Hier sehen Sie die Einzelheiten zum Endpunkt:


POST /imports/base64


Erkunden Sie den Importbereich auf unserer Swagger-Seite.

War dieser Artikel hilfreich?

Das ist großartig!

Vielen Dank für das Feedback

Leider konnten wir nicht helfen

Vielen Dank für das Feedback

Wie können wir diesen Artikel verbessern?

Wählen Sie wenigstens einen der Gründe aus
CAPTCHA-Verifikation ist erforderlich.

Feedback gesendet

Wir wissen Ihre Bemühungen zu schätzen und werden versuchen, den Artikel zu korrigieren