Position Green API : Téléchargement de fichiers

Modifié le  Mar, 11 Août à 3:22 H

Insertion de données dans Position Green


Pour importer des fichiers dans Position Green, vous pouvez envoyer des requêtes HTTP POST aux points de terminaison d'importation. Les envois synchrones sont traités immédiatement, tandis que les points de terminaison de file d'attente permettent un traitement asynchrone en arrière-plan pour les grands ensembles de données.


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


Vous devez fournir des informations d'identification valides sous la forme d'un jeton d'accès ou d'un en-tête « ID client/clé secrète ».


Obtenir les configurations d'importation disponibles

Récupère la liste des clés de configuration d'importation disponibles pour le locataire authentifié.

TÉLÉCHARGER « https://api.positiongreen.com/v1/imports »

Exemple de réponse (200 OK)

[
  « ERP_FINANCIAL_IMPORT »,
  « FACILITY_ENERGY_IMPORT »,
  « TRAVEL_DATA_IMPORT »
]


Remarque concernant les valeurs « fileType » et « yearId »


«fileType / importConfiguration » est une valeur de type chaîne de caractères qui doit correspondre à une clé « import-configuration » existante dans Position Green. Les clés de configuration disponibles peuvent être consultées via la requête GET /imports ou fournies par Position Green sur simple demande.


Paramètre « yearId » facultatif : tous les points de terminaison d'importation acceptent un paramètre « yearId » facultatif (UUID). Si ce champ n'est pas renseigné, les données seront importées dans l'année actuellement active de l'organisation.


Points de terminaison d'importation synchrone

1. Téléverser un fichier binaire (formulaire en plusieurs parties)

La requête doit avoir un type de contenu « multipart/form-data » et le fichier doit être envoyé sous la forme d'un fichier, ainsi que fileType (chaîne de caractères) et, en option, yearId (UUID).

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


2. Importer une charge utile JSON

Pour les importations configurées par Position Green afin de prendre en charge les données JSON.

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

Exemple de corps de requête :

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


3. Importer un fichier encodé en Base64

Permet de charger un fichier encodé au format chaîne Base64.

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

Exemple de corps de requête :

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


Contexte / Points de terminaison d'importation en file d'attente

Pour les ensembles de données volumineux, utilisez les points de terminaison /queue. Ces points de terminaison renvoient immédiatement un statut HTTP 202 « Accepted » et un importId. Vous pouvez interroger le point de terminaison d'état pour suivre la progression.

Point d'extrémitéFormatDescription
POST /imports/queuemultipart/form-dataMet en file d'attente le téléchargement d'un fichier binaire pour une exécution en arrière-plan.
POST /imports/queue/jsonapplication/jsonMet en file d'attente une charge utile JSON pour une exécution en arrière-plan.
POST /imports/queue/base64application/jsonMet en file d'attente un fichier encodé en Base64 pour une exécution en arrière-plan.


Exemple de réponse en file d'attente (202 Accepté)

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


Vérification de l'état des importations en attente

Interrogez ce point de terminaison à l'aide de l' importId renvoyé par un point de terminaison /queue pour vérifier l'état du traitement.

TÉLÉCHARGER « https://api.positiongreen.com/v1/imports/status/ »{importId}

Paramètres de chemin d'accès

NomTypeDescription
importId*chaîne (uuid)Obligatoire. L'identifiant renvoyé lorsque l'importation a été mise en file d'attente.


Exemple de réponse d'état (200 OK)

{
  "importId" : "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
  "status" : "Terminé",
  "startedAt": "2026-02-01T10:00:00Z",
  "finishedAt": "2026-02-01T10:02:15Z",
  "details": {
    "validations": [
      {
        "severity": "Info",
        "message" : "150 enregistrements ont été importés avec succès."
      }
    ]
  }
}

Valeurs possibles pour le statut: En attente, En cours, Terminé, Échec.


Exemple 1 - Importer un fichier dans l'API Position Green à l'aide de HttpClient

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


Découvrez l'intégralité de la section « Import » sur notre page Swagger.

Cet article a-t-il été utile ?

C'est super !

Merci pour votre commentaire

Désolé ! Nous n'avons pas pu vous être utile

Merci pour votre commentaire

Dites-nous comment nous pouvons améliorer cet article !

Sélectionner au moins l'une des raisons
La vérification CAPTCHA est requise.

Commentaires envoyés

Nous apprécions vos efforts et nous allons corriger l'article