1. Lire le solde
curl "$UMEME_BASE_URL/portefeuille" \
-H "Authorization: Bearer $UMEME_CLE"
// Node.js 18 et plus : fetch est intégré.
const baseUrl = process.env.UMEME_BASE_URL;
const reponse = await fetch(`${baseUrl}/portefeuille`, {
headers: {
Authorization: `Bearer ${process.env.UMEME_CLE}`,
},
});
const donnees = await reponse.json();
// npm install axios
import axios from "axios";
const umeme = axios.create({
baseURL: process.env.UMEME_BASE_URL,
headers: { Authorization: `Bearer ${process.env.UMEME_CLE}` },
timeout: 30000,
});
const { data } = await umeme.get("/portefeuille");
import os
import requests
BASE_URL = os.environ["UMEME_BASE_URL"]
ENTETES = {"Authorization": f"Bearer {os.environ['UMEME_CLE']}"}
reponse = requests.get(
f"{BASE_URL}/portefeuille",
headers=ENTETES,
timeout=30,
)
donnees = reponse.json()
// composer require guzzlehttp/guzzle
$client = new GuzzleHttp\Client([
'base_uri' => getenv('UMEME_BASE_URL') . '/',
'headers' => ['Authorization' => 'Bearer ' . getenv('UMEME_CLE')],
'timeout' => 30,
]);
$reponse = $client->get('portefeuille');
$donnees = json_decode($reponse->getBody(), true);
// Java 15 et plus : java.net.http et blocs de texte.
var baseUrl = System.getenv("UMEME_BASE_URL");
var client = HttpClient.newHttpClient();
var requete = HttpRequest.newBuilder(URI.create(baseUrl + "/portefeuille"))
.header("Authorization", "Bearer " + System.getenv("UMEME_CLE"))
.GET()
.build();
var reponse = client.send(requete, HttpResponse.BodyHandlers.ofString());
2. Lire le relevé
GET /v1/portefeuille/mouvements?du=…&au=… rend chaque mouvement, dans l’ordre, avec le solde après lui. Ajoutez format=csv pour un fichier.
curl -G "$UMEME_BASE_URL/portefeuille/mouvements" \
-H "Authorization: Bearer $UMEME_CLE" \
--data-urlencode "du=2026-11-01" \
--data-urlencode "au=2026-11-07"
// Node.js 18 et plus : fetch est intégré.
const baseUrl = process.env.UMEME_BASE_URL;
const params = new URLSearchParams({
du: "2026-11-01",
au: "2026-11-07",
});
const reponse = await fetch(`${baseUrl}/portefeuille/mouvements?${params}`, {
headers: {
Authorization: `Bearer ${process.env.UMEME_CLE}`,
},
});
const donnees = await reponse.json();
// npm install axios
import axios from "axios";
const umeme = axios.create({
baseURL: process.env.UMEME_BASE_URL,
headers: { Authorization: `Bearer ${process.env.UMEME_CLE}` },
timeout: 30000,
});
const { data } = await umeme.get("/portefeuille/mouvements", {
params: {
du: "2026-11-01",
au: "2026-11-07",
},
});
import os
import requests
BASE_URL = os.environ["UMEME_BASE_URL"]
ENTETES = {"Authorization": f"Bearer {os.environ['UMEME_CLE']}"}
reponse = requests.get(
f"{BASE_URL}/portefeuille/mouvements",
headers=ENTETES,
params={
"du": "2026-11-01",
"au": "2026-11-07",
},
timeout=30,
)
donnees = reponse.json()
// composer require guzzlehttp/guzzle
$client = new GuzzleHttp\Client([
'base_uri' => getenv('UMEME_BASE_URL') . '/',
'headers' => ['Authorization' => 'Bearer ' . getenv('UMEME_CLE')],
'timeout' => 30,
]);
$reponse = $client->get('portefeuille/mouvements', [
'query' => [
'du' => '2026-11-01',
'au' => '2026-11-07',
],
]);
$donnees = json_decode($reponse->getBody(), true);
// Java 15 et plus : java.net.http et blocs de texte.
var baseUrl = System.getenv("UMEME_BASE_URL");
var client = HttpClient.newHttpClient();
var params = Map.of("du", "2026-11-01", "au", "2026-11-07").entrySet().stream()
.map(p -> p.getKey() + "=" + URLEncoder.encode(p.getValue(), StandardCharsets.UTF_8))
.collect(Collectors.joining("&"));
var requete = HttpRequest.newBuilder(URI.create(baseUrl + "/portefeuille/mouvements" + "?" + params))
.header("Authorization", "Bearer " + System.getenv("UMEME_CLE"))
.GET()
.build();
var reponse = client.send(requete, HttpResponse.BodyHandlers.ofString());
200 OK
{
"mouvements": [
{ "rang": 41, "date": "2026-11-07T08:26:44Z", "type": "VENTE", "montant": -5, "soldeApres": 995 },
{ "rang": 42, "date": "2026-11-07T08:31:10Z", "type": "REMBOURSEMENT", "montant": 5, "soldeApres": 1000 }
]
}
soldeApres part du précédent : le relevé se rapproche ligne par ligne.
3. Recharger
Le portefeuille se recharge auprès d’Umeme, pas par l’API. Surveillez le solde, et rechargez avant zéro : une vente sans solde est rejetée (SOLDE_INSUFFISANT).
Dans la sandbox,
POST /sandbox/portefeuille/recharge crédite jusqu’à 5 000 $ fictifs.
