@communecter/cocolight-api-client 1.0.191 → 1.0.192

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@communecter/cocolight-api-client",
3
- "version": "1.0.191",
3
+ "version": "1.0.192",
4
4
  "description": "Client Axios simplifié pour l'API cocolight",
5
5
  "repository": {
6
6
  "type": "git",
@@ -42,6 +42,23 @@ export interface ApiClientOptions {
42
42
  * un artefact périmé masque indéfiniment les champs réels. Contrepartie : plus de démarrage à froid.
43
43
  */
44
44
  costumForceLive?: boolean;
45
+ /**
46
+ * Identité costum du SITE APPELANT (l'entité qui porte le costum servi par ce front).
47
+ * C'est le pendant client de `Costum::init` côté legacy : posée UNE fois, elle est injectée
48
+ * automatiquement dans le payload de tout endpoint dont le contrat déclare `costumSlug`
49
+ * (cf. `setSiteCostum`). À ne pas confondre avec le scope d'une ENTITÉ (`BaseEntity.setCostumScope`),
50
+ * qui décrit la provenance/l'autorité d'un élément — ici on décrit QUI APPELLE, pas QUI EST VISÉ.
51
+ */
52
+ siteCostum?: SiteCostumContext | null;
53
+ }
54
+ /**
55
+ * Identité costum du site appelant. `slug` = slug de l'ENTITÉ PORTEUSE (ex. `navigatorDesTierslieux`),
56
+ * jamais celui du moteur (`costumize`) : c'est ce slug qui est la clé de cache costum du legacy.
57
+ */
58
+ export interface SiteCostumContext {
59
+ slug: string;
60
+ costumId?: string;
61
+ costumType?: string;
45
62
  }
46
63
  /**
47
64
  * Structure des données pour les appels d'endpoint
@@ -102,7 +119,51 @@ export default class ApiClient extends EventEmitter {
102
119
  private _refreshToken;
103
120
  private _setUserId;
104
121
  private _mode;
105
- constructor({ baseURL, accessToken, refreshToken, refreshUrl, endpoints, timeout, debug, maxRetries, circuitBreakerThreshold, circuitBreakerResetTime, fromJSONValue, mode, tokenStorageStrategy, costumForceLive }: ApiClientOptions);
122
+ /** Contexte costum du SITE appelant, injecté sur les endpoints qui le déclarent (cf. setSiteCostum). */
123
+ private _siteCostum;
124
+ constructor({ baseURL, accessToken, refreshToken, refreshUrl, endpoints, timeout, debug, maxRetries, circuitBreakerThreshold, circuitBreakerResetTime, fromJSONValue, mode, tokenStorageStrategy, costumForceLive, siteCostum }: ApiClientOptions);
125
+ /**
126
+ * Déclare l'identité costum du SITE APPELANT — l'entité au nom de laquelle ce front agit.
127
+ *
128
+ * POURQUOI. Le legacy ne sait de quel costum vient une action que par `$_POST["costumSlug"]` :
129
+ * `CommunecterController::beforeAction` → `costumCacheParams()` réchauffe alors le cache costum
130
+ * AVANT l'action, et `Mail::getCustomMail`/`Mail::getAppName` y lisent le domaine (`costum.host`),
131
+ * le titre, le logo et l'expéditeur de l'e-mail, tandis que `Cron::save` y stampe `source.key`.
132
+ * Historiquement ce contexte venait du DOMAINE servi par le legacy lui-même ; dès lors que le
133
+ * domaine d'un costum pointe sur un front autonome, plus rien ne le porte — d'où cette déclaration.
134
+ *
135
+ * PORTÉE. Posée une fois (au démarrage du front), elle est injectée automatiquement dans le payload
136
+ * de **tout endpoint dont le contrat déclare `costumSlug`** — le contrat sert de liste blanche, donc
137
+ * aucun endpoint de recherche ou d'upload n'est pollué. Une valeur explicite passée par l'appelant,
138
+ * ou une enveloppe costum d'entité ({@link BaseEntity.setCostumScope}), restent prioritaires.
139
+ *
140
+ * NE PAS CONFONDRE avec le scope d'une ENTITÉ : celui-ci dit de quel costum PROVIENT un élément
141
+ * (son `source.key`, qui fait autorité pour l'ÉDITER) ; celui-là dit qui APPELLE. Pour brander un
142
+ * e-mail c'est l'appelant qui compte — une organisation créée sous le costum « meir » et invitée
143
+ * depuis le site « institutBleu » doit produire un e-mail « institutBleu ».
144
+ *
145
+ * @param slug slug de l'ENTITÉ PORTEUSE du costum (ex. `navigatorDesTierslieux`), jamais celui du
146
+ * moteur (`costumize`) : c'est la clé de cache costum du legacy.
147
+ * @param opts `costumId`/`costumType` = `contextId`/`contextType` de l'entité porteuse (facultatifs).
148
+ */
149
+ setSiteCostum(slug: string | null, opts?: {
150
+ costumId?: string;
151
+ costumType?: string;
152
+ }): void;
153
+ /** Identité costum du site appelant, ou `null` si ce client n'agit au nom d'aucun costum. */
154
+ getSiteCostum(): {
155
+ costumSlug: string;
156
+ costumId?: string;
157
+ costumType?: string;
158
+ } | null;
159
+ /**
160
+ * L'endpoint porte-t-il le marqueur `costumContext: "request"` du contrat — c.-à-d. reçoit-il
161
+ * automatiquement l'identité costum du site (cf. {@link setSiteCostum}) ?
162
+ * Exposé pour qu'un front qui construit lui-même un payload (`callEndpoint` brut) sache s'il doit y
163
+ * poser le trio à la main, SANS avoir à deviner depuis le schéma : 65 endpoints déclarent `costumSlug`
164
+ * avec un sens métier, seuls les endpoints marqués sont concernés.
165
+ */
166
+ hasCostumContext(constant: string): boolean;
106
167
  /**
107
168
  * Sets the access token for the API client and updates the authorization header.
108
169
  */
@@ -1893,6 +1893,54 @@ export declare class BaseEntity<TServerData = any> {
1893
1893
  * court-circuiter sur ce test.
1894
1894
  */
1895
1895
  hasCostumScope(): boolean;
1896
+ /**
1897
+ * Contexte costum de REQUÊTE de cette entité — `{costumSlug, costumId?, costumType?}` ou `undefined`.
1898
+ * Sert à BRANDER l'action côté serveur : le legacy lit `costumSlug` dans `$_POST`
1899
+ * (`CommunecterController::beforeAction` → `costumCacheParams()`), ce qui réchauffe le cache costum
1900
+ * AVANT l'action et donne son domaine/titre/logo/expéditeur à l'e-mail émis.
1901
+ *
1902
+ * ⚠ NE LIT QUE `_adminScope`, jamais `_costumCtx` — et c'est la question centrale du sujet.
1903
+ * Les deux ne disent pas la même chose : `_costumCtx` est la PROVENANCE de l'entité, re-dérivée de
1904
+ * `source.key` à chaque `_setData` (donc à chaque refresh), c'est-à-dire le costum qui a CRÉÉ
1905
+ * l'élément ; `_adminScope`, posé par `setCostumScope`, dit « j'agis délibérément au nom de CE
1906
+ * costum » et survit aux ré-hydratations. Pour brander un e-mail c'est l'APPELANT qui compte, pas
1907
+ * la provenance de la cible. Mesuré : 7 des 19 sites ont un porteur de provenance étrangère (l'org
1908
+ * hôte `institutBleu` porte `source.key:"meir"`) — lire `_costumCtx` ferait partir l'e-mail branché
1909
+ * « meir », et comme l'enveloppe l'emporte sur le défaut du client, ce serait PIRE que de ne rien
1910
+ * poser. Sans scope explicite on ne renvoie donc rien, et `ApiClient.setSiteCostum` — le costum du
1911
+ * SITE, la bonne réponse dans le cas nominal — s'applique.
1912
+ *
1913
+ * Ne lève JAMAIS et n'exige pas une identité complète (contrairement à `_requireCostumCtx`) : ses
1914
+ * appelants (invitation, connect, follow, commentaire, news…) doivent fonctionner hors costum.
1915
+ *
1916
+ * @internal Public par nécessité : `User` lit le contexte de SON PARENT (`this.parent`), ce qu'un
1917
+ * membre `protected` interdit (accès inter-instances).
1918
+ */
1919
+ _costumRequestContext(): {
1920
+ costumSlug: string;
1921
+ costumId?: string;
1922
+ costumType?: string;
1923
+ } | undefined;
1924
+ /**
1925
+ * Pose l'enveloppe costum (canal Symbol) sur un payload de requête, SI un contexte est disponible.
1926
+ *
1927
+ * POURQUOI, alors que `ApiClient.setSiteCostum` suffit au cas nominal (un front dédié à UN costum) :
1928
+ * l'enveloppe permet d'AGIR AU NOM d'un costum PRÉCIS, choisi par l'appelant (`setCostumScope`), et
1929
+ * elle est PRIORITAIRE sur le défaut du client — c'est ce qu'il faut pour un back-office multi-sites,
1930
+ * ou pour une action déclenchée sur un élément d'un autre costum que celui du front. Sans contexte :
1931
+ * on ne pose rien (comportement historique, non régressif — le défaut du client s'applique alors).
1932
+ *
1933
+ * `properties` reste vide : aucun champ DATA costum ici, seulement le CONTEXTE (cf. `symbol.ts`).
1934
+ *
1935
+ * @param payload Payload muté en place (le Symbol est invisible pour `Object.keys`/AJV/le wire).
1936
+ * @param ctx Contexte à poser ; par défaut celui de CETTE entité.
1937
+ * @protected
1938
+ */
1939
+ protected _stampCostumEnvelope<T extends object>(payload: T, ctx?: {
1940
+ costumSlug: string;
1941
+ costumId?: string;
1942
+ costumType?: string;
1943
+ } | undefined): T;
1896
1944
  /**
1897
1945
  * Pose EXPLICITEMENT le scope costum de l'entité — l'API OFFICIELLE pour rattacher une entité
1898
1946
  * HÔTE de costum (qui n'a pas de `source.key` : c'est elle la source, la lib ne lui auto-dérive
@@ -45,6 +45,18 @@ export interface PersonRegisterData {
45
45
  * Indique s’il s’agit d’une invitation (facultatif)
46
46
  */
47
47
  isInvitation?: boolean;
48
+ /**
49
+ * Contexte costum de l'action : slug du SITE appelant (l'entité porteuse du costum), jamais le slug du moteur (« costumize »). Injecté automatiquement par le client (ApiClient.setSiteCostum / setCostumScope). Le legacy le lit dans $_POST — CommunecterController::costumCacheParams réchauffe alors le cache costum AVANT l'action, ce qui brande l'e-mail émis (domaine des liens, titre, logo, expéditeur) et stampe source.key sur le job cron.
50
+ */
51
+ costumSlug?: string;
52
+ /**
53
+ * Contexte costum : _id de l'entité porteuse du costum (contextId). Facultatif, complète costumSlug.
54
+ */
55
+ costumId?: string;
56
+ /**
57
+ * Contexte costum : collection de l'entité porteuse (organizations | projects | events | citoyens). Facultatif, complète costumSlug.
58
+ */
59
+ costumType?: string;
48
60
  [k: string]: unknown;
49
61
  }
50
62
  export interface AuthenticateUrlData {
@@ -77,6 +89,18 @@ export interface PasswordRecoveryData {
77
89
  * Type d'email envoyé
78
90
  */
79
91
  type: "password";
92
+ /**
93
+ * Contexte costum de l'action : slug du SITE appelant (l'entité porteuse du costum), jamais le slug du moteur (« costumize »). Injecté automatiquement par le client (ApiClient.setSiteCostum / setCostumScope). Le legacy le lit dans $_POST — CommunecterController::costumCacheParams réchauffe alors le cache costum AVANT l'action, ce qui brande l'e-mail émis (domaine des liens, titre, logo, expéditeur) et stampe source.key sur le job cron.
94
+ */
95
+ costumSlug?: string;
96
+ /**
97
+ * Contexte costum : _id de l'entité porteuse du costum (contextId). Facultatif, complète costumSlug.
98
+ */
99
+ costumId?: string;
100
+ /**
101
+ * Contexte costum : collection de l'entité porteuse (organizations | projects | events | citoyens). Facultatif, complète costumSlug.
102
+ */
103
+ costumType?: string;
80
104
  [k: string]: unknown;
81
105
  }
82
106
  export interface PasswordResetData {
@@ -133,6 +157,18 @@ export interface DeleteAccountData {
133
157
  * Raison de la suppression
134
158
  */
135
159
  reason: string;
160
+ /**
161
+ * Contexte costum de l'action : slug du SITE appelant (l'entité porteuse du costum), jamais le slug du moteur (« costumize »). Injecté automatiquement par le client (ApiClient.setSiteCostum / setCostumScope). Le legacy le lit dans $_POST — CommunecterController::costumCacheParams réchauffe alors le cache costum AVANT l'action, ce qui brande l'e-mail émis (domaine des liens, titre, logo, expéditeur) et stampe source.key sur le job cron.
162
+ */
163
+ costumSlug?: string;
164
+ /**
165
+ * Contexte costum : _id de l'entité porteuse du costum (contextId). Facultatif, complète costumSlug.
166
+ */
167
+ costumId?: string;
168
+ /**
169
+ * Contexte costum : collection de l'entité porteuse (organizations | projects | events | citoyens). Facultatif, complète costumSlug.
170
+ */
171
+ costumType?: string;
136
172
  pathParams?: {
137
173
  /**
138
174
  * Identifiant de l'utilisateur à supprimer
@@ -515,6 +551,18 @@ export interface MulticonnectData {
515
551
  };
516
552
  };
517
553
  };
554
+ /**
555
+ * Contexte costum de l'action : slug du SITE appelant (l'entité porteuse du costum), jamais le slug du moteur (« costumize »). Injecté automatiquement par le client (ApiClient.setSiteCostum / setCostumScope). Le legacy le lit dans $_POST — CommunecterController::costumCacheParams réchauffe alors le cache costum AVANT l'action, ce qui brande l'e-mail émis (domaine des liens, titre, logo, expéditeur) et stampe source.key sur le job cron.
556
+ */
557
+ costumSlug?: string;
558
+ /**
559
+ * Contexte costum : _id de l'entité porteuse du costum (contextId). Facultatif, complète costumSlug.
560
+ */
561
+ costumId?: string;
562
+ /**
563
+ * Contexte costum : collection de l'entité porteuse (organizations | projects | events | citoyens). Facultatif, complète costumSlug.
564
+ */
565
+ costumType?: string;
518
566
  [k: string]: unknown;
519
567
  }
520
568
  export interface RelaunchInvitationData {
@@ -522,6 +570,18 @@ export interface RelaunchInvitationData {
522
570
  * _id du compte invité à relancer
523
571
  */
524
572
  id: string;
573
+ /**
574
+ * Contexte costum de l'action : slug du SITE appelant (l'entité porteuse du costum), jamais le slug du moteur (« costumize »). Injecté automatiquement par le client (ApiClient.setSiteCostum / setCostumScope). Le legacy le lit dans $_POST — CommunecterController::costumCacheParams réchauffe alors le cache costum AVANT l'action, ce qui brande l'e-mail émis (domaine des liens, titre, logo, expéditeur) et stampe source.key sur le job cron.
575
+ */
576
+ costumSlug?: string;
577
+ /**
578
+ * Contexte costum : _id de l'entité porteuse du costum (contextId). Facultatif, complète costumSlug.
579
+ */
580
+ costumId?: string;
581
+ /**
582
+ * Contexte costum : collection de l'entité porteuse (organizations | projects | events | citoyens). Facultatif, complète costumSlug.
583
+ */
584
+ costumType?: string;
525
585
  [k: string]: unknown;
526
586
  }
527
587
  export interface ContactSendData {
@@ -709,6 +769,18 @@ export interface AddNewsData {
709
769
  count: number;
710
770
  [k: string]: unknown;
711
771
  }[];
772
+ /**
773
+ * Contexte costum de l'action : slug du SITE appelant (l'entité porteuse du costum), jamais le slug du moteur (« costumize »). Injecté automatiquement par le client (ApiClient.setSiteCostum / setCostumScope). Le legacy le lit dans $_POST — CommunecterController::costumCacheParams réchauffe alors le cache costum AVANT l'action, ce qui brande l'e-mail émis (domaine des liens, titre, logo, expéditeur) et stampe source.key sur le job cron.
774
+ */
775
+ costumSlug?: string;
776
+ /**
777
+ * Contexte costum : _id de l'entité porteuse du costum (contextId). Facultatif, complète costumSlug.
778
+ */
779
+ costumId?: string;
780
+ /**
781
+ * Contexte costum : collection de l'entité porteuse (organizations | projects | events | citoyens). Facultatif, complète costumSlug.
782
+ */
783
+ costumType?: string;
712
784
  [k: string]: unknown;
713
785
  }
714
786
  export interface AddImageNewsData {
@@ -851,6 +923,18 @@ export interface UpdateNewsData {
851
923
  count: number;
852
924
  [k: string]: unknown;
853
925
  }[];
926
+ /**
927
+ * Contexte costum de l'action : slug du SITE appelant (l'entité porteuse du costum), jamais le slug du moteur (« costumize »). Injecté automatiquement par le client (ApiClient.setSiteCostum / setCostumScope). Le legacy le lit dans $_POST — CommunecterController::costumCacheParams réchauffe alors le cache costum AVANT l'action, ce qui brande l'e-mail émis (domaine des liens, titre, logo, expéditeur) et stampe source.key sur le job cron.
928
+ */
929
+ costumSlug?: string;
930
+ /**
931
+ * Contexte costum : _id de l'entité porteuse du costum (contextId). Facultatif, complète costumSlug.
932
+ */
933
+ costumId?: string;
934
+ /**
935
+ * Contexte costum : collection de l'entité porteuse (organizations | projects | events | citoyens). Facultatif, complète costumSlug.
936
+ */
937
+ costumType?: string;
854
938
  [k: string]: unknown;
855
939
  }
856
940
  export interface ShareNewsData {
@@ -878,6 +962,18 @@ export interface ShareNewsData {
878
962
  * Commentaire de partage
879
963
  */
880
964
  comment?: string;
965
+ /**
966
+ * Contexte costum de l'action : slug du SITE appelant (l'entité porteuse du costum), jamais le slug du moteur (« costumize »). Injecté automatiquement par le client (ApiClient.setSiteCostum / setCostumScope). Le legacy le lit dans $_POST — CommunecterController::costumCacheParams réchauffe alors le cache costum AVANT l'action, ce qui brande l'e-mail émis (domaine des liens, titre, logo, expéditeur) et stampe source.key sur le job cron.
967
+ */
968
+ costumSlug?: string;
969
+ /**
970
+ * Contexte costum : _id de l'entité porteuse du costum (contextId). Facultatif, complète costumSlug.
971
+ */
972
+ costumId?: string;
973
+ /**
974
+ * Contexte costum : collection de l'entité porteuse (organizations | projects | events | citoyens). Facultatif, complète costumSlug.
975
+ */
976
+ costumType?: string;
881
977
  [k: string]: unknown;
882
978
  }
883
979
  export interface GetCommentsData {
@@ -945,6 +1041,18 @@ export interface AddCommentsData {
945
1041
  */
946
1042
  count: number;
947
1043
  }[];
1044
+ /**
1045
+ * Contexte costum de l'action : slug du SITE appelant (l'entité porteuse du costum), jamais le slug du moteur (« costumize »). Injecté automatiquement par le client (ApiClient.setSiteCostum / setCostumScope). Le legacy le lit dans $_POST — CommunecterController::costumCacheParams réchauffe alors le cache costum AVANT l'action, ce qui brande l'e-mail émis (domaine des liens, titre, logo, expéditeur) et stampe source.key sur le job cron.
1046
+ */
1047
+ costumSlug?: string;
1048
+ /**
1049
+ * Contexte costum : _id de l'entité porteuse du costum (contextId). Facultatif, complète costumSlug.
1050
+ */
1051
+ costumId?: string;
1052
+ /**
1053
+ * Contexte costum : collection de l'entité porteuse (organizations | projects | events | citoyens). Facultatif, complète costumSlug.
1054
+ */
1055
+ costumType?: string;
948
1056
  [k: string]: unknown;
949
1057
  }
950
1058
  export interface DeleteCommentsData {
@@ -2804,6 +2912,18 @@ export interface ConnectData {
2804
2912
  * Type de connexion
2805
2913
  */
2806
2914
  connectType: "admin" | "member" | "contributor" | "attendee" | "friend" | "connect";
2915
+ /**
2916
+ * Contexte costum de l'action : slug du SITE appelant (l'entité porteuse du costum), jamais le slug du moteur (« costumize »). Injecté automatiquement par le client (ApiClient.setSiteCostum / setCostumScope). Le legacy le lit dans $_POST — CommunecterController::costumCacheParams réchauffe alors le cache costum AVANT l'action, ce qui brande l'e-mail émis (domaine des liens, titre, logo, expéditeur) et stampe source.key sur le job cron.
2917
+ */
2918
+ costumSlug?: string;
2919
+ /**
2920
+ * Contexte costum : _id de l'entité porteuse du costum (contextId). Facultatif, complète costumSlug.
2921
+ */
2922
+ costumId?: string;
2923
+ /**
2924
+ * Contexte costum : collection de l'entité porteuse (organizations | projects | events | citoyens). Facultatif, complète costumSlug.
2925
+ */
2926
+ costumType?: string;
2807
2927
  [k: string]: unknown;
2808
2928
  }
2809
2929
  export interface CreateInvitationLinkData {
@@ -2827,9 +2947,33 @@ export interface CreateInvitationLinkData {
2827
2947
  * URL de redirection après rattachement (optionnel)
2828
2948
  */
2829
2949
  urlRedirection?: string;
2950
+ /**
2951
+ * Contexte costum de l'action : slug du SITE appelant (l'entité porteuse du costum), jamais le slug du moteur (« costumize »). Injecté automatiquement par le client (ApiClient.setSiteCostum / setCostumScope). Le legacy le lit dans $_POST — CommunecterController::costumCacheParams réchauffe alors le cache costum AVANT l'action, ce qui brande l'e-mail émis (domaine des liens, titre, logo, expéditeur) et stampe source.key sur le job cron.
2952
+ */
2953
+ costumSlug?: string;
2954
+ /**
2955
+ * Contexte costum : _id de l'entité porteuse du costum (contextId). Facultatif, complète costumSlug.
2956
+ */
2957
+ costumId?: string;
2958
+ /**
2959
+ * Contexte costum : collection de l'entité porteuse (organizations | projects | events | citoyens). Facultatif, complète costumSlug.
2960
+ */
2961
+ costumType?: string;
2830
2962
  [k: string]: unknown;
2831
2963
  }
2832
2964
  export interface ConnectByRefData {
2965
+ /**
2966
+ * Contexte costum de l'action : slug du SITE appelant (l'entité porteuse du costum), jamais le slug du moteur (« costumize »). Injecté automatiquement par le client (ApiClient.setSiteCostum / setCostumScope). Le legacy le lit dans $_POST — CommunecterController::costumCacheParams réchauffe alors le cache costum AVANT l'action, ce qui brande l'e-mail émis (domaine des liens, titre, logo, expéditeur) et stampe source.key sur le job cron.
2967
+ */
2968
+ costumSlug?: string;
2969
+ /**
2970
+ * Contexte costum : _id de l'entité porteuse du costum (contextId). Facultatif, complète costumSlug.
2971
+ */
2972
+ costumId?: string;
2973
+ /**
2974
+ * Contexte costum : collection de l'entité porteuse (organizations | projects | events | citoyens). Facultatif, complète costumSlug.
2975
+ */
2976
+ costumType?: string;
2833
2977
  pathParams?: {
2834
2978
  /**
2835
2979
  * Référence publique du lien (hex ; uniqid legacy 13 ou token Node 24) — segment d URL
@@ -2860,6 +3004,18 @@ export interface DisconnectData {
2860
3004
  * Type de connexion
2861
3005
  */
2862
3006
  connectType: "members" | "contributors" | "attendees" | "friends" | "followers";
3007
+ /**
3008
+ * Contexte costum de l'action : slug du SITE appelant (l'entité porteuse du costum), jamais le slug du moteur (« costumize »). Injecté automatiquement par le client (ApiClient.setSiteCostum / setCostumScope). Le legacy le lit dans $_POST — CommunecterController::costumCacheParams réchauffe alors le cache costum AVANT l'action, ce qui brande l'e-mail émis (domaine des liens, titre, logo, expéditeur) et stampe source.key sur le job cron.
3009
+ */
3010
+ costumSlug?: string;
3011
+ /**
3012
+ * Contexte costum : _id de l'entité porteuse du costum (contextId). Facultatif, complète costumSlug.
3013
+ */
3014
+ costumId?: string;
3015
+ /**
3016
+ * Contexte costum : collection de l'entité porteuse (organizations | projects | events | citoyens). Facultatif, complète costumSlug.
3017
+ */
3018
+ costumType?: string;
2863
3019
  [k: string]: unknown;
2864
3020
  }
2865
3021
  export interface GetElementsKeyData {
@@ -3836,6 +3992,18 @@ export interface DeleteElementData {
3836
3992
  * Raison de la suppression
3837
3993
  */
3838
3994
  reason: string;
3995
+ /**
3996
+ * Contexte costum de l'action : slug du SITE appelant (l'entité porteuse du costum), jamais le slug du moteur (« costumize »). Injecté automatiquement par le client (ApiClient.setSiteCostum / setCostumScope). Le legacy le lit dans $_POST — CommunecterController::costumCacheParams réchauffe alors le cache costum AVANT l'action, ce qui brande l'e-mail émis (domaine des liens, titre, logo, expéditeur) et stampe source.key sur le job cron.
3997
+ */
3998
+ costumSlug?: string;
3999
+ /**
4000
+ * Contexte costum : _id de l'entité porteuse du costum (contextId). Facultatif, complète costumSlug.
4001
+ */
4002
+ costumId?: string;
4003
+ /**
4004
+ * Contexte costum : collection de l'entité porteuse (organizations | projects | events | citoyens). Facultatif, complète costumSlug.
4005
+ */
4006
+ costumType?: string;
3839
4007
  pathParams?: {
3840
4008
  /**
3841
4009
  * Type d'élément à supprimer
@@ -3902,6 +4070,18 @@ export interface LinkValidateData {
3902
4070
  * Type de validation
3903
4071
  */
3904
4072
  linkOption?: "isInviting" | "isAdminInviting" | "toBeValidated" | "isAdminPending";
4073
+ /**
4074
+ * Contexte costum de l'action : slug du SITE appelant (l'entité porteuse du costum), jamais le slug du moteur (« costumize »). Injecté automatiquement par le client (ApiClient.setSiteCostum / setCostumScope). Le legacy le lit dans $_POST — CommunecterController::costumCacheParams réchauffe alors le cache costum AVANT l'action, ce qui brande l'e-mail émis (domaine des liens, titre, logo, expéditeur) et stampe source.key sur le job cron.
4075
+ */
4076
+ costumSlug?: string;
4077
+ /**
4078
+ * Contexte costum : _id de l'entité porteuse du costum (contextId). Facultatif, complète costumSlug.
4079
+ */
4080
+ costumId?: string;
4081
+ /**
4082
+ * Contexte costum : collection de l'entité porteuse (organizations | projects | events | citoyens). Facultatif, complète costumSlug.
4083
+ */
4084
+ costumType?: string;
3905
4085
  [k: string]: unknown;
3906
4086
  }
3907
4087
  export interface SearchMemberAutocompleteData {
@@ -4154,6 +4334,18 @@ export interface AssignBadgesData {
4154
4334
  narative: string;
4155
4335
  }[];
4156
4336
  scope?: "";
4337
+ /**
4338
+ * Contexte costum de l'action : slug du SITE appelant (l'entité porteuse du costum), jamais le slug du moteur (« costumize »). Injecté automatiquement par le client (ApiClient.setSiteCostum / setCostumScope). Le legacy le lit dans $_POST — CommunecterController::costumCacheParams réchauffe alors le cache costum AVANT l'action, ce qui brande l'e-mail émis (domaine des liens, titre, logo, expéditeur) et stampe source.key sur le job cron.
4339
+ */
4340
+ costumSlug?: string;
4341
+ /**
4342
+ * Contexte costum : _id de l'entité porteuse du costum (contextId). Facultatif, complète costumSlug.
4343
+ */
4344
+ costumId?: string;
4345
+ /**
4346
+ * Contexte costum : collection de l'entité porteuse (organizations | projects | events | citoyens). Facultatif, complète costumSlug.
4347
+ */
4348
+ costumType?: string;
4157
4349
  [k: string]: unknown;
4158
4350
  }
4159
4351
  export interface GetEventsData {
@@ -4329,6 +4521,18 @@ export interface ShareEventsData {
4329
4521
  * Commentaire de partage
4330
4522
  */
4331
4523
  comment?: string;
4524
+ /**
4525
+ * Contexte costum de l'action : slug du SITE appelant (l'entité porteuse du costum), jamais le slug du moteur (« costumize »). Injecté automatiquement par le client (ApiClient.setSiteCostum / setCostumScope). Le legacy le lit dans $_POST — CommunecterController::costumCacheParams réchauffe alors le cache costum AVANT l'action, ce qui brande l'e-mail émis (domaine des liens, titre, logo, expéditeur) et stampe source.key sur le job cron.
4526
+ */
4527
+ costumSlug?: string;
4528
+ /**
4529
+ * Contexte costum : _id de l'entité porteuse du costum (contextId). Facultatif, complète costumSlug.
4530
+ */
4531
+ costumId?: string;
4532
+ /**
4533
+ * Contexte costum : collection de l'entité porteuse (organizations | projects | events | citoyens). Facultatif, complète costumSlug.
4534
+ */
4535
+ costumType?: string;
4332
4536
  [k: string]: unknown;
4333
4537
  }
4334
4538
  export interface InviteMembersData {
@@ -4409,6 +4613,18 @@ export interface InviteMembersData {
4409
4613
  };
4410
4614
  };
4411
4615
  };
4616
+ /**
4617
+ * Contexte costum de l'action : slug du SITE appelant (l'entité porteuse du costum), jamais le slug du moteur (« costumize »). Injecté automatiquement par le client (ApiClient.setSiteCostum / setCostumScope). Le legacy le lit dans $_POST — CommunecterController::costumCacheParams réchauffe alors le cache costum AVANT l'action, ce qui brande l'e-mail émis (domaine des liens, titre, logo, expéditeur) et stampe source.key sur le job cron.
4618
+ */
4619
+ costumSlug?: string;
4620
+ /**
4621
+ * Contexte costum : _id de l'entité porteuse du costum (contextId). Facultatif, complète costumSlug.
4622
+ */
4623
+ costumId?: string;
4624
+ /**
4625
+ * Contexte costum : collection de l'entité porteuse (organizations | projects | events | citoyens). Facultatif, complète costumSlug.
4626
+ */
4627
+ costumType?: string;
4412
4628
  [k: string]: unknown;
4413
4629
  }
4414
4630
  export interface FollowData {
@@ -4428,6 +4644,18 @@ export interface FollowData {
4428
4644
  * ID de l'élément parent
4429
4645
  */
4430
4646
  parentId: string;
4647
+ /**
4648
+ * Contexte costum de l'action : slug du SITE appelant (l'entité porteuse du costum), jamais le slug du moteur (« costumize »). Injecté automatiquement par le client (ApiClient.setSiteCostum / setCostumScope). Le legacy le lit dans $_POST — CommunecterController::costumCacheParams réchauffe alors le cache costum AVANT l'action, ce qui brande l'e-mail émis (domaine des liens, titre, logo, expéditeur) et stampe source.key sur le job cron.
4649
+ */
4650
+ costumSlug?: string;
4651
+ /**
4652
+ * Contexte costum : _id de l'entité porteuse du costum (contextId). Facultatif, complète costumSlug.
4653
+ */
4654
+ costumId?: string;
4655
+ /**
4656
+ * Contexte costum : collection de l'entité porteuse (organizations | projects | events | citoyens). Facultatif, complète costumSlug.
4657
+ */
4658
+ costumType?: string;
4431
4659
  [k: string]: unknown;
4432
4660
  }
4433
4661
  export interface GetCostumJsonData {
@@ -5740,6 +5968,18 @@ export interface AddVoteData {
5740
5968
  */
5741
5969
  status: string;
5742
5970
  };
5971
+ /**
5972
+ * Contexte costum de l'action : slug du SITE appelant (l'entité porteuse du costum), jamais le slug du moteur (« costumize »). Injecté automatiquement par le client (ApiClient.setSiteCostum / setCostumScope). Le legacy le lit dans $_POST — CommunecterController::costumCacheParams réchauffe alors le cache costum AVANT l'action, ce qui brande l'e-mail émis (domaine des liens, titre, logo, expéditeur) et stampe source.key sur le job cron.
5973
+ */
5974
+ costumSlug?: string;
5975
+ /**
5976
+ * Contexte costum : _id de l'entité porteuse du costum (contextId). Facultatif, complète costumSlug.
5977
+ */
5978
+ costumId?: string;
5979
+ /**
5980
+ * Contexte costum : collection de l'entité porteuse (organizations | projects | events | citoyens). Facultatif, complète costumSlug.
5981
+ */
5982
+ costumType?: string;
5743
5983
  [k: string]: unknown;
5744
5984
  }
5745
5985
  export interface AddReportAbuseData {
@@ -5765,6 +6005,18 @@ export interface AddReportAbuseData {
5765
6005
  */
5766
6006
  comment?: string;
5767
6007
  };
6008
+ /**
6009
+ * Contexte costum de l'action : slug du SITE appelant (l'entité porteuse du costum), jamais le slug du moteur (« costumize »). Injecté automatiquement par le client (ApiClient.setSiteCostum / setCostumScope). Le legacy le lit dans $_POST — CommunecterController::costumCacheParams réchauffe alors le cache costum AVANT l'action, ce qui brande l'e-mail émis (domaine des liens, titre, logo, expéditeur) et stampe source.key sur le job cron.
6010
+ */
6011
+ costumSlug?: string;
6012
+ /**
6013
+ * Contexte costum : _id de l'entité porteuse du costum (contextId). Facultatif, complète costumSlug.
6014
+ */
6015
+ costumId?: string;
6016
+ /**
6017
+ * Contexte costum : collection de l'entité porteuse (organizations | projects | events | citoyens). Facultatif, complète costumSlug.
6018
+ */
6019
+ costumType?: string;
5768
6020
  [k: string]: unknown;
5769
6021
  }
5770
6022
  export interface UpdatePathValueData {
@@ -5860,6 +6112,18 @@ export interface DemoteAdminData {
5860
6112
  childType: "citoyens";
5861
6113
  connect: "members" | "contributors";
5862
6114
  isAdmin: false;
6115
+ /**
6116
+ * Contexte costum de l'action : slug du SITE appelant (l'entité porteuse du costum), jamais le slug du moteur (« costumize »). Injecté automatiquement par le client (ApiClient.setSiteCostum / setCostumScope). Le legacy le lit dans $_POST — CommunecterController::costumCacheParams réchauffe alors le cache costum AVANT l'action, ce qui brande l'e-mail émis (domaine des liens, titre, logo, expéditeur) et stampe source.key sur le job cron.
6117
+ */
6118
+ costumSlug?: string;
6119
+ /**
6120
+ * Contexte costum : _id de l'entité porteuse du costum (contextId). Facultatif, complète costumSlug.
6121
+ */
6122
+ costumId?: string;
6123
+ /**
6124
+ * Contexte costum : collection de l'entité porteuse (organizations | projects | events | citoyens). Facultatif, complète costumSlug.
6125
+ */
6126
+ costumType?: string;
5863
6127
  [k: string]: unknown;
5864
6128
  }
5865
6129
  export interface CostumFilterCoformData {
@@ -473,6 +473,18 @@ export declare class User extends BaseEntity<UserItemNormalized> {
473
473
  * @private
474
474
  */
475
475
  private _getParentLinkForUser;
476
+ /**
477
+ * Contexte costum à faire porter par les actions de LIEN sur le parent (adhésion, validation,
478
+ * promotion, rétrogradation) : celui du PARENT — l'organisation/le projet/l'événement qui porte
479
+ * le costum du site.
480
+ *
481
+ * ⚠ JAMAIS celui de CETTE fiche citoyen : le `source.key` d'un citoyen est le costum où il s'est
482
+ * INSCRIT, sans aucun rapport avec le site depuis lequel l'action est faite. Comme l'enveloppe
483
+ * l'emporte sur le défaut du client (`ApiClient.setSiteCostum`), la poser depuis le citoyen
484
+ * branderait l'e-mail du MAUVAIS costum — un dégât net par rapport à ne rien poser.
485
+ * @private
486
+ */
487
+ private _parentCostumContext;
476
488
  /**
477
489
  * Valide les préconditions et retourne le lien parent.
478
490
  *
@@ -62,11 +62,29 @@ export declare class UserApi {
62
62
  /**
63
63
  * Lance une procédure de récupération de mot de passe.
64
64
  *
65
+ * Le costum, s'il est fourni, ne sert QU'À BRANDER l'e-mail envoyé (domaine du lien de
66
+ * réinitialisation = `costum.host`, titre, logo, expéditeur) : le legacy le lit dans `$_POST`
67
+ * (`CommunecterController::beforeAction` → `costumCacheParams()`) AVANT l'action, et
68
+ * `Mail::getCustomMail`/`Mail::getAppName` y puisent l'habillage. Aligné sur `register`.
69
+ *
70
+ * ⚠ SÉCURITÉ : `PASSWORD_RECOVERY` est `auth:"none"`. Le contexte costum est donc fourni par un
71
+ * appelant NON AUTHENTIFIÉ — il ne doit JAMAIS élargir un droit, ni servir à sélectionner un
72
+ * compte : il n'habille que le message. On ne relâche AUCUN autre champ du schéma (l'enveloppe
73
+ * ne porte que `context`, `properties` reste vide), et le destinataire reste résolu côté serveur
74
+ * depuis `email` — jamais depuis le costum.
75
+ *
65
76
  * @param email - Adresse email de l'utilisateur.
77
+ * @param opts.costumSlug - (option) slug de l'ENTITÉ PORTEUSE du costum (jamais « costumize »).
78
+ * @param opts.costumId / opts.costumType - (option) identité de l'entité porteuse, requises si le
79
+ * slug n'est pas un doc `costum` (ex. un site porté par une organisation).
66
80
  * @returns Réponse brute de l'API.
67
81
  * @throws {ApiResponseError} Si l'API retourne un échec (`result === false`).
68
82
  */
69
- recoverPassword(email: string): Promise<any>;
83
+ recoverPassword(email: string, { costumSlug, costumId, costumType }?: {
84
+ costumSlug?: string;
85
+ costumId?: string;
86
+ costumType?: string;
87
+ }): Promise<any>;
70
88
  /**
71
89
  * Active (valide l'email) un compte via le lien reçu par email.
72
90
  *