@communecter/cocolight-api-client 1.0.190 → 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.
@@ -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 {
@@ -4200,9 +4392,21 @@ export interface GetEventsData {
4200
4392
  countType?: unknown[];
4201
4393
  fediverse: boolean;
4202
4394
  /**
4203
- * GARDE PARITÉ legacy (identique à SEARCH_EVENTS_COSTUM) : seule valeur autorisée `false` (= exclure les récurrents) OU champ omis (= inclure, défaut). NE JAMAIS envoyer `true` — le legacy teste STRICTEMENT $recurrency === true (AgendaAction.php:65) qui échoue sur la string POST → exclut les récurrents, alors que notre backend les inclurait (divergence assumée). En interdisant `true`, omis→inclus et false→exclus se comportent pareil sur les 2 serveurs.
4395
+ * Inclure les événements récurrents (openingHours). Omis = inclure. `false` = exclure : en mode LISTE la requête des récurrents est sautée (comme avant 14c2caa1), en mode CALENDRIER les clauses openingHours.dayOfWeek ne sont pas posées. Depuis le 2026-09-04 le legacy parse la valeur en booléen (filter_var FILTER_VALIDATE_BOOLEAN) et le backend Node fait de même : `true`/`false` sont fiables sur les 2 serveurs (byte-parité prouvée). Historique : `=== true` strict (BUG-L-031, `true` excluait), puis truthy 14c2caa1 (la chaîne "false" INCLUAIT, BUG-L-259).
4396
+ */
4397
+ recurrency?: boolean;
4398
+ /**
4399
+ * Mode LISTE seulement (sans startDateUTC/endDateUTC). Borne basse « pas encore terminé à from » : ponctuels endDate ≥ from (sinon startDate ≥ from, un multi-jours en cours reste servi) ; récurrents : prochaine occurrence calculée DEPUIS from au lieu de maintenant (un créneau en cours reste « la prochaine »). Sert d'ANCRE de pagination : renvoyer la même valeur à chaque page (sinon la clé de tri des récurrents bouge entre deux pages). Dès que `from`, `to` ou `order` est présent, chaque ligne porte `endDateSortFormat`. Envoyer un ISO 8601 AVEC offset (toISOString) : une date nue est lue en Europe/Paris par le legacy et en UTC par le backend Node.
4400
+ */
4401
+ from?: string;
4402
+ /**
4403
+ * Mode LISTE seulement. Borne haute STRICTE sur la clé d'occurrence : ponctuels startDate < to ; récurrents prochaine occurrence < to. Même règle d'offset que `from`. « Les passés » = `to` = maintenant + `order` = desc + `recurrency` = false.
4204
4404
  */
4205
- recurrency?: false;
4405
+ to?: string;
4406
+ /**
4407
+ * Mode LISTE seulement — PAS de default déclaré : la lib injecte les defaults du contrat dans la requête, et la seule présence d'`order` déclenche le mode borné (endDateSortFormat). Défaut serveur : desc. Sens du tri sur la clé d'occurrence (startDateSort), départage _id dans le même sens ; la requête des ponctuels suit le même sens (top-K juste). « Les prochains à partir de maintenant » = `from` = maintenant + `order` = asc. Sans `from`/`to`/`order`, requête ET réponse sont strictement celles d'avant (DESC non borné, aucune clé nouvelle).
4408
+ */
4409
+ order?: "asc" | "desc";
4206
4410
  filters?: {
4207
4411
  $or: {};
4208
4412
  [k: string]: unknown;
@@ -4245,9 +4449,21 @@ export interface SearchEventsCostumData {
4245
4449
  countType?: unknown[];
4246
4450
  fediverse: boolean;
4247
4451
  /**
4248
- * GARDE PARITÉ legacy : seule valeur autorisée `false` (= exclure les récurrents) OU champ omis (= inclure, défaut). NE JAMAIS envoyer `true` — le legacy teste STRICTEMENT $recurrency === true (AgendaAction.php:65) qui échoue sur la string POST → exclut les récurrents, alors que notre backend les inclurait (divergence assumée). En interdisant `true`, omis→inclus et false→exclus se comportent pareil sur les 2 serveurs.
4452
+ * Inclure les événements récurrents (openingHours). Omis = inclure. `false` = exclure : en mode LISTE la requête des récurrents est sautée (comme avant 14c2caa1), en mode CALENDRIER les clauses openingHours.dayOfWeek ne sont pas posées. Depuis le 2026-09-04 le legacy parse la valeur en booléen (filter_var FILTER_VALIDATE_BOOLEAN) et le backend Node fait de même : `true`/`false` sont fiables sur les 2 serveurs (byte-parité prouvée). Historique : `=== true` strict (BUG-L-031, `true` excluait), puis truthy 14c2caa1 (la chaîne "false" INCLUAIT, BUG-L-259).
4249
4453
  */
4250
- recurrency?: false;
4454
+ recurrency?: boolean;
4455
+ /**
4456
+ * Mode LISTE seulement (sans startDateUTC/endDateUTC). Borne basse « pas encore terminé à from » : ponctuels endDate ≥ from (sinon startDate ≥ from, un multi-jours en cours reste servi) ; récurrents : prochaine occurrence calculée DEPUIS from au lieu de maintenant (un créneau en cours reste « la prochaine »). Sert d'ANCRE de pagination : renvoyer la même valeur à chaque page (sinon la clé de tri des récurrents bouge entre deux pages). Dès que `from`, `to` ou `order` est présent, chaque ligne porte `endDateSortFormat`. Envoyer un ISO 8601 AVEC offset (toISOString) : une date nue est lue en Europe/Paris par le legacy et en UTC par le backend Node.
4457
+ */
4458
+ from?: string;
4459
+ /**
4460
+ * Mode LISTE seulement. Borne haute STRICTE sur la clé d'occurrence : ponctuels startDate < to ; récurrents prochaine occurrence < to. Même règle d'offset que `from`. « Les passés » = `to` = maintenant + `order` = desc + `recurrency` = false.
4461
+ */
4462
+ to?: string;
4463
+ /**
4464
+ * Mode LISTE seulement — PAS de default déclaré : la lib injecte les defaults du contrat dans la requête, et la seule présence d'`order` déclenche le mode borné (endDateSortFormat). Défaut serveur : desc. Sens du tri sur la clé d'occurrence (startDateSort), départage _id dans le même sens ; la requête des ponctuels suit le même sens (top-K juste). « Les prochains à partir de maintenant » = `from` = maintenant + `order` = asc. Sans `from`/`to`/`order`, requête ET réponse sont strictement celles d'avant (DESC non borné, aucune clé nouvelle).
4465
+ */
4466
+ order?: "asc" | "desc";
4251
4467
  /**
4252
4468
  * Filtres Mongo additionnels (buildFilters).
4253
4469
  */
@@ -4305,6 +4521,18 @@ export interface ShareEventsData {
4305
4521
  * Commentaire de partage
4306
4522
  */
4307
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;
4308
4536
  [k: string]: unknown;
4309
4537
  }
4310
4538
  export interface InviteMembersData {
@@ -4385,6 +4613,18 @@ export interface InviteMembersData {
4385
4613
  };
4386
4614
  };
4387
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;
4388
4628
  [k: string]: unknown;
4389
4629
  }
4390
4630
  export interface FollowData {
@@ -4404,6 +4644,18 @@ export interface FollowData {
4404
4644
  * ID de l'élément parent
4405
4645
  */
4406
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;
4407
4659
  [k: string]: unknown;
4408
4660
  }
4409
4661
  export interface GetCostumJsonData {
@@ -5716,6 +5968,18 @@ export interface AddVoteData {
5716
5968
  */
5717
5969
  status: string;
5718
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;
5719
5983
  [k: string]: unknown;
5720
5984
  }
5721
5985
  export interface AddReportAbuseData {
@@ -5741,6 +6005,18 @@ export interface AddReportAbuseData {
5741
6005
  */
5742
6006
  comment?: string;
5743
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;
5744
6020
  [k: string]: unknown;
5745
6021
  }
5746
6022
  export interface UpdatePathValueData {
@@ -5836,6 +6112,18 @@ export interface DemoteAdminData {
5836
6112
  childType: "citoyens";
5837
6113
  connect: "members" | "contributors";
5838
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;
5839
6127
  [k: string]: unknown;
5840
6128
  }
5841
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
  *
@@ -0,0 +1,3 @@
1
+ import type { CostumExtensionModule } from "../types.js";
2
+ declare const mod: CostumExtensionModule;
3
+ export default mod;
@@ -1,4 +1,4 @@
1
- export type KnownCostumSlug = "CercleTravailleursSociauxLiberauxLaPlumeSociale" | "FabEn" | "LaReunionDesTiersLieux" | "LivingLabInnovationSocialeBraspanon" | "RoseLab" | "Santeentransition" | "alfph" | "ambitionTiersLieuxValDeLoire" | "assoKosasa" | "boclLe" | "bretagneTierslieux" | "caDuBassinDeThauTiersLieux" | "caDuBassinDeThauTiersLieux1" | "campagne" | "capTierslieux" | "catalyst" | "ccDesCaussesALaubracTiersLieux" | "chtitube" | "circuitCourt" | "cmcasHB" | "cmcasHauteBretagne" | "coFinancementTierslieux" | "coeurNumerique" | "communLundi" | "consortiumIledefranceTierslieux" | "copHautsdefrance" | "createchFablabDeLaMjcDeSaintjean" | "cressDeLaReunion1" | "cressReunion" | "cressReunionNetwork" | "ctenat" | "cyberReunion" | "daLocu" | "ecocentre" | "ekisphere" | "equipementsSportifs974" | "fabLimagne" | "fabdulys1" | "fablab3dplant" | "fablabChauxdefonds" | "federationDesCae" | "fianarantsoaAlimentation" | "formationGenerique" | "franceTierslieux" | "heraultTiersLieux" | "hinaura" | "hubmayotte" | "hubnouvellecaledonie" | "hubpolynesiefrancaise" | "hubreunion" | "hubterritoires" | "hubwallisetfutuna" | "hva" | "ibv2" | "institutBleu" | "journalInsoumisChambery" | "kpacite" | "laCompagnieDesTierslieux" | "laCooperativeTierslieux" | "laMaisonDesFaiseurs" | "laMinoterie1" | "laMyne" | "laReunionPourUnNumeriqueInclusif" | "laRosee" | "laSemaineDesTierslieux" | "laTresseTierslieu" | "labEnCommuns" | "labboite" | "lakou" | "lapossession" | "lattesTiersLieux" | "leFaugaTiersLieux" | "leTamponTiersLieux" | "lesCommunsDesTierslieux" | "lesImaginationsFertiles" | "lidairesTiersLieux" | "littoralHautsDeFrance" | "lotetgaronneTiersLieux" | "mayottePourUnNumeriqueInclusif" | "meir" | "montpellierMediterraneeMetropoleTiersLieux" | "montpellierTiersLieux" | "navigatorDesTierslieux" | "notragora" | "nouvellecaledoniePourUnNumeriqueInclusif" | "openAtlas" | "parent62" | "polynesieFrancaisePourUnNumeriqueInclusif" | "prdr" | "pyreneesatlantiquesTiersLieux" | "redlab" | "relief" | "reseauDesTierslieuxDeGuyane" | "reseauDesTierslieuxDeMayotte" | "reseauDesTierslieuxDuGrandEst" | "reseauNormandDesTierslieux" | "reseauRegionalDesTierslieuxGuadeloupe" | "reseauRegionalDesTierslieuxMartinique" | "reseauTierslieux" | "rfflabs" | "ries" | "sLieux" | "saintJosephTiersLieux" | "saintbenoitTiersLieux" | "saintbenoitTiersLieux1" | "saintbenoitTiersLieux2" | "saintpaulSport1" | "saintpaulTiersLieux" | "saintpierreTiersLieux" | "savoieTiersLieux" | "siteDuPactePourLaTransition" | "sportSanteBienetre" | "sudTierslieux" | "suppa" | "terramies" | "testeTplFormation" | "tiersLieuxGenerique" | "tierslieuxBfc" | "tierslieuxbelgique" | "tierslieuxorg" | "tierslieuxorg1" | "transiter" | "vhelioPeiTour2025" | "wallisetfutunaPourUnNumeriqueInclusif";
1
+ export type KnownCostumSlug = "CercleTravailleursSociauxLiberauxLaPlumeSociale" | "FabEn" | "LaReunionDesTiersLieux" | "LivingLabInnovationSocialeBraspanon" | "RoseLab" | "Santeentransition" | "alfph" | "ambitionTiersLieuxValDeLoire" | "assoKosasa" | "associationEkilibre" | "boclLe" | "bretagneTierslieux" | "caDuBassinDeThauTiersLieux" | "caDuBassinDeThauTiersLieux1" | "campagne" | "capTierslieux" | "catalyst" | "ccDesCaussesALaubracTiersLieux" | "chtitube" | "circuitCourt" | "cmcasHB" | "cmcasHauteBretagne" | "coFinancementTierslieux" | "coeurNumerique" | "communLundi" | "consortiumIledefranceTierslieux" | "copHautsdefrance" | "createchFablabDeLaMjcDeSaintjean" | "cressDeLaReunion1" | "cressReunion" | "cressReunionNetwork" | "ctenat" | "cyberReunion" | "daLocu" | "ecocentre" | "ekisphere" | "equipementsSportifs974" | "fabLimagne" | "fabdulys1" | "fablab3dplant" | "fablabChauxdefonds" | "federationDesCae" | "fianarantsoaAlimentation" | "formationGenerique" | "franceTierslieux" | "heraultTiersLieux" | "hinaura" | "hubmayotte" | "hubnouvellecaledonie" | "hubpolynesiefrancaise" | "hubreunion" | "hubterritoires" | "hubwallisetfutuna" | "hva" | "ibv2" | "institutBleu" | "journalInsoumisChambery" | "kpacite" | "laCompagnieDesTierslieux" | "laCooperativeTierslieux" | "laMaisonDesFaiseurs" | "laMinoterie1" | "laMyne" | "laReunionPourUnNumeriqueInclusif" | "laRosee" | "laSemaineDesTierslieux" | "laTresseTierslieu" | "labEnCommuns" | "labboite" | "lakou" | "lapossession" | "lattesTiersLieux" | "leFaugaTiersLieux" | "leTamponTiersLieux" | "lesCommunsDesTierslieux" | "lesImaginationsFertiles" | "lidairesTiersLieux" | "littoralHautsDeFrance" | "lotetgaronneTiersLieux" | "mayottePourUnNumeriqueInclusif" | "meir" | "montpellierMediterraneeMetropoleTiersLieux" | "montpellierTiersLieux" | "navigatorDesTierslieux" | "notragora" | "nouvellecaledoniePourUnNumeriqueInclusif" | "openAtlas" | "parent62" | "polynesieFrancaisePourUnNumeriqueInclusif" | "prdr" | "pyreneesatlantiquesTiersLieux" | "redlab" | "relief" | "reseauDesTierslieuxDeGuyane" | "reseauDesTierslieuxDeMayotte" | "reseauDesTierslieuxDuGrandEst" | "reseauNormandDesTierslieux" | "reseauRegionalDesTierslieuxGuadeloupe" | "reseauRegionalDesTierslieuxMartinique" | "reseauTierslieux" | "rfflabs" | "ries" | "sLieux" | "saintJosephTiersLieux" | "saintbenoitTiersLieux" | "saintbenoitTiersLieux1" | "saintbenoitTiersLieux2" | "saintpaulSport1" | "saintpaulTiersLieux" | "saintpierreTiersLieux" | "savoieTiersLieux" | "siteDuPactePourLaTransition" | "sportSanteBienetre" | "sudTierslieux" | "suppa" | "terramies" | "testeTplFormation" | "tiersLieuxGenerique" | "tierslieuxBfc" | "tierslieuxbelgique" | "tierslieuxorg" | "tierslieuxorg1" | "transiter" | "vhelioPeiTour2025" | "wallisetfutunaPourUnNumeriqueInclusif";
2
2
  export type Collection = "addPhoto" | "badges" | "classifieds" | "crowdfunding" | "events" | "organizations" | "person" | "poi" | "projects" | "proposal" | "ressources";
3
3
  export interface CostumExtensionField {
4
4
  name: string;
@@ -143,6 +143,57 @@ export interface CostumFieldMap {
143
143
  image?: string;
144
144
  };
145
145
  };
146
+ associationEkilibre: {
147
+ organizations: {
148
+ affiliate?: string | boolean;
149
+ affiliateTo?: string;
150
+ autreDescription?: string;
151
+ formLocality?: string;
152
+ image?: string;
153
+ infoGeneral?: Record<string, unknown>;
154
+ legalStatus?: string | string[];
155
+ link?: string;
156
+ linkedin?: string;
157
+ location?: string;
158
+ mobile?: string;
159
+ otherPersonInChargeTitle?: string;
160
+ otherRepresentativeTitle?: string;
161
+ personInChargeCivility?: string | string[];
162
+ personInChargeEmail?: string;
163
+ personInChargeFirstName?: string;
164
+ personInChargeName?: string;
165
+ personInChargeTelephone?: string | number;
166
+ personInChargeTitle?: "Président" | "Maire.sse" | "Chef.fe d'entreprise" | "Chef.fe d'établissement" | "Autre...";
167
+ representativeCivility?: string | string[];
168
+ representativeEmail?: string;
169
+ representativeFirstName?: string;
170
+ representativeName?: string;
171
+ representativeTelephone?: string | number;
172
+ representativeTitle?: "Président" | "Maire.sse" | "Chef.fe d'entreprise" | "Chef.fe d'établissement" | "Autre...";
173
+ responsableCivilePro?: Record<string, unknown>;
174
+ responsableSameAsRepresent?: string | boolean;
175
+ sextionInfo?: Record<string, unknown>;
176
+ sextionInfoRepresentant?: Record<string, unknown>;
177
+ sextionInfoResponsable?: Record<string, unknown>;
178
+ sigle?: string;
179
+ similarLink?: Record<string, unknown>;
180
+ siren?: string | number;
181
+ statusActor?: string | string[];
182
+ statusCommunale?: string | string[];
183
+ statusFile?: Record<string, unknown>;
184
+ statusPrimaire?: string | string[];
185
+ statusSecondaire?: string | string[];
186
+ youtube?: string;
187
+ };
188
+ poi: {
189
+ category?: string;
190
+ featured?: string | boolean;
191
+ link?: string;
192
+ publicationDate?: string;
193
+ publicationStatus?: string;
194
+ status?: string | string[];
195
+ };
196
+ };
146
197
  boclLe: {
147
198
  badges: {
148
199
  thematic?: string | string[];