Aller au contenu principal

⚙️ API Admin

Documentation de l'API d'administration du système Commerce Tracking.

🎯 Vue d'ensemble

L'API Admin fournit les fonctionnalités d'administration du système, incluant la gestion des utilisateurs, des acteurs commerciaux et des données de référence.

Fonctionnalités

  • Gestion des utilisateurs : Création, modification, suppression
  • Gestion des acteurs : Administration des acteurs commerciaux
  • Données de référence : Gestion des données communes
  • Configuration système : Paramètres et configuration
  • Audit et logs : Suivi des actions administratives

🔑 Authentification requise

Permissions requises : Rôle Superviseur (role_id: 5) ou Chef d'Équipe (role_id: 4) selon l'action.

Authorization: Bearer <jwt-token>

👥 Gestion des utilisateurs

POST /admin/users

Créer un nouvel utilisateur.

Request:

POST /admin/users
Authorization: Bearer <jwt-token>
Content-Type: application/json

{
"username": "new.user",
"email": "new.user@example.com",
"password": "securePassword123",
"role_id": 3,
"country_id": 1,
"actor_id": 789
}

Response Success (201):

{
"success": true,
"message": "Utilisateur créé avec succès",
"result": {
"id": 124,
"username": "new.user",
"email": "new.user@example.com",
"role_id": 3,
"country_id": 1,
"actor_id": 789,
"is_active": true,
"created_at": "2024-01-15T10:30:00Z"
},
"errors": null,
"except": null
}

GET /admin/users

Lister les utilisateurs avec pagination et filtres.

Query Parameters:

GET /admin/users?page=1&limit=10&role_id=3&country_id=1&is_active=true

Response Success (200):

{
"success": true,
"message": "Utilisateurs récupérés avec succès",
"result": {
"data": [
{
"id": 123,
"username": "john.doe",
"email": "john.doe@example.com",
"role_id": 4,
"role_name": "Chef d'Équipe",
"country_id": 1,
"country_name": "République Démocratique du Congo",
"actor_id": 456,
"actor_name": "John Doe",
"is_active": true,
"last_login": "2024-01-15T09:00:00Z",
"created_at": "2024-01-01T08:00:00Z"
}
],
"pagination": {
"page": 1,
"limit": 10,
"total": 45,
"total_pages": 5
}
},
"errors": null,
"except": null
}

GET /admin/users/:id

Récupérer un utilisateur spécifique.

Request:

GET /admin/users/123
Authorization: Bearer <jwt-token>

Response Success (200):

{
"success": true,
"message": "Utilisateur récupéré avec succès",
"result": {
"id": 123,
"username": "john.doe",
"email": "john.doe@example.com",
"role_id": 4,
"role_name": "Chef d'Équipe",
"country_id": 1,
"country_name": "République Démocratique du Congo",
"actor_id": 456,
"actor": {
"id": 456,
"actor_role": "Trade Officer",
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@example.com",
"phone": "+243 123 456 789"
},
"is_active": true,
"last_login": "2024-01-15T09:00:00Z",
"created_at": "2024-01-01T08:00:00Z",
"updated_at": "2024-01-15T09:00:00Z"
},
"errors": null,
"except": null
}

PUT /admin/users/:id

Modifier un utilisateur existant.

Request:

PUT /admin/users/123
Authorization: Bearer <jwt-token>
Content-Type: application/json

{
"email": "john.doe.updated@example.com",
"role_id": 5,
"is_active": false
}

DELETE /admin/users/:id

Supprimer un utilisateur.

Request:

DELETE /admin/users/123
Authorization: Bearer <jwt-token>

🏢 Gestion des acteurs

POST /admin/actors

Créer un nouvel acteur commercial.

Request:

POST /admin/actors
Authorization: Bearer <jwt-token>
Content-Type: application/json

{
"actor_role": "Trade Officer",
"first_name": "Jane",
"last_name": "Smith",
"email": "jane.smith@example.com",
"phone": "+243 987 654 321",
"country_id": 1,
"specialization": "Agricultural Products",
"experience_years": 5
}

Response Success (201):

{
"success": true,
"message": "Acteur créé avec succès",
"result": {
"id": 790,
"actor_role": "Trade Officer",
"first_name": "Jane",
"last_name": "Smith",
"email": "jane.smith@example.com",
"phone": "+243 987 654 321",
"country_id": 1,
"specialization": "Agricultural Products",
"experience_years": 5,
"is_active": true,
"created_at": "2024-01-15T10:30:00Z"
},
"errors": null,
"except": null
}

GET /admin/actors

Lister les acteurs avec filtres.

Query Parameters:

GET /admin/actors?page=1&limit=10&actor_role=Trade Officer&country_id=1&is_active=true

Response Success (200):

{
"success": true,
"message": "Acteurs récupérés avec succès",
"result": {
"data": [
{
"id": 456,
"actor_role": "Trade Officer",
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@example.com",
"phone": "+243 123 456 789",
"country_id": 1,
"country_name": "République Démocratique du Congo",
"specialization": "Agricultural Products",
"experience_years": 8,
"is_active": true,
"created_at": "2024-01-01T08:00:00Z"
}
],
"pagination": {
"page": 1,
"limit": 10,
"total": 25,
"total_pages": 3
}
},
"errors": null,
"except": null
}

GET /admin/actors/:id

Récupérer un acteur spécifique.

Request:

GET /admin/actors/456
Authorization: Bearer <jwt-token>

PUT /admin/actors/:id

Modifier un acteur existant.

Request:

PUT /admin/actors/456
Authorization: Bearer <jwt-token>
Content-Type: application/json

{
"phone": "+243 123 456 789",
"specialization": "Livestock Products",
"experience_years": 10
}

DELETE /admin/actors/:id

Supprimer un acteur.

Request:

DELETE /admin/actors/456
Authorization: Bearer <jwt-token>

📊 Données de référence

GET /admin/reference-data

Lister les données de référence avec gestion.

Query Parameters:

GET /admin/reference-data?type=country&page=1&limit=20

Response Success (200):

{
"success": true,
"message": "Données de référence récupérées avec succès",
"result": {
"data": [
{
"id": 1,
"type": "country",
"code": "CD",
"name": "République Démocratique du Congo",
"name_en": "Democratic Republic of the Congo",
"metadata": {
"iso_code": "COD",
"region": "Central Africa",
"currency_code": "CDF"
},
"is_active": true,
"created_at": "2024-01-01T08:00:00Z",
"updated_at": "2024-01-01T08:00:00Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 195,
"total_pages": 10
}
},
"errors": null,
"except": null
}

POST /admin/reference-data

Créer une nouvelle donnée de référence.

Request:

POST /admin/reference-data
Authorization: Bearer <jwt-token>
Content-Type: application/json

{
"type": "currency",
"code": "XAF",
"name": "Franc CFA",
"name_en": "CFA Franc",
"metadata": {
"symbol": "FCFA",
"decimal_places": 0,
"region": "Central Africa"
}
}

PUT /admin/reference-data/:id

Modifier une donnée de référence.

Request:

PUT /admin/reference-data/5
Authorization: Bearer <jwt-token>
Content-Type: application/json

{
"name": "Franc CFA BEAC",
"metadata": {
"symbol": "FCFA",
"decimal_places": 0,
"region": "Central Africa",
"central_bank": "BEAC"
}
}

DELETE /admin/reference-data/:id

Supprimer une donnée de référence.

Request:

DELETE /admin/reference-data/5
Authorization: Bearer <jwt-token>

⚙️ Configuration système

GET /admin/config

Récupérer la configuration système.

Request:

GET /admin/config
Authorization: Bearer <jwt-token>

Response Success (200):

{
"success": true,
"message": "Configuration récupérée avec succès",
"result": {
"system": {
"name": "Commerce Tracking",
"version": "1.0.0",
"environment": "production",
"maintenance_mode": false
},
"features": {
"digital_collections": true,
"mobile_app": true,
"reports_generation": true,
"email_notifications": true
},
"limits": {
"max_collections_per_day": 100,
"max_file_size_mb": 10,
"session_timeout_minutes": 60,
"password_expiry_days": 90
},
"integrations": {
"email_service": "smtp",
"sms_service": "disabled",
"backup_service": "enabled"
}
},
"errors": null,
"except": null
}

PUT /admin/config

Modifier la configuration système.

Request:

PUT /admin/config
Authorization: Bearer <jwt-token>
Content-Type: application/json

{
"features": {
"email_notifications": false
},
"limits": {
"max_collections_per_day": 150,
"session_timeout_minutes": 120
}
}

📋 Audit et logs

GET /admin/audit-logs

Récupérer les logs d'audit.

Query Parameters:

GET /admin/audit-logs?page=1&limit=20&user_id=123&action=create&date_from=2024-01-01&date_to=2024-01-31

Response Success (200):

{
"success": true,
"message": "Logs d'audit récupérés avec succès",
"result": {
"data": [
{
"id": 1001,
"user_id": 123,
"user_name": "john.doe",
"action": "create",
"resource_type": "user",
"resource_id": 124,
"resource_name": "new.user",
"details": {
"fields_modified": ["username", "email", "role_id"],
"old_values": null,
"new_values": {
"username": "new.user",
"email": "new.user@example.com",
"role_id": 3
}
},
"ip_address": "192.168.1.100",
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
"created_at": "2024-01-15T10:30:00Z"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 500,
"total_pages": 25
}
},
"errors": null,
"except": null
}

GET /admin/system-stats

Récupérer les statistiques système.

Request:

GET /admin/system-stats
Authorization: Bearer <jwt-token>

Response Success (200):

{
"success": true,
"message": "Statistiques système récupérées avec succès",
"result": {
"users": {
"total": 45,
"active": 42,
"inactive": 3,
"by_role": {
"agent": 35,
"team_manager": 8,
"supervisor": 2
}
},
"actors": {
"total": 125,
"active": 120,
"inactive": 5
},
"collections": {
"total": 15000,
"today": 45,
"this_month": 1250,
"by_status": {
"draft": 150,
"submitted": 25,
"validated": 14000,
"rejected": 825
}
},
"system": {
"uptime_hours": 720,
"database_size_mb": 250,
"cache_hit_rate": 0.85,
"average_response_time_ms": 150
}
},
"errors": null,
"except": null
}

🛠️ Gestion des erreurs

Erreurs d'autorisation

{
"success": false,
"message": "Permissions insuffisantes",
"result": null,
"errors": ["Seuls les superviseurs peuvent créer des utilisateurs"],
"except": null
}

Erreurs de validation

{
"success": false,
"message": "Erreur de validation",
"result": null,
"errors": [
"L'email doit être valide",
"Le rôle doit être spécifié",
"Le pays est requis"
],
"except": null
}

Erreurs de ressource

{
"success": false,
"message": "Ressource non trouvée",
"result": null,
"errors": ["Utilisateur avec l'ID 999 non trouvé"],
"except": null
}

🔐 Permissions par action

ActionPermission requiseDescription
Lire utilisateursChef d'Équipe (4)Voir les utilisateurs de son équipe
Lire tous utilisateursSuperviseur (5)Voir tous les utilisateurs
Créer utilisateurSuperviseur (5)Créer de nouveaux utilisateurs
Modifier utilisateurChef d'Équipe (4)Modifier utilisateurs de son équipe
Supprimer utilisateurSuperviseur (5)Supprimer des utilisateurs
Gestion acteursChef d'Équipe (4)Gérer les acteurs commerciaux
Configuration systèmeSuperviseur (5)Modifier la configuration
Logs d'auditSuperviseur (5)Accéder aux logs d'audit

Cette API Admin fournit un contrôle complet sur l'administration du système Commerce Tracking avec des permissions granulaires et un suivi d'audit complet.