Aller à l'article
Aniq-UI

Dashboard 2Référence de l'API

Référence de l'API

Chaque route que sert l'API NestJS, qui peut l'appeler, et comment fonctionnent la connexion, les permissions, les erreurs, les listes et les limites.

Pour le pack Front + Back

URL de base et format des réponses

Chaque route est servie sous le préfixe /api. En local, l'URL de base est http://localhost:8000/api ; sur un serveur, c'est l'adresse de votre API suivie de /api, la même valeur que le tableau de bord lit dans NEXT_PUBLIC_API_BASE_URL. Les corps de requête sont en JSON, sauf pour l'envoi de fichier. Chaque réponse arrive dans la même enveloppe :

Enveloppe
{
  "success": true,
  "data": { },
  "message": ""
}

data contient le résultat. message est une courte phrase que certaines écritures remplissent, dans la langue de la requête, et vide sinon. Le contrôle de santé n'exige aucun jeton :

Terminal
curl http://localhost:8000/api/health
Réponse
{"success":true,"data":{"status":"ok","database":"up"},"message":""}

Tant que la base ne répond pas et ne contient pas ses tables, il répond 503 avec "status":"unavailable" et "database":"down". Le contrôle de santé de l'image Docker le lit.

Erreurs

Un échec garde l'enveloppe, avec success: false et le statut HTTP :

Erreur
{
  "success": false,
  "data": null,
  "message": "That email and password combination didn't work. Please try again.",
  "errors": { "email": ["Enter a valid email address (example@domain.com)."] }
}
  • message est une phrase dans la langue de la requête.
  • errors est rempli en cas d'échec de validation, avec les problèmes par champ. Un champ de corps que la route ne connaît pas est refusé.
  • Une route protégée sans jeton, ou avec un jeton expiré, répond 401 ; un jeton sans la permission répond 403.

Listes et pagination

Les routes de liste acceptent page et page_count (ou limit). page_count est plafonné à 100 ; une valeur absente ou invalide revient à la valeur par défaut de la route, 15 pour les utilisateurs et 10 pour les autres.

data d'une liste
{ "data": [ ], "page": 1, "limit": 15, "total": 15, "totalPages": 1 }

Les utilisateurs arrivent du plus récent au plus ancien par défaut (order=asc l'inverse) ; les projets du plus récemment modifié au plus ancien ; les admins du plus récent au plus ancien ; les paramètres par catégorie ; les rôles par nom.

Langue

Envoyez Accept-Language: ar pour des messages en arabe ; toute autre valeur répond en anglais. Les pays, permissions, paramètres et noms de projets portent les deux langues sous la forme { "en": "…", "ar": "…" } quel que soit l'en-tête, et le client en choisit une.

Connexion

  1. Obtenir un jeton

    Envoyez l'e-mail et le mot de passe d'un admin. Une API remplie par le seed accepte le Super Admin du guide d'installation.

    Terminal
    curl -X POST http://localhost:8000/api/auth/login -H "Content-Type: application/json" -d '{"email":"admin@example.com","password":"Admin@123"}'
    Réponse
    {
      "success": true,
      "data": {
        "access_token": "eyJ…",
        "token_type": "Bearer",
        "expires_in": "7d",
        "admin": { "id": 1, "email": "admin@example.com", "username": "…", "roles": [ ], "permissions": [ ] }
      },
      "message": "Signed in successfully."
    }
  2. L'envoyer à chaque appel

    Terminal
    curl http://localhost:8000/api/auth/me -H "Authorization: Bearer eyJ…"

    Résultat attendu: /api/auth/me renvoie l'admin connecté avec ses rôles et ses permissions.

  • Un jeton dure JWT_EXPIRATION, 7d par défaut. Il n'y a pas de route de rafraîchissement : reconnectez-vous.
  • Un mauvais e-mail et un mauvais mot de passe reçoivent le même message 401.
  • Après RATE_LIMIT_LOGIN connexions échouées (10 par défaut) depuis une même adresse en 15 minutes, POST /api/auth/login répond 429 jusqu'à ce que le plus ancien échec ait 15 minutes. Le compteur est gardé en mémoire, donc un redémarrage le remet à zéro.
MéthodeCheminQui peut l'appelerRôle
POST/api/auth/loginN'importe quiConnectez-vous avec email et password
GET/api/auth/meTout administrateur connectéL'admin connecté, avec ses rôles et ses permissions
GET/api/healthN'importe quiDisponibilité : 200 ou 503

Permissions

Chaque route ci-dessous demande Authorization: Bearer avec un jeton, sauf celles marquées Anyone. La plupart demandent aussi une permission, nommée module.action ; un admin détient les permissions de tous ses rôles. Les 25 permissions sont listées dans Écrans, rôles et permissions.

Utilisateurs

Les personnes que sert votre produit, adressées par username. La suppression est une suppression douce.

MéthodeCheminQui peut l'appelerRôle
GET/api/usersAdmins avec users.viewListe, avec search, email, phone, country_id, username, first_name, last_name, from_date, to_date et order
GET/api/users/statisticAdmins avec users.viewTotaux : total, deleted, verified et unverified
GET/api/users/deletedAdmins avec users.viewUtilisateurs supprimés, avec les mêmes filtres
GET/api/users/deleted/:usernameAdmins avec users.viewUn utilisateur supprimé
GET/api/users/:usernameAdmins avec users.viewUn utilisateur
POST/api/usersAdmins avec users.createCréer : first_name, last_name, email, password, et en option username, phone, profile_picture, country_id
PATCH/api/users/:usernameAdmins avec users.updateModifier n'importe lequel de ces champs
PATCH/api/users/:username/change-passwordAdmins avec users.updateDéfinir un nouveau mot de passe
POST/api/users/:username/make-verifiedAdmins avec users.verifyMarquer l'e-mail comme vérifié
POST/api/users/:username/make-unverifiedAdmins avec users.verifyLe marquer comme non vérifié
POST/api/users/:username/resend-verification-emailAdmins avec users.updateRépond succès ; n'envoie aucun courrier, prêt pour votre propre service d'e-mail
DELETE/api/users/:usernameAdmins avec users.deleteSuppression douce
POST/api/users/deleted/:username/restoreAdmins avec users.restoreRestaurer

Projets

Les projets portent name, description, environment, status (in-progress, ready ou blocked), version, en option image et icon_name, et translations avec un nom et une description en et ar.

MéthodeCheminQui peut l'appelerRôle
GET/api/projectsAdmins avec projects.viewListe, avec name, status et environment
GET/api/projects/statisticAdmins avec projects.viewTotaux par statut
GET/api/projects/recentAdmins avec projects.viewLes derniers projets, limit à 5 par défaut
GET/api/projects/deletedAdmins avec projects.viewProjets supprimés, avec name
GET/api/projects/:idAdmins avec projects.viewUn projet
POST/api/projectsAdmins avec projects.createCréer
PATCH/api/projects/:idAdmins avec projects.editModifiez
DELETE/api/projects/:idAdmins avec projects.deleteSuppression douce
POST/api/projects/deleted/:id/restoreAdmins avec projects.restoreRestaurer

Tâches rapides

La liste de tâches de la vue d'ensemble. Chaque admin a la sienne et n'a besoin d'aucune permission : chaque route ne lit et n'écrit que les tâches de l'appelant. Une tâche est text et completed.

MéthodeCheminQui peut l'appelerRôle
GET/api/tasksTout administrateur connectéVos tâches, de la plus récente à la plus ancienne, avec status. Les champs de pagination se trouvent à côté de data dans l'enveloppe, pas dedans.
GET/api/tasks/historyTout administrateur connectéToutes vos tâches, réparties en active et completed
GET/api/tasks/statsTout administrateur connectéVos totaux
GET/api/tasks/:idTout administrateur connectéUne tâche
POST/api/tasksTout administrateur connectéCréer
PATCH/api/tasks/:idTout administrateur connectéModifiez
PATCH/api/tasks/:id/toggleTout administrateur connectéLa marquer faite ou non faite
DELETE/api/tasks/:idTout administrateur connectéSupprimer

Admins et votre profil

Les comptes qui se connectent au tableau de bord. :id accepte un identifiant ou un nom d'utilisateur.

MéthodeCheminQui peut l'appelerRôle
GET/api/adminsAdmins avec admins.viewListe, avec email, name et phone
GET/api/admins/statisticsAdmins avec admins.viewTotaux
GET/api/admins/:idAdmins avec admins.viewUn admin, avec ses rôles
POST/api/adminsAdmins avec admins.createCréer : first_name, last_name, email, password, password_confirmation, et en option phone, profile_picture, country_id
PATCH/api/admins/:idAdmins avec admins.editModifiez
PATCH/api/admins/:id/rolesAdmins avec admins.assign_rolesRemplacer les rôles : role_ids
DELETE/api/admins/:idAdmins avec admins.deleteSupprimer
PATCH/api/admins/profileAdmins avec admins.editModifier votre propre profil
PATCH/api/admins/profile/passwordTout administrateur connectéChanger votre propre mot de passe : current_password, password, password_confirmation

Rôles

MéthodeCheminQui peut l'appelerRôle
GET/api/rolesAdmins avec roles.viewListe, avec name, guard_name, created_from et created_to ; paginée seulement quand page et page_count sont envoyés tous les deux
GET/api/roles/statisticsAdmins avec roles.viewTotaux
GET/api/roles/selectAdmins avec roles.viewTous les rôles, pour une liste déroulante
GET/api/roles/permissionsAdmins avec roles.viewToutes les permissions, par module
GET/api/roles/:idAdmins avec roles.viewUn rôle, avec ses permissions
POST/api/rolesAdmins avec roles.createCréer : name
PUT/api/roles/:idAdmins avec roles.editRenommer : name
POST/api/roles/:id/permissionsAdmins avec roles.assign_permissionsRemplacer ce que le rôle accorde : permissions, une liste de noms de permissions. Les détenteurs connectés en sont informés aussitôt.
DELETE/api/roles/:idAdmins avec roles.deleteSupprimer

Réglages de l'application

Des paires clé et valeur avec un nom d'affichage, une description, un type et une catégorie, comme site_name, support_email et maintenance_mode.

MéthodeCheminQui peut l'appelerRôle
GET/api/settingsAdmins avec settings.viewListe, avec search et category
GET/api/settings/:keyAdmins avec settings.viewUn paramètre
PATCH/api/settings/:keyAdmins avec settings.editChanger sa value
DELETE/api/settings/:keyAdmins avec settings.editLa supprimer

Pays et envois de fichiers

MéthodeCheminQui peut l'appelerRôle
GET/api/helpers/countriesN'importe quiLes 50 pays sous la forme { value, label, code, phone_code }, libellés dans la langue de la requête
POST/api/helpers/uploadTout administrateur connectéEnvoyer une image en multipart file, avec en option path (le dossier, uploads par défaut) et for (profile, cover, logo ou default)

L'envoi prend une image d'au plus 10 Mo, la stocke dans votre bucket R2 en JPEG d'au plus 1920 pixels de large, avec une copie redimensionnée pour sa valeur for, et renvoie leurs adresses : original et, par exemple, 250x250. Sans les variables R2, il répond 503 avec « Image uploads are not set up on this server yet. »

L'assistant IA et ses conversations

Inclus avec votre achat. Connectez-vous pour le lire, ou ouvrez-le dans votre téléchargement.

La route de streaming de l'assistant, sa liste de modèles et ses suggestions de départ, et les conversations enregistrées.

Serveur MCP

Inclus avec votre achat. Connectez-vous pour le lire, ou ouvrez-le dans votre téléchargement.

L'endpoint MCP pour les agents de code et la façon dont il est autorisé.

Mises à jour des permissions en direct

Inclus avec votre achat. Connectez-vous pour le lire, ou ouvrez-le dans votre téléchargement.

Le namespace Socket.IO que le tableau de bord écoute, son événement et comment une connexion est autorisée.

Routes du mode démo

Inclus avec votre achat. Connectez-vous pour le lire, ou ouvrez-le dans votre téléchargement.

Les routes qu'un build de démo publique ajoute.

Bloqué sur une étape ?

Trouvez une solution avant de tout recommencer.

Dépannage

Préférences des Cookies

Nous utilisons des cookies pour améliorer votre expérience de navigation, analyser le trafic du site et personnaliser le contenu. En cliquant sur "Accepter Tout", vous consentez à notre utilisation des cookies pour l'analyse et la publicité personnalisée.