10 KiB
Spécification de l'API KROW Workforce (Migration GCP)
Version : 1.0 Date : 10/11/2025 Objectif : Ce document définit l'API RESTful à construire sur Google Cloud Platform (Cloud Functions, Cloud SQL) pour remplacer le backend Base44. Il est basé sur la documentation fournie par Base44 et une analyse exhaustive de l'utilisation de son SDK dans le code source du frontend.
Conventions Générales
- URL de base :
/api/v1 - Authentification : Chaque requête (sauf
POST /loginetGET /health) doit inclure un headerAuthorization: Bearer <Firebase-Auth-Token>. - Format des données : Toutes les requêtes et réponses seront au format
application/json. - Réponses d'erreur : Les erreurs utiliseront les codes de statut HTTP standards (400, 401, 403, 404, 500) et incluront un corps de réponse JSON de la forme
{ "error": "Description du problème" }. - Champs Communs : Chaque entité aura les champs suivants, gérés automatiquement par le backend :
id:string(UUID, Clé primaire)created_date:string(ISO 8601 Timestamp)updated_date:string(ISO 8601 Timestamp)created_by:string(Email de l'utilisateur créateur)
1. Authentification (/auth)
Basé sur Firebase Authentication. Le frontend gère l'inscription et la connexion avec le SDK Firebase. Notre backend a besoin d'un endpoint pour récupérer les informations étendues de l'utilisateur.
Entité User
| Champ | Type | Description |
|---|---|---|
id |
string |
ID Firebase de l'utilisateur |
email |
string |
Email de l'utilisateur (non modifiable) |
full_name |
string |
Nom complet |
user_role |
string |
Rôle (admin, procurement, client...) |
company_name |
string |
Nom de l'entreprise associée |
profile_picture |
string |
URL de l'image de profil |
Endpoints
GET /auth/me
- Description : Récupère les informations du profil de l'utilisateur actuellement authentifié.
- Utilisation observée :
base44.auth.me()(utilisé dans presque toutes les pages). - Réponse (200 OK) :
{ "id": "firebase-user-id-123", "email": "dev@example.com", "full_name": "Dev User", "user_role": "admin", "company_name": "KROW Corp", "profile_picture": "https://..." }
PUT /auth/me
- Description : Met à jour le profil de l'utilisateur actuel.
- Utilisation observée :
base44.auth.updateMe(data)(dansWorkforceProfile.jsx,RoleSwitcher.jsx). - Corps de la requête :
{ "full_name": "John Doe", "profile_picture": "https://..." } - Réponse (200 OK) : L'objet
Usermis à jour.
2. Entités (CRUD)
2.1. Event
Description : Gère les commandes de main-d'œuvre.
Schéma Event
| Champ | Type | Description |
|---|---|---|
event_name |
string |
Nom de l'événement/commande |
order_type |
string |
Enum: rapid, one_time, recurring, permanent |
business_id |
string |
ID de l'entité Business (client) |
vendor_id |
string |
ID de l'entité Vendor (fournisseur) |
status |
string |
Enum: Draft, Active, Pending, Assigned, Confirmed, Completed, Canceled |
shifts |
array |
Tableau d'objets Shift (défini comme une sous-entité ou un type JSON) |
date |
string |
ISO 8601 Timestamp, date de début de l'événement |
Endpoints
-
POST /events- SDK :
base44.entities.Event.create(eventData) - Utilisation :
CreateEvent.jsx,QuickReorderModal.jsx - Body : Objet
Eventsans les champs communs. - Réponse : Le nouvel objet
Eventcréé.
- SDK :
-
GET /events- SDK :
base44.entities.Event.list(sort, limit)et.filter(query, sort, limit) - Utilisation :
Events.jsx,Dashboard.jsx,WorkforceShifts.jsx, etc. - Paramètres de requête :
sort(ex:-datepour trier par date décroissante)limit(ex:50)- Autres champs de l'entité pour le filtrage (ex:
status=Active)
- Réponse : Tableau d'objets
Event.
- SDK :
-
PUT /events/{id}- SDK :
base44.entities.Event.update(id, data) - Utilisation :
EditEvent.jsx,QuickAssignPopover.jsx - Body : Un objet avec les champs de
Eventà mettre à jour. - Réponse : L'objet
Eventmis à jour.
- SDK :
2.2. Staff
Description : Gère les membres du personnel.
Schéma Staff
| Champ | Type | Description |
|---|---|---|
employee_name |
string |
Requis. Nom de l'employé. |
vendor_id |
string |
Fournisseur auquel l'employé est rattaché. |
rating |
number |
Note de 0 à 5. |
shift_coverage_percentage |
number |
Pourcentage de shifts couverts. |
background_check_status |
string |
Enum: pending, cleared, failed, expired |
Endpoints
-
POST /staff- SDK :
base44.entities.Staff.create(staffData) - Utilisation :
AddStaff.jsx - Body : Objet
Staffsans les champs communs. - Réponse : Le nouvel objet
Staffcréé.
- SDK :
-
GET /staff- SDK :
base44.entities.Staff.list(sort, limit) - Utilisation :
StaffDirectory.jsx,Dashboard.jsx,Reports.jsx, etc. - Paramètres de requête :
sort,limit, et autres champs pour le filtrage. - Réponse : Tableau d'objets
Staff.
- SDK :
-
PUT /staff/{id}- SDK :
base44.entities.Staff.update(id, data) - Utilisation :
EditStaff.jsx - Body : Un objet avec les champs de
Staffà mettre à jour. - Réponse : L'objet
Staffmis à jour.
- SDK :
2.3. Vendor
Description : Gère les fournisseurs de services.
Schéma Vendor
| Champ | Type | Description |
|---|---|---|
vendor_number |
string |
Format: VN-#### |
legal_name |
string |
Requis. Nom légal. |
approval_status |
string |
Enum: pending, approved, suspended, terminated |
is_active |
boolean |
Statut d'activité. |
Endpoints
-
POST /vendors- SDK :
base44.entities.Vendor.create(data) - Utilisation :
VendorOnboarding.jsx,SmartVendorOnboarding.jsx - Body : Objet
Vendor. - Réponse : Le nouvel objet
Vendorcréé.
- SDK :
-
GET /vendors- SDK :
base44.entities.Vendor.list()et.filter() - Utilisation :
VendorManagement.jsx - Paramètres de requête :
sort,limit,approval_status, etc. - Réponse : Tableau d'objets
Vendor.
- SDK :
-
PUT /vendors/{id}- SDK :
base44.entities.Vendor.update(id, data) - Utilisation :
EditVendor.jsx,VendorManagement.jsx - Body : Champs de
Vendorà mettre à jour. - Réponse : L'objet
Vendormis à jour.
- SDK :
2.4. Autres Entités Majeures (Structure Similaire)
La même structure d'endpoints (POST, GET, PUT) doit être créée pour les entités suivantes, en se basant sur les schémas à obtenir et l'utilisation observée dans le code :
VendorRate: Gère les tarifs des fournisseurs.Business: Gère les clients.Invoice: Gère les factures.Team,TeamMember,TeamMemberInvite: Gère les équipes et les invitations.ActivityLog: Gère les notifications et les journaux d'activité.Certification: Gère les certifications du personnel.Enterprise,Sector,Partner: Gèrent la hiérarchie organisationnelle.Conversation,Message: Gèrent la messagerie interne.- ... et toutes les autres entités listées dans
api/entities.js.
3. Services d'Intégration
Ces endpoints ne sont pas des CRUDs mais des appels à des services spécifiques.
POST /integrations/send-email
- Description : Envoie un email.
- SDK :
base44.integrations.Core.SendEmail(params) - Utilisation :
InviteVendor.jsx,TeamDetails.jsx, etc. - Body :
{ "to": "recipient@example.com", "subject": "Sujet de l'email", "body": "<h1>Contenu HTML</h1>" } - Réponse (200 OK) :
{ "status": "sent" }
POST /integrations/upload-file
- Description : Gère le téléversement de fichiers vers Google Cloud Storage.
- SDK :
base44.integrations.Core.UploadFile({ file }) - Utilisation :
WorkforceProfile.jsx,VendorOnboarding.jsx, etc. - Requête : Doit être une requête
multipart/form-data. - Réponse (200 OK) :
{ "file_url": "https://storage.googleapis.com/..." }
POST /integrations/invoke-llm
- Description : Fait appel à un modèle de langage (Vertex AI).
- SDK :
base44.integrations.Core.InvokeLLM({ prompt }) - Utilisation :
SmartVendorOnboarding.jsx,VendorCompliance.jsx - Body :
{ "prompt": "Analyse ce document et extrais les informations suivantes...", "context": "..." // Contexte additionnel } - Réponse (200 OK) :
{ "result": "Texte ou JSON généré par le LLM" }