/** * Canal interne (clé Symbol) transmettant l'ENVELOPPE costum d'une requête à `ApiClient.callEndpoint` * SANS toucher la signature des méthodes générées ni polluer le wire (un Symbol est ignoré par * `Object.keys`/AJV/`JSON.stringify` → invisible réseau, lisible par accès explicite seulement). * * Enveloppe = `{ properties, context, isUpdate? }` — UNIFIE l'injection costum (données + contexte) en UN point : * - `properties` : schéma des champs DATA costum (per-costum) → fusionnés dans le schéma compilé * (relâche `additionalProperties:false` pour les champs costum). * - `context` : `{ costumSlug, costumId, costumType }` → injectés dans le PAYLOAD + acceptés par l'AJV. * - `isUpdate` : UPDATE d'une entité costum routé vers `element/save` (pendant exact de l'ADD). En mode * UPDATE, `callEndpoint` compile un schéma PERMISSIF (uniquement `properties` envoyées + contexte + id + * collection, SANS les `required`/`default` du schéma de CRÉATION) avec une AJV `useDefaults:false`, car * on n'envoie que les champs MODIFIÉS et on ne doit pas réinjecter les défauts de création (parent, etc.). * * ⇒ le contrat (`endpoints-copie.json`) n'a plus à déclarer le contexte costum : `callEndpoint` l'ajoute * automatiquement quand un costum est actif, pour n'importe quel endpoint save/add. */ export interface CostumRequestEnvelope { properties: Record; context: Record; isUpdate?: boolean; /** `$defs` du schéma combiné (tous les blocs) — nécessaires aux `$ref` des `properties` copiées en mode UPDATE. */ defs?: Record; } export declare const COSTUM_REQUEST_ENVELOPE: unique symbol;