export interface DocumentListData { pathParams?: { /** * ID MongoDB de l'élément */ id: string; /** * Type d'élément */ type: "citoyens" | "organizations" | "projects" | "events" | "poi"; [k: string]: unknown; }; [k: string]: unknown; } export interface PersonRegisterData { /** * Nom complet de l'utilisateur */ name: string; /** * Pseudo ou identifiant unique */ username: string; /** * Adresse email de l'utilisateur */ email: string; /** * Mot de passe */ pwd: string; /** * Nom de l'application */ app?: string; /** * ID d’un utilisateur en attente (facultatif) */ pendingUserId?: string; /** * Mode d’enregistrement */ mode?: string; /** * Indique s’il s’agit d’une invitation (facultatif) */ isInvitation?: boolean; [k: string]: unknown; } export interface AuthenticateUrlData { /** * Adresse email de l'utilisateur */ email: string; /** * Mot de passe de l'utilisateur */ password: string; [k: string]: unknown; } /** * Permet de rafraîchir un token d'accès expiré en utilisant un token de rafraîchissement. */ export interface RefreshTokenUrlData { /** * Token de rafraîchissement */ refreshToken: string; [k: string]: unknown; } export interface PasswordRecoveryData { /** * Adresse email de l'utilisateur */ email: string; /** * Type d'email envoyé */ type: "password"; [k: string]: unknown; } export interface ServerExchangeTokenData { /** * URL du serveur distant */ serverUrl: string; [k: string]: unknown; } export interface ChangePasswordData { /** * Mode ou contexte du changement */ mode: "changePassword"; /** * Identifiant de l'utilisateur */ userId: string; /** * Ancien mot de passe */ oldPassword: string; /** * Nouveau mot de passe */ newPassword: string; /** * Confirmation du nouveau mot de passe */ newPassword2: string; /** * Périmètre concerné */ scope?: string; [k: string]: unknown; } export interface DeleteAccountData { /** * Raison de la suppression */ reason: string; pathParams?: { /** * Identifiant de l'utilisateur à supprimer */ id: string; [k: string]: unknown; }; [k: string]: unknown; } export interface UpdateSettingsData { type: string; value: unknown; /** * Type d'élément (citoyens, projects, organizations, events) */ typeEntity: "citoyens" | "projects" | "organizations" | "events"; /** * Id de l'élément */ idEntity: string; [k: string]: unknown; } export interface UpdateBlockDescriptionData { /** * Nom du bloc à mettre à jour (doit être 'descriptions') */ block: "descriptions"; /** * Type d'élément (citoyens, projects, organizations, poi, events) */ typeElement: "citoyens" | "projects" | "organizations" | "poi" | "events"; /** * ID de l'élément concerné */ id: string; /** * Périmètre de mise à jour */ scope?: string | null; /** * Mentions dans la description */ descMentions?: string; /** * Courte description */ shortDescription?: string; /** * Description complète */ description?: string; [k: string]: unknown; } export interface UpdateBlockInfoData { /** * Nom du bloc à mettre à jour (doit être 'info') */ block: "info"; /** * Type d'élément (citoyens, projects, organizations, poi, events) */ typeElement: "citoyens" | "projects" | "organizations" | "poi" | "events"; /** * ID de l'élément concerné */ id: string; /** * Périmètre de mise à jour */ scope?: string; [k: string]: unknown; } /** * This interface was referenced by `UpdateBlockInfoData`'s JSON-Schema * via the `definition` "sharedFields". */ export interface SharedFields { [k: string]: unknown; } /** * This interface was referenced by `UpdateBlockSocialData`'s JSON-Schema * via the `definition` "socialField". */ export type SocialField = "" | string; export interface UpdateBlockSocialData { /** * Nom du bloc à mettre à jour (doit être 'network') */ block: "network"; /** * Type d'élément (citoyens, projects, organizations) */ typeElement: "citoyens" | "projects" | "organizations"; /** * ID de l'élément concerné */ id: string; /** * Périmètre de mise à jour */ scope?: string; /** * Compte Gitlab */ gitlab?: "" | string; /** * Compte Github */ github?: "" | string; /** * Compte Twitter */ twitter?: "" | string; /** * Compte Facebook */ facebook?: "" | string; /** * Compte Instagram */ instagram?: "" | string; /** * Compte Diaspora */ diaspora?: "" | string; /** * Compte Mastodon */ mastodon?: "" | string; /** * Compte Telegram */ telegram?: "" | string; /** * Compte Signal */ signal?: "" | string; [k: string]: unknown; } export interface UpdateBlockLocalityData { /** * Nom du bloc à mettre à jour (doit être 'localities') */ block: "localities"; /** * Type d'élément */ typeElement: "citoyens" | "projects" | "organizations" | "poi" | "events"; /** * ID de l'élément concerné */ id: string; /** * Périmètre de mise à jour */ scope?: string; geo?: "" | { "@type"?: "GeoCoordinates"; latitude: string | number; longitude: string | number; }; geoPosition?: "" | { type: "Point"; /** * @minItems 2 * @maxItems 2 */ coordinates: [number, number]; float: true; [k: string]: unknown; }; address: "" | { "@type": "PostalAddress"; addressCountry: string; codeInsee: string; addressLocality: string; localityId: string; level1: string; level1Name: string; /** * ID du département. Peut être vide pour les pays étrangers. */ level3?: string; /** * Nom du département. Peut être vide pour les pays étrangers. */ level3Name?: string; /** * ID de la commune. Peut être vide pour les pays étrangers. */ level4?: string; /** * Nom de la commune. Peut être vide pour les pays étrangers. */ level4Name?: string; postalCode?: string; streetAddress?: string; }; [k: string]: unknown; } export interface UpdateBlockSlugData { /** * Nom du bloc à mettre à jour (doit être 'info') */ block: "info"; /** * Type d'élément (citoyens, projects, organizations, poi, events) */ typeElement: "citoyens" | "projects" | "organizations" | "poi" | "events"; /** * ID de l'élément concerné */ id: string; scope?: string; /** * Slug simplifié pour URL */ slug: string; [k: string]: unknown; } export interface CheckData { /** * Nom du bloc */ block: "info"; /** * ID de l'élément */ id: string; /** * Type d'élément */ type: "citoyens" | "projects" | "organizations" | "events"; /** * Slug à vérifier */ slug: string; [k: string]: unknown; } export interface ProfilImageData { /** * Fichier image de profil au format binaire */ profil_avatar: { [k: string]: unknown; }; /** * Slug du costum actif (stampe source.key côté backend) — optionnel */ costumSlug?: string; /** * ID du contexte costum — optionnel */ costumId?: string; /** * Type (collection) du contexte costum — optionnel */ costumType?: string; pathParams?: { /** * Type d'entité */ folder: "citoyens" | "projects" | "organizations" | "events" | "poi"; /** * ID de l'utilisateur ou de l'entité */ ownerId: string; [k: string]: unknown; }; [k: string]: unknown; } export interface ProfilBannerData { /** * Fichier image de profil au format binaire */ banner: { [k: string]: unknown; }; parentId: string; parentType: "citoyens" | "projects" | "organizations" | "events" | "poi"; formOrigin: "banner"; cropW: number; cropH: number; cropX: number; cropY: number; /** * Slug du costum actif (stampe source.key côté backend) — optionnel */ costumSlug?: string; /** * ID du contexte costum — optionnel */ costumId?: string; /** * Type (collection) du contexte costum — optionnel */ costumType?: string; pathParams?: { /** * Type d'entité */ folder: "citoyens" | "projects" | "organizations" | "events" | "poi"; /** * ID de l'utilisateur ou de l'entité */ ownerId: string; [k: string]: unknown; }; [k: string]: unknown; } export interface GetElementsAboutData { /** * Template utilisé (ex: ficheInfoElement) */ tpl: "ficheInfoElement"; pathParams?: { /** * Type d'entité */ type: "citoyens" | "projects" | "organizations" | "events" | "poi" | "badges" | "answers" | "classifieds" | "forms" | "actions"; /** * ID de l'utilisateur ou de l'entité */ id: string; [k: string]: unknown; }; [k: string]: unknown; } export interface MulticonnectData { /** * ID de l'entité parente */ parentId: string; /** * Type de l'entité parente */ parentType: "citoyens" | "projects" | "organizations" | "events"; /** * Liste des citoyens invités */ listInvite: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^(citoyens|projects|organizations)$". */ [k: string]: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[0-9a-fA-F]{24}$". */ [k: string]: { /** * Nom de l'invité */ name: string; }; }; }; [k: string]: unknown; } export interface GetNewsData { /** * Limite de date timestamp ou 0 */ dateLimit: number; search?: { /** * Nom ou terme recherché */ name: string; }; /** * Nombre de résultats par page */ indexStep: number; pathParams?: { /** * Indique si l'actualité est en direct */ isLive: boolean; /** * Type d'actualité (ex: 'citoyens', 'projects', 'organizations') */ type: "citoyens" | "projects" | "organizations"; /** * ID de l'élément (ex: ID d'un utilisateur, d'un projet ou d'une organisation) */ id: string; [k: string]: unknown; }; [k: string]: unknown; } export interface GetNewsByIdData { /** * Liste des IDs d’actualités à récupérer */ ids: string[]; [k: string]: unknown; } export interface AddNewsData { /** * Contenu de l’actualité */ text?: string; /** * Portée de l'actualité (ex: public, privé...) */ scope: "public" | "private" | "restricted"; /** * Markdown activé (true/false) */ markdownActive: boolean; /** * ID de l'entité parente */ parentId: string; /** * Type de l'entité parente */ parentType: "citoyens" | "projects" | "organizations"; /** * Type de l'objet, toujours 'news'. */ type: "news"; /** * Indique que la réponse est au format JSON. */ json: true; /** * Optionnel. Provenance costum (estampille source.key côté backend, cf. News::prepData). Injecté par le scope costum de la lib (me.costum(...).news()) depuis le _costumCtx — l'appelant n'a normalement pas à le fournir. Format canonique {insertOrign, key, keys} (cf. Element.php + données réelles). */ source?: { /** * Origine de la source (ex: 'costum'). Faute de frappe historique conservée (fait FOI). */ insertOrign?: string; /** * Slug du costum (= source.key). */ key?: string; /** * Slugs de costum (= source.keys). */ keys?: string[]; [k: string]: unknown; }; /** * Tags : "" pour effacer tous les tags, ou tableau de mots-clés. */ tags?: string[] | ""; /** * Optionnel. Informations sur les images associées à la news. */ mediaImg?: { /** * Nombre d'images. */ countImages: number; /** * Liste des identifiants ou chemins d'images. */ images: string[]; }; /** * Optionnel. Informations sur les fichiers associés à la news. */ mediaFile?: { /** * Nombre de fichiers. */ countFiles: number; /** * Liste des identifiants ou chemins de fichiers. */ files: string[]; }; /** * Optionnel. Liste des personnes mentionnées. */ mentions?: { /** * ID MongoDB de la mention */ id: string; /** * Nom affiché */ name: string; /** * Identifiant unique (souvent égal à name en minuscule) */ slug: string; /** * Type d'entité mentionnée (citoyens, organizations, etc.) */ type: string; /** * Valeur insérée dans le texte */ value: string; /** * Nombre d’occurrences dans le texte */ count: number; [k: string]: unknown; }[]; [k: string]: unknown; } export interface AddImageNewsData { /** * Fichier image à télécharger */ newsImage: { [k: string]: unknown; }; pathParams?: { /** * Type de l'entité parente (ex: 'citoyens', 'projects', 'organizations') */ folder: "citoyens" | "projects" | "organizations"; /** * ID de l'utilisateur ou de l'entité parente */ ownerId: string; [k: string]: unknown; }; [k: string]: unknown; } export interface AddFileNewsData { /** * Fichier image à télécharger */ newsFile: { [k: string]: unknown; }; pathParams?: { /** * Type de l'entité parente (ex: 'citoyens', 'projects', 'organizations') */ folder: "citoyens" | "projects" | "organizations"; /** * ID de l'utilisateur ou de l'entité parente */ ownerId: string; [k: string]: unknown; }; [k: string]: unknown; } export interface DeleteNewsData { isLive: boolean; pathParams?: { /** * ID de l'actualité à supprimer */ id: string; [k: string]: unknown; }; [k: string]: unknown; } export interface UpdateNewsData { /** * ID de l'actualité à mettre à jour */ idNews: string; /** * Contenu de l’actualité */ text?: string; /** * Portée de l'actualité (ex: public, privé...) */ scope: "public" | "private" | "restricted"; /** * Markdown activé (true/false) */ markdownActive: boolean; /** * ID de l'entité parente */ parentId: string; /** * Type de l'entité parente */ parentType: "citoyens" | "projects" | "organizations"; /** * Type de l'objet, toujours 'news'. */ type: "news"; /** * Tags : "" pour effacer tous les tags, ou tableau de mots-clés. */ tags?: string[] | ""; /** * Optionnel. Informations sur les images associées à la news. */ mediaImg?: { /** * Nombre d'images. */ countImages: number; /** * Liste des identifiants ou chemins d'images. */ images: string[]; }; /** * Optionnel. Informations sur les fichiers associés à la news. */ mediaFile?: { /** * Nombre de fichiers. */ countFiles: number; /** * Liste des identifiants ou chemins de fichiers. */ files: string[]; }; /** * Optionnel. Liste des personnes mentionnées. */ mentions?: { /** * ID MongoDB de la mention */ id: string; /** * Nom affiché */ name: string; /** * Identifiant unique (souvent égal à name en minuscule) */ slug: string; /** * Type d'entité mentionnée (citoyens, organizations, etc.) */ type: string; /** * Valeur insérée dans le texte */ value: string; /** * Nombre d’occurrences dans le texte */ count: number; [k: string]: unknown; }[]; [k: string]: unknown; } export interface ShareNewsData { /** * ID de l'actualité à partager */ parentId: string; /** * Type de l'objet, toujours 'news'. */ parentType: "news"; /** * ID de l'entité partageante */ childId: string; /** * Type de l'entité partageante */ childType: "citoyens" | "projects" | "organizations"; /** * Type de connexion, toujours 'share'. */ connectType: "share"; /** * Commentaire de partage */ comment?: string; [k: string]: unknown; } export interface GetCommentsData { pathParams?: { /** * Type de l'élément */ type: "news"; /** * ID de l'élément dont on veut récupérer les commentaires */ id: string; [k: string]: unknown; }; [k: string]: unknown; } export interface AddCommentsData { /** * ID du commentaire parent (optionnel) ou chaîne vide */ parentCommentId?: string; /** * Contenu du commentaire */ text: string; /** * ID de l'élément auquel le commentaire est associé */ contextId: string; /** * Type de l'élément auquel le commentaire est associé */ contextType: "news"; /** * Valeur de l'argument (optionnel) */ argval?: string; /** * Chemin de l'élément (optionnel) */ path?: string; mentions?: { /** * ID de l'utilisateur mentionné */ id: string; /** * Nom de l'utilisateur mentionné */ name: string; /** * Slug de l'utilisateur mentionné */ slug: string; /** * Type de l'utilisateur mentionné */ type: string; /** * Valeur de la mention */ value: string; /** * Nombre de fois que l'utilisateur est mentionné */ count: number; }[]; [k: string]: unknown; } export interface DeleteCommentsData { pathParams?: { /** * ID du commentaire à supprimer */ id: string; [k: string]: unknown; }; [k: string]: unknown; } export interface UpdateCommentsData { /** * ID du commentaire à mettre à jour */ id: string; params: { /** * Nouveau texte du commentaire */ text: string; mentions?: { /** * ID de l'utilisateur mentionné */ id: string; /** * Nom de l'utilisateur mentionné */ name: string; /** * Slug de l'utilisateur mentionné */ slug: string; /** * Type de l'utilisateur mentionné */ type: string; /** * Valeur de la mention */ value: string; /** * Nombre de fois que l'utilisateur est mentionné */ count: number; }[]; [k: string]: unknown; }; [k: string]: unknown; } export interface SearchTagsData { pathParams?: { /** * Mot-clé de recherche */ q: string; [k: string]: unknown; }; [k: string]: unknown; } export interface ShowVoteData { pathParams?: { /** * Type de l'élément */ type: "news" | "comments"; /** * ID de l'élément dont on veut récupérer les votes */ id: string; [k: string]: unknown; }; [k: string]: unknown; } export interface GlobalAutocompleteData { /** * Nom ou mot-clé de la recherche */ name: string; /** * Liste des localités ciblées avec leur identifiant et leur type (city ou level1) */ locality?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[^\s]+$". */ [k: string]: { /** * Identifiant de la localité */ id: string; /** * Type de la localité : 'cities' pour une ville ou 'level1' pour une région */ type: "cities" | "level1"; }; }; /** * Types d'entités à inclure dans la recherche */ searchType: ("NGO" | "LocalBusiness" | "Group" | "GovernmentOrganization" | "Cooperative" | "projects" | "citoyens" | "poi" | "answers" | "forms")[]; /** * Balises (tags) à utiliser pour filtrer la recherche */ searchTags?: string[]; /** * Liste fixe des types à compter dans les résultats */ countType: ("NGO" | "LocalBusiness" | "Group" | "GovernmentOrganization" | "Cooperative" | "projects" | "citoyens" | "poi" | "answers" | "forms")[]; /** * Sélecteur des champs où chercher le terme `name`. Trois formes acceptées : `"ALL"` (cherche dans name/title/slug/tags/source.keys/sigle/description), chaîne CSV (`"name,slug,tags"`), ou tableau de chemins (`["name", "address.addressLocality"]`). */ searchBy?: string | [string, ...string[]]; /** * Index de départ global pour la pagination (toujours 0) */ indexMin: number; /** * Index de fin global pour la pagination */ indexMax?: number; /** * Nombre d’éléments à récupérer (limite de pagination) */ indexStep: number; /** * Configuration des plages de résultats pour chaque type de recherche */ ranges?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[^\s]+$". */ [k: string]: { /** * Index de départ pour la pagination */ indexMin: number; /** * Index de fin pour la pagination */ indexMax: number; }; }; /** * Type initial de la recherche, vide par défaut */ initType: ""; /** * Indique si les types doivent être comptés dans les résultats */ count: true; /** * Flag pour ne pas filtrer sur une clé de source spécifique */ notSourceKey: true; /** * Filtres additionnels appliqués à la recherche (actuellement vide) */ filters: ""; /** * Indique si la recherche doit s'étendre au Fediverse (toujours désactivé) */ fediverse: false; [k: string]: unknown; } export interface CityAutocompleteData { /** * Nom de la ville */ name: string; /** * Localité vide ou spécifique */ locality: ""; searchType: "cities"[]; /** * Mode de recherche (ex: ALL) */ searchBy?: "ALL"; /** * Index minimum */ indexMin?: number; /** * Index maximum */ indexMax?: number; [k: string]: unknown; } export interface CityAutocompleteByCountryData { type: "locality"; scopeValue: string; formInMap: boolean; /** * Code du pays pour la recherche de localités */ countryCode: string; [k: string]: unknown; } export interface SuggestionInputData { /** * Nom ou terme recherché */ name: string; /** * Types d'entités à inclure dans la recherche */ searchType: ("organizations" | "projects" | "poi")[]; /** * Index minimum pour la pagination */ indexMin: number; /** * Index maximum pour la pagination */ indexMax: number; [k: string]: unknown; } export interface GetProjectsNoAdminData { /** * Nom ou terme recherché */ name?: string; /** * Types d'entités à inclure dans la recherche */ searchType: "projects"[]; /** * Sélecteur des champs où chercher le terme `name`. Trois formes acceptées : `"ALL"` (cherche dans name/title/slug/tags/source.keys/sigle/description), chaîne CSV (`"name,slug,tags"`), ou tableau de chemins (`["name", "address.addressLocality"]`). */ searchBy?: string | [string, ...string[]]; /** * Index de départ global pour la pagination */ indexMin: number; /** * Index de fin global pour la pagination */ indexMax?: number; /** * Nombre d’éléments à récupérer (limite de pagination) */ indexStep: number; /** * Configuration des plages de résultats pour chaque type de recherche */ ranges?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[^\s]+$". */ [k: string]: { /** * Index de départ pour la pagination */ indexMin: number; /** * Index de fin pour la pagination */ indexMax: number; }; }; /** * Type initial de la recherche, vide par défaut */ initType: ""; /** * Indique si les types doivent être comptés dans les résultats */ count: true; /** * Liste fixe des types à compter dans les résultats */ countType: "projects"[]; /** * Flag pour ne pas filtrer sur une clé de source spécifique */ notSourceKey: true; filters: { $or?: Record; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^links\.contributors\.(?:[a-f0-9]{24}|@\w+)$". */ [k: string]: unknown; }; /** * Localité vide ou spécifique */ locality: ""; /** * Indique si la recherche doit s'étendre au Fediverse (toujours désactivé) */ fediverse: false; [k: string]: unknown; } export interface GetProjectsAdminData { /** * Nom ou terme recherché */ name?: string; /** * Types d'entités à inclure dans la recherche */ searchType: "projects"[]; /** * Sélecteur des champs où chercher le terme `name`. Trois formes acceptées : `"ALL"` (cherche dans name/title/slug/tags/source.keys/sigle/description), chaîne CSV (`"name,slug,tags"`), ou tableau de chemins (`["name", "address.addressLocality"]`). */ searchBy?: string | [string, ...string[]]; /** * Index de départ global pour la pagination */ indexMin: number; /** * Index de fin global pour la pagination */ indexMax?: number; /** * Nombre d’éléments à récupérer (limite de pagination) */ indexStep: number; /** * Configuration des plages de résultats pour chaque type de recherche */ ranges?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[^\s]+$". */ [k: string]: { /** * Index de départ pour la pagination */ indexMin: number; /** * Index de fin pour la pagination */ indexMax: number; }; }; /** * Type initial de la recherche, vide par défaut */ initType: ""; /** * Indique si les types doivent être comptés dans les résultats */ count: true; /** * Liste fixe des types à compter dans les résultats */ countType: "projects"[]; /** * Flag pour ne pas filtrer sur une clé de source spécifique */ notSourceKey: true; filters: { $or?: Record; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^links\.contributors\.(?:[a-f0-9]{24}|@(?:\{[^}]+\}|[A-Za-z0-9_]+(?:\.[A-Za-z0-9_]+)?))$". */ [k: string]: unknown; }; /** * Localité vide ou spécifique */ locality: ""; /** * Indique si la recherche doit s'étendre au Fediverse (toujours désactivé) */ fediverse: false; pathParams?: { /** * Type d'entité */ type: "citoyens" | "projects" | "organizations"; /** * ID de l'utilisateur ou de l'entité */ id: string; [k: string]: unknown; }; [k: string]: unknown; } export interface GetPoisNoAdminData { /** * Nom ou terme recherché */ name?: string; /** * Types d'entités à inclure dans la recherche */ searchType: "poi"[]; /** * Sélecteur des champs où chercher le terme `name`. Trois formes acceptées : `"ALL"` (cherche dans name/title/slug/tags/source.keys/sigle/description), chaîne CSV (`"name,slug,tags"`), ou tableau de chemins (`["name", "address.addressLocality"]`). */ searchBy?: string | [string, ...string[]]; /** * Index de départ global pour la pagination */ indexMin: number; /** * Index de fin global pour la pagination */ indexMax?: number; /** * Nombre d’éléments à récupérer (limite de pagination) */ indexStep: number; /** * Configuration des plages de résultats pour chaque type de recherche */ ranges?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[^\s]+$". */ [k: string]: { /** * Index de départ pour la pagination */ indexMin: number; /** * Index de fin pour la pagination */ indexMax: number; }; }; /** * Type initial de la recherche, vide par défaut */ initType: ""; /** * Indique si les types doivent être comptés dans les résultats */ count: true; /** * Liste fixe des types à compter dans les résultats */ countType: "poi"[]; /** * Flag pour ne pas filtrer sur une clé de source spécifique */ notSourceKey: true; filters: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^parent\.(?:[a-f0-9]{24}|@\w+)$". */ [k: string]: { $exists: true; }; }; /** * Localité vide ou spécifique */ locality: ""; /** * Indique si la recherche doit s'étendre au Fediverse (toujours désactivé) */ fediverse: false; [k: string]: unknown; } export interface GetPoisAdminData { /** * Nom ou terme recherché */ name?: string; /** * Types d'entités à inclure dans la recherche */ searchType: "poi"[]; /** * Sélecteur des champs où chercher le terme `name`. Trois formes acceptées : `"ALL"` (cherche dans name/title/slug/tags/source.keys/sigle/description), chaîne CSV (`"name,slug,tags"`), ou tableau de chemins (`["name", "address.addressLocality"]`). */ searchBy?: string | [string, ...string[]]; /** * Index de départ global pour la pagination */ indexMin: number; /** * Index de fin global pour la pagination */ indexMax?: number; /** * Nombre d’éléments à récupérer (limite de pagination) */ indexStep: number; /** * Configuration des plages de résultats pour chaque type de recherche */ ranges?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[^\s]+$". */ [k: string]: { /** * Index de départ pour la pagination */ indexMin: number; /** * Index de fin pour la pagination */ indexMax: number; }; }; /** * Type initial de la recherche, vide par défaut */ initType: ""; /** * Indique si les types doivent être comptés dans les résultats */ count: true; /** * Liste fixe des types à compter dans les résultats */ countType: "poi"[]; /** * Flag pour ne pas filtrer sur une clé de source spécifique */ notSourceKey: true; filters: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^parent\.(?:[a-f0-9]{24}|@(?:\{[^}]+\}|[A-Za-z0-9_]+(?:\.[A-Za-z0-9_]+)?))$". */ [k: string]: { $exists: true; }; }; /** * Localité vide ou spécifique */ locality: ""; /** * Indique si la recherche doit s'étendre au Fediverse (toujours désactivé) */ fediverse: false; pathParams?: { /** * Type d'entité */ type: "citoyens" | "projects" | "organizations"; /** * ID de l'utilisateur ou de l'entité */ id: string; [k: string]: unknown; }; [k: string]: unknown; } export interface GlobalAutocompleteAdminCostumData { /** * Nom ou mot-clé de la recherche */ name?: string; /** * Localités ciblées. Trois formes acceptées : object keyé (forme historique), array d'objets (forme alternative consommée par `foreach`), ou chaîne vide (placeholder = pas de filtre). */ locality?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[^\s]+$". */ [k: string]: { /** * Identifiant de la localité */ id: string; /** * Type de localité */ type: "cities" | "cp" | "country" | "level1" | "level2" | "level3" | "level4" | "level5"; postalCode?: string; countryCode?: string; name?: string; level?: string | number; }; } | { id: string; type: "cities" | "cp" | "country" | "level1" | "level2" | "level3" | "level4" | "level5"; postalCode?: string; countryCode?: string; name?: string; level?: string | number; }[] | ""; /** * Types d'entités à inclure dans la recherche */ searchType: ("NGO" | "LocalBusiness" | "Group" | "GovernmentOrganization" | "Cooperative" | "organizations" | "projects" | "events" | "citoyens" | "poi" | "news" | "answers" | "forms" | "classifieds")[]; /** * Balises (tags) à utiliser pour filtrer la recherche */ searchTags?: string[]; /** * Liste fixe des types à compter dans les résultats */ countType?: ("NGO" | "LocalBusiness" | "Group" | "GovernmentOrganization" | "Cooperative" | "organizations" | "projects" | "events" | "citoyens" | "poi" | "news" | "answers" | "forms" | "classifieds")[]; /** * Sélecteur des champs où chercher le terme `name`. Trois formes acceptées : `"ALL"` (cherche dans name/title/slug/tags/source.keys/sigle/description), chaîne CSV (`"name,slug,tags"`), ou tableau de chemins (`["name", "address.addressLocality"]`). */ searchBy?: string | [string, ...string[]]; /** * Index de départ global pour la pagination */ indexMin?: number; /** * Index de fin global pour la pagination */ indexMax?: number; /** * Nombre d’éléments à récupérer (limite de pagination) */ indexStep?: number; /** * Configuration des plages de résultats pour chaque type de recherche */ ranges?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[^\s]+$". */ [k: string]: { /** * Index de départ pour la pagination */ indexMin: number; /** * Index de fin pour la pagination */ indexMax: number; }; }; /** * Type initial de la recherche, vide par défaut */ initType?: ""; /** * Indique si les types doivent être comptés dans les résultats */ count?: true; /** * Filtres additionnels appliqués à la recherche (objet ou chaîne vide) */ filters?: { [k: string]: unknown; } | ""; /** * Liste des champs à retourner */ fields?: string[]; /** * Champ de tri (clé = champ, valeur = 1 ou -1) */ sortBy?: { [k: string]: 1 | -1; }; /** * Indique si la recherche doit s'étendre au Fediverse (toujours désactivé) */ fediverse?: boolean; /** * Indique si la recherche est effectuée à partir d'une carte (toujours désactivé) */ mapUsed?: true; /** * Indique si on doit exclure les éléments avec une source */ notSourceKey?: true; /** * ID du contexte de recherche (actuellement vide) */ contextId?: string; /** * Type de contexte de recherche (actuellement vide) */ contextType?: "projects" | "organizations"; /** * Slug du costume utilisé pour la recherche */ costumSlug?: string; /** * Alias historique de `contextId` — id du contexte costum. Le backend lit l'un OU l'autre (`isset($post['contextId']) ? ... : $post['costumId']`). */ costumId?: string; /** * Alias historique de `contextType` — type du contexte costum. */ costumType?: "projects" | "organizations"; /** * Mode d'affichage / comportement côté backend. Valeurs observées : `table` (charge `creatorData`), `mapWithDirectory`. String libre. */ mode?: string; /** * Clés de source pour la recherche */ sourceKey?: string[]; /** * Indique si le mode d'édition du costume est activé (toujours désactivé) */ costumEditMode?: boolean; options?: { tags?: { /** * Verbe d'action pour le filtre de recherche */ verb?: string; [k: string]: unknown; }; [k: string]: unknown; }; /** * Tri prioritaire (legacy $_POST['sort']) : {champ: 1|-1}. Contrairement à sortBy (première clé seulement), sort est passé tel quel à MongoDB — à préférer pour le tri des tables admin. */ sort?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[^\s]+$". */ [k: string]: 1 | -1 | "1" | "-1"; }; pathParams?: { /** * Collection de l'élément contexte (hôte du costum) */ type: "organizations" | "projects" | "events" | "citoyens"; /** * ID de l'élément contexte */ id: string; [k: string]: unknown; }; [k: string]: unknown; } export interface GetOrganizationsNoAdminData { /** * Nom ou terme recherché */ name?: string; /** * Types d'entités à inclure dans la recherche */ searchType: ("NGO" | "Cooperative" | "LocalBusiness" | "Group" | "GovernmentOrganization")[]; /** * Index minimum pour la pagination */ indexMin: number; /** * Index de fin global pour la pagination */ indexMax?: number; /** * Nombre d’éléments à récupérer (limite de pagination) */ indexStep: number; /** * Configuration des plages de résultats pour chaque type de recherche */ ranges?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[^\s]+$". */ [k: string]: { /** * Index de départ pour la pagination */ indexMin: number; /** * Index de fin pour la pagination */ indexMax: number; }; }; /** * Sélecteur des champs où chercher le terme `name`. Trois formes acceptées : `"ALL"` (cherche dans name/title/slug/tags/source.keys/sigle/description), chaîne CSV (`"name,slug,tags"`), ou tableau de chemins (`["name", "address.addressLocality"]`). */ searchBy?: string | [string, ...string[]]; /** * Type initial de la recherche, vide par défaut */ initType: ""; /** * Indique si les types doivent être comptés dans les résultats */ count: true; /** * Liste fixe des types à compter dans les résultats */ countType: ("NGO" | "Cooperative" | "LocalBusiness" | "Group" | "GovernmentOrganization")[]; /** * Flag pour ne pas filtrer sur une clé de source spécifique */ notSourceKey: true; filters: {}; /** * Localité vide ou spécifique */ locality: ""; /** * Indique si la recherche doit s'étendre au Fediverse (toujours désactivé) */ fediverse: false; [k: string]: unknown; } export interface GetOrganizationsAdminData { /** * Nom ou terme recherché */ name?: string; /** * Types d'entités à inclure dans la recherche */ searchType: ("NGO" | "Cooperative" | "LocalBusiness" | "Group" | "GovernmentOrganization")[]; /** * Index minimum pour la pagination */ indexMin: number; /** * Index de fin global pour la pagination */ indexMax?: number; /** * Nombre d’éléments à récupérer (limite de pagination) */ indexStep: number; /** * Configuration des plages de résultats pour chaque type de recherche */ ranges?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[^\s]+$". */ [k: string]: { /** * Index de départ pour la pagination */ indexMin: number; /** * Index de fin pour la pagination */ indexMax: number; }; }; /** * Sélecteur des champs où chercher le terme `name`. Trois formes acceptées : `"ALL"` (cherche dans name/title/slug/tags/source.keys/sigle/description), chaîne CSV (`"name,slug,tags"`), ou tableau de chemins (`["name", "address.addressLocality"]`). */ searchBy?: string | [string, ...string[]]; /** * Type initial de la recherche, vide par défaut */ initType: ""; /** * Indique si les types doivent être comptés dans les résultats */ count: true; /** * Liste fixe des types à compter dans les résultats */ countType: ("NGO" | "Cooperative" | "LocalBusiness" | "Group" | "GovernmentOrganization")[]; /** * Flag pour ne pas filtrer sur une clé de source spécifique */ notSourceKey: true; filters: { [k: string]: unknown; }; /** * Localité vide ou spécifique */ locality: ""; /** * Indique si la recherche doit s'étendre au Fediverse (toujours désactivé) */ fediverse: false; pathParams?: { /** * Type d'entité */ type: "citoyens" | "organizations"; /** * ID de l'utilisateur ou de l'entité */ id: string; [k: string]: unknown; }; [k: string]: unknown; } export interface GetUserEligiblePlacesData { /** * Nom ou terme recherché */ name?: string; /** * Types d'entités à inclure dans la recherche */ searchType: string[]; /** * Index minimum pour la pagination */ indexMin: number; /** * Index de fin global pour la pagination */ indexMax?: number; /** * Nombre d'éléments à récupérer (limite de pagination) */ indexStep: number; /** * Configuration des plages de résultats pour chaque type de recherche */ ranges?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[^\s]+$". */ [k: string]: { indexMin: number; indexMax: number; }; }; searchBy?: "ALL"; /** * Type initial de la recherche, vide par défaut */ initType?: string; /** * Indique si les types doivent être comptés dans les résultats */ count?: boolean; /** * Liste des types à compter dans les résultats */ countType?: string[]; /** * true = désactive le filtrage automatique par sourceKey du contexte (cf. SearchNew.php). Configurable dynamiquement selon la config du finder du formulaire. */ notSourceKey: boolean; /** * Filtres MongoDB arbitraires : tags, source.key, links.members.{id}, etc. Les valeurs peuvent être une string (match exact), un tableau (any-of), ou un objet ($exists/$in/$ne/etc). */ filters: { [k: string]: unknown; }; /** * Localité vide ou spécifique */ locality?: string; /** * Indique si la recherche doit s'étendre au Fediverse */ fediverse?: boolean; pathParams?: { /** * Type d'entité */ type: "citoyens" | "organizations"; /** * ID de l'utilisateur ou de l'entité */ id: string; [k: string]: unknown; }; [k: string]: unknown; } export interface GetMembersNoAdminData { /** * Nom ou terme recherché */ name?: string; /** * Types d'entités à inclure dans la recherche * * @minItems 1 */ searchType: [ "citoyens" | "NGO" | "LocalBusiness" | "Group" | "GovernmentOrganization" | "Cooperative", ...("citoyens" | "NGO" | "LocalBusiness" | "Group" | "GovernmentOrganization" | "Cooperative")[] ]; /** * Sélecteur des champs où chercher le terme `name`. Trois formes acceptées : `"ALL"` (cherche dans name/title/slug/tags/source.keys/sigle/description), chaîne CSV (`"name,slug,tags"`), ou tableau de chemins (`["name", "address.addressLocality"]`). */ searchBy?: string | [string, ...string[]]; /** * Index de départ global pour la pagination */ indexMin: number; /** * Index de fin global pour la pagination */ indexMax?: number; /** * Nombre d’éléments à récupérer (limite de pagination) */ indexStep: number; /** * Configuration des plages de résultats pour chaque type de recherche */ ranges?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[^\s]+$". */ [k: string]: { /** * Index de départ pour la pagination */ indexMin: number; /** * Index de fin pour la pagination */ indexMax: number; }; }; /** * Type initial de la recherche, vide par défaut */ initType: ""; /** * Indique si les types doivent être comptés dans les résultats */ count: true; /** * Liste fixe des types à compter dans les résultats */ countType: ("citoyens" | "NGO" | "LocalBusiness" | "Group" | "GovernmentOrganization" | "Cooperative")[]; /** * Flag pour ne pas filtrer sur une clé de source spécifique */ notSourceKey: true; filters: { [k: string]: unknown; }; /** * Localité vide ou spécifique */ locality: ""; /** * Indique si la recherche doit s'étendre au Fediverse (toujours désactivé) */ fediverse: false; [k: string]: unknown; } export interface GetMembersAdminData { /** * Nom ou terme recherché */ name?: string; /** * Types d'entités à inclure dans la recherche * * @minItems 1 */ searchType: [ "citoyens" | "NGO" | "LocalBusiness" | "Group" | "GovernmentOrganization" | "Cooperative", ...("citoyens" | "NGO" | "LocalBusiness" | "Group" | "GovernmentOrganization" | "Cooperative")[] ]; /** * Sélecteur des champs où chercher le terme `name`. Trois formes acceptées : `"ALL"` (cherche dans name/title/slug/tags/source.keys/sigle/description), chaîne CSV (`"name,slug,tags"`), ou tableau de chemins (`["name", "address.addressLocality"]`). */ searchBy?: string | [string, ...string[]]; /** * Index de départ global pour la pagination */ indexMin: number; /** * Index de fin global pour la pagination */ indexMax?: number; /** * Nombre d’éléments à récupérer (limite de pagination) */ indexStep: number; /** * Configuration des plages de résultats pour chaque type de recherche */ ranges?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[^\s]+$". */ [k: string]: { /** * Index de départ pour la pagination */ indexMin: number; /** * Index de fin pour la pagination */ indexMax: number; }; }; /** * Type initial de la recherche, vide par défaut */ initType: ""; /** * Indique si les types doivent être comptés dans les résultats */ count: true; /** * Liste fixe des types à compter dans les résultats */ countType: ("citoyens" | "NGO" | "LocalBusiness" | "Group" | "GovernmentOrganization" | "Cooperative")[]; /** * Flag pour ne pas filtrer sur une clé de source spécifique */ notSourceKey: true; filters: { [k: string]: unknown; }; /** * Localité vide ou spécifique */ locality: ""; /** * Indique si la recherche doit s'étendre au Fediverse (toujours désactivé) */ fediverse: false; pathParams?: { /** * ID de l'organisation */ id: string; [k: string]: unknown; }; [k: string]: unknown; } export interface GetFriendsAdminData { /** * Nom ou terme recherché */ name?: string; /** * Types d'entités à inclure dans la recherche */ searchType: "citoyens"[]; /** * Index minimum pour la pagination */ indexMin: number; /** * Type initial de la recherche, vide par défaut */ initType: ""; /** * Indique si les types doivent être comptés dans les résultats */ count: true; /** * Liste fixe des types à compter dans les résultats */ countType: "citoyens"[]; /** * Nombre d’éléments à récupérer (limite de pagination) */ indexStep: number; /** * Index de fin global pour la pagination */ indexMax?: number; /** * Configuration des plages de résultats pour chaque type de recherche */ ranges?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[^\s]+$". */ [k: string]: { /** * Index de départ pour la pagination */ indexMin: number; /** * Index de fin pour la pagination */ indexMax: number; }; }; /** * Flag pour ne pas filtrer sur une clé de source spécifique */ notSourceKey: true; filters: { [k: string]: unknown; }; /** * Localité vide ou spécifique */ locality: ""; /** * Indique si la recherche doit s'étendre au Fediverse (toujours désactivé) */ fediverse: false; pathParams?: { /** * ID de l'utilisateur */ id: string; [k: string]: unknown; }; [k: string]: unknown; } export interface GetSubscriptionsData { /** * Nom ou terme recherché */ name?: string; /** * Types d'entités à inclure dans la recherche */ searchType: ("citoyens" | "NGO" | "LocalBusiness" | "Group" | "GovernmentOrganization" | "Cooperative" | "projects")[]; /** * Sélecteur des champs où chercher le terme `name`. Trois formes acceptées : `"ALL"` (cherche dans name/title/slug/tags/source.keys/sigle/description), chaîne CSV (`"name,slug,tags"`), ou tableau de chemins (`["name", "address.addressLocality"]`). */ searchBy?: string | [string, ...string[]]; /** * Index de départ global pour la pagination */ indexMin: number; /** * Index de fin global pour la pagination */ indexMax?: number; /** * Nombre d’éléments à récupérer (limite de pagination) */ indexStep: number; /** * Configuration des plages de résultats pour chaque type de recherche */ ranges?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[^\s]+$". */ [k: string]: { /** * Index de départ pour la pagination */ indexMin: number; /** * Index de fin pour la pagination */ indexMax: number; }; }; /** * Type initial de la recherche, vide par défaut */ initType: ""; /** * Indique si les types doivent être comptés dans les résultats */ count: true; /** * Liste fixe des types à compter dans les résultats */ countType: ("citoyens" | "NGO" | "LocalBusiness" | "Group" | "GovernmentOrganization" | "Cooperative" | "projects")[]; /** * Flag pour ne pas filtrer sur une clé de source spécifique */ notSourceKey: true; filters: { [k: string]: unknown; }; /** * Localité vide ou spécifique */ locality: ""; /** * Indique si la recherche doit s'étendre au Fediverse (toujours désactivé) */ fediverse: false; [k: string]: unknown; } export interface GetSubscriptionsAdminData { /** * Nom ou terme recherché */ name?: string; /** * Types d'entités à inclure dans la recherche */ searchType: ("citoyens" | "NGO" | "LocalBusiness" | "Group" | "GovernmentOrganization" | "Cooperative" | "projects")[]; /** * Sélecteur des champs où chercher le terme `name`. Trois formes acceptées : `"ALL"` (cherche dans name/title/slug/tags/source.keys/sigle/description), chaîne CSV (`"name,slug,tags"`), ou tableau de chemins (`["name", "address.addressLocality"]`). */ searchBy?: string | [string, ...string[]]; /** * Index de départ global pour la pagination */ indexMin: number; /** * Index de fin global pour la pagination */ indexMax?: number; /** * Nombre d’éléments à récupérer (limite de pagination) */ indexStep: number; /** * Configuration des plages de résultats pour chaque type de recherche */ ranges?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[^\s]+$". */ [k: string]: { /** * Index de départ pour la pagination */ indexMin: number; /** * Index de fin pour la pagination */ indexMax: number; }; }; /** * Type initial de la recherche, vide par défaut */ initType: ""; /** * Indique si les types doivent être comptés dans les résultats */ count: true; /** * Liste fixe des types à compter dans les résultats */ countType: ("citoyens" | "NGO" | "LocalBusiness" | "Group" | "GovernmentOrganization" | "Cooperative" | "projects")[]; /** * Flag pour ne pas filtrer sur une clé de source spécifique */ notSourceKey: true; filters: { [k: string]: unknown; }; /** * Localité vide ou spécifique */ locality: ""; /** * Indique si la recherche doit s'étendre au Fediverse (toujours désactivé) */ fediverse: false; pathParams?: { /** * ID de l'utilisateur */ id: string; [k: string]: unknown; }; [k: string]: unknown; } export interface GetSubscribersData { /** * Nom ou terme recherché */ name?: string; /** * Types d'entités à inclure dans la recherche */ searchType: "citoyens"[]; /** * Sélecteur des champs où chercher le terme `name`. Trois formes acceptées : `"ALL"` (cherche dans name/title/slug/tags/source.keys/sigle/description), chaîne CSV (`"name,slug,tags"`), ou tableau de chemins (`["name", "address.addressLocality"]`). */ searchBy?: string | [string, ...string[]]; /** * Index de départ global pour la pagination */ indexMin: number; /** * Index de fin global pour la pagination */ indexMax?: number; /** * Nombre d’éléments à récupérer (limite de pagination) */ indexStep: number; /** * Configuration des plages de résultats pour chaque type de recherche */ ranges?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[^\s]+$". */ [k: string]: { /** * Index de départ pour la pagination */ indexMin: number; /** * Index de fin pour la pagination */ indexMax: number; }; }; /** * Type initial de la recherche, vide par défaut */ initType: ""; /** * Indique si les types doivent être comptés dans les résultats */ count: true; /** * Liste fixe des types à compter dans les résultats */ countType: "citoyens"[]; /** * Flag pour ne pas filtrer sur une clé de source spécifique */ notSourceKey: true; filters: { [k: string]: unknown; }; /** * Localité vide ou spécifique */ locality: ""; /** * Indique si la recherche doit s'étendre au Fediverse (toujours désactivé) */ fediverse: false; [k: string]: unknown; } export interface GetSubscribersAdminData { /** * Nom ou terme recherché */ name?: string; /** * Types d'entités à inclure dans la recherche */ searchType: "citoyens"[]; /** * Index minimum pour la pagination */ indexMin: number; /** * Type initial de la recherche, vide par défaut */ initType: ""; /** * Indique si les types doivent être comptés dans les résultats */ count: true; /** * Liste fixe des types à compter dans les résultats */ countType: "citoyens"[]; /** * Nombre d’éléments à récupérer (limite de pagination) */ indexStep: number; /** * Flag pour ne pas filtrer sur une clé de source spécifique */ notSourceKey: true; filters: { [k: string]: unknown; }; /** * Localité vide ou spécifique */ locality: ""; /** * Indique si la recherche doit s'étendre au Fediverse (toujours désactivé) */ fediverse: false; pathParams?: { /** * Type d'entité */ type: "citoyens" | "organizations" | "projects"; /** * ID de l'utilisateur ou de l'entité */ id: string; [k: string]: unknown; }; [k: string]: unknown; } export interface GetContributorsNoAdminData { /** * Nom ou terme recherché */ name?: string; /** * Types d'entités à inclure dans la recherche * * @minItems 1 */ searchType: [ "citoyens" | "NGO" | "LocalBusiness" | "Group" | "GovernmentOrganization" | "Cooperative", ...("citoyens" | "NGO" | "LocalBusiness" | "Group" | "GovernmentOrganization" | "Cooperative")[] ]; /** * Sélecteur des champs où chercher le terme `name`. Trois formes acceptées : `"ALL"` (cherche dans name/title/slug/tags/source.keys/sigle/description), chaîne CSV (`"name,slug,tags"`), ou tableau de chemins (`["name", "address.addressLocality"]`). */ searchBy?: string | [string, ...string[]]; /** * Index de départ global pour la pagination */ indexMin: number; /** * Index de fin global pour la pagination */ indexMax?: number; /** * Nombre d’éléments à récupérer (limite de pagination) */ indexStep: number; /** * Configuration des plages de résultats pour chaque type de recherche */ ranges?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[^\s]+$". */ [k: string]: { /** * Index de départ pour la pagination */ indexMin: number; /** * Index de fin pour la pagination */ indexMax: number; }; }; /** * Type initial de la recherche, vide par défaut */ initType: ""; /** * Indique si les types doivent être comptés dans les résultats */ count: true; /** * Liste fixe des types à compter dans les résultats */ countType: ("citoyens" | "NGO" | "LocalBusiness" | "Group" | "GovernmentOrganization" | "Cooperative")[]; /** * Flag pour ne pas filtrer sur une clé de source spécifique */ notSourceKey: true; filters: { [k: string]: unknown; }; /** * Localité vide ou spécifique */ locality: ""; /** * Indique si la recherche doit s'étendre au Fediverse (toujours désactivé) */ fediverse: false; [k: string]: unknown; } export interface GetContributorsAdminData { /** * Nom ou terme recherché */ name?: string; /** * Types d'entités à inclure dans la recherche * * @minItems 1 */ searchType: [ "citoyens" | "NGO" | "LocalBusiness" | "Group" | "GovernmentOrganization" | "Cooperative", ...("citoyens" | "NGO" | "LocalBusiness" | "Group" | "GovernmentOrganization" | "Cooperative")[] ]; /** * Sélecteur des champs où chercher le terme `name`. Trois formes acceptées : `"ALL"` (cherche dans name/title/slug/tags/source.keys/sigle/description), chaîne CSV (`"name,slug,tags"`), ou tableau de chemins (`["name", "address.addressLocality"]`). */ searchBy?: string | [string, ...string[]]; /** * Index de départ global pour la pagination */ indexMin: number; /** * Index de fin global pour la pagination */ indexMax?: number; /** * Nombre d’éléments à récupérer (limite de pagination) */ indexStep: number; /** * Configuration des plages de résultats pour chaque type de recherche */ ranges?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[^\s]+$". */ [k: string]: { /** * Index de départ pour la pagination */ indexMin: number; /** * Index de fin pour la pagination */ indexMax: number; }; }; /** * Type initial de la recherche, vide par défaut */ initType: ""; /** * Indique si les types doivent être comptés dans les résultats */ count: true; /** * Liste fixe des types à compter dans les résultats */ countType: ("citoyens" | "NGO" | "LocalBusiness" | "Group" | "GovernmentOrganization" | "Cooperative")[]; /** * Flag pour ne pas filtrer sur une clé de source spécifique */ notSourceKey: true; filters: { [k: string]: unknown; }; /** * Localité vide ou spécifique */ locality: ""; /** * Indique si la recherche doit s'étendre au Fediverse (toujours désactivé) */ fediverse: false; pathParams?: { /** * ID du projet */ id: string; [k: string]: unknown; }; [k: string]: unknown; } export interface GetBadgesData { /** * Nom ou terme recherché */ name?: string; /** * Types d'entités à inclure dans la recherche */ searchType: "badges"[]; /** * Sélecteur des champs où chercher le terme `name`. Trois formes acceptées : `"ALL"` (cherche dans name/title/slug/tags/source.keys/sigle/description), chaîne CSV (`"name,slug,tags"`), ou tableau de chemins (`["name", "address.addressLocality"]`). */ searchBy?: string | [string, ...string[]]; /** * Index de départ global pour la pagination (toujours 0) */ indexMin: number; /** * Index de fin global pour la pagination */ indexMax?: number; /** * Nombre d’éléments à récupérer (limite de pagination) */ indexStep: number; /** * Configuration des plages de résultats pour chaque type de recherche */ ranges?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[^\s]+$". */ [k: string]: { /** * Index de départ pour la pagination */ indexMin: number; /** * Index de fin pour la pagination */ indexMax: number; }; }; /** * Type initial de la recherche, vide par défaut */ initType: ""; /** * Indique si les types doivent être comptés dans les résultats */ count: true; /** * Liste fixe des types à compter dans les résultats */ countType: "badges"[]; /** * Flag pour ne pas filtrer sur une clé de source spécifique */ notSourceKey: true; filters: { /** * Indique si le badge est privé ou public */ "preferences.private": false; /** * Indique si le badge est un parcours */ isParcours?: boolean; $or?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^issuer\.(?:[a-f0-9]{24}|@\w+)$". */ [k: string]: { $exists: true; }; }; [k: string]: unknown; }; /** * Localité vide ou spécifique */ locality: ""; /** * Indique si la recherche doit s'étendre au Fediverse (toujours désactivé) */ fediverse: false; [k: string]: unknown; } export interface GetBadgesFiltersData { /** * Nom ou terme recherché */ name?: string; fields?: "badges"[]; /** * Types d'entités à inclure dans la recherche */ searchType: ("citoyens" | "projects" | "NGO" | "LocalBusiness" | "Group" | "GovernmentOrganization" | "Cooperative")[]; /** * Index minimum pour la pagination */ indexMin: number; /** * Type initial de la recherche, vide par défaut */ initType: ""; /** * Indique si les types doivent être comptés dans les résultats */ count: true; /** * Liste fixe des types à compter dans les résultats */ countType: ("citoyens" | "projects" | "NGO" | "LocalBusiness" | "Group" | "GovernmentOrganization" | "Cooperative")[]; /** * Nombre d’éléments à récupérer (limite de pagination) */ indexStep: number; /** * Flag pour ne pas filtrer sur une clé de source spécifique */ notSourceKey: true; ranges?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[a-zA-Z][a-zA-Z0-9]*$". */ [k: string]: { indexMin: number; indexMax: number; }; }; filters?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "badges\.(?:[a-f0-9]{24}|@\w+)$". */ [k: string]: { $exists: true; }; } | {} | { $or: {}; } | { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "badges\.(?:[a-f0-9]{24}|@\w+)\.revoke$". */ [k: string]: true; } | { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "badges\.(?:[a-f0-9]{24}|@\w+)\.attenteEmetteur$". */ [k: string]: { $exists: true; }; }; /** * Localité vide ou spécifique */ locality: ""; /** * Indique si la recherche doit s'étendre au Fediverse (toujours désactivé) */ fediverse: false; [k: string]: unknown; } export interface ConnectData { /** * ID de l'élément à suivre (projet, organisation...) */ childId: string; /** * Type de l'élément à suivre */ childType: "citoyens"; /** * Type de l'élément parent (projet, organisation...) */ parentType: "citoyens" | "organizations" | "projects" | "events"; /** * ID de l'élément parent */ parentId: string; /** * Type de connexion */ connectType: "admin" | "member" | "contributor" | "attendee" | "friend" | "connect"; [k: string]: unknown; } export interface DisconnectData { /** * ID de l'élément à déconnecter (projet, organisation...) */ childId: string; /** * Type de l'élément à déconnecter */ childType: "citoyens"; /** * Type de l'élément parent (projet, organisation...) */ parentType: "citoyens" | "organizations" | "projects" | "events"; /** * ID de l'élément parent */ parentId: string; /** * Type de connexion */ connectType: "members" | "contributors" | "attendees" | "friends" | "followers"; [k: string]: unknown; } export interface GetElementsKeyData { pathParams?: { /** * Slug de l'élément à récupérer */ slug: string; [k: string]: unknown; }; [k: string]: unknown; } export interface GetFavorisData { pathParams?: { /** * ID de l'utilisateur */ id: string; [k: string]: unknown; }; [k: string]: unknown; } export interface DeleteFavorisData { /** * ID de l’utilisateur */ id: "@userId"; collection: "citoyens"; /** * Chemin à retirer */ path: "preferences.search.@{pathParams.index}"; pull: "preferences.search"; /** * Valeur */ value: ""; pathParams?: { /** * Index du favoris à supprimer */ index?: number; [k: string]: unknown; }; [k: string]: unknown; } export interface AddFavorisData { /** * ID de l’utilisateur */ id: "@userId"; collection: "citoyens"; /** * Chemin à ajouter */ path: "preferences.search"; arrayForm: true; [k: string]: unknown; } export interface AddOrganizationData { /** * ID de l’organisation */ id: string; /** * Collection de l’organisation */ collection: "organizations"; key: "organization"; /** * Nom de l’organisation */ name: string; /** * Type d’organisation */ type: "NGO" | "LocalBusiness" | "Group" | "GovernmentOrganization" | "Cooperative"; /** * Rôle principal de l’organisation */ role: "admin" | "member"; tags?: "" | string[]; /** * Email de l’organisation */ email?: string; /** * Description courte */ shortDescription?: string; /** * Site web */ url?: string | ""; preferences?: { /** * Open data (true/false) */ isOpenData: boolean; /** * Édition ouverte (true/false) */ isOpenEdition: boolean; [k: string]: unknown; }; geo?: "" | { "@type"?: "GeoCoordinates"; latitude: string | number; longitude: string | number; }; geoPosition?: "" | { /** * Type GeoJSON (doit être 'Point') */ type: "Point"; /** * Tableau contenant [longitude, latitude] * * @minItems 2 * @maxItems 2 */ coordinates: [number, number]; /** * Indicateur pour forcer la conversion en float côté serveur */ float?: true; [k: string]: unknown; }; /** * Thématiques de l’organisation */ thematic?: string[]; /** * Dictionnaire de filières par thématique */ filiere?: { [k: string]: { name: string; icon: string; tags: string[]; }; }; address?: "" | { "@type": "PostalAddress"; addressCountry: string; codeInsee: string; addressLocality: string; localityId: string; level1: string; level1Name: string; /** * ID du département. Peut être vide pour les pays étrangers. */ level3?: string; /** * Nom du département. Peut être vide pour les pays étrangers. */ level3Name?: string; /** * ID de la commune. Peut être vide pour les pays étrangers. */ level4?: string; /** * Nom de la commune. Peut être vide pour les pays étrangers. */ level4Name?: string; postalCode?: string; streetAddress?: string; }; scope: ""; /** * Horaires d'ouverture (7 entrées, une par jour de la semaine ; "" pour un jour fermé). Doit rester synchronisé avec VIRTUAL_OPENING_HOURS dans Organization.ts. * * @minItems 7 * @maxItems 7 */ openingHours?: [ ("" | { /** * Jour de la semaine */ dayOfWeek: "Mo" | "Tu" | "We" | "Th" | "Fr" | "Sa" | "Su"; /** * Liste des créneaux horaires */ hours: { /** * Heure d'ouverture (HH:MM) */ opens: string; /** * Heure de fermeture (HH:MM) */ closes: string; }[]; }), ("" | { /** * Jour de la semaine */ dayOfWeek: "Mo" | "Tu" | "We" | "Th" | "Fr" | "Sa" | "Su"; /** * Liste des créneaux horaires */ hours: { /** * Heure d'ouverture (HH:MM) */ opens: string; /** * Heure de fermeture (HH:MM) */ closes: string; }[]; }), ("" | { /** * Jour de la semaine */ dayOfWeek: "Mo" | "Tu" | "We" | "Th" | "Fr" | "Sa" | "Su"; /** * Liste des créneaux horaires */ hours: { /** * Heure d'ouverture (HH:MM) */ opens: string; /** * Heure de fermeture (HH:MM) */ closes: string; }[]; }), ("" | { /** * Jour de la semaine */ dayOfWeek: "Mo" | "Tu" | "We" | "Th" | "Fr" | "Sa" | "Su"; /** * Liste des créneaux horaires */ hours: { /** * Heure d'ouverture (HH:MM) */ opens: string; /** * Heure de fermeture (HH:MM) */ closes: string; }[]; }), ("" | { /** * Jour de la semaine */ dayOfWeek: "Mo" | "Tu" | "We" | "Th" | "Fr" | "Sa" | "Su"; /** * Liste des créneaux horaires */ hours: { /** * Heure d'ouverture (HH:MM) */ opens: string; /** * Heure de fermeture (HH:MM) */ closes: string; }[]; }), ("" | { /** * Jour de la semaine */ dayOfWeek: "Mo" | "Tu" | "We" | "Th" | "Fr" | "Sa" | "Su"; /** * Liste des créneaux horaires */ hours: { /** * Heure d'ouverture (HH:MM) */ opens: string; /** * Heure de fermeture (HH:MM) */ closes: string; }[]; }), ("" | { /** * Jour de la semaine */ dayOfWeek: "Mo" | "Tu" | "We" | "Th" | "Fr" | "Sa" | "Su"; /** * Liste des créneaux horaires */ hours: { /** * Heure d'ouverture (HH:MM) */ opens: string; /** * Heure de fermeture (HH:MM) */ closes: string; }[]; }) ]; /** * URLs de vidéos de présentation */ video?: string[]; /** * Numéro de téléphone de contact */ telephone?: string; /** * Description longue (markdown supporté) */ description?: string; /** * Tag principal (ex: TiersLieux) */ mainTag?: string; /** * Réseaux sociaux — objet keyé par plateforme (facebook/twitter/instagram/linkedin/youtube/mastodon/telegram/...). dataBinding org legacy `socialNetwork` (Organization.php:82). */ socialNetwork?: { [k: string]: string; }; [k: string]: unknown; } export interface AddProjectData { /** * ID */ id: string; /** * Collection */ collection: "projects"; key: "project"; /** * Objet contenant les entités parentes (clé = ID). null signifie que les parents ne sont pas modifiés. */ parent: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^(?:[a-f0-9]{24}|@userId)$". */ [k: string]: { /** * Type d'entité parent */ type: string; /** * Nom de l'entité parent */ name?: string; }; }; /** * Nom du projet */ name: string; /** * Visibilité (true/false) */ public: boolean; tags?: "" | string[]; /** * Description courte */ shortDescription?: string; /** * Site web */ url?: string | ""; preferences?: { /** * Open data (true/false) */ isOpenData: boolean; /** * Édition ouverte (true/false) */ isOpenEdition: boolean; /** * Crowdfunding (true/false) */ crowdfunding?: boolean; [k: string]: unknown; }; geo?: "" | { "@type"?: "GeoCoordinates"; latitude: string | number; longitude: string | number; }; geoPosition?: "" | { /** * Type GeoJSON (doit être 'Point') */ type: "Point"; /** * Tableau contenant [longitude, latitude] * * @minItems 2 * @maxItems 2 */ coordinates: [number, number]; /** * Indicateur pour forcer la conversion en float côté serveur */ float?: true; [k: string]: unknown; }; address?: "" | { "@type": "PostalAddress"; addressCountry: string; codeInsee: string; addressLocality: string; localityId: string; level1: string; level1Name: string; /** * ID du département. Peut être vide pour les pays étrangers. */ level3?: string; /** * Nom du département. Peut être vide pour les pays étrangers. */ level3Name?: string; /** * ID de la commune. Peut être vide pour les pays étrangers. */ level4?: string; /** * Nom de la commune. Peut être vide pour les pays étrangers. */ level4Name?: string; postalCode?: string; streetAddress?: string; }; scope: ""; [k: string]: unknown; } export interface AddPoiData { /** * ID du POI */ id: string; /** * Origine d'insertion costum (attribution). Renseignée à la création d'un élément dans un costum. */ source?: { insertOrign?: string; key?: string; keys?: string[]; [k: string]: unknown; }; /** * Collection du POI */ collection: "poi"; key: "poi"; /** * Type de POI */ type: "link" | "tool" | "machine" | "software" | "rh" | "Resource material" | "Financial Ressource" | "ficheBlanche" | "geoJson" | "compostPickup" | "video" | "sharedLibrary" | "recoveryCenter" | "trash" | "history" | "something2See" | "funPlace" | "place" | "artPiece" | "streetArts" | "openScene" | "stand" | "parking" | "other"; /** * Objet contenant les entités parentes (clé = ID). null signifie que les parents ne sont pas modifiés. */ parent: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^(?:[a-f0-9]{24}|@userId)$". */ [k: string]: { /** * Type d'entité parent */ type: string; /** * Nom de l'entité parent */ name?: string; }; }; /** * Nom du poi */ name: string; /** * Description */ description?: string; tags?: "" | string[]; /** * Médias attachés au POI (audio/vidéo…) : [{type, url, …}]. Champ natif du dataBinding POI (Poi.php:64), absent du contrat curé jusqu'ici. Permissif (items objet libre). */ medias?: { [k: string]: unknown; }[]; /** * Préférences de l'élément (drapeaux legacy : toBeValidated = modération a priori costum {slug:true}, isOpenEdition…). Objet libre, normalisé côté backend (Element::prepData → Costum::prepData). */ preferences?: { [k: string]: unknown; }; /** * URLs externes associées */ urls?: string[]; geo?: "" | { "@type"?: "GeoCoordinates"; latitude: string | number; longitude: string | number; }; geoPosition?: "" | { /** * Type GeoJSON (doit être 'Point') */ type: "Point"; /** * Tableau contenant [longitude, latitude] * * @minItems 2 * @maxItems 2 */ coordinates: [number, number]; /** * Indicateur pour forcer la conversion en float côté serveur */ float?: true; [k: string]: unknown; }; address?: "" | { "@type": "PostalAddress"; addressCountry: string; codeInsee: string; addressLocality: string; localityId: string; level1: string; level1Name: string; /** * ID du département. Peut être vide pour les pays étrangers. */ level3?: string; /** * Nom du département. Peut être vide pour les pays étrangers. */ level3Name?: string; /** * ID de la commune. Peut être vide pour les pays étrangers. */ level4?: string; /** * Nom de la commune. Peut être vide pour les pays étrangers. */ level4Name?: string; postalCode?: string; streetAddress?: string; }; scope?: ""; [k: string]: unknown; } export interface AddEventData { /** * ID de l’événement */ id: string; /** * Collection de l’événement */ collection: "events"; key: "event"; /** * Type d’événement */ type: "workshop" | "competition" | "concert" | "contest" | "conference" | "debate" | "exhibition" | "festival" | "crowdfunding" | "fair" | "course" | "protest" | "market" | "film" | "getTogether" | "meeting" | "spectacle" | "internship" | "stand" | "others"; /** * Visibilité (true/false) */ public?: boolean; /** * Objet contenant les entités parentes (clé = ID). null signifie que les parents ne sont pas modifiés. */ organizer: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^(?:[a-f0-9]{24}|@userId)$". */ [k: string]: { /** * Type d'entité parent */ type: string; /** * Nom de l'entité parent */ name?: string; }; }; /** * Objet contenant les entités parentes (clé = ID), ou chaîne vide "" pour effacer les parents. */ parent?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^(?:[a-f0-9]{24}|@userId)$". */ [k: string]: { /** * Type d'entité parent */ type: string; /** * Nom de l'entité parent */ name?: string; }; } | ""; /** * Nom de l'événement */ name: string; /** * Description courte */ shortDescription?: string; tags?: string[] | ""; /** * Site web */ url?: string | ""; /** * Email de l’organisation */ email?: string | ""; preferences?: { /** * Open data (true/false) */ isOpenData: boolean; /** * Édition ouverte (true/false) */ isOpenEdition: boolean; [k: string]: unknown; }; /** * Fuseau horaire IANA */ timeZone?: string; /** * Indique si l'événement est récurrent (true/false) */ recurrency?: boolean; /** * Date et heure de début (ISO 8601 avec offset) */ startDate?: string; /** * Date et heure de fin (ISO 8601 avec offset) */ endDate?: string; /** * Liste ordonnée des jours de la semaine avec leurs horaires d'ouverture ou une chaîne vide pour ignorer le jour * * @minItems 7 * @maxItems 7 */ openingHours?: [ ("" | { /** * Jour de la semaine */ dayOfWeek: "Mo" | "Tu" | "We" | "Th" | "Fr" | "Sa" | "Su"; /** * Liste des créneaux horaires */ hours: { /** * Heure d'ouverture (HH:MM) */ opens: string; /** * Heure de fermeture (HH:MM) */ closes: string; }[]; }), ("" | { /** * Jour de la semaine */ dayOfWeek: "Mo" | "Tu" | "We" | "Th" | "Fr" | "Sa" | "Su"; /** * Liste des créneaux horaires */ hours: { /** * Heure d'ouverture (HH:MM) */ opens: string; /** * Heure de fermeture (HH:MM) */ closes: string; }[]; }), ("" | { /** * Jour de la semaine */ dayOfWeek: "Mo" | "Tu" | "We" | "Th" | "Fr" | "Sa" | "Su"; /** * Liste des créneaux horaires */ hours: { /** * Heure d'ouverture (HH:MM) */ opens: string; /** * Heure de fermeture (HH:MM) */ closes: string; }[]; }), ("" | { /** * Jour de la semaine */ dayOfWeek: "Mo" | "Tu" | "We" | "Th" | "Fr" | "Sa" | "Su"; /** * Liste des créneaux horaires */ hours: { /** * Heure d'ouverture (HH:MM) */ opens: string; /** * Heure de fermeture (HH:MM) */ closes: string; }[]; }), ("" | { /** * Jour de la semaine */ dayOfWeek: "Mo" | "Tu" | "We" | "Th" | "Fr" | "Sa" | "Su"; /** * Liste des créneaux horaires */ hours: { /** * Heure d'ouverture (HH:MM) */ opens: string; /** * Heure de fermeture (HH:MM) */ closes: string; }[]; }), ("" | { /** * Jour de la semaine */ dayOfWeek: "Mo" | "Tu" | "We" | "Th" | "Fr" | "Sa" | "Su"; /** * Liste des créneaux horaires */ hours: { /** * Heure d'ouverture (HH:MM) */ opens: string; /** * Heure de fermeture (HH:MM) */ closes: string; }[]; }), ("" | { /** * Jour de la semaine */ dayOfWeek: "Mo" | "Tu" | "We" | "Th" | "Fr" | "Sa" | "Su"; /** * Liste des créneaux horaires */ hours: { /** * Heure d'ouverture (HH:MM) */ opens: string; /** * Heure de fermeture (HH:MM) */ closes: string; }[]; }) ]; geo?: "" | { "@type"?: "GeoCoordinates"; latitude: string | number; longitude: string | number; }; geoPosition?: "" | { /** * Type GeoJSON (doit être 'Point') */ type: "Point"; /** * Tableau contenant [longitude, latitude] * * @minItems 2 * @maxItems 2 */ coordinates: [number, number]; /** * Indicateur pour forcer la conversion en float côté serveur */ float?: true; [k: string]: unknown; }; address?: "" | { "@type": "PostalAddress"; addressCountry: string; codeInsee: string; addressLocality: string; localityId: string; level1: string; level1Name: string; /** * ID du département. Peut être vide pour les pays étrangers. */ level3?: string; /** * Nom du département. Peut être vide pour les pays étrangers. */ level3Name?: string; /** * ID de la commune. Peut être vide pour les pays étrangers. */ level4?: string; /** * Nom de la commune. Peut être vide pour les pays étrangers. */ level4Name?: string; postalCode?: string; streetAddress?: string; }; scope: ""; [k: string]: unknown; } export interface DeleteElementData { /** * Raison de la suppression */ reason: string; pathParams?: { /** * Type d'élément à supprimer */ type: string; /** * ID de l'élément à supprimer */ id: string; [k: string]: unknown; }; [k: string]: unknown; } export interface AddImageElementData { /** * ID unique du fichier */ qquuid: string; /** * Nom du fichier */ qqfilename: string; /** * Taille totale du fichier */ qqtotalfilesize: number; /** * Données binaires de l'image */ qqfile: { [k: string]: unknown; }; pathParams?: { /** * Dossier de destination */ folder: "badges" | "events"; /** * ID du propriétaire de l'image */ ownerId: string; [k: string]: unknown; }; [k: string]: unknown; } export interface LinkValidateData { /** * ID de l’enfant */ childId: string; /** * Type de l’enfant */ childType: "citoyens"; /** * Type du parent */ parentType: "citoyens" | "organizations" | "projects" | "events"; /** * ID du parent */ parentId: string; /** * Type de validation */ linkOption?: "isInviting" | "isAdminInviting" | "toBeValidated" | "isAdminPending"; [k: string]: unknown; } export interface SearchMemberAutocompleteData { /** * Terme recherché */ search: string; /** * Mode de recherche */ searchMode: "personOnly" | "organizationOnly" | "mixte"; [k: string]: unknown; } export interface GetNotificationsData { /** * Index minimum pour la pagination */ indexMin?: number; pathParams?: { /** * Type de notification */ type: "citoyens"; /** * ID de l'utilisateur */ id: string; [k: string]: unknown; }; [k: string]: unknown; } export interface GetNotificationsCountData { /** * Timestamp de rafraîchissement */ refreshTimestamp?: number; pathParams?: { /** * Type de notification */ type: "citoyens"; /** * ID de l'utilisateur */ id: string; [k: string]: unknown; }; [k: string]: unknown; } export interface NotificationUpdateData { /** * Action à effectuer */ action: "seen" | "read"; /** * Marquer toutes les notifications comme vues ou lues */ all: true; [k: string]: unknown; } export interface MarkNotificationAsReadData { /** * ID de la notification */ id: string; [k: string]: unknown; } export interface ActivitypubSearchData { pathParams?: { /** * Adresse à rechercher */ address: string; [k: string]: unknown; }; [k: string]: unknown; } export interface ActivitypubLinkData { action: "undo_follow" | "accept_invitation" | "reject_invitation" | "undo_accept" | "undo_request_follow" | "follow" | "remove_follow" | "accept_follower" | "reject_follower" | "remove_follower" | "remove_invitation"; payload: string; actor: { id: string; type: "person"; name: string; }; [k: string]: unknown; } export interface ActivitypubGetCommunityData { pathParams?: { /** * ID de l'utilisateur */ userId: string; /** * Type de communauté */ type: "follows" | "followers"; [k: string]: unknown; }; [k: string]: unknown; } export interface GetBadgeData { pathParams?: { /** * ID du badge */ id: string; [k: string]: unknown; }; [k: string]: unknown; } export interface AddBadgesData { /** * ID */ id: string; /** * Collection */ collection: "badges"; key: "badge"; /** * Objet contenant les badges parents (clé = ID). null signifie que les parents ne sont pas modifiés. */ parent?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[a-f0-9]{24}$". */ [k: string]: { /** * Type du parent */ type: "badges"; /** * Nom du parent */ name?: string; }; }; /** * Nom du badge */ name: string; /** * Visibilité (true/false) */ public: boolean; tags?: string[]; /** * Est-ce un parcours (true/false)? */ isParcours?: boolean; /** * Description */ description?: string; preferences?: { /** * Open data (true/false) */ isOpenData: boolean; /** * Édition ouverte (true/false) */ isOpenEdition: boolean; [k: string]: unknown; }; scope: ""; criteria: { /** * Critères d’obtention */ narrative: string; }; /** * Objet contenant les émetteurs (clé = ID). null signifie que les émetteurs ne sont pas modifiés. */ issuer: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^(?:[a-f0-9]{24}|@userId)$". */ [k: string]: { /** * Type d'émetteur */ type: "citoyens" | "organizations" | "projects"; /** * Nom de l'émetteur */ name?: string; }; }; /** * Slug du costum d'origine */ costumSlug?: string; /** * ID Mongo du costum d'origine */ costumId?: string; /** * Type d'entité du costum (ex: projects) */ costumType?: string; [k: string]: unknown; } export interface AssignBadgesData { key: "badge"; collection: "badges"; /** * Message/narratif */ narative?: string; /** * ID du badge */ badgeId: string; /** * Objet contenant les cibles (clé = ID). null signifie que les cibles ne sont pas modifiées. */ award: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[0-9a-f]{24}$". */ [k: string]: { /** * Type de la cible (citoyens...) */ type: string; /** * Nom de la cible */ name: string; }; }; /** * Preuves */ evidences?: { /** * URL d’une preuve */ url?: string; /** * Description de la preuve */ narative: string; }[]; scope?: ""; [k: string]: unknown; } export interface GetEventsData { searchType: "events"[]; indexMin: number; indexStep: number; /** * Date de début (UTC) */ startDateUTC?: string; /** * Date de fin (UTC) */ endDateUTC?: string; /** * Nom ou terme */ name?: string; /** * Type d’événement */ type?: "workshop" | "competition" | "concert" | "contest" | "conference" | "debate" | "exhibition" | "festival" | "crowdfunding" | "fair" | "course" | "protest" | "market" | "film" | "getTogether" | "meeting" | "spectacle" | "internship" | "stand" | "others"; /** * Liste des localités ciblées */ locality?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[^\s]+$". */ [k: string]: { [k: string]: unknown; }; }; count?: boolean; countType?: unknown[]; fediverse: boolean; /** * 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. */ recurrency?: false; filters?: { $or?: Record; /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^links\.attendees\.(?:[a-f0-9]{24}|@\w+)$". */ [k: string]: unknown; }; [k: string]: unknown; } export interface SearchEventsCostumData { searchType: "events"[]; indexMin: number; indexStep: number; /** * Date de début (UTC) */ startDateUTC?: string; /** * Date de fin (UTC) */ endDateUTC?: string; /** * Nom ou terme */ name?: string; /** * Type d’événement */ type?: "workshop" | "competition" | "concert" | "contest" | "conference" | "debate" | "exhibition" | "festival" | "crowdfunding" | "fair" | "course" | "protest" | "market" | "film" | "getTogether" | "meeting" | "spectacle" | "internship" | "stand" | "others"; /** * Liste des localités ciblées */ locality?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[^\s]+$". */ [k: string]: { [k: string]: unknown; }; }; count?: boolean; countType?: unknown[]; fediverse: boolean; /** * 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. */ recurrency?: false; /** * Filtres Mongo additionnels (buildFilters). */ filters?: { [k: string]: unknown; }; /** * Scope costum : events dont source.keys/reference.costum ∈ sourceKey (agenda multi-sites/réseau). Auto-injecté = [slug de l’entité] si absent. */ sourceKey?: string[]; /** * Filtre par tags ($in, ou $all via options.tags.verb). */ searchTags?: string[]; /** * Events liés (links..). */ links?: { type: string; id: string; [k: string]: unknown; }[]; subType?: string; category?: string; section?: string | string[]; contextId?: string; contextType?: string; costumSlug?: string; costumId?: string; costumType?: string; [k: string]: unknown; } export interface ShareEventsData { /** * ID de l’événement à partager */ parentId: string; /** * Type de l’entité parent (events) */ parentType: "events"; /** * ID de l'entité partageante */ childId: string; /** * Type de l'entité partageante */ childType: "citoyens" | "projects" | "organizations"; /** * Type de connexion (share) */ connectType: "share"; /** * Commentaire de partage */ comment?: string; [k: string]: unknown; } export interface InviteMembersData { /** * ID de l'entité parente */ parentId: string; /** * Type de l'entité parente */ parentType: "citoyens" | "projects" | "organizations" | "events"; /** * Liste des citoyens invités */ listInvite: { citoyens?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[0-9a-f]{24}$". */ [k: string]: { /** * Nom de l'utilisateur */ name: string; isAdmin?: "" | "admin"; roles?: string[]; }; }; projects?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[0-9a-f]{24}$". */ [k: string]: { /** * Nom de l'utilisateur */ name: string; isAdmin?: "" | "admin"; roles?: string[]; }; }; organizations?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[0-9a-f]{24}$". */ [k: string]: { /** * Nom de l'utilisateur */ name: string; isAdmin?: "" | "admin"; roles?: string[]; }; }; invites?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$". */ [k: string]: { /** * Nom de l'utilisateur */ name: string; /** * Email de l'invité (clé `mail` — le legacy Link::invite lit $value['mail']) */ mail: string; /** * Message d'invitation */ msg?: string; isAdmin?: "" | "admin"; roles?: string[]; }; }; }; [k: string]: unknown; } export interface FollowData { /** * ID de l'élément à suivre (projet, organisation...) */ childId: string; /** * Type de l'élément à suivre */ childType: "citoyens"; /** * Type de l'élément parent (projet, organisation...) */ parentType: "citoyens" | "organizations" | "projects" | "events"; /** * ID de l'élément parent */ parentId: string; [k: string]: unknown; } export interface GetCostumJsonData { pathParams?: { [k: string]: unknown; }; [k: string]: unknown; } export interface GlobalAutocompleteCostumData { /** * Nom ou mot-clé de la recherche */ name?: string; /** * Localités ciblées. Trois formes acceptées : object keyé (forme historique), array d'objets (forme alternative consommée par `foreach`), ou chaîne vide (placeholder = pas de filtre). */ locality?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[^\s]+$". */ [k: string]: { /** * Identifiant de la localité */ id: string; /** * Type de localité */ type: "cities" | "cp" | "country" | "level1" | "level2" | "level3" | "level4" | "level5"; postalCode?: string; countryCode?: string; name?: string; level?: string | number; }; } | { id: string; type: "cities" | "cp" | "country" | "level1" | "level2" | "level3" | "level4" | "level5"; postalCode?: string; countryCode?: string; name?: string; level?: string | number; }[] | ""; /** * Types d'entités à inclure dans la recherche */ searchType: ("NGO" | "LocalBusiness" | "Group" | "GovernmentOrganization" | "Cooperative" | "organizations" | "projects" | "events" | "citoyens" | "poi" | "news" | "answers" | "forms" | "classifieds")[]; /** * Balises (tags) à utiliser pour filtrer la recherche */ searchTags?: string[]; /** * Liste fixe des types à compter dans les résultats */ countType: ("NGO" | "LocalBusiness" | "Group" | "GovernmentOrganization" | "Cooperative" | "organizations" | "projects" | "events" | "citoyens" | "poi" | "news" | "answers" | "forms" | "classifieds")[]; /** * Sélecteur des champs où chercher le terme `name`. Trois formes acceptées : `"ALL"` (cherche dans name/title/slug/tags/source.keys/sigle/description), chaîne CSV (`"name,slug,tags"`), ou tableau de chemins (`["name", "address.addressLocality"]`). */ searchBy?: string | [string, ...string[]]; /** * Index de départ global pour la pagination */ indexMin: number; /** * Index de fin global pour la pagination */ indexMax?: number; /** * Nombre d’éléments à récupérer (limite de pagination) */ indexStep: number; /** * Configuration des plages de résultats pour chaque type de recherche */ ranges?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[^\s]+$". */ [k: string]: { /** * Index de départ pour la pagination */ indexMin: number; /** * Index de fin pour la pagination */ indexMax: number; }; }; /** * Type initial de la recherche, vide par défaut */ initType: ""; /** * Indique si les types doivent être comptés dans les résultats */ count: true; /** * Filtres additionnels appliqués à la recherche (objet ou chaîne vide) */ filters?: { [k: string]: unknown; } | ""; /** * Liste des champs à retourner */ fields?: string[]; /** * Champ de tri (clé = champ, valeur = 1 ou -1) */ sortBy?: { [k: string]: 1 | -1; }; /** * Indique si la recherche doit s'étendre au Fediverse (toujours désactivé) */ fediverse: boolean; /** * Indique si la recherche est effectuée à partir d'une carte (toujours désactivé) */ mapUsed?: true; /** * Indique si on doit exclure les éléments avec une source */ notSourceKey?: true; /** * ID du contexte de recherche (actuellement vide) */ contextId?: string; /** * Type de contexte de recherche (actuellement vide) */ contextType?: "projects" | "organizations"; /** * Slug du costume utilisé pour la recherche */ costumSlug: string; /** * Alias historique de `contextId` — id du contexte costum. Le backend lit l'un OU l'autre (`isset($post['contextId']) ? ... : $post['costumId']`). */ costumId?: string; /** * Alias historique de `contextType` — type du contexte costum. */ costumType?: "projects" | "organizations"; /** * Mode d'affichage / comportement côté backend. Valeurs observées : `table` (charge `creatorData`), `mapWithDirectory`. String libre. */ mode?: string; /** * Clés de source pour la recherche */ sourceKey?: string[]; /** * Indique si le mode d'édition du costume est activé (toujours désactivé) */ costumEditMode: boolean; options?: { tags?: { /** * Verbe d'action pour le filtre de recherche */ verb?: string; [k: string]: unknown; }; [k: string]: unknown; }; [k: string]: unknown; } export interface NavigatorGettlData { /** * Nom ou mot-clé de la recherche */ name?: string; /** * Localités ciblées. Trois formes acceptées : object keyé (forme historique), array d'objets (forme alternative consommée par `foreach`), ou chaîne vide (placeholder = pas de filtre). */ locality?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[^\s]+$". */ [k: string]: { /** * Identifiant de la localité */ id: string; /** * Type de localité */ type: "cities" | "cp" | "country" | "level1" | "level2" | "level3" | "level4" | "level5"; postalCode?: string; countryCode?: string; name?: string; level?: string | number; }; } | { id: string; type: "cities" | "cp" | "country" | "level1" | "level2" | "level3" | "level4" | "level5"; postalCode?: string; countryCode?: string; name?: string; level?: string | number; }[] | ""; /** * Types d'entités à inclure dans la recherche */ searchType: ("NGO" | "LocalBusiness" | "Group" | "GovernmentOrganization" | "Cooperative" | "organizations" | "projects" | "events" | "citoyens" | "poi" | "news" | "answers" | "forms" | "classifieds")[]; /** * Balises (tags) à utiliser pour filtrer la recherche */ searchTags?: string[]; /** * Liste fixe des types à compter dans les résultats */ countType: ("NGO" | "LocalBusiness" | "Group" | "GovernmentOrganization" | "Cooperative" | "organizations" | "projects" | "events" | "citoyens" | "poi" | "news" | "answers" | "forms" | "classifieds")[]; /** * Sélecteur des champs où chercher le terme `name`. Trois formes acceptées : `"ALL"` (cherche dans name/title/slug/tags/source.keys/sigle/description), chaîne CSV (`"name,slug,tags"`), ou tableau de chemins (`["name", "address.addressLocality"]`). */ searchBy?: string | [string, ...string[]]; /** * Index de départ global pour la pagination */ indexMin: number; /** * Index de fin global pour la pagination */ indexMax?: number; /** * Nombre d’éléments à récupérer (limite de pagination) */ indexStep: number; /** * Configuration des plages de résultats pour chaque type de recherche */ ranges?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[^\s]+$". */ [k: string]: { /** * Index de départ pour la pagination */ indexMin: number; /** * Index de fin pour la pagination */ indexMax: number; }; }; /** * Type initial de la recherche, vide par défaut */ initType: ""; /** * Indique si les types doivent être comptés dans les résultats */ count: true; /** * Filtres additionnels appliqués à la recherche (objet ou chaîne vide) */ filters?: { [k: string]: unknown; } | ""; /** * Liste des champs à retourner */ fields?: string[]; /** * Champ de tri (clé = champ, valeur = 1 ou -1) */ sortBy?: { [k: string]: 1 | -1; }; /** * Indique si la recherche doit s'étendre au Fediverse (toujours désactivé) */ fediverse: boolean; /** * Indique si la recherche est effectuée à partir d'une carte (toujours désactivé) */ mapUsed?: true; /** * Indique si on doit exclure les éléments avec une source */ notSourceKey?: true; /** * ID du contexte de recherche (actuellement vide) */ contextId?: string; /** * Type de contexte de recherche (actuellement vide) */ contextType?: "projects" | "organizations"; /** * Slug du costume utilisé pour la recherche */ costumSlug: string; /** * Alias historique de `contextId` — id du contexte costum. Le backend lit l'un OU l'autre (`isset($post['contextId']) ? ... : $post['costumId']`). */ costumId?: string; /** * Alias historique de `contextType` — type du contexte costum. */ costumType?: "projects" | "organizations"; /** * Mode d'affichage / comportement côté backend. Valeurs observées : `table` (charge `creatorData`), `mapWithDirectory`. String libre. */ mode?: string; /** * Clés de source pour la recherche */ sourceKey?: string[]; /** * Indique si le mode d'édition du costume est activé (toujours désactivé) */ costumEditMode: boolean; options?: { tags?: { /** * Verbe d'action pour le filtre de recherche */ verb?: string; [k: string]: unknown; }; [k: string]: unknown; }; [k: string]: unknown; } export interface CostumEventRequestActorsData { /** * Types de liens à inclure (ex: organizer, attendees, creator, animator) */ types?: ("organizer" | "links.attendees" | "creator" | "links.creator" | "links.organizer" | "organizerName" | "animator")[]; /** * Limiter aux sous-événements liés directement */ parent_only?: boolean; /** * ID du contexte de recherche (actuellement vide) */ contextId?: string; /** * Type de contexte de recherche (actuellement vide) */ contextType?: "projects" | "organizations"; /** * Slug du costume utilisé pour la recherche */ costumSlug?: string; /** * Alias historique de `contextId` — id du contexte costum. Le backend lit l'un OU l'autre (`isset($post['contextId']) ? ... : $post['costumId']`). */ costumId?: string; /** * Alias historique de `contextType` — type du contexte costum. */ costumType?: "projects" | "organizations"; /** * Mode d'affichage / comportement côté backend. Valeurs observées : `table` (charge `creatorData`), `mapWithDirectory`. String libre. */ mode?: string; /** * Clés de source pour la recherche */ sourceKey?: string[]; /** * Indique si le mode d'édition du costume est activé (toujours désactivé) */ costumEditMode?: boolean; pathParams?: { /** * ID de l'entité */ id: string; /** * Type d'entité (ex: events) */ type: string; [k: string]: unknown; }; [k: string]: unknown; } export interface CostumEventRequestSubeventsData { /** * Filtrage par type d’événement */ type?: string; /** * Liste de tags à filtrer */ tags?: string[]; /** * Régions à filtrer */ regions?: { /** * ID de la région */ id: string; [k: string]: unknown; }[]; /** * Si vrai, ne renvoie que les événements à venir */ fromToday?: boolean; /** * Filtrage par date unique ou intervalle */ date?: string | { between: { start: string; end: string; [k: string]: unknown; }; [k: string]: unknown; }; /** * Timezone à appliquer sur les dates */ timezone?: string; /** * ID du contexte de recherche (actuellement vide) */ contextId?: string; /** * Type de contexte de recherche (actuellement vide) */ contextType?: "projects" | "organizations"; /** * Slug du costume utilisé pour la recherche */ costumSlug?: string; /** * Alias historique de `contextId` — id du contexte costum. Le backend lit l'un OU l'autre (`isset($post['contextId']) ? ... : $post['costumId']`). */ costumId?: string; /** * Alias historique de `contextType` — type du contexte costum. */ costumType?: "projects" | "organizations"; /** * Mode d'affichage / comportement côté backend. Valeurs observées : `table` (charge `creatorData`), `mapWithDirectory`. String libre. */ mode?: string; /** * Clés de source pour la recherche */ sourceKey?: string[]; /** * Indique si le mode d'édition du costume est activé (toujours désactivé) */ costumEditMode?: boolean; pathParams?: { /** * ID de l'entité */ id: string; /** * Type d'entité (ex: events) */ type: string; [k: string]: unknown; }; [k: string]: unknown; } export interface CostumEventRequestElementEventData { /** * ID de l’élément dont on récupère les événements liés (lu dans le BODY — EventAction::run element_event lit $_POST["id"], ignore le path) */ id?: string; /** * Type/collection de l’élément (lu dans le BODY — $_POST["type"]) */ type?: string; /** * ID du contexte de recherche (actuellement vide) */ contextId?: string; /** * Type de contexte de recherche (actuellement vide) */ contextType?: "projects" | "organizations"; /** * Slug du costume utilisé pour la recherche */ costumSlug?: string; /** * Alias historique de `contextId` — id du contexte costum. Le backend lit l'un OU l'autre (`isset($post['contextId']) ? ... : $post['costumId']`). */ costumId?: string; /** * Alias historique de `contextType` — type du contexte costum. */ costumType?: "projects" | "organizations"; /** * Mode d'affichage / comportement côté backend. Valeurs observées : `table` (charge `creatorData`), `mapWithDirectory`. String libre. */ mode?: string; /** * Clés de source pour la recherche */ sourceKey?: string[]; /** * Indique si le mode d'édition du costume est activé (toujours désactivé) */ costumEditMode?: boolean; pathParams?: { /** * ID de l'entité */ id: string; /** * Type d'entité (ex: events) */ type: string; [k: string]: unknown; }; [k: string]: unknown; } export interface CostumEventRequestCategoriesData { /** * ID du contexte de recherche (actuellement vide) */ contextId?: string; /** * Type de contexte de recherche (actuellement vide) */ contextType?: "projects" | "organizations"; /** * Slug du costume utilisé pour la recherche */ costumSlug?: string; /** * Alias historique de `contextId` — id du contexte costum. Le backend lit l'un OU l'autre (`isset($post['contextId']) ? ... : $post['costumId']`). */ costumId?: string; /** * Alias historique de `contextType` — type du contexte costum. */ costumType?: "projects" | "organizations"; /** * Mode d'affichage / comportement côté backend. Valeurs observées : `table` (charge `creatorData`), `mapWithDirectory`. String libre. */ mode?: string; /** * Clés de source pour la recherche */ sourceKey?: string[]; /** * Indique si le mode d'édition du costume est activé (toujours désactivé) */ costumEditMode?: boolean; pathParams?: { /** * ID de l'entité */ id: string; /** * Type d'entité (ex: events) */ type: string; [k: string]: unknown; }; [k: string]: unknown; } export interface CostumEventRequestDatesData { /** * Filtrage par type */ type?: string; /** * Tags à filtrer */ tags?: string[]; /** * Régions géographiques à filtrer */ regions?: { /** * ID de la région */ id: string; [k: string]: unknown; }[]; /** * ID du contexte de recherche (actuellement vide) */ contextId?: string; /** * Type de contexte de recherche (actuellement vide) */ contextType?: "projects" | "organizations"; /** * Slug du costume utilisé pour la recherche */ costumSlug?: string; /** * Alias historique de `contextId` — id du contexte costum. Le backend lit l'un OU l'autre (`isset($post['contextId']) ? ... : $post['costumId']`). */ costumId?: string; /** * Alias historique de `contextType` — type du contexte costum. */ costumType?: "projects" | "organizations"; /** * Mode d'affichage / comportement côté backend. Valeurs observées : `table` (charge `creatorData`), `mapWithDirectory`. String libre. */ mode?: string; /** * Clés de source pour la recherche */ sourceKey?: string[]; /** * Indique si le mode d'édition du costume est activé (toujours désactivé) */ costumEditMode?: boolean; pathParams?: { /** * ID de l'entité */ id: string; /** * Type d'entité (ex: events) */ type: string; [k: string]: unknown; }; [k: string]: unknown; } export interface CostumEventRequestEventData { /** * ID du contexte de recherche (actuellement vide) */ contextId?: string; /** * Type de contexte de recherche (actuellement vide) */ contextType?: "projects" | "organizations"; /** * Slug du costume utilisé pour la recherche */ costumSlug?: string; /** * Alias historique de `contextId` — id du contexte costum. Le backend lit l'un OU l'autre (`isset($post['contextId']) ? ... : $post['costumId']`). */ costumId?: string; /** * Alias historique de `contextType` — type du contexte costum. */ costumType?: "projects" | "organizations"; /** * Mode d'affichage / comportement côté backend. Valeurs observées : `table` (charge `creatorData`), `mapWithDirectory`. String libre. */ mode?: string; /** * Clés de source pour la recherche */ sourceKey?: string[]; /** * Indique si le mode d'édition du costume est activé (toujours désactivé) */ costumEditMode?: boolean; pathParams?: { /** * ID de l'entité */ id: string; /** * Type d'entité (ex: events) */ type: string; [k: string]: unknown; }; [k: string]: unknown; } export interface CostumEventRequestLinkTlToEventData { /** * ID de la structure à copier */ tl: string; /** * ID de l’événement cible */ event: string; /** * ID du contexte de recherche (actuellement vide) */ contextId?: string; /** * Type de contexte de recherche (actuellement vide) */ contextType?: "projects" | "organizations"; /** * Slug du costume utilisé pour la recherche */ costumSlug?: string; /** * Alias historique de `contextId` — id du contexte costum. Le backend lit l'un OU l'autre (`isset($post['contextId']) ? ... : $post['costumId']`). */ costumId?: string; /** * Alias historique de `contextType` — type du contexte costum. */ costumType?: "projects" | "organizations"; /** * Mode d'affichage / comportement côté backend. Valeurs observées : `table` (charge `creatorData`), `mapWithDirectory`. String libre. */ mode?: string; /** * Clés de source pour la recherche */ sourceKey?: string[]; /** * Indique si le mode d'édition du costume est activé (toujours désactivé) */ costumEditMode?: boolean; pathParams?: { /** * ID de l'entité */ id: string; /** * Type d'entité (ex: events) */ type: string; [k: string]: unknown; }; [k: string]: unknown; } export interface CostumEventRequestLoadContextTagData { /** * ID de l’événement */ event: string; /** * Recherche textuelle dans les tags */ search?: string; /** * ID du contexte de recherche (actuellement vide) */ contextId?: string; /** * Type de contexte de recherche (actuellement vide) */ contextType?: "projects" | "organizations"; /** * Slug du costume utilisé pour la recherche */ costumSlug?: string; /** * Alias historique de `contextId` — id du contexte costum. Le backend lit l'un OU l'autre (`isset($post['contextId']) ? ... : $post['costumId']`). */ costumId?: string; /** * Alias historique de `contextType` — type du contexte costum. */ costumType?: "projects" | "organizations"; /** * Mode d'affichage / comportement côté backend. Valeurs observées : `table` (charge `creatorData`), `mapWithDirectory`. String libre. */ mode?: string; /** * Clés de source pour la recherche */ sourceKey?: string[]; /** * Indique si le mode d'édition du costume est activé (toujours désactivé) */ costumEditMode?: boolean; pathParams?: { /** * ID de l'entité */ id: string; /** * Type d'entité (ex: events) */ type: string; [k: string]: unknown; }; [k: string]: unknown; } export interface GetGalleryData { /** * Clé de contenu pour correspondre à l'album ou aux images */ contentKey?: string; /** * ID du dossier à récupérer (pour les images d'un album) */ folderId?: string; pathParams?: { /** * ID de l'entité */ id: string; /** * Type d'entité (IndexAction legacy est type-agnostique ; poi/events/classifieds ajoutés pour la lecture des documents/fichiers via getGalleryFiles) */ type: "citoyens" | "organizations" | "projects" | "poi" | "events" | "classifieds"; /** * Type de document */ docType: "image" | "file" | "bookmarks"; [k: string]: unknown; }; [k: string]: unknown; } export interface GetAttendeesNoAdminData { /** * Nom ou terme recherché */ name?: string; /** * Types d'entités à inclure dans la recherche */ searchType: "citoyens"[]; /** * Sélecteur des champs où chercher le terme `name`. Trois formes acceptées : `"ALL"` (cherche dans name/title/slug/tags/source.keys/sigle/description), chaîne CSV (`"name,slug,tags"`), ou tableau de chemins (`["name", "address.addressLocality"]`). */ searchBy?: string | [string, ...string[]]; /** * Index de départ global pour la pagination */ indexMin: number; /** * Index de fin global pour la pagination */ indexMax?: number; /** * Nombre d’éléments à récupérer (limite de pagination) */ indexStep: number; /** * Configuration des plages de résultats pour chaque type de recherche */ ranges?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[^\s]+$". */ [k: string]: { /** * Index de départ pour la pagination */ indexMin: number; /** * Index de fin pour la pagination */ indexMax: number; }; }; /** * Type initial de la recherche, vide par défaut */ initType: ""; /** * Indique si les types doivent être comptés dans les résultats */ count: true; /** * Liste fixe des types à compter dans les résultats */ countType: "citoyens"[]; /** * Flag pour ne pas filtrer sur une clé de source spécifique */ notSourceKey: true; filters: { [k: string]: unknown; }; /** * Localité vide ou spécifique */ locality: ""; /** * Indique si la recherche doit s'étendre au Fediverse (toujours désactivé) */ fediverse: false; [k: string]: unknown; } export interface GetAttendeesAdminData { /** * Nom ou terme recherché */ name?: string; /** * Types d'entités à inclure dans la recherche */ searchType: "citoyens"[]; /** * Sélecteur des champs où chercher le terme `name`. Trois formes acceptées : `"ALL"` (cherche dans name/title/slug/tags/source.keys/sigle/description), chaîne CSV (`"name,slug,tags"`), ou tableau de chemins (`["name", "address.addressLocality"]`). */ searchBy?: string | [string, ...string[]]; /** * Index de départ global pour la pagination */ indexMin: number; /** * Index de fin global pour la pagination */ indexMax?: number; /** * Nombre d’éléments à récupérer (limite de pagination) */ indexStep: number; /** * Configuration des plages de résultats pour chaque type de recherche */ ranges?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[^\s]+$". */ [k: string]: { /** * Index de départ pour la pagination */ indexMin: number; /** * Index de fin pour la pagination */ indexMax: number; }; }; /** * Type initial de la recherche, vide par défaut */ initType: ""; /** * Indique si les types doivent être comptés dans les résultats */ count: true; /** * Liste fixe des types à compter dans les résultats */ countType: "citoyens"[]; /** * Flag pour ne pas filtrer sur une clé de source spécifique */ notSourceKey: true; filters: { [k: string]: unknown; }; /** * Localité vide ou spécifique */ locality: ""; /** * Indique si la recherche doit s'étendre au Fediverse (toujours désactivé) */ fediverse: false; pathParams?: { /** * ID du projet */ id: string; [k: string]: unknown; }; [k: string]: unknown; } export interface CoformAnswersSearchData { /** * Nom ou mot-clé de la recherche */ name?: string; /** * Liste des localités ciblées avec leur identifiant et leur type (city ou level1) */ locality?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[^\s]+$". */ [k: string]: { /** * Identifiant de la localité */ id: string; /** * Type de la localité : 'cities' pour une ville ou 'level1' pour une région */ type: "cities" | "level1"; }; }; /** * Types d'entités à inclure dans la recherche */ searchType: "answers"[]; /** * Balises (tags) à utiliser pour filtrer la recherche */ searchTags?: string[]; /** * Liste fixe des types à compter dans les résultats */ countType: "answers"[]; /** * Sélecteur des champs où chercher le terme `name`. Trois formes acceptées : `"ALL"` (cherche dans name/title/slug/tags/source.keys/sigle/description), chaîne CSV (`"name,slug,tags"`), ou tableau de chemins (`["name", "address.addressLocality"]`). */ searchBy?: string | [string, ...string[]]; /** * Index de départ global pour la pagination */ indexMin: number; /** * Index de fin global pour la pagination */ indexMax?: number; /** * Nombre d’éléments à récupérer (limite de pagination) */ indexStep: number; /** * Configuration des plages de résultats pour chaque type de recherche */ ranges?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[^\s]+$". */ [k: string]: { /** * Index de départ pour la pagination */ indexMin: number; /** * Index de fin pour la pagination */ indexMax: number; }; }; /** * Type initial de la recherche, vide par défaut */ initType: ""; /** * Indique si les types doivent être comptés dans les résultats */ count: true; /** * Filtres additionnels appliqués à la recherche (objet ou chaîne vide) */ filters?: { [k: string]: unknown; } | ""; /** * Liste des champs à retourner */ fields?: string[]; /** * Champ de tri (clé = champ, valeur = 1 ou -1) */ sortBy?: { [k: string]: 1 | -1; }; /** * Indique si la recherche doit s'étendre au Fediverse (toujours désactivé) */ fediverse: boolean; /** * Indique si la recherche est effectuée à partir d'une carte (toujours désactivé) */ mapUsed?: true; /** * Indique si on doit exclure les éléments avec une source */ notSourceKey?: true; /** * ID du contexte de recherche (actuellement vide) */ contextId?: string; /** * Type de contexte de recherche (actuellement vide) */ contextType?: "projects" | "organizations"; /** * Slug du costume utilisé pour la recherche */ costumSlug?: string; /** * Alias historique de `contextId` — id du contexte costum. Le backend lit l'un OU l'autre (`isset($post['contextId']) ? ... : $post['costumId']`). */ costumId?: string; /** * Alias historique de `contextType` — type du contexte costum. */ costumType?: "projects" | "organizations"; /** * Mode d'affichage / comportement côté backend. Valeurs observées : `table` (charge `creatorData`), `mapWithDirectory`. String libre. */ mode?: string; /** * Clés de source pour la recherche */ sourceKey?: string[]; /** * Indique si le mode d'édition du costume est activé (toujours désactivé) */ costumEditMode?: boolean; options?: { tags?: { /** * Verbe d'action pour le filtre de recherche */ verb?: string; [k: string]: unknown; }; [k: string]: unknown; }; [k: string]: unknown; } export interface CoformAnswersByIdData { /** * ID de la réponse à récupérer */ answerId: string; /** * Chemin du finder utilisé pour la recherche (actuellement vide) */ finderPath?: string; /** * Liste des champs à retourner */ fields?: string[]; /** * ID du formulaire parent (utilisé pour calculer les droits d'édition côté serveur) */ formId?: string; [k: string]: unknown; } export interface GetCoformByIdData { /** * ID du formulaire parent à récupérer */ parentFormId: string; /** * Optionnel : ID d'un élément (lieu) pour la vue collaborative par lieu. Avec elementType, l'access info pointe sur la réponse partagée du lieu plutôt que sur la réponse personnelle du user. */ elementId?: string; /** * Type de l'élément (collection MongoDB). Requis si elementId fourni. */ elementType?: "organizations" | "projects" | "events" | "poi" | "citoyens"; [k: string]: unknown; } export interface CoformUploadAnswerFileData { /** * ID du formulaire parent (pour contrôles d'accès). */ formId: string; /** * ID de réponse existant. Si absent, un MongoId est généré côté serveur. */ answerId?: string; /** * Type de document à uploader. */ docType?: "image" | "file"; /** * Clé de contenu (ex: slider pour images). */ contentKey?: string; /** * Sous-clé optionnelle pour rattachement du document. */ subKey?: string; /** * UUID client du fichier (compat fine-uploader). */ qquuid: string; /** * Nom original du fichier. */ qqfilename: string; /** * Taille du fichier en octets. */ qqtotalfilesize: number; /** * Fichier binaire multipart. */ qqfile: { [k: string]: unknown; }; [k: string]: unknown; } export interface DeleteCoformAnswerFileData { /** * ID du formulaire parent (contrôle d'accès). */ formId: string; /** * ID de la réponse propriétaire du fichier. */ answerId: string; /** * ID MongoDB du document à supprimer. */ docId: string; [k: string]: unknown; } export interface CoformGetAnswerFilesData { /** * ID de la réponse CoForm */ answerId: string; /** * Clé d'identification de l'input (ex: formId.inputId) */ subKey: string; /** * Clé de contenu utilisée lors de l'upload */ contentKey?: string; /** * Type de document à récupérer */ docType?: "image" | "file"; [k: string]: unknown; } export interface GetCoformCatalogsData { /** * ID du formulaire parent */ formId: string; /** * Tableau JSON sérialisé des fieldKey des inputs commonTable concernés. Ex: ["abc123","def456"] */ inputKeys: string; [k: string]: unknown; } export interface SaveCoformAnswerData { /** * ID du formulaire parent */ formId: string; /** * Réponses du formulaire sérialisées en JSON, organisées par subFormId > inputId > valeur */ answers: string; /** * ID d'une réponse existante (pour mise à jour) */ answerId?: string; /** * Options ajoutées dynamiquement sérialisées en JSON (pour multiCheckboxPlus avec addValue) */ addedOptions?: string; /** * Links des champs Finder sérialisés en JSON (pour answer.links). Format: { "organizations": { "mongoId": { "name": "...", "type": "organizations" } } } */ links?: string; [k: string]: unknown; } export interface GetCoformAnswerHistoryData { /** * ID de la réponse dont on veut l'historique */ answerId: string; [k: string]: unknown; } export interface GetCoformMultievalDataData { /** * ID de la réponse */ answerId: string; /** * Optionnel : si fourni, ne retourne que la step spécifiée. Sinon, toutes les steps avec multi-eval. */ stepKey?: string; [k: string]: unknown; } export interface GetCoformCommontableContributorsData { /** * ID du formulaire parent */ formId: string; /** * Clé originale de l'input commonTable (sans préfixe yesOrNo) */ inputKey: string; /** * Tableau JSON sérialisé des criteriaIds correspondant à la ligne agrégée (commonTable peut dédupliquer plusieurs criterias sous un même usage côté React). Ex: ["criteria1778265370227"] */ criteriaIds: string; [k: string]: unknown; } export interface AddVoteData { /** * ID de l'élément (commentaire ou news) sur lequel voter */ id: string; /** * Type de collection concernée */ collection: "comments" | "news"; /** * Type d'action à effectuer (vote) */ action: "vote"; details: { /** * Statut du vote (ex: 'like', 'dislike', etc.) */ status: string; }; [k: string]: unknown; } export interface AddReportAbuseData { /** * ID de l'élément (commentaire ou news) à signaler */ id: string; /** * Type de collection concernée */ collection: "comments" | "news"; /** * Type d'action à effectuer (signalement d'abus) */ action: "reportAbuse"; details: { /** * Raison du signalement (requis) */ reason: string; /** * Commentaire expliquant le signalement (optionelle) */ comment?: string; }; [k: string]: unknown; } export interface UpdatePathValueData { /** * ID de l’utilisateur */ id: string; /** * Collection de l’entité */ collection: "citoyens" | "organizations" | "projects" | "events" | "poi" | "answers" | "forms" | "actions"; /** * Chemin de la valeur à mettre à jour */ path: string; /** * Chemin parent utilise pour une suppression (pull) */ pull?: string; arrayForm?: boolean; setType?: string | { path: string; type: string; }[]; /** * Valeur à mettre à jour (peut être un objet, un tableau, une chaîne, etc.) */ value: string | number | boolean | { [k: string]: unknown; } | unknown[] | null; /** * Mode multi-field merge : `value` doit être un objet, chaque clé devient un sub-path et est mise à jour individuellement (vs `$set` qui écrase l'objet entier). Les sous-clés à `null`/`""` sont supprimées (`$unset`). Combinable avec `setType: Array` pour coercion par sous-clé. */ updatePartial?: boolean; /** * ID du Form parent. Utilisé côté backend pour : (1) authorisation hiérarchique sur sub-forms (admin du Form parent autorisé à modifier les sub-inputs), (2) invalidation du cache de traduction du Form parent après modification. */ formParentId?: string; /** * Avec `arrayForm`, désactive le mode `$push` et force `$set` (écrase l'array entier). Cas legacy — préférer omettre `arrayForm` pour écraser un array. */ edit?: boolean; [k: string]: unknown; } export interface DeleteDocumentByContextData { /** * ID de l’utilisateur */ parentId?: string; /** * Type de contexte de l’entité */ parentType?: "citoyens" | "organizations" | "projects" | "events" | "poi"; path: "communecter"; /** * ID image/document à supprimer */ ids?: string; pathParams?: { /** * ID du contexte de l’entité */ contextId: string; /** * Type de contexte de l’entité */ contextType: "citoyens" | "organizations" | "projects" | "events" | "poi"; [k: string]: unknown; }; [k: string]: unknown; } export interface DeleteDocumentByIdData { pathParams?: { /** * ID MongoDB du document à supprimer */ id: string; [k: string]: unknown; }; [k: string]: unknown; } export interface DemoteAdminData { parentId: string; /** * Type de contexte de l’entité */ parentType: "organizations" | "projects"; childId: string; childType: "citoyens"; connect: "members" | "contributors"; isAdmin: false; [k: string]: unknown; } export interface CostumFilterCoformData { /** * Données de recherche pour le filtre */ searchedData?: { [k: string]: unknown; }; /** * Slug du costume */ costumSlug?: string; /** * ID du costume */ costumId?: string; /** * Type du costume */ costumType?: string; [k: string]: unknown; } export interface CostumFilterCoformByPathData { /** * Discriminant de la branche B : chemins de la thématique et du finder. Sa présence aiguille le controller vers le mode single-filtre client-driven. */ params: { /** * Chemin de la thématique dans answers (ex: `formKey.multiCheckboxPlus...`). Devient `path` côté backend. */ thematicPath: string; /** * Chemin du finder (ex: `answers.formKey.finder...`). Optionnel : défaut backend `links.organizations`. */ finderPath?: string; }; /** * Types d'entités à inclure (typiquement `["answers"]`). */ searchType?: string[]; /** * Projection : champs à retourner (incluant thematicPath et finderPath). */ fields?: string[]; /** * Filtres MongoDB additionnels (objet) ou chaîne vide. */ filters?: { [k: string]: unknown; } | ""; /** * Champ de tri (clé = champ, valeur = 1 ou -1). */ sortBy?: { [k: string]: 1 | -1; }; /** * Index de départ pour la pagination. */ indexMin?: number; /** * Nombre d'éléments à récupérer (haut par défaut : agrégation des valeurs distinctes). */ indexStep?: number; /** * Comptage des types dans la réponse. */ count?: boolean; /** * Extension Fediverse (toujours désactivée). */ fediverse?: boolean; /** * Si true, ignore le filtre sourceKey côté backend (recherche dans tout le réseau, pas seulement le costum courant). */ notSourceKey?: boolean; /** * Type initial de la recherche (vide par défaut). */ initType?: string; /** * Localités ciblées (object keyé, array d'objets, ou chaîne vide). */ locality?: { [k: string]: unknown; } | { [k: string]: unknown; }[] | ""; /** * ID du contexte costum (auto-injecté par _withCostumContext). */ contextId?: string; /** * Type du contexte costum (auto-injecté). */ contextType?: "projects" | "organizations"; /** * Slug du costum (auto-injecté par _withCostumContext). */ costumSlug?: string; /** * Alias historique de contextId (auto-injecté). */ costumId?: string; /** * Alias historique de contextType (auto-injecté). */ costumType?: "projects" | "organizations"; /** * Mode édition costum (toujours désactivé). */ costumEditMode?: boolean; /** * Clés de source pour filtrer (ignoré si notSourceKey=true). */ sourceKey?: string[]; [k: string]: unknown; } export interface GetCountriesData { /** * Slug personnalisé */ costumSlug?: string; /** * Mode édition personnalisé (boolean, string ou number) */ costumEditMode?: ("true" | "false") | (0 | 1) | boolean; /** * ID personnalisé (format ObjectID MongoDB) */ costumId?: string; /** * Type de collection */ costumType?: "organizations" | "projects" | "events" | "citoyens" | "poi"; [k: string]: unknown; } export interface SearchZonesData { /** * Code du pays pour la recherche */ countryCode: unknown[]; /** * Niveau de la zone géographique pour la recherche */ level: unknown[]; /** * Critère de tri des résultats */ sortBy?: string; /** * ID du niveau supérieur pour la recherche */ upperLevelId?: string; /** * Slug du costume */ costumSlug?: string; /** * ID du costume */ costumId?: string; /** * Type du costume */ costumType?: string; [k: string]: unknown; } export interface CoformAnswersByFormsData { /** * Liste des IDs de formulaires pour lesquels récupérer les réponses et le champ de recherche */ forms?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^[a-fA-F0-9]{24}$". */ [k: string]: string; }; [k: string]: unknown; } export interface GenerateAnswerFromFormData { action?: string; pathParams?: { /** * ID du formulaire pour lequel générer une nouvelle réponse */ formId: string; [k: string]: unknown; }; [k: string]: unknown; } export interface FundingEnvelopeData { /** * ID du contexte de l’entité */ contextId: string; /** * Type de contexte de l’entité */ contextType: string; /** * ID du formulaire pour lequel générer une nouvelle réponse */ formId?: string; action?: string; /** * ID du projet */ project?: string; /** * ID de la réponse */ answer?: string; /** * ID du financeur */ financerId?: string; financerType?: string; /** * Paramètres supplémentaires pour la recherche d’enveloppes */ params?: { [k: string]: unknown; }; [k: string]: unknown; } export interface CoremuOperationData { /** * ID du formulaire */ form: string; /** * Nouvelle réponse à créer */ answer: "new"; /** * Action à exécuter */ action: "generateproposition"; /** * ID du projet */ project: string; [k: string]: unknown; } export interface CostumProjectActionRequestNewData { /** * Nom de l'action */ name: string; /** * Statut de l'action. Sert aussi de trigger côté backend : 'done' ajoute startDate/endDate auto, 'tracking' active le mode tracking, 'discuter'/'next'/'totest' ajoutent un tag. */ status: "todo" | "done" | "tracking" | "discuter" | "next" | "totest" | "disabled" | "closed"; /** * ID du projet parent */ parentId: string; /** * Type du parent */ parentType: "projects"; /** * Montant financé (default: 1) */ credits?: number; /** * Jalon associé à l'action */ milestone?: { /** * ID du jalon associé */ milestoneId: string; /** * Date de début du jalon (ISO 8601, convertie en MongoDate UTC côté backend) */ startDate?: string; /** * Date de fin du jalon (ISO 8601, convertie en MongoDate UTC côté backend) */ endDate?: string; }; /** * Date et heure de début (ISO 8601 avec offset) */ startDate?: string; /** * Date et heure de fin (ISO 8601 avec offset) */ endDate?: string; /** * Temps passé en minutes (utilisé pour calculer endDate quand status=done) */ timeSpent?: number; /** * Nombre minimum de contributeurs */ min?: number; /** * Nombre maximum de contributeurs (doit être >= min côté backend) */ max?: number; /** * Niveau d'importance de l'action */ importance?: string; /** * ID de la room parente. Si absent, auto-créée par Room::getOrCreateActionRoom côté backend */ idParentRoom?: string; /** * Si true, ajoute l'auteur courant comme contributor admin. ATTENTION : écrasé si 'mentions' est aussi fourni. */ is_contributor?: boolean; /** * userId à assigner comme contributor admin. ATTENTION : écrasé si 'mentions' est aussi fourni. */ assign?: string; /** * URLs externes associées à l'action (tableau de strings, ou "" pour vider). Passthrough côté backend. */ urls?: string[] | ""; /** * Liste des contributeurs assignés à l'action par username. Résolu côté backend en links.contributors.{userId}. ATTENTION : ÉCRASE 'assign' et 'is_contributor' si fournis ensemble. */ mentions?: string[]; /** * Liste des tags associés à l'action. BUG CONNU BACKEND : les tags sont dupliqués dans la réponse (array_merge avec soi-même côté PHP). */ tags?: string[]; [k: string]: unknown; } export interface CostumProjectActionRequestSetStatusData { /** * ID de l'action */ id: string; /** * Nouveau statut. Triggers backend : 'done' set endDate=now, 'tracking' set startDate=now+tracking:true, 'discuter'/'next'/'totest' ajoutent un tag et forcent status='todo', 'todo' unset startDate/endDate, 'closed' purge les tags discuter/totest/next, 'disabled' unset tracking. */ status: "todo" | "done" | "tracking" | "discuter" | "next" | "totest" | "disabled" | "closed"; /** * Optionnel : userId qui effectue le changement (utilisé pour updateStatus[].author et notification RC). Par défaut session userId. */ user?: string; [k: string]: unknown; } export interface CostumProjectActionRequestSetDateData { /** * ID de l'action */ id: string; /** * Date de début ISO 8601, ou chaîne vide pour effacer ($unset) */ startDate?: string; /** * Date de fin ISO 8601, ou chaîne vide pour effacer ($unset) */ endDate?: string; [k: string]: unknown; } export interface CostumProjectActionRequestSetContributorsData { /** * ID de l'action (côté backend lu via $_POST['action'], pas 'id') */ action: string; /** * Mode A : remplace la liste complète des contributeurs par cet array de userIds. */ contributors?: string[]; /** * Mode B/C : userId à ajouter (participate=1) ou retirer (participate=0). */ contributor?: string; /** * Mode B/C : 1=join, 0=quit. Couplé avec `contributor`. */ participate?: 0 | 1; [k: string]: unknown; } export interface CostumProjectActionRequestCancelData { /** * ID de l'action à annuler */ id: string; [k: string]: unknown; } export interface CostumProjectActionRequestArchiveData { /** * ID de l'action à archiver */ id: string; [k: string]: unknown; } export interface LinkDiscourseAccountData { /** * Nom d'utilisateur du compte Discourse */ username: string; /** * Slug du costume */ costumSlug: string; /** * ID du costume */ costumId: string; /** * Type du costume */ costumType: string; [k: string]: unknown; } export interface UnlinkDiscourseAccountData { /** * Slug du costume */ costumSlug: string; /** * ID du costume */ costumId: string; /** * Type du costume */ costumType: string; [k: string]: unknown; } export interface DiscourseProfileData { /** * Nom d'utilisateur du compte Discourse */ username: string; /** * Slug du costume */ costumSlug: string; /** * ID du costume */ costumId: string; /** * Type du costume */ costumType: string; [k: string]: unknown; } export interface DiscourseCheckEmailData { /** * Slug du costume */ costumSlug: string; /** * ID du costume */ costumId: string; /** * Type du costume */ costumType: string; [k: string]: unknown; } export interface DiscourseDismissLinkData { /** * Slug du costume */ costumSlug: string; /** * ID du costume */ costumId: string; /** * Type du costume */ costumType: string; [k: string]: unknown; } export interface LinkMediawikiAccountData { /** * Nom d'utilisateur du compte MediaWiki */ username: string; /** * Slug du costume */ costumSlug: string; /** * ID du costume */ costumId: string; /** * Type du costume */ costumType: string; [k: string]: unknown; } export interface UnlinkMediawikiAccountData { /** * Slug du costume */ costumSlug: string; /** * ID du costume */ costumId: string; /** * Type du costume */ costumType: string; [k: string]: unknown; } export interface GetMediawikiContributionsData { /** * Nom d'utilisateur du compte MediaWiki */ username: string; /** * Nombre maximum de contributions à retourner */ limit?: number; /** * Slug du costume */ costumSlug: string; /** * ID du costume */ costumId: string; /** * Type du costume */ costumType: string; [k: string]: unknown; } export interface AddClassifiedData { id: string; collection: "classifieds"; key: "classified"; name: string; section: "need" | "offer"; category: "service" | "competence" | "material"; subtype: string; /** * Objet contenant les entités parentes (clé = ID). Si absent, le default pose l'utilisateur connecté comme parent. */ parent?: { /** * This interface was referenced by `undefined`'s JSON-Schema definition * via the `patternProperty` "^(?:[a-f0-9]{24}|@userId)$". */ [k: string]: { type: string; name?: string; }; }; description?: string; tags?: string[]; preferences?: { isOpenData: boolean; isOpenEdition: boolean; [k: string]: unknown; }; geo?: { "@type"?: "GeoCoordinates"; latitude: string | number; longitude: string | number; }; geoPosition?: { type: "Point"; /** * @minItems 2 * @maxItems 2 */ coordinates: [number, number]; float: true; [k: string]: unknown; }; address?: { "@type": "PostalAddress"; addressCountry: string; codeInsee: string; addressLocality: string; localityId: string; level1: string; level1Name: string; level2?: string; level2Name?: string; level3?: string; level3Name?: string; level4?: string; level4Name?: string; postalCode?: string; streetAddress?: string; }; scope: ""; /** * Slug du costum d'origine */ costumSlug?: string; /** * ID Mongo du costum d'origine */ costumId?: string; /** * Type d'entité du costum (ex: projects) */ costumType?: string; [k: string]: unknown; } export interface PersonActivateData { /** * Identifiant (_id) du compte à activer */ user: string; /** * Clé de validation = sha256(user + email) */ validationKey: string; [k: string]: unknown; } export interface ImportPreviewData { /** * Liste d'éléments vérifiés à prévisualiser. */ list: { name?: string; address?: { streetAddress?: string; postalCode?: string; addressLocality?: string; addressCountry?: string; [k: string]: unknown; }; warnings?: string[]; msgError?: string; [k: string]: unknown; }[]; [k: string]: unknown; } export interface ExportElementsData { /** * Types/collections à exporter (events, organizations, projects, poi, citoyens, NGO…). * * @minItems 1 */ searchType: [string, ...string[]]; /** * Terme de recherche optionnel. */ name?: string; /** * Ordre/sélection des colonnes. */ fields?: string[]; /** * Libellés de colonnes {indexFieldString: label}. */ labels?: { [k: string]: unknown; }; /** * Si défini (≠ faux PHP), colonnes de 1er niveau seulement. */ multicolumn?: { [k: string]: unknown; }; /** * Colonnes de contributeurs par rôle. */ roles?: string[]; /** * Filtres de recherche. */ filters?: { [k: string]: unknown; }; /** * Restreint l'export à ces source.key (scope costum). Posé automatiquement par BaseEntity.exportElements. */ sourceKey?: string[]; [k: string]: unknown; } export interface ImportElementsData { /** * Tableau de lignes encodé en JSON (chaque ligne : {name, ...champs, rowIndex?}). */ data: string; /** * Collection cible. */ typeElement: "poi" | "organizations" | "projects" | "events" | "citoyens"; /** * Id de l'élément costum parent (rattachement/lien). */ costumId?: string; /** * Type de l'élément costum parent. */ costumType?: string; /** * Slug costum -> source.key. */ costumSlug?: string; /** * Taille totale (progression). */ totalSize?: string; [k: string]: unknown; } export interface GeocodageData { /** * Tableau de lignes encodé en JSON ({name, address?, hotRowIndex?, latitude?, longitude?}). */ data: string; [k: string]: unknown; } export interface ValidateGroupData { /** * Collection de l'élément (organizations, projects, poi, events, citoyens…). */ type: string; /** * ID de l'élément à (dé)valider. */ id: string; /** * "true" = valider (unset toBeValidated) ; sinon dévalider (repose le flag). */ valid: "true" | "false"; /** * Slug du costum courant (scope). Posé automatiquement par BaseEntity.validateGroup. */ costumSlug?: string; [k: string]: unknown; } export interface SetSourceData { /** * ID de l'élément. */ id: string; /** * Collection de l'élément. */ type: string; /** * Slug source (overridé par le costum courant). */ sourceKey: string; /** * Slug du costum courant (scope). Posé automatiquement par BaseEntity. */ costumSlug?: string; /** * ID du costum parent (nettoyage de liens). Optionnel. */ costumId?: string; /** * Type du costum parent (nettoyage de liens). Optionnel. */ costumType?: string; pathParams?: { /** * add = référencer ; remove = retirer. */ action: "add" | "remove"; /** * reference (référencé) ou source (rattaché/validé). */ set: "reference" | "source"; [k: string]: unknown; }; [k: string]: unknown; } export interface ModerateData { [k: string]: unknown; } export interface NewsModerateData { /** * Sous-action ($_REQUEST['subAction'] legacy) */ subAction: "consolidateModerateNews" | "saveModerate" | "getNextIdToModerate"; /** * ID de l'élément modéré (requis sauf getNextIdToModerate) */ id?: string; /** * Vote (STRING 'true'|'false' — stocké/comparé en string, parité legacy). Requis pour saveModerate. */ isAnAbuse?: "true" | "false"; [k: string]: unknown; } export interface CommentModerateData { /** * Sous-action ($_REQUEST['subAction'] legacy) */ subAction: "consolidateModerateComment" | "saveModerate"; /** * ID de l'élément modéré (requis sauf getNextIdToModerate) */ id?: string; /** * Vote (STRING 'true'|'false' — stocké/comparé en string, parité legacy). Requis pour saveModerate. */ isAnAbuse?: "true" | "false"; [k: string]: unknown; } export interface UploadDocumentData { /** * Fichier à uploader */ qqfile: { [k: string]: unknown; }; /** * Slug du costum actif (stampe source.key=costumSlug) */ costumSlug?: string; /** * ID du contexte costum */ costumId?: string; /** * Type (collection) du contexte costum */ costumType?: string; /** * Sous-clé de galerie (optionnelle) */ subKey?: string; /** * Dossier d'album cible (optionnel) */ folderId?: string; pathParams?: { /** * Type (collection) de l'élément porteur */ folder: "citoyens" | "projects" | "organizations" | "events" | "poi" | "classifieds"; /** * ID de l'élément porteur (doit exister) */ ownerId: string; /** * Nature du document */ docType: "image" | "file"; /** * Clé de contenu (ex: 'slider' pour galerie, 'file', 'profil', 'banner'...) */ contentKey: string; [k: string]: unknown; }; [k: string]: unknown; }