Journal des versions
Chaque entrée est la différence entre deux schémas publiés, classée en rupture, à surveiller ou sans risque. Ce qui est plus récent que la dernière coupe apparaît comme non publié.
2026-11-02
Finance : la continuité des lots et de l’escrow de l’ancien site (docs/adr/0107, amendement). SellerBalanceView gagne awaitingMillimes et awaitingSlices — les fonds attendus : commandes livrées ou payées par carte dont l’argent n’est pas encore arrivé, hors de tout solde — et releaseSchedule, l’escrow par jour de libération (jour de Tunis, au plus 60 jours, un ReleaseDayView par jour : day, amountMillimes, slices). SellerStatementView lit désormais le lot comme un relevé à payer : source (platform ou legacy), shopName, paidMillimes, residualMillimes, inFlightMillimes (virements dans un lot bancaire), paymentStatus (unpaid, partial, paid, deferred), deferredReason et deferredAt, payments (les paiements enregistrés ou programmés sur le lot), deductions (les factures Wamia réglées par déduction à cette clôture, un SellerInvoicePaymentView par facture), legacyTransactionIds et odooBillRef pour un lot repris de l’ancien site. SellerFeeInvoiceView gagne paidMillimes, paymentStatus et hasXlsx (le classeur ligne à ligne existe). Ajouts seulement.
- type_added ReleaseDayView — OBJECT
- field_added SellerBalanceView.awaitingMillimes — Float!
- field_added SellerBalanceView.awaitingSlices — Int!
- field_added SellerBalanceView.releaseSchedule — [ReleaseDayView!]!
- field_added SellerFeeInvoiceView.hasXlsx — Boolean!
- field_added SellerFeeInvoiceView.paidMillimes — Float!
- field_added SellerFeeInvoiceView.paymentStatus — String!
- type_added SellerInvoicePaymentView — OBJECT
- field_added SellerStatementView.deductions — [SellerInvoicePaymentView!]!
- field_added SellerStatementView.deferredAt — DateTime
- field_added SellerStatementView.deferredReason — String
- field_added SellerStatementView.inFlightMillimes — Float!
- field_added SellerStatementView.legacyTransactionIds — [String!]
- field_added SellerStatementView.odooBillRef — String
- field_added SellerStatementView.paidMillimes — Float!
- field_added SellerStatementView.paymentStatus — String!
- field_added SellerStatementView.payments — [PayoutView!]!
- field_added SellerStatementView.residualMillimes — Float!
- field_added SellerStatementView.shopName — String
- field_added SellerStatementView.source — String!
2026-11-01
Expéditions : une expédition peut partir en plusieurs colis sous un seul numéro de suivi (docs/adr/0212). ApiShipmentView gagne packageCount, le nombre de colis annoncé au transporteur, et packages, un ApiShipmentPackageView par colis (packageIndex à partir de 1, parcelNo, label — l’étiquette de ce colis, AFEX imprime <suivi>P01, <suivi>P02… — et weightGrams, le poids pesé au banc, null tant que le colis n’est pas fermé). Une expédition d’un seul colis a packageCount 1 et un élément dans packages ; la comptabilité et le COD restent par expédition. Uniquement un ajout. Retours : ReturnArrivalView gagne packageIndex et packageCount, le colis reçu au quai et le total de l’expédition quand elle en comptait plusieurs (null pour un colis unique) ; l’expédition n’est revenue qu’une fois tous ses colis scannés. Uniquement un ajout.
- type_added ApiShipmentPackageView — OBJECT
- field_added ApiShipmentView.packageCount — Int!
- field_added ApiShipmentView.packages — [ApiShipmentPackageView!]!
- field_added ReturnArrivalView.packageCount — Int
- field_added ReturnArrivalView.packageIndex — Int
2026-10-30
Catalogue : ProductFlags expose shipsAsIs, vrai quand l’article part sans contenant Wamia (champ « Expédié tel quel » du jeu Logistique) : l’entrepôt ne pose que l’étiquette et le ruban du document, et la sous-commande n’est facturée que le tarif « sans contenant » (docs/adr/0209). Uniquement un ajout. Rendez-vous de quai : AppointmentSlotView gagne closedReason, le motif pour lequel le calendrier plateforme ferme le site sur ce créneau (jour férié, inventaire — docs/adr/0173) ; remaining vaut alors 0 et apiBookInboundAppointment, apiRescheduleInboundAppointment, apiBookWithdrawalAppointment et apiRescheduleWithdrawalAppointment refusent le créneau avec ce motif ; null quand le site est ouvert. Uniquement un ajout. Webhooks : les familles inbound.* et withdrawal.* gagnent inbound.slot_closed et withdrawal.slot_closed, émis quand l’entrepôt ferme sur un créneau déjà réservé (appointmentId, startsAt, reason) ; rien n’est déplacé pour vous, re-réservez avec apiRescheduleInboundAppointment ou apiRescheduleWithdrawalAppointment. Uniquement un ajout.
- field_added AppointmentSlotView.closedReason — String
- field_added ProductFlags.shipsAsIs — Boolean
2026-10-29
Visites de dépôt et délai de créneau (docs/adr/0207) : OrderSliceView gagne slotDueAt (la date limite pour réserver un créneau de quai sur une sous-commande cross-dock), sellerClock (SellerClockView : la prochaine obligation de la boutique et son échéance — SellerClockKind : ack, slot, arrival, pickup ou none) et dropoffVisit (DropoffVisitView : la visite de dépôt que suit la sous-commande, avec sa décision DropoffRunDecision, son rendez-vous de quai, son entrepôt et les envois qui la composent, DropoffVisitShipmentView). SliceInboundView gagne appointmentId, le créneau de quai qui couvre l’envoi — le sien ou celui de la visite. Uniquement des ajouts.
- type_added DropoffRunDecision — ENUM
- type_added DropoffVisitShipmentView — OBJECT
- type_added DropoffVisitView — OBJECT
- field_added OrderSliceView.dropoffVisit — DropoffVisitView
- field_added OrderSliceView.sellerClock — SellerClockView!
- field_added OrderSliceView.slotDueAt — DateTime
- type_added SellerClockKind — ENUM
- type_added SellerClockView — OBJECT
- field_added SliceInboundView.appointmentId — String
2026-10-27
Retours et commandes (docs/adr/0200, 0201) : RmaItemView gagne variantLabel, imagePath, unitPriceMillimes et lineQuantity (la ligne telle qu’elle a été vendue) ; RmaExchangeSummaryView gagne targetSku, targetLabel, replacementSliceNo et replacementSliceStatus (l’article de remplacement et la sous-commande qui l’expédie) ; RmaView gagne customerHistory (RmaCustomerHistoryView : retours demandés, terminés, refusés, ceux des 365 derniers jours et le total remboursé au client). OrderSliceView gagne kind (OrderSliceKind : SALE, EXCHANGE ou WARRANTY_REPLACEMENT) et sourceRmaId, le retour dont une sous-commande de remplacement est issue. Uniquement des ajouts.
- type_added OrderSliceKind — ENUM
- field_added OrderSliceView.kind — OrderSliceKind!
- field_added OrderSliceView.sourceRmaId — String
- type_added RmaCustomerHistoryView — OBJECT
- field_added RmaExchangeSummaryView.replacementSliceNo — String
- field_added RmaExchangeSummaryView.replacementSliceStatus — String
- field_added RmaExchangeSummaryView.targetLabel — String
- field_added RmaExchangeSummaryView.targetSku — String
- field_added RmaItemView.imagePath — String
- field_added RmaItemView.lineQuantity — Int!
- field_added RmaItemView.unitPriceMillimes — Float!
- field_added RmaItemView.variantLabel — String
- field_added RmaView.customerHistory — RmaCustomerHistoryView
2026-10-26
Retours : RmaView gagne returnMethod (EXPRESS_PICKUP, DROPOFF, CARRIER, null tant que le service retours n’a pas tranché), pickupCollectedAt (l’instant où un chauffeur Wamia Express a repris le colis chez le client) et pickup, l’état de cette reprise (ReturnPickupView : arrêt, tournée et son jour, prénom du chauffeur, statut, nombre de tentatives, dernier motif d’échec) ; null sans reprise planifiée. Les énumérations ExpressStopStatus et ExpressRouteStatus arrivent avec. Échange à la porte (docs/adr/0199) : RmaReturnMethod gagne CARRIER_EXCHANGE — le transporteur apporte le remplacement et reprend l’article chez le client ; RmaView expose returnShipment (RmaReturnShipmentView : kind exchange ou return_document, transporteur, n° de suivi et lien, statut, tentatives, accusé de reprise, tickets transporteur RmaCarrierTicketView), eligibilityOutcome (ExchangeEligibilityOutcome : ALLOW_DOOR_EXCHANGE, EXCHANGE_AFTER_INSPECTION, PICKUP_ONLY, DENY_EXCHANGE) et, pour le personnel, eligibilitySnapshotJson, riskHold (RmaRiskHoldView, la part bloquée sur le wallet) et unreturnedReportedAt. RefundLineView dit awaitingProof, proofUploadedAt et proofUploadedByUserId pour un virement manuel qui attend sa preuve ; ReturnArrivalView.doorExchange signale au quai le retour d’un échange. RmaView gagne aussi returnCarrierCode et returnCarrierRuleId : le transporteur qui reprend le retour et la règle Retours qui l’a désigné (null tant qu’aucune règle n’a tranché).
- type_added ExchangeEligibilityOutcome — ENUM
- type_added ExpressRouteStatus — ENUM
- type_added ExpressStopStatus — ENUM
- field_added RefundLineView.awaitingProof — Boolean!
- field_added RefundLineView.proofUploadedAt — DateTime
- field_added RefundLineView.proofUploadedByUserId — String
- field_added ReturnArrivalView.doorExchange — Boolean!
- type_added ReturnPickupView — OBJECT
- type_added RmaCarrierTicketView — OBJECT
- type_added RmaReturnMethod — ENUM
- type_added RmaReturnShipmentView — OBJECT
- type_added RmaRiskHoldView — OBJECT
- field_added RmaView.eligibilityOutcome — ExchangeEligibilityOutcome
- field_added RmaView.eligibilitySnapshotJson — String
- field_added RmaView.pickup — ReturnPickupView
- field_added RmaView.pickupCollectedAt — DateTime
- field_added RmaView.returnCarrierCode — String
- field_added RmaView.returnCarrierRuleId — String
- field_added RmaView.returnMethod — RmaReturnMethod
- field_added RmaView.returnShipment — RmaReturnShipmentView
- field_added RmaView.riskHold — RmaRiskHoldView
- field_added RmaView.unreturnedReportedAt — DateTime
2026-10-23
Retraits : WithdrawalRequestView gagne holdUntil, l’instant où les unités préparées au comptoir retournent en stockage si aucun créneau de quai n’est pris (stagedHoldHours après leur mise à disposition, ou après un créneau manqué) ; null tant qu’un créneau est réservé ou quand le site sert depuis les rayons. Tableau de bord : SellerDashboardProductView gagne imagePath, la vignette du produit (/i/<asset>/thumb.webp), null sans image prête.
- field_added SellerDashboardProductView.imagePath — String
- field_added WithdrawalRequestView.holdUntil — DateTime
2026-10-22
Offres : OfferView et OfferInput gagnent sellerSku, la référence de l’article dans votre propre système (ERP, caisse, tableur). Elle est unique par boutique, insensible à la casse, et Wamia ne l’utilise jamais pour ses opérations : le sku reste la référence Wamia, imprimée sur les étiquettes et scannée en entrepôt. Omis, sellerSku est conservé ; vide, il est effacé ; une référence déjà portée par une autre de vos offres est refusée. La recherche q de myOffersPage la reconnaît aussi (docs/adr/0192).
- field_added OfferInput.sellerSku — String
- field_added OfferView.sellerSku — String
2026-10-16Rupture · 2
Retraits : un retrait suit désormais la même route qu’une réception (docs/adr/0185). WithdrawalStatus gagne SCHEDULED, PREPARING, READY, ARRIVED, CLOSED (remis en totalité), HANDED_OVER (remis en partie, avec un shortfallReason par ligne) et NO_SHOW ; PICKED disparaît (changement cassant : PICKED devient READY, et un retrait remis auparavant devient CLOSED ; traitez toute valeur inconnue comme un état intermédiaire). WithdrawalRequestView expose reference (RT-AAAA-N), appointment (WithdrawalAppointmentView : quai, début, fin, statut), readyAt, arrivedAt, closedAt, noShowAt, cancelReason, shopRepresentative, photoKeys, facilityCode, stagingBarcode, atRisk et les compteurs de lignes et d’unités (lineCount, requestedUnits, stagedUnits, handedUnits, openTasks, totalTasks). Nouvelles mutations : apiBookWithdrawalAppointment et apiRescheduleWithdrawalAppointment (sans clé d’idempotence, créneaux de apiInboundSlots) ; l’approbation réserve désormais les unités. Webhooks : withdrawal.scheduled, withdrawal.no_show et withdrawal.cancelled s’ajoutent ; withdrawal.requested, decided, ready et handed_over gardent leur nom. Réceptions : InboundShipmentView gagne orderNo, sliceNo, photoKeys et shopRepresentative, InboundLineView needsLabels et needsMeasure, InboundShipmentDetailView reports (InboundReportView, le rapport de réception versionné, docs/adr/0183). Retours : RmaView gagne logistics (ReturnLogisticsView : l’arrivée au quai retours, son statut, le mode stocked / cross_dock / mixed, et à la demande ReturnArrivalView avec ses lignes, ses résultats pièce par pièce — ReturnDestination : stock, withdrawal, damaged, quarantine, missing — et le retrait boutique créé pour les unités cross-dock, docs/adr/0186) ; WithdrawalRequestView gagne openReturnTasks et totalReturnTasks. Enlèvements : PickupTaskView gagne qrScannedAt et InboundShipmentDetailView pickupQr (PickupQrView). Versements : PayoutView.organizationId devient optionnel (changement cassant) car un versement peut aller à un partenaire de livraison ; payeeKind (organization | partner), partnerId, partnerName et partnerStatementId s’ajoutent.
- field_type_changed PayoutView.organizationId — String! → String
- enum_value_removed WithdrawalStatus.PICKED
- enum_value_added WithdrawalStatus.ARRIVED
- enum_value_added WithdrawalStatus.CLOSED
- enum_value_added WithdrawalStatus.NO_SHOW
- enum_value_added WithdrawalStatus.PREPARING
- enum_value_added WithdrawalStatus.READY
- enum_value_added WithdrawalStatus.SCHEDULED
- field_added InboundLineView.needsLabels — Boolean!
- field_added InboundLineView.needsMeasure — Boolean!
- type_added InboundReportView — OBJECT
- field_added InboundShipmentDetailView.pickupQr — PickupQrView
- field_added InboundShipmentDetailView.reports — [InboundReportView!]!
- field_added InboundShipmentView.orderNo — String
- field_added InboundShipmentView.photoKeys — [String!]!
- field_added InboundShipmentView.shopRepresentative — String
- field_added InboundShipmentView.sliceNo — String
- operation_added Mutation.apiBookWithdrawalAppointment — WithdrawalRequestView!
- operation_added Mutation.apiRescheduleWithdrawalAppointment — WithdrawalRequestView!
- field_added PayoutView.partnerId — String
- field_added PayoutView.partnerName — String
- field_added PayoutView.partnerStatementId — String
- field_added PayoutView.payeeKind — String!
- type_added PickupQrView — OBJECT
- field_added PickupTaskView.qrScannedAt — DateTime
- type_added ReturnArrivalKind — ENUM
- type_added ReturnArrivalLineView — OBJECT
- type_added ReturnArrivalOutcomeView — OBJECT
- type_added ReturnArrivalStatus — ENUM
- type_added ReturnArrivalTransferView — OBJECT
- type_added ReturnArrivalView — OBJECT
- type_added ReturnArrivalWithdrawalView — OBJECT
- type_added ReturnCountMethod — ENUM
- type_added ReturnDestination — ENUM
- type_added ReturnLocationView — OBJECT
- type_added ReturnLogisticsView — OBJECT
- field_added RmaView.logistics — ReturnLogisticsView
- type_added WithdrawalAppointmentView — OBJECT
- field_added WithdrawalRequestView.appointment — WithdrawalAppointmentView
- field_added WithdrawalRequestView.arrivedAt — DateTime
- field_added WithdrawalRequestView.atRisk — Boolean!
- field_added WithdrawalRequestView.cancelReason — String
- field_added WithdrawalRequestView.closedAt — DateTime
- field_added WithdrawalRequestView.facilityCode — String!
- field_added WithdrawalRequestView.handedUnits — Int!
- field_added WithdrawalRequestView.lineCount — Int!
- field_added WithdrawalRequestView.noShowAt — DateTime
- field_added WithdrawalRequestView.openReturnTasks — Int!
- field_added WithdrawalRequestView.openTasks — Int!
- field_added WithdrawalRequestView.photoKeys — [String!]!
- field_added WithdrawalRequestView.readyAt — DateTime
- field_added WithdrawalRequestView.reference — String!
- field_added WithdrawalRequestView.requestedUnits — Int!
- field_added WithdrawalRequestView.shopRepresentative — String
- field_added WithdrawalRequestView.stagedUnits — Int!
- field_added WithdrawalRequestView.stagingBarcode — String
- field_added WithdrawalRequestView.totalReturnTasks — Int!
- field_added WithdrawalRequestView.totalTasks — Int!
2026-10-11
Commandes : chaque tranche (OrderSliceView) expose liveSale, vrai quand au moins un article a été ajouté depuis le live de la boutique et facturé au taux de commission live du barème (0 % par défaut) ; faux sinon. Les montants de commission restent réservés au personnel Wamia (docs/adr/0113). Offres : OfferView gagne organizationName (le nom localisé de la boutique qui vend l’offre) et variantLabel (la variante en clair, par exemple « 256 Go · Bleu ») ; ces deux champs facultatifs nomment une offre hors du contexte de sa boutique, par exemple quand plusieurs boutiques vendent la même page produit (buy box, docs/adr/0029). Corrections : OrderSliceView et InboundLineView exposent correctionId, la référence (COR-AAAA-N) de la dernière correction manuelle qui a touché la tranche ou la ligne de réception ; nul tant qu’aucune n’a eu lieu. Une correction annule une action enregistrée par erreur (une réception, une étape marquée à la main) et laisse une trace dans le registre des corrections (docs/adr/0171). Règlement : OrderSliceView expose wamiaFundedMillimes, ce que Wamia a offert sur la tranche (part du bon Wamia, offres de saison) et prend sur sa propre marge ; ce montant ne réduit ni le brut du vendeur, ni son net, ni la base de commission (docs/adr/0172). Réservé au personnel Wamia. Langues : LocalizedText et LocalizedTextInput gagnent tn, le derja tunisien écrit en caractères arabes, à côté de fr, en et ar ; le champ est facultatif et une valeur absente retombe sur ar puis fr. Un texte envoyé via Connect est enregistré comme importé et n’est jamais écrasé par la traduction automatique de Wamia (docs/adr/0175).
- field_added InboundLineView.correctionId — String
- field_added LocalizedText.tn — String
- field_added LocalizedTextInput.tn — String
- field_added OfferView.organizationName — LocalizedText
- field_added OfferView.variantLabel — String
- field_added OrderSliceView.correctionId — String
- field_added OrderSliceView.liveSale — Boolean!
- field_added OrderSliceView.wamiaFundedMillimes — Float!
2026-10-10
Publicité : AdChannel gagne META_POOL (le catalogue Meta partagé, canal par défaut d’un boost) et META_SOLO (une annonce Meta dédiée à un seul produit) ; META reste le canal des anciens ensembles dédiés. Un client qui lit AdBoostView.channel doit accepter ces valeurs (docs/adr/0098). Logistique : les offres stockées chez Wamia se réapprovisionnent sur rendez-vous et se récupèrent par retrait. apiInboundShipments accepte origin (SELLER_DECLARED pour les réapprovisionnements, ORDER_DRIVEN pour les transferts cross-dock) ; apiInboundSlotGrid renvoie les créneaux de quai par jour sur 14 jours au plus et apiRescheduleInboundAppointment déplace un rendez-vous réservé (événement inbound.rescheduled). apiStockedPositions expose le comptage de l’entrepôt (onHandQty, reservedQty, availableQty) paginé par curseur ; StockOfferFactsView porte fulfilmentMode. Les résultats de lot (ApiBatchItemResultView) ajoutent skipped et skipReason : apiDeclareStocks ignore désormais les offres stockées avec skipReason stocked_offer au lieu d’écraser le comptage de l’entrepôt. Nouvelles familles de webhooks inbound.* et withdrawal.* (docs/adr/0162).
- enum_value_added AdChannel.META_POOL
- enum_value_added AdChannel.META_SOLO
- field_added ApiBatchItemResultView.skipReason — String
- field_added ApiBatchItemResultView.skipped — Boolean
- type_added ApiStockedPositionPage — OBJECT
- type_added ApiStockedPositionView — OBJECT
- type_added AppointmentSlotDayView — OBJECT
- operation_added Mutation.apiRescheduleInboundAppointment — InboundShipmentView!
- arg_added Query.apiInboundShipments(origin) — InboundOrigin
- operation_added Query.apiInboundSlotGrid — [AppointmentSlotDayView!]!
- operation_added Query.apiStockedPositions — ApiStockedPositionPage!
- field_added StockOfferFactsView.fulfilmentMode — FulfilmentMode
2026-10-09
Commandes : chaque tranche (OrderSliceView) détaille ses frais de traitement bruts en packagingBoxMillimes (le carton) et packagingProtectionMillimes (bulles, ruban, calage), TTC ; leur somme reste le brut d’avant. Catalogue : ProductFlags expose retailBoxed, vrai quand l’article est livré dans sa boîte d’origine (champ « Livré dans sa boîte d’origine » du jeu Logistique) ; un article nu reçoit un tour de bulles de plus (docs/adr/0158).
- field_added OrderSliceView.packagingBoxMillimes — Float!
- field_added OrderSliceView.packagingProtectionMillimes — Float!
- field_added ProductFlags.retailBoxed — Boolean
2026-10-08
Commandes : chaque ligne (OrderLineView) expose promoDiscountMillimes, la remise financée par la boutique sur la ligne (prix promo, flash, solde ou offre quantité) ; 0 sans promotion. La ligne garde son prix catalogue, la remise est déduite du versement comme les frais (docs/adr/0150).
- field_added OrderLineView.promoDiscountMillimes — Float!
2026-10-07
Relevé boutique : chaque ligne du grand livre expose entryId, l'identifiant de l'écriture comptable à laquelle elle appartient (clé de détail des frais de stockage journaliers). Médias : MediaAsset expose kind (image ou vidéo), videoUrl, posterUrl et durationMs pour les clips intégrés aux descriptions produit ; les descriptions sont désormais du HTML riche (mise en forme, listes, tableaux, images et vidéos). Logistique : ProductVariant expose fragile, liquid et sharp (manutention) ainsi que les dimensions mesurées à la réception par l'entrepôt (measuredWeightGrams, measuredLengthMm, measuredWidthMm, measuredHeightMm, measuredAt — lecture seule) ; ProductFlags gagne battery (BatteryContent) et thisSideUp ; Product expose prepSteps, les protections supplémentaires demandées à l'emballage.
- type_added BatteryContent — ENUM
- field_added MediaAsset.durationMs — Int
- field_added MediaAsset.kind — MediaAssetKind!
- field_added MediaAsset.posterUrl — String
- field_added MediaAsset.videoUrl — String
- type_added MediaAssetKind — ENUM
- field_added Product.prepSteps — [String!]!
- field_added ProductFlags.battery — BatteryContent
- field_added ProductFlags.thisSideUp — Boolean
- field_added ProductVariant.fragile — Boolean!
- field_added ProductVariant.liquid — Boolean!
- field_added ProductVariant.measuredAt — DateTime
- field_added ProductVariant.measuredHeightMm — Int
- field_added ProductVariant.measuredLengthMm — Int
- field_added ProductVariant.measuredWeightGrams — Int
- field_added ProductVariant.measuredWidthMm — Int
- field_added ProductVariant.sharp — Boolean!
- field_added SellerLedgerLineView.entryId — String!
2026-10-06
Obligations de la boutique par mode de préparation : les tranches stockées chez Wamia sont en lecture seule (apiAcknowledgeSlice et apiMarkSlicePrepared répondent VALIDATION_FAILED) ; les tranches en transit exposent le délai de confirmation, la confirmation ou le refus de la boutique et l'arrivage lié (référence, état, date attendue, créneau).
- field_added OrderSliceView.inbound — SliceInboundView
- field_added OrderSliceView.sellerAckDueAt — DateTime
- field_added OrderSliceView.sellerAcknowledgedAt — DateTime
- field_added OrderSliceView.sellerDeclineReason — String
- field_added OrderSliceView.sellerDeclinedAt — DateTime
- type_added SliceInboundView — OBJECT
2026-10-05
Première version publique de Wamia Connect : flux Connect (PKCE) et appairage, offres et stocks en lot, médias par URL, commandes et retours, webhooks signés, garde-fous et bac à sable.
Aucun changement de schéma.
Politique de version
Le schéma ne fait que grandir. Les champs sont dépréciés au moins 6 mois avant retrait, et les connecteurs reçoivent un relèvement de version minimale plutôt qu’une rupture silencieuse. Les ruptures sont annoncées ici et par courriel aux propriétaires de clés.