Skip to content

Chart

L'endpoint /chart génère des graphiques à partir de données. Il supporte les types bar, line, pie et donut, et retourne soit une image SVG, soit des données JSON brutes.

Paramètres

Le corps de la requête doit être en JSON :

ParamètreRequisDescription
typeOuiType de graphique : bar, line, pie ou donut
dataOuiObjet de données (voir structure ci-dessous)
titleNonTitre du graphique affiché en haut
widthNonLargeur SVG en pixels (responsive si omis)
heightNonHauteur SVG en pixels (responsive si omis)
colorsNonTableau de couleurs hexadécimales pour les datasets (palette par défaut sinon)
bgNonCouleur de fond (hex, transparent si omis)
legendNonAfficher la légende : true (défaut) ou false
modeNonFormat de réponse : "svg" (défaut, retourne SVG) ou "data" (retourne JSON)

Format des données

data doit être un objet JSON (pas une chaîne) dans le corps de la requête. La structure dépend du type de graphique.

Graphiques bar et line :

json
{
    "labels": ["Jan", "Fév", "Mar"],
    "datasets": [
        { "label": "Ventes", "values": [120, 200, 150] },
        { "label": "Coûts", "values": [80, 95, 110] }
    ]
}

Graphiques pie et donut :

json
{
    "labels": ["Jan", "Fév", "Mar"],
    "values": [120, 200, 150]
}
  • labels : tableau de chaînes — max 20 labels
  • datasets (bar/line) : tableau d'objets — max 5 datasets, chacun avec un label et un tableau values de même longueur que labels
  • values (pie/donut) : tableau unique de nombres non négatifs de même longueur que labels

Le champ data doit être un objet JSON, pas une chaîne. Envoyer la requête avec Content-Type: application/json.

Réponse

  • Quand mode est "svg" (défaut) : retourne Content-Type: image/svg+xml avec le corps SVG
  • Quand mode est "data" : retourne un objet JSON avec les données du graphique

Exemples de code

curl -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "type": "bar",
    "data": {
      "labels": [
        "Jan",
        "Fév",
        "Mar"
      ],
      "datasets": [
        {
          "label": "Ventes",
          "values": [
            120,
            200,
            150
          ]
        }
      ]
    },
    "title": "Ventes mensuelles"
  }' \
  "https://api.sylvain.sh/v5/chart"

Essayer

Gestion des erreurs

Si les paramètres sont manquants ou invalides, l'API retournera une erreur :

Message d'erreurDescription
Please provide a valid chart type (?type=bar|line|pie|donut)Le paramètre type est manquant ou invalide
data must contain a labels arrayLe champ data.labels est manquant
data must contain a datasets arrayLe champ data.datasets est manquant
Too many labels (max 20)Le tableau labels dépasse 20 entrées
Too many datasets (max 5)Le tableau datasets dépasse 5 entrées
Each dataset must have the same number of values as labelsIncompatibilité de longueur des datasets