types/api.ts
Annotation non disponible
Lance npm run annotate (nécessite ANTHROPIC_API_KEY dans .env.local) pour générer une annotation française par Claude Haiku 4.5.
244 exports
StatutProduitDisponibiliteStatutCommandeRoleMediaCategorieWariCategoriesVitrinesResponseCanalTypeTenantCanalQuickReplyConfigAccesVitrineTenantPublicVitrineSummaryVitrineTeaserTenantTeaserProduitTeaserAccesDemandeMobileDemanderAccesPayloadPrestationTeaserCategorieVarianteProduitProduitSpecTagAdminTagPublicProduitSummaryProduitDetailPrestationSummaryPrestationsResponseCatalogueResponseVitrinésResponseUserMobileNotificationsPrefsMonAccesItemMesAccesResponseAuthResponseSessionResponseMagicLinkResponseCheckUserResponseVerifierResponseOtpAuthResponseCanalLignePanierPanierSimilaireMatchPanierSimilairesResponseDemanderPrixResponseCommandeSummaryStatutCommandeAdminStatutPaiementAdminUpdateCommandePayloadClientVitrineCommandeAdminCommandeLigneAdminCommandeAdminDetailProduitAdminStockFaibleSparklinePointTopProduitDashboardDashboardVitrineResponseRdvStatsDashboardOnboardingChecklistItemOnboardingStatusResponseCommandesAdminResponseCatalogueAdminResponseModeAffichageTenantAdminModePaiementCommandeConfigPaiementGerantModePaiementInfoPaiementVitrineResponseGenererIcalTokenResponseCategorieWariMobileParametresUpdatePayloadCompteUpdatePayloadVariantePrestationAdminPrestationAdminCategorieServiceTenantServicesGerantResponsePrestationCreatePayloadPrestationUpdatePayloadClienteGerantClientesGerantResponseAbonneClientLiteAbonneVitrineAbonneProduitAbonnementsResponseInviterClientePayloadInviterClienteResponseClienteDetailCommandeClienteDetailReservationClienteDetailStatsClienteDetailResponseNiveauAccesStatutAccesAccesVitrineItemAccesVitrineResponseChangerNiveauPayloadChangerNiveauResponseChangerStatutPayloadRevoquerPayloadInviterAccesPayloadInviterAccesResponseStatutReservationStatutPaiementReservationModePaiementReservationClientReservationPrestationReservationPrestationReservationDetailReservationGerantReservationGerantDetailReservationsGerantResponseUpdateReservationPayloadModeContactModeConfirmationRDVTypeAcompteConfigReservationPublicPrestationVariantePublicPrestationCategorieRefPrestationDetailCreneauSlotDisponibilitesResponseReservationClientMesReservationsResponseCreateReservationPayloadCreatedReservationJourSemaineConfigReservationGerantConfigReservationGerantResponseUpdateConfigReservationPayloadCreneauDisponibleGerantCreneauxResponseCreateCreneauPayloadUpdateCreneauPayloadPlageIndisponibleGerantIndisponibilitesResponseCreateIndisponibilitePayloadModeCommandeRepasStatutCommandeRepasOptionPlatItemPlatItemMenuSectionWithPlatsConfigRestaurantCarteResponseTableRestaurantTableInfoResponseLigneCommandeRepasCommandeRepasCreerCommandeRepasPayloadRushSeverityRushCommandeActiveRushStatsResponseBuilderSectionTypeBuilderSectionBuilderDataBuilderSnapshotStatutBuilderSnapshotMetaBuilderSnapshotDetailAdminPageTypeAdminSectionTypeAdminBlocTypeAdminBlocAdminSectionAdminPageAdminPagesResponseAdminPageResponseAdminSectionsResponseAdminSectionResponseAdminBlocResponseClientsFiltreTypeClientAccesAgregeClientAgregeClientsAgregesResponseClientsAgregesFiltersClientAbonnementAgregeClientAccesAgregeDetailClientDetailAgregeResponseAuteurMessageMessageItemMessageSpecialTypeDevisPayloadAcomptePayloadCommandeConfirmeePayloadMessageFunnelPayloadConversationSummaryConversationDetailArrivageGerantArrivageUploadResponseProductSuggestionProduitSimilaireSnapToListResponseReviewTargetReviewStatutReviewReviewWithTenantReviewStatsReviewsListResponseCreateReviewPayloadReferralStatutCashbackTypeMonCodeStatsMonCodeResponseInviterPayloadInviterResponseValiderCodeResponseCashbackTransactionCashbackSoldeResponseUtiliserCashbackPayloadUtiliserCashbackResponseFeedItemTypeCollectionSummaryCollectionDetailArrivageFeedItemFeedItemExplorerFeedResponseCollectionsListResponseCollectionDetailResponseStoryPartOfDayStoryToneStorySeverityStoryMissionIconStoryMissionItemStoryKpiNumericStoryDuJourResponseSetupCheckSeveritySetupCheckCategorieSetupNiveauSetupCheckSetupScoreResponsePricingMarchePricingConseilTonePricingConseilPricingResponseSnapBulkItemSnapBulkResponseHeatmapZoneHeatmapClientsResponseTablesStatsTopTableTablesStatsOccupationTablesStatsResponseStoryMediaTypeVitrineStorySummaryVitrineStoriesListResponseStoryFeedItemStoryFeedTenantStoriesFeedResponse
Code source· typescript· tronqué à 200 lignes sur 2,101
// ─── Enums ────────────────────────────────────────────────────────────────────
export type StatutProduit =
| 'DISPONIBLE'
| 'SUR_COMMANDE'
| 'BIENTOT_DISPONIBLE'
| 'DISCONTINUE'
| 'RUPTURE';
export type Disponibilite =
| 'IMMEDIATE'
| 'A_PARTIR_DE'
| 'SUR_COMMANDE'
| 'SUR_DEVIS';
export type StatutCommande =
| 'EN_ATTENTE'
| 'CONFIRMEE'
| 'EN_PREPARATION'
| 'EXPEDIE'
| 'LIVRE'
| 'ANNULE';
export type Role = 'TENANT_ADMIN' | 'CLIENT' | 'SUPERADMIN';
// ─── Media ────────────────────────────────────────────────────────────────────
export type Media = {
id: string;
url: string; // Absolue — ${MINIO_PUBLIC_URL}/${key}
ordre: number;
type: 'IMAGE' | 'VIDEO';
};
// ─── Catégorie vitrine ────────────────────────────────────────────────────────
export type CategorieWari = {
id: string;
nom: string;
slug: string;
emoji: string | null;
couleur: string | null;
};
export type CategoriesVitrinesResponse = {
categories: CategorieWari[];
};
// ─── Tenant / Vitrine ─────────────────────────────────────────────────────────
export type CanalType =
| 'WHATSAPP'
| 'TELEPHONE'
| 'INSTAGRAM'
| 'TELEGRAM'
| 'SNAPCHAT'
| 'EMAIL'
| 'LIEN'
| 'PANIER'
| 'DEVIS';
export type TenantCanal = {
/** Optionnel sur les sorties publiques (legacy non-id) ; toujours présent en CRUD gérant. */
id?: string;
type: CanalType;
valeur: string;
/** Optionnel sur sorties publiques (déjà filtré actif=true). */
actif?: boolean;
ordre: number;
};
// ─── Quick Replies (Sprint Chat V1.6) ────────────────────────────────────────
export type QuickReply = {
id: string;
texte: string;
ordre: number;
actif: boolean;
createdAt: string;
};
// ─── ConfigAccesVitrine (WP-224 étape 2) ─────────────────────────────────────
export type ConfigAccesVitrine = {
// Dimension 2 — Contenu visible
nomsVisibles: boolean;
photosVisibles: boolean;
prixVisibles: boolean;
descriptionsVisibles: boolean;
stockVisible: boolean;
coordonneesVisibles: boolean;
// Dimension 3 — Actions sans compte
panierSansCompte: boolean;
commandeSansCompte: boolean;
reservationSansCompte: boolean;
contactSansCompte: boolean;
};
export type TenantPublic = {
id: string;
subdomain: string;
nom: string;
description: string | null;
canaux?: TenantCanal[];
logoUrl: string | null;
banniere: string | null;
whatsapp: string | null;
ville: string | null;
pays: string;
themeCouleur: string;
couleurAccent: string;
vitrineActive: boolean;
modeVitrineSiteWeb: boolean;
siteWebUrl: string | null;
modulesActifs?: string[];
niveauAcces: NiveauAcces;
configAcces: ConfigAccesVitrine;
};
export type VitrineSummary = TenantPublic & {
categorieWari?: { id: string; nom: string; emoji?: string } | null;
};
// ─── Teaser accès refusé (WP-224 étape 4) ─────────────────────────────────────
// Retourné par les routes DETAIL quand verifierAccesTenant() = false.
// Permet à l'UI mobile d'afficher AccesRequis avec metadata minimale.
export type VitrineTeaser = {
accessible: false;
subdomain: string;
nom: string;
logoUrl: string | null;
description: string | null;
niveauAcces: NiveauAcces;
};
export type TenantTeaser = {
id: string;
subdomain: string;
nom: string;
logoUrl: string | null;
description: string | null;
niveauAcces: NiveauAcces;
};
export type ProduitTeaser = {
accessible: false;
tenant: TenantTeaser;
};
// ─── Demande accès vitrine SUR_DEMANDE (WP-224 étape 5) ───────────────────────
export type AccesDemandeMobile = {
id: string;
tenantId: string;
clientId: string;
niveau: string;
statut: StatutAcces;
produitId: string | null;
prestationId: string | null;
motif: string | null;
createdAt: string;
updatedAt: string;
tenant: {
id: string;
subdomain: string;
nom: string;
logoUrl: string | null;
niveauAcces: NiveauAcces;
};
produit: { id: string; nom: string } | null;
prestation: { id: string; nom: string } | null;
};
export type DemanderAccesPayload = {
tenantId: string;
produitId?: string;
prestationId?: string;
motif?: string;
};
export type PrestationTeaser = {
accessible: false;
tenant: TenantTeaser;
};
// ─── Catégorie ────────────────────────────────────────────────────────────────
export type Categorie = {
id: string;
nom: string;
};
// ─── Variante Produit ─────────────────────────────────────────────────────────
export type VarianteProduit = {
id: string;
attributs: Record<string, string>;
prix: number | null;
stock: number;// ─── Enums ────────────────────────────────────────────────────────────────────
export type StatutProduit =
| 'DISPONIBLE'
| 'SUR_COMMANDE'
| 'BIENTOT_DISPONIBLE'
| 'DISCONTINUE'
| 'RUPTURE';
export type Disponibilite =
| 'IMMEDIATE'
| 'A_PARTIR_DE'
| 'SUR_COMMANDE'
| 'SUR_DEVIS';
export type StatutCommande =
| 'EN_ATTENTE'
| 'CONFIRMEE'
| 'EN_PREPARATION'
| 'EXPEDIE'
| 'LIVRE'
| 'ANNULE';
export type Role = 'TENANT_ADMIN' | 'CLIENT' | 'SUPERADMIN';
// ─── Media ────────────────────────────────────────────────────────────────────
export type Media = {
id: string;
url: string; // Absolue — ${MINIO_PUBLIC_URL}/${key}
ordre: number;
type: 'IMAGE' | 'VIDEO';
};
// ─── Catégorie vitrine ────────────────────────────────────────────────────────
export type CategorieWari = {
id: string;
nom: string;
slug: string;
emoji: string | null;
couleur: string | null;
};
export type CategoriesVitrinesResponse = {
categories: CategorieWari[];
};
// ─── Tenant / Vitrine ─────────────────────────────────────────────────────────
export type CanalType =
| 'WHATSAPP'
| 'TELEPHONE'
| 'INSTAGRAM'
| 'TELEGRAM'
| 'SNAPCHAT'
| 'EMAIL'
| 'LIEN'
| 'PANIER'
| 'DEVIS';
export type TenantCanal = {
/** Optionnel sur les sorties publiques (legacy non-id) ; toujours présent en CRUD gérant. */
id?: string;
type: CanalType;
valeur: string;
/** Optionnel sur sorties publiques (déjà filtré actif=true). */
actif?: boolean;
ordre: number;
};
// ─── Quick Replies (Sprint Chat V1.6) ────────────────────────────────────────
export type QuickReply = {
id: string;
texte: string;
ordre: number;
actif: boolean;
createdAt: string;
};
// ─── ConfigAccesVitrine (WP-224 étape 2) ─────────────────────────────────────
export type ConfigAccesVitrine = {
// Dimension 2 — Contenu visible
nomsVisibles: boolean;
photosVisibles: boolean;
prixVisibles: boolean;
descriptionsVisibles: boolean;
stockVisible: boolean;
coordonneesVisibles: boolean;
// Dimension 3 — Actions sans compte
panierSansCompte: boolean;
commandeSansCompte: boolean;
reservationSansCompte: boolean;
contactSansCompte: boolean;
};
export type TenantPublic = {
id: string;
subdomain: string;
nom: string;
description: string | null;
canaux?: TenantCanal[];
logoUrl: string | null;
banniere: string | null;
whatsapp: string | null;
ville: string | null;
pays: string;
themeCouleur: string;
couleurAccent: string;
vitrineActive: boolean;
modeVitrineSiteWeb: boolean;
siteWebUrl: string | null;
modulesActifs?: string[];
niveauAcces: NiveauAcces;
configAcces: ConfigAccesVitrine;
};
export type VitrineSummary = TenantPublic & {
categorieWari?: { id: string; nom: string; emoji?: string } | null;
};
// ─── Teaser accès refusé (WP-224 étape 4) ─────────────────────────────────────
// Retourné par les routes DETAIL quand verifierAccesTenant() = false.
// Permet à l'UI mobile d'afficher AccesRequis avec metadata minimale.
export type VitrineTeaser = {
accessible: false;
subdomain: string;
nom: string;
logoUrl: string | null;
description: string | null;
niveauAcces: NiveauAcces;
};
export type TenantTeaser = {
id: string;
subdomain: string;
nom: string;
logoUrl: string | null;
description: string | null;
niveauAcces: NiveauAcces;
};
export type ProduitTeaser = {
accessible: false;
tenant: TenantTeaser;
};
// ─── Demande accès vitrine SUR_DEMANDE (WP-224 étape 5) ───────────────────────
export type AccesDemandeMobile = {
id: string;
tenantId: string;
clientId: string;
niveau: string;
statut: StatutAcces;
produitId: string | null;
prestationId: string | null;
motif: string | null;
createdAt: string;
updatedAt: string;
tenant: {
id: string;
subdomain: string;
nom: string;
logoUrl: string | null;
niveauAcces: NiveauAcces;
};
produit: { id: string; nom: string } | null;
prestation: { id: string; nom: string } | null;
};
export type DemanderAccesPayload = {
tenantId: string;
produitId?: string;
prestationId?: string;
motif?: string;
};
export type PrestationTeaser = {
accessible: false;
tenant: TenantTeaser;
};
// ─── Catégorie ────────────────────────────────────────────────────────────────
export type Categorie = {
id: string;
nom: string;
};
// ─── Variante Produit ─────────────────────────────────────────────────────────
export type VarianteProduit = {
id: string;
attributs: Record<string, string>;
prix: number | null;
stock: number;