Modèles de données
Cette section décrit tous les modèles de données utilisés par l'API UBSI.
Produit
interface Product {
reference: string;
id?: number;
sku?: string;
nom: string;
description?: string;
categories: string;
categoriesPath: string[];
marque?: string;
statutProduit?: string;
prixDeVenteCents: number;
prixDeVente: number;
ean?: string;
photosUrls: string[];
poids?: string;
couleurs?: string;
dimensions?: string;
caracteristiquesTechniques?: string;
documentationUrl?: string;
dateFinReapprovisionnement?: string;
dateFinDeVie?: string;
quantiteMin?: number;
packaging?: string;
dureeGarantie?: number;
prixDAchatFournisseurCents?: number;
}
Réapprovisionnement
interface Restock {
id: number;
name: string;
storeId: string;
createdBy: string;
status: RestockStatus;
deliveryDate: Date;
createdAt: Date;
updatedAt: Date;
items: RestockItem[];
}
interface RestockItem {
id: number;
restockId: number;
sku: string;
quantity: number;
}
type RestockStatus = 'approved' | 'waiting' | 'delivered' | 'canceled';
Stock
interface StockItem {
productId: number;
storeId: number;
quantity: number;
productName: string;
productEan: string;
priceCents: number;
}
interface StocksResponse {
data: StockItem[];
pageNumber: number;
pageLimit: number;
totalItems: number;
totalPages: number;
}
Synchronisation
interface SyncStatus {
lastSyncAt: string;
status: 'success' | 'error' | 'in_progress';
productsCount?: number;
duration?: number;
errorMessage?: string;
}
interface SyncLog {
id: number;
startedAt: Date;
completedAt?: Date;
status: string;
productsCount?: number;
errorMessage?: string;
duration?: number;
}
Intercom
interface AppStatus {
status: 'healthy' | 'unhealthy' | 'online' | 'offline' | 'timeout';
lastCheck?: string;
timestamp?: string;
responseTime?: number;
details?: string;
}
type AppName =
| 'achat'
| 'bi'
| 'ecommerce'
| 'fidelite'
| 'gestion'
| 'logistique'
| 'paiement'
| 'promotion'
| 'referentiel'
| 'sav';
Pagination
interface PaginationInfo {
page: number;
limit: number;
total: number;
totalPages: number;
}
interface PaginatedResponse<T> {
data: T[];
pagination: PaginationInfo;
}
Erreur
interface ErrorResponse {
statusCode: number;
message: string;
error: string;
details?: Array<{
field: string;
message: string;
}>;
}
Référentiel Produit (Base de données)
interface ReferentielProduct {
id: number;
externalId?: number;
sku?: string;
ean?: string;
nom: string;
description?: string;
categories?: string;
marque?: string;
statutProduit?: string;
prixDeVenteCents: number;
photosUrls?: string[];
poids?: string;
couleurs?: string;
dimensions?: string;
caracteristiquesTechniques?: string;
documentationUrl?: string;
dateFinReapprovisionnement?: Date;
dateFinDeVie?: Date;
quantiteMin?: number;
packaging?: string;
dureeGarantie?: number;
lastSyncAt: Date;
syncVersion: number;
createdAt: Date;
updatedAt: Date;
deletedAt?: Date;
}
Fournisseur Produit (Base de données)
interface FournisseurProduit {
id: number;
externalId?: number;
fournisseurId: number;
produitId: number;
prixFournisseurCents: number;
delaiLivraisonJours: number;
quantiteMinimaleCommande?: number;
referenceFournisseur?: string;
statutRelation: string;
lastSyncAt: Date;
syncVersion: number;
createdAt: Date;
updatedAt: Date;
deletedAt?: Date;
}