@communecter/cocolight-api-client 1.0.122 → 1.0.124
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cocolight-api-client.browser.js +2 -2
- package/dist/cocolight-api-client.cjs +1 -1
- package/dist/cocolight-api-client.mjs.js +1 -1
- package/dist/cocolight-api-client.vite.mjs.js +1 -1
- package/dist/cocolight-api-client.vite.mjs.js.map +1 -1
- package/package.json +1 -1
- package/src/Api.ts +20 -4
- package/src/ApiClient.ts +28 -0
- package/src/api/BaseEntity.ts +484 -149
- package/src/api/Classified.ts +171 -0
- package/src/api/EndpointApi.ts +291 -118
- package/src/api/EndpointApi.types.ts +554 -18
- package/src/api/EntityRegistry.ts +11 -3
- package/src/api/Event.ts +6 -1
- package/src/api/Organization.ts +15 -2
- package/src/api/Poi.ts +14 -4
- package/src/api/Project.ts +7 -2
- package/src/api/User.ts +1 -0
- package/src/api/UserApi.ts +3 -2
- package/src/api/serverDataType/Classified.ts +152 -0
- package/src/endpoints.module.ts +181 -51
- package/src/index.ts +3 -0
- package/src/types/entities.ts +3 -2
- package/types/Api.d.ts +2 -0
- package/types/ApiClient.d.ts +15 -0
- package/types/api/BaseEntity.d.ts +184 -12
- package/types/api/Classified.d.ts +30 -0
- package/types/api/EndpointApi.d.ts +108 -1
- package/types/api/EndpointApi.types.d.ts +503 -22
- package/types/api/EntityRegistry.d.ts +1 -1
- package/types/api/Organization.d.ts +1 -1
- package/types/api/Poi.d.ts +1 -0
- package/types/api/User.d.ts +1 -0
- package/types/api/serverDataType/Classified.d.ts +72 -0
- package/types/endpoints.module.d.ts +3835 -480
- package/types/index.d.ts +3 -0
- package/types/types/entities.d.ts +3 -2
|
@@ -442,7 +442,7 @@ export interface GetElementsAboutData {
|
|
|
442
442
|
/**
|
|
443
443
|
* Type d'entité
|
|
444
444
|
*/
|
|
445
|
-
type: "citoyens" | "projects" | "organizations" | "events" | "poi" | "badges" | "answers";
|
|
445
|
+
type: "citoyens" | "projects" | "organizations" | "events" | "poi" | "badges" | "answers" | "classifieds" | "forms";
|
|
446
446
|
/**
|
|
447
447
|
* ID de l'utilisateur ou de l'entité
|
|
448
448
|
*/
|
|
@@ -991,6 +991,8 @@ export interface GlobalAutocompleteData {
|
|
|
991
991
|
| "projects"
|
|
992
992
|
| "citoyens"
|
|
993
993
|
| "poi"
|
|
994
|
+
| "answers"
|
|
995
|
+
| "forms"
|
|
994
996
|
)[];
|
|
995
997
|
/**
|
|
996
998
|
* Balises (tags) à utiliser pour filtrer la recherche
|
|
@@ -1008,6 +1010,8 @@ export interface GlobalAutocompleteData {
|
|
|
1008
1010
|
| "projects"
|
|
1009
1011
|
| "citoyens"
|
|
1010
1012
|
| "poi"
|
|
1013
|
+
| "answers"
|
|
1014
|
+
| "forms"
|
|
1011
1015
|
)[];
|
|
1012
1016
|
/**
|
|
1013
1017
|
* Critère de recherche (actuellement vide)
|
|
@@ -2624,22 +2628,6 @@ export interface AddFavorisData {
|
|
|
2624
2628
|
*/
|
|
2625
2629
|
path: "preferences.search";
|
|
2626
2630
|
arrayForm: true;
|
|
2627
|
-
value: {
|
|
2628
|
-
url: string;
|
|
2629
|
-
name: string;
|
|
2630
|
-
description?: string;
|
|
2631
|
-
tags?: string[];
|
|
2632
|
-
locality?: {
|
|
2633
|
-
/**
|
|
2634
|
-
* This interface was referenced by `undefined`'s JSON-Schema definition
|
|
2635
|
-
* via the `patternProperty` "^[a-f0-9]{24}$".
|
|
2636
|
-
*/
|
|
2637
|
-
[k: string]: {
|
|
2638
|
-
name: string;
|
|
2639
|
-
type: string;
|
|
2640
|
-
};
|
|
2641
|
-
};
|
|
2642
|
-
};
|
|
2643
2631
|
[k: string]: unknown;
|
|
2644
2632
|
}
|
|
2645
2633
|
|
|
@@ -2719,6 +2707,36 @@ export interface AddOrganizationData {
|
|
|
2719
2707
|
float: true;
|
|
2720
2708
|
[k: string]: unknown;
|
|
2721
2709
|
};
|
|
2710
|
+
costum?: {
|
|
2711
|
+
bannerImageUrl?: string;
|
|
2712
|
+
bannerLogoUrl?: string;
|
|
2713
|
+
bannerText?: string;
|
|
2714
|
+
/**
|
|
2715
|
+
* Pour bien indiquer que l'orga est un commune transparente
|
|
2716
|
+
*/
|
|
2717
|
+
transparentCommune?: boolean;
|
|
2718
|
+
/**
|
|
2719
|
+
* Pour bien indiquer que l'orga est un centre ville
|
|
2720
|
+
*/
|
|
2721
|
+
cocity?: boolean;
|
|
2722
|
+
slug?: string;
|
|
2723
|
+
typeCocity?: string;
|
|
2724
|
+
[k: string]: unknown;
|
|
2725
|
+
};
|
|
2726
|
+
/**
|
|
2727
|
+
* Thématiques de l’organisation
|
|
2728
|
+
*/
|
|
2729
|
+
thematic?: string[];
|
|
2730
|
+
/**
|
|
2731
|
+
* Dictionnaire de filières par thématique
|
|
2732
|
+
*/
|
|
2733
|
+
filiere?: {
|
|
2734
|
+
[k: string]: {
|
|
2735
|
+
name: string;
|
|
2736
|
+
icon: string;
|
|
2737
|
+
tags: string[];
|
|
2738
|
+
};
|
|
2739
|
+
};
|
|
2722
2740
|
address?: {
|
|
2723
2741
|
"@type": "PostalAddress";
|
|
2724
2742
|
addressCountry: string;
|
|
@@ -2747,6 +2765,237 @@ export interface AddOrganizationData {
|
|
|
2747
2765
|
streetAddress?: string;
|
|
2748
2766
|
};
|
|
2749
2767
|
scope: "";
|
|
2768
|
+
/**
|
|
2769
|
+
* Nom de la structure porteuse (différent du nom du tiers-lieu)
|
|
2770
|
+
*/
|
|
2771
|
+
holderOrganization?: string;
|
|
2772
|
+
/**
|
|
2773
|
+
* Mode de gestion (Association, Collectif citoyen, SCIC, etc.)
|
|
2774
|
+
*/
|
|
2775
|
+
manageModel?: string;
|
|
2776
|
+
/**
|
|
2777
|
+
* Famille(s) de tiers-lieux (Coworking, Fablab, Foodlab, etc.)
|
|
2778
|
+
*/
|
|
2779
|
+
typePlace?: string;
|
|
2780
|
+
/**
|
|
2781
|
+
* Réseau accompagnateur (ex: Compagnon France Tiers-Lieux)
|
|
2782
|
+
*/
|
|
2783
|
+
compagnon?: string;
|
|
2784
|
+
/**
|
|
2785
|
+
* Surface bâtie en m²
|
|
2786
|
+
*/
|
|
2787
|
+
buildingSurfaceArea?: number;
|
|
2788
|
+
/**
|
|
2789
|
+
* Surface extérieure en m²
|
|
2790
|
+
*/
|
|
2791
|
+
siteSurfaceArea?: number;
|
|
2792
|
+
/**
|
|
2793
|
+
* Date d'ouverture du tiers-lieu (format libre, ex: 05/05/2026)
|
|
2794
|
+
*/
|
|
2795
|
+
openingDate?: string;
|
|
2796
|
+
/**
|
|
2797
|
+
* 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.
|
|
2798
|
+
*
|
|
2799
|
+
* @minItems 7
|
|
2800
|
+
* @maxItems 7
|
|
2801
|
+
*/
|
|
2802
|
+
openingHours?: [
|
|
2803
|
+
(
|
|
2804
|
+
| ""
|
|
2805
|
+
| {
|
|
2806
|
+
/**
|
|
2807
|
+
* Jour de la semaine
|
|
2808
|
+
*/
|
|
2809
|
+
dayOfWeek: "Mo" | "Tu" | "We" | "Th" | "Fr" | "Sa" | "Su";
|
|
2810
|
+
/**
|
|
2811
|
+
* Liste des créneaux horaires
|
|
2812
|
+
*/
|
|
2813
|
+
hours: {
|
|
2814
|
+
/**
|
|
2815
|
+
* Heure d'ouverture (HH:MM)
|
|
2816
|
+
*/
|
|
2817
|
+
opens: string;
|
|
2818
|
+
/**
|
|
2819
|
+
* Heure de fermeture (HH:MM)
|
|
2820
|
+
*/
|
|
2821
|
+
closes: string;
|
|
2822
|
+
}[];
|
|
2823
|
+
}
|
|
2824
|
+
),
|
|
2825
|
+
(
|
|
2826
|
+
| ""
|
|
2827
|
+
| {
|
|
2828
|
+
/**
|
|
2829
|
+
* Jour de la semaine
|
|
2830
|
+
*/
|
|
2831
|
+
dayOfWeek: "Mo" | "Tu" | "We" | "Th" | "Fr" | "Sa" | "Su";
|
|
2832
|
+
/**
|
|
2833
|
+
* Liste des créneaux horaires
|
|
2834
|
+
*/
|
|
2835
|
+
hours: {
|
|
2836
|
+
/**
|
|
2837
|
+
* Heure d'ouverture (HH:MM)
|
|
2838
|
+
*/
|
|
2839
|
+
opens: string;
|
|
2840
|
+
/**
|
|
2841
|
+
* Heure de fermeture (HH:MM)
|
|
2842
|
+
*/
|
|
2843
|
+
closes: string;
|
|
2844
|
+
}[];
|
|
2845
|
+
}
|
|
2846
|
+
),
|
|
2847
|
+
(
|
|
2848
|
+
| ""
|
|
2849
|
+
| {
|
|
2850
|
+
/**
|
|
2851
|
+
* Jour de la semaine
|
|
2852
|
+
*/
|
|
2853
|
+
dayOfWeek: "Mo" | "Tu" | "We" | "Th" | "Fr" | "Sa" | "Su";
|
|
2854
|
+
/**
|
|
2855
|
+
* Liste des créneaux horaires
|
|
2856
|
+
*/
|
|
2857
|
+
hours: {
|
|
2858
|
+
/**
|
|
2859
|
+
* Heure d'ouverture (HH:MM)
|
|
2860
|
+
*/
|
|
2861
|
+
opens: string;
|
|
2862
|
+
/**
|
|
2863
|
+
* Heure de fermeture (HH:MM)
|
|
2864
|
+
*/
|
|
2865
|
+
closes: string;
|
|
2866
|
+
}[];
|
|
2867
|
+
}
|
|
2868
|
+
),
|
|
2869
|
+
(
|
|
2870
|
+
| ""
|
|
2871
|
+
| {
|
|
2872
|
+
/**
|
|
2873
|
+
* Jour de la semaine
|
|
2874
|
+
*/
|
|
2875
|
+
dayOfWeek: "Mo" | "Tu" | "We" | "Th" | "Fr" | "Sa" | "Su";
|
|
2876
|
+
/**
|
|
2877
|
+
* Liste des créneaux horaires
|
|
2878
|
+
*/
|
|
2879
|
+
hours: {
|
|
2880
|
+
/**
|
|
2881
|
+
* Heure d'ouverture (HH:MM)
|
|
2882
|
+
*/
|
|
2883
|
+
opens: string;
|
|
2884
|
+
/**
|
|
2885
|
+
* Heure de fermeture (HH:MM)
|
|
2886
|
+
*/
|
|
2887
|
+
closes: string;
|
|
2888
|
+
}[];
|
|
2889
|
+
}
|
|
2890
|
+
),
|
|
2891
|
+
(
|
|
2892
|
+
| ""
|
|
2893
|
+
| {
|
|
2894
|
+
/**
|
|
2895
|
+
* Jour de la semaine
|
|
2896
|
+
*/
|
|
2897
|
+
dayOfWeek: "Mo" | "Tu" | "We" | "Th" | "Fr" | "Sa" | "Su";
|
|
2898
|
+
/**
|
|
2899
|
+
* Liste des créneaux horaires
|
|
2900
|
+
*/
|
|
2901
|
+
hours: {
|
|
2902
|
+
/**
|
|
2903
|
+
* Heure d'ouverture (HH:MM)
|
|
2904
|
+
*/
|
|
2905
|
+
opens: string;
|
|
2906
|
+
/**
|
|
2907
|
+
* Heure de fermeture (HH:MM)
|
|
2908
|
+
*/
|
|
2909
|
+
closes: string;
|
|
2910
|
+
}[];
|
|
2911
|
+
}
|
|
2912
|
+
),
|
|
2913
|
+
(
|
|
2914
|
+
| ""
|
|
2915
|
+
| {
|
|
2916
|
+
/**
|
|
2917
|
+
* Jour de la semaine
|
|
2918
|
+
*/
|
|
2919
|
+
dayOfWeek: "Mo" | "Tu" | "We" | "Th" | "Fr" | "Sa" | "Su";
|
|
2920
|
+
/**
|
|
2921
|
+
* Liste des créneaux horaires
|
|
2922
|
+
*/
|
|
2923
|
+
hours: {
|
|
2924
|
+
/**
|
|
2925
|
+
* Heure d'ouverture (HH:MM)
|
|
2926
|
+
*/
|
|
2927
|
+
opens: string;
|
|
2928
|
+
/**
|
|
2929
|
+
* Heure de fermeture (HH:MM)
|
|
2930
|
+
*/
|
|
2931
|
+
closes: string;
|
|
2932
|
+
}[];
|
|
2933
|
+
}
|
|
2934
|
+
),
|
|
2935
|
+
(
|
|
2936
|
+
| ""
|
|
2937
|
+
| {
|
|
2938
|
+
/**
|
|
2939
|
+
* Jour de la semaine
|
|
2940
|
+
*/
|
|
2941
|
+
dayOfWeek: "Mo" | "Tu" | "We" | "Th" | "Fr" | "Sa" | "Su";
|
|
2942
|
+
/**
|
|
2943
|
+
* Liste des créneaux horaires
|
|
2944
|
+
*/
|
|
2945
|
+
hours: {
|
|
2946
|
+
/**
|
|
2947
|
+
* Heure d'ouverture (HH:MM)
|
|
2948
|
+
*/
|
|
2949
|
+
opens: string;
|
|
2950
|
+
/**
|
|
2951
|
+
* Heure de fermeture (HH:MM)
|
|
2952
|
+
*/
|
|
2953
|
+
closes: string;
|
|
2954
|
+
}[];
|
|
2955
|
+
}
|
|
2956
|
+
)
|
|
2957
|
+
];
|
|
2958
|
+
/**
|
|
2959
|
+
* URLs de vidéos de présentation
|
|
2960
|
+
*/
|
|
2961
|
+
video?: string[];
|
|
2962
|
+
/**
|
|
2963
|
+
* Numéro de téléphone de contact
|
|
2964
|
+
*/
|
|
2965
|
+
telephone?: string;
|
|
2966
|
+
/**
|
|
2967
|
+
* Description longue (markdown supporté)
|
|
2968
|
+
*/
|
|
2969
|
+
description?: string;
|
|
2970
|
+
/**
|
|
2971
|
+
* Source d'insertion (costum)
|
|
2972
|
+
*/
|
|
2973
|
+
source?: {
|
|
2974
|
+
insertOrign?: string;
|
|
2975
|
+
keys?: string[];
|
|
2976
|
+
key?: string;
|
|
2977
|
+
[k: string]: unknown;
|
|
2978
|
+
};
|
|
2979
|
+
/**
|
|
2980
|
+
* Tag principal (ex: TiersLieux)
|
|
2981
|
+
*/
|
|
2982
|
+
mainTag?: string;
|
|
2983
|
+
/**
|
|
2984
|
+
* Slug du costum d'origine
|
|
2985
|
+
*/
|
|
2986
|
+
costumSlug?: string;
|
|
2987
|
+
/**
|
|
2988
|
+
* ID Mongo du costum d'origine
|
|
2989
|
+
*/
|
|
2990
|
+
costumId?: string;
|
|
2991
|
+
/**
|
|
2992
|
+
* Type d'entité du costum (ex: projects)
|
|
2993
|
+
*/
|
|
2994
|
+
costumType?: string;
|
|
2995
|
+
/**
|
|
2996
|
+
* Mode édition costum
|
|
2997
|
+
*/
|
|
2998
|
+
costumEditMode?: boolean;
|
|
2750
2999
|
[k: string]: unknown;
|
|
2751
3000
|
}
|
|
2752
3001
|
|
|
@@ -3984,6 +4233,9 @@ export interface GlobalAutocompleteCostumData {
|
|
|
3984
4233
|
| "events"
|
|
3985
4234
|
| "citoyens"
|
|
3986
4235
|
| "poi"
|
|
4236
|
+
| "answers"
|
|
4237
|
+
| "forms"
|
|
4238
|
+
| "classifieds"
|
|
3987
4239
|
)[];
|
|
3988
4240
|
/**
|
|
3989
4241
|
* Balises (tags) à utiliser pour filtrer la recherche
|
|
@@ -4003,6 +4255,9 @@ export interface GlobalAutocompleteCostumData {
|
|
|
4003
4255
|
| "events"
|
|
4004
4256
|
| "citoyens"
|
|
4005
4257
|
| "poi"
|
|
4258
|
+
| "answers"
|
|
4259
|
+
| "forms"
|
|
4260
|
+
| "classifieds"
|
|
4006
4261
|
)[];
|
|
4007
4262
|
/**
|
|
4008
4263
|
* Critère de recherche (actuellement vide)
|
|
@@ -4993,12 +5248,22 @@ export interface UpdatePathValueData {
|
|
|
4993
5248
|
/**
|
|
4994
5249
|
* Collection de l’entité
|
|
4995
5250
|
*/
|
|
4996
|
-
collection: "citoyens" | "organizations" | "projects" | "events" | "poi" | "answers" | "forms";
|
|
5251
|
+
collection: "citoyens" | "organizations" | "projects" | "events" | "poi" | "answers" | "forms" | "actions";
|
|
4997
5252
|
/**
|
|
4998
5253
|
* Chemin de la valeur à mettre à jour
|
|
4999
5254
|
*/
|
|
5000
5255
|
path: string;
|
|
5256
|
+
/**
|
|
5257
|
+
* Chemin parent utilise pour une suppression (pull)
|
|
5258
|
+
*/
|
|
5259
|
+
pull?: string;
|
|
5001
5260
|
arrayForm?: boolean;
|
|
5261
|
+
setType?:
|
|
5262
|
+
| string
|
|
5263
|
+
| {
|
|
5264
|
+
path: string;
|
|
5265
|
+
type: string;
|
|
5266
|
+
}[];
|
|
5002
5267
|
/**
|
|
5003
5268
|
* Valeur à mettre à jour (peut être un objet, un tableau, une chaîne, etc.)
|
|
5004
5269
|
*/
|
|
@@ -5204,3 +5469,274 @@ export interface FundingEnvelopeData {
|
|
|
5204
5469
|
};
|
|
5205
5470
|
[k: string]: unknown;
|
|
5206
5471
|
}
|
|
5472
|
+
|
|
5473
|
+
|
|
5474
|
+
export interface CoremuOperationData {
|
|
5475
|
+
/**
|
|
5476
|
+
* ID du formulaire
|
|
5477
|
+
*/
|
|
5478
|
+
form: string;
|
|
5479
|
+
/**
|
|
5480
|
+
* Nouvelle réponse à créer
|
|
5481
|
+
*/
|
|
5482
|
+
answer: "new";
|
|
5483
|
+
/**
|
|
5484
|
+
* Action à exécuter
|
|
5485
|
+
*/
|
|
5486
|
+
action: "generateproposition";
|
|
5487
|
+
/**
|
|
5488
|
+
* ID du projet
|
|
5489
|
+
*/
|
|
5490
|
+
project: string;
|
|
5491
|
+
[k: string]: unknown;
|
|
5492
|
+
}
|
|
5493
|
+
|
|
5494
|
+
|
|
5495
|
+
export interface CostumProjectActionRequestNewData {
|
|
5496
|
+
/**
|
|
5497
|
+
* Nom de l'action
|
|
5498
|
+
*/
|
|
5499
|
+
name: string;
|
|
5500
|
+
/**
|
|
5501
|
+
* Statut de l'action
|
|
5502
|
+
*/
|
|
5503
|
+
status: string;
|
|
5504
|
+
/**
|
|
5505
|
+
* ID du projet parent
|
|
5506
|
+
*/
|
|
5507
|
+
parentId: string;
|
|
5508
|
+
/**
|
|
5509
|
+
* Type du parent
|
|
5510
|
+
*/
|
|
5511
|
+
parentType: "projects";
|
|
5512
|
+
/**
|
|
5513
|
+
* Montant financé
|
|
5514
|
+
*/
|
|
5515
|
+
credits: number;
|
|
5516
|
+
/**
|
|
5517
|
+
* ID du jalon associé
|
|
5518
|
+
*/
|
|
5519
|
+
"milestone[milestoneId]": string;
|
|
5520
|
+
[k: string]: unknown;
|
|
5521
|
+
}
|
|
5522
|
+
|
|
5523
|
+
|
|
5524
|
+
export interface LinkDiscourseAccountData {
|
|
5525
|
+
/**
|
|
5526
|
+
* Nom d'utilisateur du compte Discourse
|
|
5527
|
+
*/
|
|
5528
|
+
username: string;
|
|
5529
|
+
/**
|
|
5530
|
+
* Slug du costume
|
|
5531
|
+
*/
|
|
5532
|
+
costumSlug: string;
|
|
5533
|
+
/**
|
|
5534
|
+
* ID du costume
|
|
5535
|
+
*/
|
|
5536
|
+
costumId: string;
|
|
5537
|
+
/**
|
|
5538
|
+
* Type du costume
|
|
5539
|
+
*/
|
|
5540
|
+
costumType: string;
|
|
5541
|
+
[k: string]: unknown;
|
|
5542
|
+
}
|
|
5543
|
+
|
|
5544
|
+
|
|
5545
|
+
export interface UnlinkDiscourseAccountData {
|
|
5546
|
+
/**
|
|
5547
|
+
* Slug du costume
|
|
5548
|
+
*/
|
|
5549
|
+
costumSlug: string;
|
|
5550
|
+
/**
|
|
5551
|
+
* ID du costume
|
|
5552
|
+
*/
|
|
5553
|
+
costumId: string;
|
|
5554
|
+
/**
|
|
5555
|
+
* Type du costume
|
|
5556
|
+
*/
|
|
5557
|
+
costumType: string;
|
|
5558
|
+
[k: string]: unknown;
|
|
5559
|
+
}
|
|
5560
|
+
|
|
5561
|
+
|
|
5562
|
+
export interface DiscourseProfileData {
|
|
5563
|
+
/**
|
|
5564
|
+
* Nom d'utilisateur du compte Discourse
|
|
5565
|
+
*/
|
|
5566
|
+
username: string;
|
|
5567
|
+
/**
|
|
5568
|
+
* Slug du costume
|
|
5569
|
+
*/
|
|
5570
|
+
costumSlug: string;
|
|
5571
|
+
/**
|
|
5572
|
+
* ID du costume
|
|
5573
|
+
*/
|
|
5574
|
+
costumId: string;
|
|
5575
|
+
/**
|
|
5576
|
+
* Type du costume
|
|
5577
|
+
*/
|
|
5578
|
+
costumType: string;
|
|
5579
|
+
[k: string]: unknown;
|
|
5580
|
+
}
|
|
5581
|
+
|
|
5582
|
+
|
|
5583
|
+
export interface DiscourseCheckEmailData {
|
|
5584
|
+
/**
|
|
5585
|
+
* Slug du costume
|
|
5586
|
+
*/
|
|
5587
|
+
costumSlug: string;
|
|
5588
|
+
/**
|
|
5589
|
+
* ID du costume
|
|
5590
|
+
*/
|
|
5591
|
+
costumId: string;
|
|
5592
|
+
/**
|
|
5593
|
+
* Type du costume
|
|
5594
|
+
*/
|
|
5595
|
+
costumType: string;
|
|
5596
|
+
[k: string]: unknown;
|
|
5597
|
+
}
|
|
5598
|
+
|
|
5599
|
+
|
|
5600
|
+
export interface DiscourseDismissLinkData {
|
|
5601
|
+
/**
|
|
5602
|
+
* Slug du costume
|
|
5603
|
+
*/
|
|
5604
|
+
costumSlug: string;
|
|
5605
|
+
/**
|
|
5606
|
+
* ID du costume
|
|
5607
|
+
*/
|
|
5608
|
+
costumId: string;
|
|
5609
|
+
/**
|
|
5610
|
+
* Type du costume
|
|
5611
|
+
*/
|
|
5612
|
+
costumType: string;
|
|
5613
|
+
[k: string]: unknown;
|
|
5614
|
+
}
|
|
5615
|
+
|
|
5616
|
+
|
|
5617
|
+
export interface LinkMediawikiAccountData {
|
|
5618
|
+
/**
|
|
5619
|
+
* Nom d'utilisateur du compte MediaWiki
|
|
5620
|
+
*/
|
|
5621
|
+
username: string;
|
|
5622
|
+
/**
|
|
5623
|
+
* Slug du costume
|
|
5624
|
+
*/
|
|
5625
|
+
costumSlug: string;
|
|
5626
|
+
/**
|
|
5627
|
+
* ID du costume
|
|
5628
|
+
*/
|
|
5629
|
+
costumId: string;
|
|
5630
|
+
/**
|
|
5631
|
+
* Type du costume
|
|
5632
|
+
*/
|
|
5633
|
+
costumType: string;
|
|
5634
|
+
[k: string]: unknown;
|
|
5635
|
+
}
|
|
5636
|
+
|
|
5637
|
+
|
|
5638
|
+
export interface UnlinkMediawikiAccountData {
|
|
5639
|
+
/**
|
|
5640
|
+
* Slug du costume
|
|
5641
|
+
*/
|
|
5642
|
+
costumSlug: string;
|
|
5643
|
+
/**
|
|
5644
|
+
* ID du costume
|
|
5645
|
+
*/
|
|
5646
|
+
costumId: string;
|
|
5647
|
+
/**
|
|
5648
|
+
* Type du costume
|
|
5649
|
+
*/
|
|
5650
|
+
costumType: string;
|
|
5651
|
+
[k: string]: unknown;
|
|
5652
|
+
}
|
|
5653
|
+
|
|
5654
|
+
|
|
5655
|
+
export interface GetMediawikiContributionsData {
|
|
5656
|
+
/**
|
|
5657
|
+
* Nom d'utilisateur du compte MediaWiki
|
|
5658
|
+
*/
|
|
5659
|
+
username: string;
|
|
5660
|
+
/**
|
|
5661
|
+
* Nombre maximum de contributions à retourner
|
|
5662
|
+
*/
|
|
5663
|
+
limit?: number;
|
|
5664
|
+
/**
|
|
5665
|
+
* Slug du costume
|
|
5666
|
+
*/
|
|
5667
|
+
costumSlug: string;
|
|
5668
|
+
/**
|
|
5669
|
+
* ID du costume
|
|
5670
|
+
*/
|
|
5671
|
+
costumId: string;
|
|
5672
|
+
/**
|
|
5673
|
+
* Type du costume
|
|
5674
|
+
*/
|
|
5675
|
+
costumType: string;
|
|
5676
|
+
[k: string]: unknown;
|
|
5677
|
+
}
|
|
5678
|
+
|
|
5679
|
+
|
|
5680
|
+
export interface AddClassifiedData {
|
|
5681
|
+
id: string;
|
|
5682
|
+
collection: "classifieds";
|
|
5683
|
+
key: "classified";
|
|
5684
|
+
name: string;
|
|
5685
|
+
section: "need" | "offer";
|
|
5686
|
+
category: "service" | "competence" | "material";
|
|
5687
|
+
subtype: string;
|
|
5688
|
+
/**
|
|
5689
|
+
* Objet contenant les entités parentes (clé = ID). Si absent, le default pose l'utilisateur connecté comme parent.
|
|
5690
|
+
*/
|
|
5691
|
+
parent?: {
|
|
5692
|
+
/**
|
|
5693
|
+
* This interface was referenced by `undefined`'s JSON-Schema definition
|
|
5694
|
+
* via the `patternProperty` "^(?:[a-f0-9]{24}|@userId)$".
|
|
5695
|
+
*/
|
|
5696
|
+
[k: string]: {
|
|
5697
|
+
type: string;
|
|
5698
|
+
name?: string;
|
|
5699
|
+
};
|
|
5700
|
+
};
|
|
5701
|
+
description?: string;
|
|
5702
|
+
tags?: string[];
|
|
5703
|
+
preferences?: {
|
|
5704
|
+
isOpenData: boolean;
|
|
5705
|
+
isOpenEdition: boolean;
|
|
5706
|
+
[k: string]: unknown;
|
|
5707
|
+
};
|
|
5708
|
+
geo?: {
|
|
5709
|
+
"@type"?: "GeoCoordinates";
|
|
5710
|
+
latitude: string | number;
|
|
5711
|
+
longitude: string | number;
|
|
5712
|
+
};
|
|
5713
|
+
geoPosition?: {
|
|
5714
|
+
type: "Point";
|
|
5715
|
+
/**
|
|
5716
|
+
* @minItems 2
|
|
5717
|
+
* @maxItems 2
|
|
5718
|
+
*/
|
|
5719
|
+
coordinates: [number, number];
|
|
5720
|
+
float: true;
|
|
5721
|
+
[k: string]: unknown;
|
|
5722
|
+
};
|
|
5723
|
+
address?: {
|
|
5724
|
+
"@type": "PostalAddress";
|
|
5725
|
+
addressCountry: string;
|
|
5726
|
+
codeInsee: string;
|
|
5727
|
+
addressLocality: string;
|
|
5728
|
+
localityId: string;
|
|
5729
|
+
level1: string;
|
|
5730
|
+
level1Name: string;
|
|
5731
|
+
level2?: string;
|
|
5732
|
+
level2Name?: string;
|
|
5733
|
+
level3?: string;
|
|
5734
|
+
level3Name?: string;
|
|
5735
|
+
level4?: string;
|
|
5736
|
+
level4Name?: string;
|
|
5737
|
+
postalCode?: string;
|
|
5738
|
+
streetAddress?: string;
|
|
5739
|
+
};
|
|
5740
|
+
scope: "";
|
|
5741
|
+
[k: string]: unknown;
|
|
5742
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// TypeScript native types
|
|
2
2
|
import type { CollectionType } from "../types/entities.js";
|
|
3
3
|
|
|
4
|
-
export type EntityTag = "User" | "Organization" | "Project" | "Event" | "Poi" | "Badge" | "News" | "Comment" | "Answer" | "Form";
|
|
4
|
+
export type EntityTag = "User" | "Organization" | "Project" | "Event" | "Poi" | "Badge" | "News" | "Comment" | "Answer" | "Form" | "Classified";
|
|
5
5
|
export type CollectionKey = CollectionType; // Alias pour compatibilité
|
|
6
6
|
type BaseEntity = import("./BaseEntity.js").BaseEntity<any>;
|
|
7
7
|
type ApiClient = import("../ApiClient.js").default;
|
|
@@ -112,7 +112,8 @@ function _getCollectionFromTag(tag: EntityTag): CollectionKey | null {
|
|
|
112
112
|
"Badge": "badges",
|
|
113
113
|
"Comment": "comments",
|
|
114
114
|
"Answer": "answers",
|
|
115
|
-
"Form": "forms"
|
|
115
|
+
"Form": "forms",
|
|
116
|
+
"Classified": "classifieds"
|
|
116
117
|
};
|
|
117
118
|
return map[tag] || null;
|
|
118
119
|
}
|
|
@@ -136,6 +137,7 @@ function _getEntityMeta(entityType: CollectionKey, __entityTag: EntityTag): Enti
|
|
|
136
137
|
Comment: selfTag === "Comment" ? selfClass : EntityRegistry.get("Comment"),
|
|
137
138
|
Answer: selfTag === "Answer" ? selfClass : EntityRegistry.get("Answer"),
|
|
138
139
|
Form: selfTag === "Form" ? selfClass : EntityRegistry.get("Form"),
|
|
140
|
+
Classified: selfTag === "Classified" ? selfClass : EntityRegistry.get("Classified"),
|
|
139
141
|
};
|
|
140
142
|
|
|
141
143
|
const map: Record<CollectionKey, EntityMeta> = {
|
|
@@ -154,6 +156,7 @@ function _getEntityMeta(entityType: CollectionKey, __entityTag: EntityTag): Enti
|
|
|
154
156
|
comments: { entityClass: commonDeps.Comment as EntityClass, deps: { ...commonDeps } },
|
|
155
157
|
answers: { entityClass: commonDeps.Answer as EntityClass, deps: { ...commonDeps } },
|
|
156
158
|
forms: { entityClass: commonDeps.Form as EntityClass, deps: { ...commonDeps } },
|
|
159
|
+
classifieds: { entityClass: commonDeps.Classified as EntityClass, deps: { ...commonDeps, Badge: undefined, News: undefined } },
|
|
157
160
|
};
|
|
158
161
|
|
|
159
162
|
return map[entityType] || null;
|
|
@@ -208,6 +211,10 @@ export function createFromCollection(collection: CollectionKey, parent: ApiClien
|
|
|
208
211
|
forms: {
|
|
209
212
|
entityTag: "Form",
|
|
210
213
|
meta: tag => _buildMeta(tag, { remove: [] })
|
|
214
|
+
},
|
|
215
|
+
classifieds: {
|
|
216
|
+
entityTag: "Classified",
|
|
217
|
+
meta: tag => _buildMeta(tag, { remove: ["Badge","News"] })
|
|
211
218
|
}
|
|
212
219
|
};
|
|
213
220
|
const entry = _collectionMap[collection];
|
|
@@ -240,7 +247,8 @@ function _buildMeta(tag: EntityTag, options: { remove: string[] }): EntityMeta {
|
|
|
240
247
|
News: EntityRegistry.get("News"),
|
|
241
248
|
Comment: EntityRegistry.get("Comment"),
|
|
242
249
|
Answer: EntityRegistry.get("Answer"),
|
|
243
|
-
Form: EntityRegistry.get("Form")
|
|
250
|
+
Form: EntityRegistry.get("Form"),
|
|
251
|
+
Classified: EntityRegistry.get("Classified")
|
|
244
252
|
};
|
|
245
253
|
// inject self
|
|
246
254
|
(allDeps as any)[tag] = EntityClass;
|
package/src/api/Event.ts
CHANGED
|
@@ -110,7 +110,12 @@ export class Event extends BaseEntity<EventItemNormalized> {
|
|
|
110
110
|
|
|
111
111
|
async addEvent(data: Partial<AddEventData> = {}): Promise<unknown> {
|
|
112
112
|
|
|
113
|
-
|
|
113
|
+
// Si le parent direct n'est pas l'utilisateur connecté (ex: création via une org),
|
|
114
|
+
// on injecte l'organizer dans le payload. Sans ça, le default schéma `{ "@userId": ... }`
|
|
115
|
+
// pose me comme organizer — ce qui est faux pour `me.org().event()`.
|
|
116
|
+
// NB: this.isMe est trompeur ici car userContext propage jusqu'au User connecté
|
|
117
|
+
// (donc isMe=true même quand le parent direct est une org).
|
|
118
|
+
if (this.parent && this.parent.id && this.parent.id !== this.userId && !data.organizer) {
|
|
114
119
|
(data as any).organizer = {};
|
|
115
120
|
(data as any).organizer[`${this.parent.id}`] = {
|
|
116
121
|
type: this.parent.getEntityType(),
|