Aller au contenu principal

UC-06 — Import / Export du catalogue

Acteur : Admin / Gestionnaire But : Importer ou exporter le catalogue produits

Trigger​

L'admin souhaite mettre à jour le catalogue en masse (import) ou l'extraire (export).

Préconditions​

  • Permissions product.create (import) et product.export (export)

Endpoints​

1. Importer des produits (JSON, max 500)​

POST /api/v1/admin/org/products/import
Content-Type: application/json

{
"products": [
{
"category_id": "uuid-cat",
"name": "Thé vert",
"price_cents": 800,
"stock_quantity": 100,
"is_active": true
}
]
}
L'import produits est en JSON

Contrairement aux imports de porteurs (élèves/personnel) qui sont en multipart/form-data (fichier Excel), l'import produits attend un corps JSON.

2. Exporter le catalogue (CSV/XLSX)​

GET /api/v1/admin/org/products/export?format=xlsx

Réponse (import)​

{
"message": "1 produit importé",
"created": 1,
"products": [ ],
"currency": "XOF"
}

Réponse (export)​

Téléchargement de fichier :

  • CSV : text/csv; charset=utf-8
  • XLSX (avec ?format=xlsx) : application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

Colonnes : code, name, meal_type, price_cents, stock_quantity, is_active, reservation_deadline_days_before, reservation_deadline_time.

Flow​

sequenceDiagram
participant Admin
participant Dashboard
participant API
participant DB

Admin->>Dashboard: "Importer des produits"
Dashboard->>API: POST /admin/org/products/import (JSON)
API->>DB: INSERT products
API-->>Dashboard: {created, products}
Dashboard->>Admin: "1 produit importé ✓"

Admin->>Dashboard: "Exporter le catalogue"
Dashboard->>API: GET /admin/org/products/export
API->>DB: SELECT products (LIMIT 10000)
API-->>Dashboard: catalogue.xlsx (téléchargement)

Permissions​

PermissionDescription
product.createImporter des produits
product.exportExporter les produits

Imports de porteurs (Excel)​

Pour les élèves et le personnel, les imports sont en multipart/form-data :

EndpointContenu
POST /admin/org/card-holders/import-studentsÉlèves + parents associés
POST /admin/org/card-holders/import-staffPersonnel

Voir Porteurs (Admin).

Erreurs​

error_codeDescription
ValidationListe vide, > 500 éléments, champ requis manquant
ForbiddenPermission insuffisante

Voir aussi​