Position Green API: Dateien hochladen

Geändert am Di, 11 Aug um 3:22 NACHMITTAGS

Daten in Position Green einfügen


Um Daten in Position Green zu importieren, können Sie HTTP-POST-Anfragen an die Import-Endpunkte senden. Synchrone Hochladungen werden sofort verarbeitet, während Queue-Endpunkte eine asynchrone Hintergrundverarbeitung für große Datensätze ermöglichen.


https://api.positiongreen.com/v1/imports


Sie müssen gültige Anmeldedaten in Form eines Zugriffstokens oder einer Client-Id-/Secret-Header-Konfiguration angeben.


Verfügbare Importkonfigurationen abrufen

Ruft eine Liste der verfügbaren Importkonfigurationsschlüssel für den authentifizierten Mandanten ab.

GET https://api.positiongreen.com/v1/imports

Beispielantwort (200 OK)

[
  „ERP_FINANCIAL_IMPORT“,
  „FACILITY_ENERGY_IMPORT“,
  „TRAVEL_DATA_IMPORT“
]


Hinweis zu den Werten „fileType“ und „yearId“


„fileType / importConfiguration“ ist ein Zeichenfolgenwert, der mit einem vorhandenen Schlüssel „import-configuration“ in Position Green übereinstimmen muss. Die verfügbaren Konfigurationsschlüssel können über GET /imports abgefragt oder auf Nachfrage von Position Green bereitgestellt werden.


Optionaler Parameter „yearId “: Alle Import-Endpunkte akzeptieren einen optionalen Parameter „yearId“ (UUID). Wird dieser Parameter weggelassen, werden die Daten in das aktuell aktive Jahr der Organisation importiert.


Endpunkte für den synchronen Import

1. Binärdatei hochladen (Multipart-Formular)

Die Anfrage muss den Inhaltstyp „multipart/form-data“ haben, wobei die Datei als Dateiangegeben, zusammen mit fileType (Zeichenkette) und dem optionalen yearId (UUID).

POST https://api.positiongreen.com/v1/imports


2. JSON-Payload importieren

Für von Position Green konfigurierte Importe zur Verarbeitung von JSON-Daten.

POST https://api.positiongreen.com/v1/imports/json

Beispiel für einen Request-Body:

{
  "options": {
    "importConfiguration": "ERP_FINANCIAL_IMPORT"
  },
  "payload": "{\"records\": [{\"konto\": \"1001\", \"amount\": 520,50}]}",
  "yearId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}


3. Base64-kodierte Datei importieren

Hochlädt eine Datei, die im Base64-Zeichenfolgenformat kodiert ist.

POST https://api.positiongreen.com/v1/imports/base64

Beispiel für einen Request-Body:

{
  "name": "data-export.xml",
  "content": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4...",
  "fileType": "ERP_FINANCIAL_IMPORT",
  "yearId": null
}


Hintergrund / Endpunkte für den Import in der Warteschlange

Verwendung der /queue -Endpunkte bei großen Datensätzen. Diese Endpunkte geben sofort den HTTP-Status 202 „Accepted“ sowie eine importId. Sie können den Status-Endpunkt abfragen, um den Fortschritt zu verfolgen.

EndpunktFormatBeschreibung
POST /imports/queuemultipart/form-dataStellt das Hochladen einer Binärdatei zur Ausführung im Hintergrund in die Warteschlange.
POST /imports/queue/jsonapplication/jsonStellt eine JSON-Nutzlast für die Ausführung im Hintergrund in die Warteschlange.
POST /imports/queue/base64application/jsonStellt eine Base64-kodierte Datei zur Ausführung im Hintergrund in die Warteschlange.


Beispiel für eine Antwort in der Warteschlange (202 Akzeptiert)

{
  "importId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"
}


Status der in der Warteschlange befindlichen Importe überprüfen

Verwendung des Tools: Rufe diesen Endpunkt importId abzufragen, die von einem /queue -Endpunkt zurückgegeben wurde, um den Verarbeitungsstatus zu überprüfen.

HOL DIR „https://api.positiongreen.com/v1/imports/status/“ unter{importId}

Pfad-Parameter

NameArtBeschreibung
importId*Zeichenkette (UUID)Erforderlich. Die Kennung, die zurückgegeben wurde, als der Import in die Warteschlange gestellt wurde.


Beispiel für eine Statusantwort (200 OK)

{
  "importId": "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
  "status": "Done",
  "startedAt": "2026-02-01T10:00:00Z",
  "finishedAt": "2026-02-01T10:02:15Z",
  "details": {
    "validations": [
      {
        "severity": "Info",
        "message": "150 Datensätze wurden erfolgreich importiert."
      }
    ]
  }
}

Mögliche Status werte: In der Warteschlange, In Bearbeitung, Erledigt, Fehlgeschlagen.


Beispiel 1 – Verwendung von HttpClient zum Importieren einer Datei in die Position Green API

namespace TestClient;
public class Program
{
    private static string apiUrl = "https://api.positiongreen.com/v1/imports";
    private static string loginUrl = "https://login.positiongreen.com/connect/token"; 
    
    public static async Task Main()
    {
        var token = await RequestToken("clientid", "clientsecret");
        var fileType = "ERP_FINANCIAL_IMPORT";
        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 data = new Dictionary<string, string>
        {
            {"client_id", clientId}
            {"client_secret", clientSecret}
            {"grant_type", "client_credentials"}
        };
        var response = await client.PostAsync("/connect/token", new FormUrlEncodedContent(data));
        var token = await response.Content.ReadFromJsonAsync<Token>();
        return token.access_token;
    }

    static async Task UploadFile(string token, string file, string fileType)
    {
        var client = new HttpClient();
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
        
        var form = new MultipartFormDataContent();
        var fileData = await File.ReadAllBytesAsync(file);
        var byteArrayContent = new ByteArrayContent(fileData);
        byteArrayContent.Headers.ContentType = MediaTypeHeaderValue.Parse("text/xml");
        
        form.Add(byteArrayContent, "file", file);
        form.Add(new StringContent(fileType), "fileType");
        
        var response = await client.PostAsync(apiUrl, form);
        if (!response.IsSuccessStatusCode)
        {
            throw new Exception(await response.Content.ReadAsStringAsync());
        }
    }
}

public class Token
{
    public string access_token { get; set; }
}


Entdecken Sie den gesamten Abschnitt „Import“ 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