Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
database:import-formats [2024/10/23 14:11] – [Description du format SYNTHESE] jpmilcent | database:import-formats [2025/01/03 08:14] (Version actuelle) – ancienne révision (2024/12/20 10:14) restaurée choarau |
---|
| |
**Objectif** : proposer un format d'échange de données **simple** (autant que possible), bien **documenté**, **pratique**, **facilitant l'intégration des données sous GeoNature** et respectant le **standard OccTax** du SINP. | **Objectif** : proposer un format d'échange de données **simple** (autant que possible), bien **documenté**, **pratique**, **facilitant l'intégration des données sous GeoNature** et respectant le **standard OccTax** du SINP. |
| |
===== Processus d'importation ===== | ===== Processus d'importation ===== |
<note warning> | <note warning> |
À utiliser seulement lors de la phase de conception." | À utiliser seulement lors de la phase de conception." |
</code> | </code> |
| |
| |
==== Format des fichiers d'import ===== | ==== Format des fichiers d'import ===== |
* les caractères **tabulation verticale** (Vertical tab, ASCII 11) sont à supprimer ou à remplacer par ''\v'' | * les caractères **tabulation verticale** (Vertical tab, ASCII 11) sont à supprimer ou à remplacer par ''\v'' |
<note warning>Ce mécanisme de remplacement des caractères ''\n'', ''\r''... dans la base n'est pas fonctionnel pour l'instant. L'utilisation du mode ''CSV'' désactive ce mécanisme [[https://www.postgresql.org/docs/8.3/sql-copy.html#AEN51445|comme indiqué ici]] dans la doc de Postgresql.</note> | <note warning>Ce mécanisme de remplacement des caractères ''\n'', ''\r''... dans la base n'est pas fonctionnel pour l'instant. L'utilisation du mode ''CSV'' désactive ce mécanisme [[https://www.postgresql.org/docs/8.3/sql-copy.html#AEN51445|comme indiqué ici]] dans la doc de Postgresql.</note> |
| |
==== Notes diverses ==== | ==== Notes diverses ==== |
* Les champs contenant des dates au format ''[DATE(YYYY-MM-DD HH:MM:SS)]'' peuvent éventuellement contenir aussi les microsecondes séparées des secondes par un point. Ex. : ''2019-03-07 12:09:14.451907''. C'est le cas pour les champs ''meta_create_date'' et ''meta_update_date''. L'ajout de cette information peut servir à indiquer la nécessité de mise à jour d'un enregistrement en cas de modification très rapprochées réalisées par un outil automatique par exemple. La plupart du temps, cette information est inutile et alourdit le fichier CSV. | * Les champs contenant des dates au format ''[DATE(YYYY-MM-DD HH:MM:SS)]'' peuvent éventuellement contenir aussi les microsecondes séparées des secondes par un point. Ex. : ''2019-03-07 12:09:14.451907''. C'est le cas pour les champs ''meta_create_date'' et ''meta_update_date''. L'ajout de cette information peut servir à indiquer la nécessité de mise à jour d'un enregistrement en cas de modification très rapprochées réalisées par un outil automatique par exemple. La plupart du temps, cette information est inutile et alourdit le fichier CSV. |
* Les champs de type UUID, INT, JSON ou DATE ne devrait pas contenir de valeur vide mais la chaine indiquant l'utilisation de la valeur NULL (''\N''). Si les fichiers transmis contiennent des valeurs vides pour les champs de ces types, elle sera transformé en NULL par le parser (script Python) lors de l'intégration. | * Les champs de type UUID, INT, JSON ou DATE ne devrait pas contenir de valeur vide mais la chaine indiquant l'utilisation de la valeur NULL (''\N''). Si les fichiers transmis contiennent des valeurs vides pour les champs de ces types, elle sera transformé en NULL par le parser (script Python) lors de l'intégration. Pour les champs ''meta_create_date'' et ''meta_update_date'', ça prendra la valeur par défaut ''now()'' (date d'import en base GN). |
| |
==== Champs additionnels ==== | ==== Champs additionnels ==== |
Le standard prévoit la transmission de champs additionnels. | Le standard prévoit la transmission de champs additionnels. |
| |
==== À faire / Améliorations ==== | ==== À faire / Améliorations ==== |
* Modifier le nom du champ //determiner// de la ressource //SYNTHESE// en //determiner**s**// | * <todo>Trouer une solution au problème du remplacement des caractères \n, \r… qui ne fonctionne pas lors de l'import dans la base</todo> |
* Intégrer si nécessaire les nouveaux champs de GeoNature v2.6.0 aux formats (-- @jpmilcent 2021-02-21) : | * <todo>Modifier le nom du champ //determiner// de la ressource //SYNTHESE// en //determiner**s**//</todo> |
| * <todo>Intégrer si nécessaire les nouveaux champs de GeoNature v2.6.0 aux formats (-- @jpmilcent 2021-02-21) :</todo> |
* ACQUISITION_FRAMEWORK : opened, id_digitizer, initial_closing_date | * ACQUISITION_FRAMEWORK : opened, id_digitizer, initial_closing_date |
* DATASET : id_nomenclature_resource_type, active, validable, id_digitizer | * DATASET : id_nomenclature_resource_type, active, validable, id_digitizer |
* SYNTHESE : sample_number_proof, | * SYNTHESE : sample_number_proof, |
* Revoir le format des champs "cor_actors_organism" et "cor_actors_user" du format ACQUISITION_FRAMEWORK. La récupération des valeurs de tableaux imbriqués nécessite de passer par du JSON (idem pour les champs de type ARRAY du DATASET). Il serait donc plus efficace d'utiliser directement le format JSON pour ces champs.-- @jpmilcent 2021-02-21. | * <todo>Revoir le format des champs "cor_actors_organism" et "cor_actors_user" du format ACQUISITION_FRAMEWORK. La récupération des valeurs de tableaux imbriqués nécessite de passer par du JSON (idem pour les champs de type ARRAY du DATASET). Il serait donc plus efficace d'utiliser directement le format JSON pour ces champs.-- @jpmilcent 2021-02-21.</todo> |
* <del>Dans le format DATASET, indiquer les valeurs par défaut des nomenclatures à utiliser. Les champs correspondant dans la table GeoNature étant obligatoire ! Les nomenclatures ne sont pas obligatoires pour les cadres d'acquisition et la synthese.</del> | * <todo #jpmilcent:2024-10-23>Dans le format DATASET, indiquer les valeurs par défaut des nomenclatures à utiliser. Les champs correspondant dans la table GeoNature étant obligatoire ! Les nomenclatures ne sont pas obligatoires pour les cadres d'acquisition et la synthese.</todo> |
* Pour le format USER, trouver un solution pour éviter les doublons d'email et d'identifiant => se baser sur l'email => trouver une solution pour la mise à jour de l'email => ajouter un champ "new_email" + champ "email" (= ancien email) + "meta_last_action" = "U". | * <todo #jpmilcent:2024-10-23>Pour le format USER, trouver un solution pour éviter les doublons d'email et d'identifiant => se baser sur l'email => trouver une solution pour la mise à jour de l'email => ajouter un champ "new_email" + champ "email" (= ancien email) + "meta_last_action" = "U".</todo> => ajout d'index unique à la base de données. |
* Pour le format ORGANISM, trouver une solution pour éviter les doublon inter-fournisseur => se baser sur l'UUID du [[http://standards-sinp.mnhn.fr/referentiel-des-organismes/|référentiel national SINP des organismes]]. | * <todo #jpmilcent:2024-10-23>Pour le format ORGANISM, trouver une solution pour éviter les doublon inter-fournisseur => se baser sur l'UUID du [[http://standards-sinp.mnhn.fr/referentiel-des-organismes/|référentiel national SINP des organismes]].</todo> |
* Pour les formats ACQUISITION_FRAMEWORK et DATASET, trouver une solution pour éviter les doublon inter-fournisseur => se baser sur le site "[[https://inpn.mnhn.fr/docs-web/docs/download/263010|Référentiel National SINP - Métadonnées]]". | * <todo #jpmilcent:2024-10-23>Pour les formats ACQUISITION_FRAMEWORK et DATASET, trouver une solution pour éviter les doublon inter-fournisseur => se baser sur le site "[[https://inpn.mnhn.fr/docs-web/docs/download/263010|Référentiel National SINP - Métadonnées]]". </todo> |
| |
==== Évolutions ==== | ==== Évolutions ==== |
| * 2024-10-23 : |
| * Nous privilégions maintenant l'utilisation des UUID comme identifiant de lien entre les ressources à la place des codes ou noms. |
| * Le champ //unique_id// devient obligatoire pour les ressources ACQUISITION FRAMEWORK et DATASET. |
| * Le champ //parent_code// de la ressource ACQUISITION FRAMEWORK doit maintenant indiquer l'UUID du cadre d'acquisition parent. |
| * Le champ //code_acquisition_framework// de la ressource DATASET doit maintenant indiquer l'UUID du cadre d'acquisition. |
| * Le champ //cor_actors_organism// des ressources ACQUISITION FRAMEWORK et DATASET doit contenir l'UUID de l'organisme et non plus son nom. |
| * Le champ //code_dataset// de la ressource SYNTHESE doit contenir l'UUID du jeu de données correspondant. |
| * Le champ //code_organism// de la ressource USER doit contenir l'UUID de l'organisme correspondant. |
* 2023-07-03 : | * 2023-07-03 : |
* Ajout de l'UUID au format à plat permettant de stocker les infos sur les observateurs (//observers//) et les déterminateurs (//determiner//). | * Ajout de l'UUID au format à plat d'un "utilisateur" (=//user//) permettant de stocker les infos sur les observateurs (//observers//) et les déterminateurs (//determiner//). |
* Utilisation de l'UUID (champ //unique_id// de la ressource //USER//) à la place de l'//identifier// pour le champ //code_digitiser// de la ressource //SYNTHESE//. | * Utilisation de l'UUID (champ //unique_id// de la ressource //USER//) à la place de l'//identifier// pour le champ //code_digitiser// de la ressource //SYNTHESE//. |
===== Format SYNTHESE d'import ===== | ===== Format SYNTHESE d'import ===== |
| |
* **unique_id_sinp** [UUID] (=//unique_dataset_id//) : UUID du jeu de données si pré-existant. | * **unique_id_sinp** [UUID] (=//unique_dataset_id//) : UUID du jeu de données si pré-existant. |
* **code_acquisition_framework** [VARCHAR(255)] (=//id_acquisition_framework//) : code/nom du cadre d'acquisition auquel le jeu de données appartient. Sert de le lien avec la ressource ACQUISITION_FRAMEWORK et son champ "//name//". | * **code_acquisition_framework** [VARCHAR(255)] (=//id_acquisition_framework//) : code/nom du cadre d'acquisition auquel le jeu de données appartient. Sert de le lien avec la ressource ACQUISITION_FRAMEWORK et son champ "//unique_id//". |
* **name** [VARCHAR(150)] (=//dataset_name//) : nom du jeu de donnée (**150 caractères max**). | * **name** [VARCHAR(150)] (=//dataset_name//) : nom du jeu de donnée (**150 caractères max**). |
* **shortname** [VACHAR(30)] (=//dataset_shortname//) : libellé court du jeu de données (**30 caractères max**). Permet de faire le lien avec la ressource SYNTHESE et son champ "//code_dataset//". | * **shortname** [VACHAR(30)] (=//dataset_shortname//) : libellé court du jeu de données (**30 caractères max**). Permet de faire le lien avec la ressource SYNTHESE et son champ "//code_dataset//". |
* //code_nomenclature_resource_type// [VARCHAR(25)] (=//id_nomenclature_resource_type //) : code de la valeur du type de nomenclature //RESOURCE_TYP// (?).<color black/#fff200>Si null ou non fourni, le code "1" (Jeu de données) sera utilisé</color>. | * //code_nomenclature_resource_type// [VARCHAR(25)] (=//id_nomenclature_resource_type //) : code de la valeur du type de nomenclature //RESOURCE_TYP// (?).<color black/#fff200>Si null ou non fourni, le code "1" (Jeu de données) sera utilisé</color>. |
* cor_territory [TEXT(ARRAY-ARRAY)] : champ de type tableau de tableau de textes. Les tableaux de textes du plus bas niveau contiendront comme première valeur le code de nomenclature correspondant au champ "//id_nomenclature_territory//" (= //TERRITOIRE// [[https://https://inpn.mnhn.fr/docs-web/docs/download/263010|TerritoireValue|87|page50]]) de la table "//gn_meta.cor_dataset_territory//" et comme seconde valeur une description du territoire (champ "//territory_desc//) ou une chaine vide. Exemple : <code> "{{""REU "",""""},{""MYT"",""""}}" </code> | * cor_territory [TEXT(ARRAY-ARRAY)] : champ de type tableau de tableau de textes. Les tableaux de textes du plus bas niveau contiendront comme première valeur le code de nomenclature correspondant au champ "//id_nomenclature_territory//" (= //TERRITOIRE// [[https://https://inpn.mnhn.fr/docs-web/docs/download/263010|TerritoireValue|87|page50]]) de la table "//gn_meta.cor_dataset_territory//" et comme seconde valeur une description du territoire (champ "//territory_desc//) ou une chaine vide. Exemple : <code> "{{""REU "",""""},{""MYT"",""""}}" </code> |
* cor_actors_organism [TEXT(ARRAY-ARRAY)] : champ de type tableau de tableau de textes. Les tableaux de textes du plus bas niveau contiendront comme première valeur le nom de l'organisme et comme seconde valeur le code de nomenclature correspondant au champ "//id_nomenclature_actor_role//" (="ROLE_ACTEUR" / [[https://inpn.mnhn.fr/docs-web/docs/download/263010|RoleActeurValue|86|page49]]) de la table "//gn_meta.cor_dataset_actor//". Exemple : <code> "{{""CBN-Alpin"", ""1""},{""PNE"",""5""}}" </code> | * cor_actors_organism [TEXT(ARRAY-ARRAY)] : champ de type tableau de tableau de textes. Les tableaux de textes du plus bas niveau contiendront comme première valeur l'UUID de l'organisme et comme seconde valeur le code de nomenclature correspondant au champ "//id_nomenclature_actor_role//" (="ROLE_ACTEUR" / [[https://inpn.mnhn.fr/docs-web/docs/download/263010|RoleActeurValue|86|page49]]) de la table "//gn_meta.cor_dataset_actor//". Exemple : <code> "{{""5a433bd0-1fc0-25d9-e053-2614a8c026f8"", ""1""},{""5a433bd0-1ffc-25d9-e053-2614a8c026f8"",""5""}}" </code> |
* cor_actors_user [TEXT(ARRAY-ARRAY)] : champ de type tableau de tableau de textes. Les tableaux de textes du plus bas niveau contiendront comme première valeur l'identifiant de l'utilisateur/personne et comme seconde valeur le code de nomenclature correspondant au champ "//id_nomenclature_actor_role//" (="ROLE_ACTEUR" / [[https://inpn.mnhn.fr/docs-web/docs/download/263010|RoleActeurValue|86|page49]]) de la table "//gn_meta.cor_dataset_actor//". Exemple : <code> "{{""jpmilcent"",""1""},{""pmartin"",""5""}}" </code> | * cor_actors_user [TEXT(ARRAY-ARRAY)] : champ de type tableau de tableau de textes. Les tableaux de textes du plus bas niveau contiendront comme première valeur l'identifiant de l'utilisateur/personne et comme seconde valeur le code de nomenclature correspondant au champ "//id_nomenclature_actor_role//" (="ROLE_ACTEUR" / [[https://inpn.mnhn.fr/docs-web/docs/download/263010|RoleActeurValue|86|page49]]) de la table "//gn_meta.cor_dataset_actor//". Exemple : <code> "{{""jpmilcent"",""1""},{""pmartin"",""5""}}" </code> |
* additional_data [JSON] : permet d'associer des champs complémentaires au jeu de données si toutes les entrées ne partagent pas les même champs. Les valeurs de ce champ doivent être [[https://www.json.org/json-fr.html|au format JSON]] et [[https://jsonformatter.curiousconcept.com/|être valide]]. Ne pas mettre de valeur vide dans ce champ mais une valeur NULL. | * additional_data [JSON] : permet d'associer des champs complémentaires au jeu de données si toutes les entrées ne partagent pas les même champs. Les valeurs de ce champ doivent être [[https://www.json.org/json-fr.html|au format JSON]] et [[https://jsonformatter.curiousconcept.com/|être valide]]. Ne pas mettre de valeur vide dans ce champ mais une valeur NULL. |
* target_description [TEXT] : description de la cible taxonomique ou géologique pour le cadre d'acquisition (Ex. : pteridophyta). | * target_description [TEXT] : description de la cible taxonomique ou géologique pour le cadre d'acquisition (Ex. : pteridophyta). |
* ecologic_or_geologic_target [TEXT] : champ composé de //cd_nom// de TaxRef, séparés par des points virgules, s'il s'agit de taxons, ou de //cd_hab// de HabRef, séparés par des points virgules, s'il s'agit d'habitats. | * ecologic_or_geologic_target [TEXT] : champ composé de //cd_nom// de TaxRef, séparés par des points virgules, s'il s'agit de taxons, ou de //cd_hab// de HabRef, séparés par des points virgules, s'il s'agit d'habitats. |
* parent_code [VARCHAR(255)](=//acquisition_framework_parent_id//) : si ce cadre d'acquisition est contenu dans un autre, le code/nom du cadre acquisition parent sera indiqué. Sert de le lien avec la ressource ACQUISITION_FRAMEWORK parente et son champ "name". | * parent_code [VARCHAR(255)](=//acquisition_framework_parent_id//) : si ce cadre d'acquisition est contenu dans un autre, le code/nom du cadre acquisition parent sera indiqué. Sert de le lien avec la ressource ACQUISITION_FRAMEWORK parente et son champ "unique_id". |
* is_parent [BOOL] : indique si ce dispositif est un métacadre, et donc s'il contient d'autres cadres d'acquisition. | * is_parent [BOOL] : indique si ce dispositif est un métacadre, et donc s'il contient d'autres cadres d'acquisition. |
* **start_date** [DATE(YYYY-MM-DD)] (=//acquisition_framework_start_date//) : date de lancement du cadre d'acquisition. **Ne peut pas être NULL**. | * **start_date** [DATE(YYYY-MM-DD)] (=//acquisition_framework_start_date//) : date de lancement du cadre d'acquisition. **Ne peut pas être NULL**. |
* cor_objectifs [TEXT(ARRAY)] : champ de type tableau de textes. Le tableau contiendra une succession de codes de nomenclature correspondant au champ "//id_nomenclature_objectif//" (="CA_OBJECTIFS" / [[https://inpn.mnhn.fr/docs-web/docs/download/263010/|ObjectifsValue|page24]]) de la table "//gn_meta.cor_acquisition_framework_objectif//". Exemple : <code> "{""4"",""5"",""6""}" </code> | * cor_objectifs [TEXT(ARRAY)] : champ de type tableau de textes. Le tableau contiendra une succession de codes de nomenclature correspondant au champ "//id_nomenclature_objectif//" (="CA_OBJECTIFS" / [[https://inpn.mnhn.fr/docs-web/docs/download/263010/|ObjectifsValue|page24]]) de la table "//gn_meta.cor_acquisition_framework_objectif//". Exemple : <code> "{""4"",""5"",""6""}" </code> |
* cor_voletsinp [TEXT(ARRAY)] : champ de type tableau de textes. Le tableau contiendra une succession de codes de nomenclature correspondant au champ "//id_nomenclature_voletsinp//" (="VOLET_SINP " / [[https://inpn.mnhn.fr/docs-web/docs/download/263010|VoletSINPValue|90|page29]]) de la table "//gn_meta.cor_acquisition_framework_voletsinp//". Exemple : <code> "{""1""}" </code> | * cor_voletsinp [TEXT(ARRAY)] : champ de type tableau de textes. Le tableau contiendra une succession de codes de nomenclature correspondant au champ "//id_nomenclature_voletsinp//" (="VOLET_SINP " / [[https://inpn.mnhn.fr/docs-web/docs/download/263010|VoletSINPValue|90|page29]]) de la table "//gn_meta.cor_acquisition_framework_voletsinp//". Exemple : <code> "{""1""}" </code> |
* cor_actors_organism [TEXT(ARRAY-ARRAY)] : champ de type tableau de tableau de textes. Les tableaux de textes du plus bas niveau contiendront comme première valeur le nom de l'organisme et comme seconde valeur le code de nomenclature correspondant au champ "//id_nomenclature_actor_role//" (="ROLE_ACTEUR" / [[https://inpn.mnhn.fr/docs-web/docs/download/263010|RoleActeurValue|86|page25]]) de la table "//gn_meta.cor_acquisition_framework_actor//". Exemple : <code> "{{""CBN-Alpin"",""1""},{""PNE"",""5""}}" </code> **Note** : Au moins un organisme (ce champ) ou un utilisateur (le champ //cor_actors_user//) doit être renseigné par cadre d'acquisition. | * cor_actors_organism [TEXT(ARRAY-ARRAY)] : champ de type tableau de tableau de textes. Les tableaux de textes du plus bas niveau contiendront comme première valeur l'UUID de l'organisme et comme seconde valeur le code de nomenclature correspondant au champ "//id_nomenclature_actor_role//" (="ROLE_ACTEUR" / [[https://inpn.mnhn.fr/docs-web/docs/download/263010|RoleActeurValue|86|page25]]) de la table "//gn_meta.cor_acquisition_framework_actor//". Exemple : <code> "{{""5a433bd0-1fc0-25d9-e053-2614a8c026f8"", ""1""},{""5a433bd0-1ffc-25d9-e053-2614a8c026f8"",""5""}}" </code> **Note** : Au moins un organisme (ce champ) ou un utilisateur (le champ //cor_actors_user//) doit être renseigné par cadre d'acquisition. |
* cor_actors_user [TEXT(ARRAY-ARRAY)] : champ de type tableau de tableau de textes. Les tableaux de textes du plus bas niveau contiendront comme première valeur l'identifiant de l'utilisateur/personne et comme seconde valeur le code de nomenclature correspondant au champ "//id_nomenclature_actor_role//" (="ROLE_ACTEUR" / [[https://inpn.mnhn.fr/docs-web/docs/download/263010|RoleActeurValue|86|page25]]) de la table "//gn_meta.cor_acquisition_framework_actor//". Exemple : <code> "{{""jpmilcent"",""1""},{""pmartin"",""5""}}" </code> **Note** : Au moins un utilisateur (ce champ) ou un organisme (le champ //cor_actors_organism//) doit être renseigné par cadre d'acquisition. | * cor_actors_user [TEXT(ARRAY-ARRAY)] : champ de type tableau de tableau de textes. Les tableaux de textes du plus bas niveau contiendront comme première valeur l'identifiant de l'utilisateur/personne et comme seconde valeur le code de nomenclature correspondant au champ "//id_nomenclature_actor_role//" (="ROLE_ACTEUR" / [[https://inpn.mnhn.fr/docs-web/docs/download/263010|RoleActeurValue|86|page25]]) de la table "//gn_meta.cor_acquisition_framework_actor//". Exemple : <code> "{{""jpmilcent"",""1""},{""pmartin"",""5""}}" </code> **Note** : Au moins un utilisateur (ce champ) ou un organisme (le champ //cor_actors_organism//) doit être renseigné par cadre d'acquisition. |
* cor_publications [JSON] : champ contenant un tableau d'objets [[https://www.json.org/json-fr.html|au format JSON]] [[https://jsonformatter.curiousconcept.com/|valide]]. Ce champ correspond à la table //cor_acquisition_framework_publication// de GeoNature. Ne pas mettre de valeur vide dans ce champ mais une valeur NULL. Chaque objet du JSON représentera une publication avec les attributs suivant : | * cor_publications [JSON] : champ contenant un tableau d'objets [[https://www.json.org/json-fr.html|au format JSON]] [[https://jsonformatter.curiousconcept.com/|valide]]. Ce champ correspond à la table //cor_acquisition_framework_publication// de GeoNature. Ne pas mettre de valeur vide dans ce champ mais une valeur NULL. Chaque objet du JSON représentera une publication avec les attributs suivant : |
* name [VARCHAR(50)] (=//nom_role//) : nom de famille. | * name [VARCHAR(50)] (=//nom_role//) : nom de famille. |
* email [VARCHAR(250)] : courriel. | * email [VARCHAR(250)] : courriel. |
* code_organism [VARCHAR(100)] (=//id_organisme//) : code alphanumérique ou UUID permettant d'identifier l'organisme de l'utilisateur (voir ORGANISM). Sert de le lien avec la ressource ORGANISM et son champ "name" ou "unique_id". | * code_organism [VARCHAR(100)] (=//id_organisme//) : UUID permettant d'identifier l'organisme de l'utilisateur (voir ORGANISM) ou éventuellement son code alphanumérique. Sert de le lien avec la ressource ORGANISM et son "unique_id" ou éventuellement "name". |
* comment [TEXT] (=//remarques//) : contient des éventuelles informations internes (date d'importation, par exemple). | * comment [TEXT] (=//remarques//) : contient des éventuelles informations internes (date d'importation, par exemple). |
* enable [BOOL] (=//active//) : indique si l'utilisateur est actif (=true) et donc peut se connecter ou pas (=false). Par défaut, "True". | * enable [BOOL] (=//active//) : indique si l'utilisateur est actif (=true) et donc peut se connecter ou pas (=false). Par défaut, "True". |