Documentation Utilisateurs
Intégrer le Système de Gestion de Consentements à votre SI
Table des matières
Bienvenue
AGATA CONSENT est un Système de Gestion de Consentement décentralisé bâti sur une Blockchain qui s’inscrit dans un contexte de pluralité d’acteurs qui sont à la fois partenaires et (parfois) concurrents.
L’intégralité de l’architecture est pensée autour de la sécurité, la scalabilité et la résilience.
La plateforme AGATA CONSENT permet de résoudre de manière simple et fiable l'épineux sujet du recueil et de la fiabilisation du consentement au partage des données entre entreprises. La plateforme peut s'interfacer à tout système d'échange de données chez vous.
Avec AGATA CONSENT, vous avez la possibilité d'envoyer des demandes de consentement à vos clients. Une fois signées, celles ci vous autorisent à exploiter un périmètre de données selon un usage précisé. Vous avez également la possibilité de vous assurer qu'un consentement existe pour un périmètre et un usage spécifique.
Lorsque cela est possible, les fonctionnalités détaillées dans ce guide sont illustrées par des références et captures d'écran du portail Entreprise AGATA CONSENT.
Pré requis à l'utilisation du Système de Gestion de Consentements
Avec AGATA CONSENT, les données sont organisées par Domaines fonctionnels.
Toute entreprise qui distribue des données et souhaitant s'assurer de la présence des consentements avant de distribuer les données aux Bénéficiaires doit contractualiser avec :
- FAST pour acquérir une licence AGATA CONSENT Gestionnaire afin de créer son Domaine ;
- Tout Bénéficiaire souhaitant exploiter les données distribuées par le Gestionnaire.
Parallèlement, une entreprise bénéficiaire souhaitant valoriser les données d'un Domaine existant sur AGATA CONSENT doit contractualiser avec :
- le Gestionnaire du Domaine désiré selon les conditions spécifiques définies par celui-cî ;
- FAST pour acquérir une licence Bénéficiaire.
Une entreprise souhaitant uniquement signer une demande de consentement lui étant adressée doit créer un compte sur AGRI MAKER. Aucun achat de licence n'est nécessaire.
Environnements
Recette
Espace PRO : https://espacepro-preprod.agata-consent.com
API AGATA CONSENT : https://api-preprod.agata-consent.com
URL Hooks : https://sign-preprod.agata-consent.com
URL d’authentification : https://account-preprod.agata-consent.com
Documentation Swagger : https://api-preprod.agata-consent.com
Production
Espace PRO : https://espacepro.agata-consent.com
API AGATA CONSENT : https://api.agata-consent.com
URL Hooks : https://sign.agata-consent.com
URL d’authentification : https://account.agata-consent.com
Documentation AGATA CONSENT : https://doc.agata-consent.com/index.html
Documentation Swagger : https://api.agata-consent.com
Authentification
L'url d'authentification d'AGATA CONSENT est :
Mode d’authentification
Les API AGATA CONSENT utilisent le protocole OIDC, basé sur le protocole Oauth2.
OAuth2 permet d’autoriser une application (un Client) à utiliser l’API d’une autre application (Resource Server) pour le compte d’un utilisateur (Resource Owner).
En plus des mécanismes OAuth2, OIDC permet à un Client, de demander des informations sur l’utilisateur « connecté » (son adresse, ses droits …).
Pour les URLs, se référer à la partie Environnements
Précision selon les versions d'API
Les informations d’authentification varient selon l’API utilisée :
-
agata-consent, agata-consent-cne, agata-consent-router :
L'authentification s’effectue via un client public en utilisant unclient_id, unusernameet unpassword.
Le type de grant utilisé est :password. -
agata-consent-hooks :
L'authentification repose sur un client applicatif utilisant unclient_idet unclient_secret.
Le type de grant utilisé est :client_credentials.
Note sur Swagger :
Leclient_idaffiché par défaut dans Swagger est automatiquement prérempli en fonction de l’environnement (préprod, prod) pour les API agata-consent, agata-consent-cne et agata-consent-router.
Vous n’avez pas besoin de le modifier : la valeur renseignée est déjà correcte.En revanche, pour l’API agata-consent-hooks, veillez à remplacer manuellement le
client_idpar celui de votre application.
Client public
Ce client peut s’authentifier en utilisant un identifiant et un mot de passe lui permettant de récupérer un jeton (token) qu’il utilisera par la suite dans l’en-tête (Header) de ses requêtes HTTP.
Le type de Grant utilisé est « password ».
curl --location --request POST 'https://keycloak.agata-consent.com/auth/realms/sgc/protocol/openid-connect/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Cookie: KEYCLOAK_LOCALE=fr' \
--data-urlencode 'client_id=<client id>' \
--data-urlencode 'grant_type=password' \
--data-urlencode 'username=<user>' \
--data-urlencode 'password=<password>'
Client applicatif
Ce client peut s’authentifier en utilisant le type de grant « client_credentials » associé à un client_id et un secret.
curl --location --request POST 'https://keycloak.agata-consent.com/auth/realms/sgc/protocol/openid-connect/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Cookie: KEYCLOAK_LOCALE=fr' \
--data-urlencode 'client_id=<client id>' \
--data-urlencode 'client_secret=<client secret>' \
--data-urlencode 'grant_type=client_credentials'
Liste des erreurs remontées par les API
Nos API renvoient les codes d'état HTTP standard (succès ou erreur). Les principaux codes d'état HTTP pouvant être renvoyés sont :
| Code HTTP | Réponse | Description |
|---|---|---|
| 200 | OK | Succès |
| 201 | Created | Ressource a été créée avec succès |
| 204 | No content | Requête traitée avec succès, mais pas d’information à renvoyer |
| 400 | Bad request | Syntaxe de la requête invalide |
| 401 | Unauthorized | Authentification absente ou invalide |
| 403 | Forbidden | Droits de l'utilisateur insuffisants |
| 404 | Not Found | La ressource est introuvable |
| 409 | Conflict | La ressource est déjà connue |
| 50X | Internal Server Error | Une erreur est survenue |
Glossaire
La gestion des consentements implique une terminologie particulière. Vous retrouverez ci dessous quelques définitions de termes employés dans cette documentation et plus généralement dans AGATA CONSENT.
Qu'est ce qu'un consentement ?
Définition
La CNIL (source) définit le Consentement comme
CNIL : Conformité RGPD : comment recueillir le consentement des personnes ? 03 août 2018
Toute manifestation de volonté, libre, spécifique, éclairée et univoque par laquelle la personne concernée accepte, par une déclaration ou par un acte positif clair, que des données [...] la concernant fassent l'objet d'un traitement.
La Charte DATA AGRI dans ses 13 principes précise :
Charte DATA AGRI
L’agriculteur accepte explicitement le traitement fait des données de son exploitation.
Conditions de validité
Pour être valide au sens RGPD, le signataire du consentement (le Détenteur) doit être obligatoirement informé des éléments suivants :
- l’identité du responsable de traitement (le Bénéficiaire)
- les finalités du traitement (l'Usage)
- les catégories de données collectées (la Famille)
- l’existence d’un droit de retrait du consentement (via le portail de gestion des consentements)
Le cycle de vie d'un consentement peut être représenté ainsi :
flowchart TD;
A[Le Bénéficiaire doit expliciter] --> B[le Détenteur];
A --> C[le Bénéficiaire];
A --> D[l'Usage];
A --> E[la Famille de données];
B --> M{Demande de consentement au Détenteur};
C --> M;
D --> M;
E --> M;
M --> |Refus| N[Pas de consentement];
M --> |Signature| O[Consentement valide];
N --> P[Données non diffusables];
O --> Q[Données diffusables];
Détenteur
Le Détenteur représente l'entreprise détenant les droits sur la donnée. Celle ci a autorité pour donner le consentement (ou non) à l'usage de ses données par un tiers, en signant (ou refusant) une demande de consentement. Le rôle de Détenteur peut être incarnée par tout type d'entreprise détenant des données. En effet : une entreprise qui récupère des données brutes, les valorise en y apportant ses connaissances grâce à l’expérience et sa connaissance devient « détentrice » de la donnée valorisée.
En résumé, le Détenteur a autorité pour donner le consentement (ou non) à l'usage des données de l'entreprise à destination d'un Bénéficiaire, en signant (ou refusant) une demande de consentement.
Bénéficiaire
Le Bénéficiaire est une entreprise qui souhaite bénéficier de la donnée en vue de la valoriser. Pour cela, un Bénéficiaire doit donc obtenir le consentement auprès du Détenteur de la donnée souhaitée.
Selon le contexte et les données échangées, une entreprise peut être à la fois Détenteur et Bénéficiaire. Ces rôles sont donc attribués au sein de chaque consentement. En dehors du consentement, les deux sont des entreprises (companies) et donc connues comme tel dans AGATA CONSENT, de quatres manières différentes : par les SIRET, SIREN, NUMAGRIT ou NUMAGRIN.
Modélisation
La solution AGATA Consent s'adressant spécifiquement aux professionnels, les acteurs du système sont identifiés principalement par des SIRET ou SIREN comme toute entreprise française. Pour des cas spécifiques et du fait de la spécificité du milieu agricole, l'identification par le NUMAGRIN ou NUMAGRIT est également disponible.
| Identifiant Entreprise | Description | Exemple |
|---|---|---|
| SIREN | Numéro unique d'identification attribué à chaque entreprise par l'INSEE. C'est un simple numéro d'ordre composé de neuf chiffres non significatifs. | 802954785 |
| SIRET | Numéro unique d'identification attribué à chaque établissement par l'INSEE. Ce numéro est un simple numéro d'ordre composé de quatorze chiffres non significatifs. | 80295478500028 |
| NUMAGRIN | Constitué de 9 caractères (s’il s’agit d’un NUMAGRIN créé par le Ministère de l'Agriculture, jusqu'à 29 pour les autres). Il est attribué aux personnes physiques ne répondant pas aux conditions exigées pour la sirénisation et est construit sur la base de la date de naissance de l’usager. Le NUMAGRIN est délivré par la BDNU en ligne, à la demande des « guichets clients » (DDAF, DRAF, DDSV, Affaires maritimes...) source. | A40001010 |
| NUMAGRIT | Constitué de 12 caractères, 9 pour le NUMAGRIN (s’il s’agit d’un NUMAGRIN créé par le Ministère de l'Agriculture, jusqu'à 29 pour les autres) et 3 pour le code établissement. Il est attribué aux lieux d'activité. | A40001010001 |
Une fois l'entreprise créée et identifiée par le système, il est nécessaire de lui adjoindre des Activités. Celles ci représentent les ateliers d'une entreprise agricole. A la création d'une entreprise dans AGATA Consent, une Activité par défaut est initialisée automatiquement. Elle porte l'identifiant utilisé pour identifié l'entreprise auquelle l'activité est rattachée (SIRET, SIREN, NUMAGRIT ou NUMAGRIN).
Il existe quatres autres types d'Activités pouvant être rattachées à une entreprise. Elles sont définies par un identifiant métier (business_identifier) pouvant être :
| Identifiant Métier | Description | Exemple |
|---|---|---|
| EDE_NUMBER | Destiné aux entreprises de type élevage principalement, également appelé numéro de cheptel. L'identifiant est constitué de 10 caractères : FR + 8 chiffres | FR35167340 |
| PACAGE_NUMBER | Identifie tout demandeur d’aides PAC, d’aides forestières et de restructuration viticole. Il se compose du numéro du département siège de l’entreprise et d’un numéro d’ordre de dossier (9 chiffres). | 085123456 |
| MARKING_CODE | Attribué pour toute activité porcine, appelé communément numéro de TVA ou indicatif de marquage. Il est composé de 7 caractères : 2 pour le code pays, 2 pour le département, 3 caractères alpha-numériques. | 14ABC |
| CVI_NUMBER | Également appelé Numéro de Casier Viticole ou numéro EVV. Il identifie toute entreprise exerçant une activité viticole auprès des organismes publics et administrations en relation avec elle (services des douanes, France AgriMer, etc.). Il est composé de 10 chiffres | 0713400200 |
Si nécessaire, la création de nouveaux types d'Activités peut être envisagée sur demande auprès de FAST directement.
En résumé, les Entreprises et Activités dans AGATA CONSENT peuvent ête représentées de la manière suivante :
classDiagram
Entreprise --|> Périmètre_Entreprise: Activité par défaut
Entreprise --|> Élevage: Activité 1
Entreprise --|> Parcellaire: Activité 2
Entreprise --|> Atelier_Porc: Activité 3
Entreprise --|> Atelier_Viticole: Activité 4
Entreprise : SIRET | SIREN | NUMAGRIN | NUMAGRIT
Périmètre_Entreprise : SIRET | SIREN | NUMAGRIN | NUMAGRIT
Élevage : EDE_NUMBER
Parcellaire : PACAGE_NUMBER
Atelier_Porc : MARKING_CODE
Atelier_Viticole : CVI_NUMBER
Note
Les Activités 1, 2, 3 et 4 sont optionnelles.
Famille de données
Dans le cadre d'un traitement ou d'une valorisation, de nombreuses données sont nécessaires en amont. Afin de rester intelligible et pour éviter une sursollicitation des Détenteurs, les consentements AGATA CONSENT s'appliquent sur un périmètre plus large : la Famille de données. Cette dénomination correspond aux catégories de données collectées évoquées par la CNIL dans le cadre du RGPD (source).
Les données sur lesquelles portent le consentement sont ainsi regroupées par catégories cohérentes afin de garantir la validité du consentement.
Attention
La création d'un consentement par donnée unitaire n'est pas une bonne pratique. En effet, dans le cas où une évolution logicielle nécessiterait l'ajout d'une donnée complémentaire, l'ensemble des consentements seraient caduques et nécessiteraient la révocation puis la signature une nouvelle fois de l'intégralité des consentements déjà signés.
Usage
L'Usage explicite la finalité des traitements appliqués sur les Familles de données collectées. Il est spécifique pour chaque demande de consentement. Cette dénomination correspond à la finalité poursuivie évoquée par la CNIL dans le cadre du RGPD (source).
Domaine
Le Domaine permet de regrouper les Familles de données selon une logique métier. Un Gestionnaire est à l'initiative de la création du Domaine et a la possibilité de lister et définir les données, les Familles et les Usages pour créer les demandes de consentements. Le Domaine est accessible par un groupe d'entreprises Bénéficiaires préalablement identifiés.
Gestion des Entreprises et des activités
Gestion des entreprises
Dans AGATA CONSENT, tout intervenant dans le système est désigné comme une Entreprise (Company), quelque soit son rôle (Détenteur ou Bénéficiaire). Toute Entreprise possède au moins une Activité (Activity) créée par défaut.
Par exemple, sur le portail Entreprise AGATA CONSENT : pour chaque Entreprise de la liste, les actions individuelles possibles sont :
- Créer une demande de consentement : ouvre la fenêtre de création de demande de consentement avec les informations Détenteurs précompletées avec les informations de l'Entreprise courante.
- Consulter les détails des demandes de consentement à traiter : déplie l'Entreprise afin d'afficher la liste complète des demandes de consentement à traiter.
- Visualiser de l'historique complet des consentements de l'Entreprise : affiche la liste complète des consentements traités et à traiter pour l'Entreprise courante.
La récupération des Entreprises est notamment utilisée sur l'écran Gestion des détenteurs.

L'écran de gestion des Détenteurs permet de rechercher des Entreprises par la raison sociale, l'identifiant (siret, siren, numagrin ou numagrit), l'adresse, le code postal, la commune ou le statut.
La liste des résultats de recherche permet de visualiser la liste des Entreprises ayant des demandes de consentements à traiter. Pour chaque Détenteur de la liste, les informations affichées sont :
- La raison sociale.
- L'identifiant (SIREN, SIRET, NUMAGRIN ou NUMAGRIT).
- Le nombre de demandes de consentements en attente de traitement.
- L'adresse postale.
- Le code postal.
- La commune.
- Le statut du Détenteur.
Récupérer une entreprise
Récupérer les éléments d'une Entreprise par son identifiant unique id.
Requête
GET /companies/{company_id}
| Paramètre | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| company_id * | string | Oui | Identifiant unique de l'Entreprise recherchée | fef1b25a-e980-4bd6-9ced-e1c4df714665 |
curl -X 'GET' \
'https://www.agata-consent.com/companies/fef1b25a-e980-4bd6-9ced-e1c4df714665' \
-H 'accept: application/json'
Réponse
| Code | Titre | Description |
|---|---|---|
| 200 | OK | Retourne l'Entreprise |
| 404 | Not Found | L' Entreprise est introuvable |
| Body | Type | Description | Exemple |
|---|---|---|---|
| corporate_name | string | Raison sociale de l'Entreprise | GAEC DU VERGER |
| address | string | Adresse postale de l'Entreprise | LD BEAUREGARD |
| postal_code | string | Code postal de la commune de l'Entreprise | 16310 |
| city | string | Commune de l'Entreprise | MONTEMBOEUF |
| string | Mail de contact | gaec.verger@orange.fr | |
| id | string | Identifiant unique (UUID) de l'Entreprise recherchée | fef1b25a-e980-4bd6-9ced-e1c4df714665 |
| identifier_type | string | Type d'identifiant utilisé pour désigner l'Entreprise : SIRET | SIREN | NUMAGRIT | NUMAGRIN | SIRET |
| business_identifier | string | Valeur de l'identifiant selon le type spécifié dans identifier_type | 73282932000074 |
| status | string | État du compte de l'Entreprise : ACTIVE | SUSPENDED | CLOSED | ACTIVE |
{
"corporate_name": "GAEC DU VERGER",
"address": "LD BEAUREGARD",
"postal_code": "16310",
"city": "MONTEMBOEUF",
"email": "gaec.verger@orange.fr",
"id": "fef1b25a-e980-4bd6-9ced-e1c4df714665",
"identifier_type": "SIRET",
"business_identifier": "73282932000074",
"status": "ACTIVE"
}
Rechercher une entreprise
Rechercher une Entreprise grâce à son identifier_type (SIRET, SIREN, NUMAGRIN ou NUMAGRIT).
Requêtes
GET /companies?identifierType={identifier_type}&businessIdentifier={business_identifier}
| Paramètre | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| identifierType * | string | Oui | Type d'identifiant utilisé pour désigner l'Entreprise : SIRET | SIREN | NUMAGRIT | NUMAGRIN | SIRET |
| businessIdentifier * | string | Oui | Valeur de l'identifiant selon le type spécifié dans identifier_type | 73282932000074 |
curl -X 'GET' \
'https://www.agata-consent.com/companies?identifierType=SIRET&siret=73282932000074' \
-H 'accept: application/json'
GET /companies/email={email}
| Paramètre | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| email * | string | Oui | Mail de contact | gaec.verger@orange.fr |
curl -X 'GET' \
'https://www.agata-consent.com/companies?email=gaec.verger@orange.fr' \
-H 'accept: application/json'
Réponse
| Code | Titre | Description |
|---|---|---|
| 200 | OK | Retourne l'Entreprise |
| 404 | Not Found | L' Entreprise est introuvable |
| Body | Type | Description | Exemple |
|---|---|---|---|
| corporate_name | string | Raison sociale de l'Entreprise | GAEC DU VERGER |
| address | string | Adresse postale de l'Entreprise | LD BEAUREGARD |
| postal_code | string | Code postal de la commune de l'Entreprise | 16310 |
| city | string | Commune de l'Entreprise | MONTEMBOEUF |
| string | Mail de contact | gaec.verger@orange.fr | |
| id | string | Identifiant unique (UUID) de l'Entreprise recherchée | fef1b25a-e980-4bd6-9ced-e1c4df714665 |
| identifier_type | string | Type d'identifiant utilisé pour désigner l'Entreprise : SIRET | SIREN | NUMAGRIT | NUMAGRIN | SIRET |
| business_identifier | string | Valeur de l'identifiant selon le type spécifié dans identifier_type | 73282932000074 |
| status | string | État du compte de l'Entreprise : ACTIVE | SUSPENDED | CLOSED | ACTIVE |
{
"corporate_name": "GAEC DU VERGER",
"address": "LD BEAUREGARD",
"postal_code": "16310",
"city": "MONTEMBOEUF",
"email": "gaec.verger@orange.fr",
"id": "fef1b25a-e980-4bd6-9ced-e1c4df714665",
"identifier_type": "SIRET",
"business_identifier": "73282932000074",
"status": "ACTIVE"
}
Ajouter une Entreprise
Dans le cas où l'Entreprise n'existe pas encore, il est nécessaire de la créer avant de pouvoir lui affecter une demande de Consentement par exemple.
Requête
POST /companies
| Body | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| corporate_name | string | Non | Raison sociale de l'Entreprise | GAEC DU VERGER |
| address | string | Non | Adresse postale de l'Entreprise | LD BEAUREGARD |
| postal_code | string | Non | Code postal de la commune de l'Entreprise | 16310 |
| city | string | Non | Commune de l'Entreprise | MONTEMBOEUF |
| string | Non | Mail de contact | gaec.verger@orange.fr |
curl -X 'POST' \
'https://www.agata-consent.com/companies' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"corporate_name": "GAEC DU VERGER",
"address": "LD BEAUREGARD",
"postal_code": "16310",
"city": "MONTEMBOEUF",
"email": "gaec.verger@orange.fr",
"identifier_type": "SIRET",
"siret": "73282932000074",
"status": "ACTIVE"
}'
Réponse
| Code | Titre | Description |
|---|---|---|
| 201 | Created | Entreprise créée |
| 400 | Bad Request | Syntaxe de la requête invalide |
| 409 | Conflict | Entreprise est déjà connue |
| Body | Type | Description | Exemple |
|---|---|---|---|
| corporate_name | string | Raison sociale de l'Entreprise | GAEC DU VERGER |
| address | string | Adresse postale de l'Entreprise | LD BEAUREGARD |
| postal_code | string | Code postal de la commune de l'Entreprise | 16310 |
| city | string | Commune de l'Entreprise | MONTEMBOEUF |
| string | Mail de contact | gaec.verger@orange.fr | |
| id | string | Identifiant unique (UUID) de l'Entreprise recherchée | fef1b25a-e980-4bd6-9ced-e1c4df714665 |
| identifier_type | string | Type d'identifiant utilisé pour désigner l'Entreprise : SIRET | SIREN | NUMAGRIT | NUMAGRIN | SIRET |
| business_identifier | string | Valeur de l'identifiant selon le type spécifié dans identifier_type | 73282932000074 |
| status | string | État du compte de l'Entreprise : ACTIVE | SUSPENDED | CLOSED | ACTIVE |
{
"corporate_name": "GAEC DU VERGER",
"address": "LD BEAUREGARD",
"postal_code": "16310",
"city": "MONTEMBOEUF",
"email": "gaec.verger@orange.fr",
"id": "fef1b25a-e980-4bd6-9ced-e1c4df714665",
"identifier_type": "SIRET",
"business_identifier": "73282932000074",
"status": "ACTIVE"
}
Modifier une Entreprise
Modification d'une Entreprise afin de mettre à jour certains de ses champs.
Requête
PATCH /companies/{company_id}
| Body | Type | Obligatoire | Description |
|---|---|---|---|
| corporate_name * | string | Oui | Raison sociale de l'Entreprise |
| address * | string | Oui | Adresse postale de l'Entreprise |
| postal_code * | string | Oui | Code postal de la commune de l'Entreprise |
| city * | string | Oui | Commune de l'Entreprise |
| string | Non | Mail de contact de l'Entreprise |
curl -X 'PATCH' \
'https://www.agata-consent.com/companies/fef1b25a-e980-4bd6-9ced-e1c4df714665' \
-H 'accept: */*' \
-H 'Content-Type: application/json' \
-d '{
"email": "gaec.verger@free.fr"
}'
Réponse
| Code | Titre | Description |
|---|---|---|
| 200 | OK | Entreprise modifiée |
| 400 | Bad Request | Entreprise modifiée |
| 404 | Not Found | Entreprise introuvable |
| 409 | Conflict | Le corporate_mail ou email sont déjà connus sur une autre Entreprise |
| Body | Type | Description | Exemple |
|---|---|---|---|
| corporate_name | string | Raison sociale de l'Entreprise | GAEC DU VERGER |
| address | string | Adresse postale de l'Entreprise | LD BEAUREGARD |
| postal_code | string | Code postal de la commune de l'Entreprise | 16310 |
| city | string | Commune de l'Entreprise | MONTEMBOEUF |
| string | Mail de contact | gaec.verger@orange.fr | |
| id | string | Identifiant unique (UUID) de l'Entreprise recherchée | fef1b25a-e980-4bd6-9ced-e1c4df714665 |
| identifier_type | string | Type d'identifiant utilisé pour désigner l'Entreprise : SIRET | SIREN | NUMAGRIT | NUMAGRIN | SIRET |
| business_identifier | string | Valeur de l'identifiant selon le type spécifié dans identifier_type | 73282932000074 |
| status | string | État du compte de l'Entreprise : ACTIVE | SUSPENDED | CLOSED | ACTIVE |
{
"corporate_name": "GAEC DU VERGER",
"address": "LD BEAUREGARD",
"postal_code": "16310",
"city": "MONTEMBOEUF",
"email": "gaec.verger@orange.fr",
"id": "fef1b25a-e980-4bd6-9ced-e1c4df714665",
"identifier_type": "SIRET",
"business_identifier": "73282932000074",
"status": "ACTIVE"
}
Supprimer une Entreprise
La suppression d'une Entreprise correspond à une cessation d'activité : le statut de l'Entreprise passe alors à CLOSED. L'ensemble des Activités associées à l'Entreprise sont également clôturées : les dates de fin de toutes les Activités sont donc actualisées dans l'opération.
Requête
DELETE /companies/{company_id}
| Paramètre | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| company_id * | string | Oui | Identifiant unique de l'Entreprise recherchée | 73ca52fc-40b9-4c79-84d9-daae0462132b |
curl -X 'DELETE' \
'https://www.agata-consent.com/companies/73ca52fc-40b9-4c79-84d9-daae0462132b' \
-H 'accept: application/json'
Réponse
| Code | Titre | Description |
|---|---|---|
| 200 | OK | Succès |
| 404 | Not Found | Entreprise non trouvée |
| Body | Type | Description | Exemple |
|---|---|---|---|
| corporate_name | string | Raison sociale de l'Entreprise | GAEC DU VERGER |
| address | string | Adresse postale de l'Entreprise | LD BEAUREGARD |
| postal_code | string | Code postal de la commune de l'Entreprise | 16310 |
| city | string | Commune de l'Entreprise | MONTEMBOEUF |
| string | Mail de contact | gaec.verger@orange.fr | |
| id | string | Identifiant unique (UUID) de l'Entreprise recherchée | fef1b25a-e980-4bd6-9ced-e1c4df714665 |
| identifier_type | string | Type d'identifiant utilisé pour désigner l'Entreprise : SIRET | SIREN | NUMAGRIT | NUMAGRIN | SIRET |
| business_identifier | string | Valeur de l'identifiant selon le type spécifié dans identifier_type | 73282932000074 |
| status | string | État du compte de l'Entreprise : ACTIVE | SUSPENDED | CLOSED | CLOSE |
{
"corporate_name": "GAEC DU VERGER",
"address": "LD BEAUREGARD",
"postal_code": "16310",
"city": "MONTEMBOEUF",
"email": "gaec.verger@orange.fr",
"id": "fef1b25a-e980-4bd6-9ced-e1c4df714665",
"identifier_type": "SIRET",
"business_identifier": "73282932000074",
"status": "CLOSE"
}
Gestion des Activités
Les Activités (activities) sont associés aux Entreprises : elles couvrent un certain périmètre, un sous ensemble plus restreint que l'Entreprise.
Chaque Activité est liée à son Entreprise par le champ company_id en lien avec l'id de l'Entreprise. Lors de la création d'une Entreprise, une Activité par défaut est créée avec :
- un name renseignée avec le corporate_name de l'Entreprise
- un identifier_type égal à SIRET | SIREN | NUMAGRIN | NUMAGRIT et un business_identifier initialisé avec la valeur du {SIRET | SIREN | NUMAGRIN | NUMAGRIT} de l'Entreprise
Une Entreprise peut donc détenir de 1 à N Activités de cinq types différentes :
| Business_Identifier | Dénomination | Description | Exemple |
|---|---|---|---|
| SIRET | SIREN | NUMAGRIN | NUMAGRIT | Activité par défaut | Activité initialisée lors de la création d'une Entreprise et référençant le même identifiant que le business_identifier de l'Entreprise. Il ne peut exister qu'une seule activité de ce type par Entreprise. | 73282932000074 |
| EDE_NUMBER | Activité d'élevage d'animaux | Dans la plupart des cas définie par un numéro EDE, également appelé numéro de cheptel ou d'exploitation. | FR35167340 |
| PACAGE_NUMBER | Activité de gestion parcellaire | Désigne un numéro PACAGE utilisé par les services du Ministère de l’Agriculture pour identifier de manière unique les producteurs dans les demandes d’aides, d'autorisations, etc. | 085123456 |
| MARKING_CODE | Atelier d'élevage porcin | Indicatif de marquage abrégé, anciennement appelé numéro de frappe ou numéro de TVA : il s'agit d'un numéro à 7 caractères. | FR56ABC |
| CVI_NUMBER | Production viticole | Désigne le Casier Viticole Informatisé, également appelé numéro d'Exploitation Viti-Vinicole (E.V.V.) qui identifie toute entreprise exerçant une activité viticole auprès des organismes publics et administrations. | 3401308999 |
Les Entreprises et leurs Activités peuvent donc être modélisées ainsi :
classDiagram
Entreprise --|> Périmètre_Entreprise: Activité par défaut
Entreprise --|> Élevage: Activité 1
Entreprise --|> Parcellaire: Activité 2
Entreprise --|> Atelier_Porc: Activité 3
Entreprise --|> Atelier_Viticole: Activité 4
Entreprise : SIRET | SIREN | NUMAGRIN | NUMAGRIT
Périmètre_Entreprise : SIRET | SIREN | NUMAGRIN | NUMAGRIT
Élevage : EDE_NUMBER
Parcellaire : PACAGE_NUMBER
Atelier_Porc : MARKING_CODE
Atelier_Viticole : CVI_NUMBER
Lister les Activités d'une Entreprise
Retourne la liste complète des Activities rattachées à une Entreprise Compagny
Requête
GET companies/{company_id}/activities
| Paramètre | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| company_id * | string | Oui | Identifiant unique de l'Entreprise recherchée | fef1b25a-e980-4bd6-9ced-e1c4df714665 |
curl -X 'GET' \
'https://www.agata-consent.com/companies/fef1b25a-e980-4bd6-9ced-e1c4df714665/activities' \
-H 'accept: application/json'
Réponse
| Code | Titre | Description |
|---|---|---|
| 200 | OK | Retourne le tableau des Activités de l'Entreprise |
| 404 | Not Found | L'Entreprise est introuvable |
| Body | Type | Description | Exemple |
|---|---|---|---|
| name | string | Nom de l'Activité | GAEC DU VERGER |
| identifier_type | string | Type d'Activité : SIRET, SIREN, NUMAGRIN, NUMAGRIT, EDE_NUMBER, MARKING_CODE, PACAGE_NUMBER, CVI_NUMBER | SIRET |
| business_identifier | string | Valeur de l'identifiant de l'Activité | 73282932000074 |
| id | string | Identifiant unique de l'Activité | 4384a162-6fc5-4c75-b892-7aae8135aad7 |
| company_id | string | Identifiant unique de l'Entreprise à laquelle l'Activité est rattachée | fef1b25a-e980-4bd6-9ced-e1c4df714665 |
| period | {PeriodModel} | Date de création et date de clôture de l'Activité dans AGATA CONSENT | 2020-11-24T10:55:47.362Z, 2023-11-24T10:55:47.362Z |
| status | string | État de l'Activité : ACTIVE, INACTIVE | ACTIVE |
[
{
"name": "GAEC DU VERGER",
"identifier_type": "SIRET",
"business_identifier": "73282932000074",
"id": "4384a162-6fc5-4c75-b892-7aae8135aad7",
"company_id": "fef1b25a-e980-4bd6-9ced-e1c4df714665",
"period" : {
"start_date": "2020-11-24T10:55:47.362Z",
"end_date": ""
},
"status": "ACTIVE"
}
{
"name" :"Atelier Bovin",
"identifier_type": "EDE_NUMBER",
"business_identifier": "FR35167340",
"id": "2a06d08d-4ac0-4022-87cf-481271aea05d",
"company_id": "fef1b25a-e980-4bd6-9ced-e1c4df714665",
"period": {
"start_date": "2020-11-24T10:55:47.362Z",
"end_date": ""
},
"status": "ACTIVE"
}
]
Récupérer une Activité
Récupérer les éléments d'une Activité liée à une Entreprise grâce à son identifiant unique {activity_id}.
Requête
GET companies/{company_id}/activities/{activity_id}
| Paramètre | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| company_id * | string | Oui | Identifiant unique de l'Entreprise recherchée | fef1b25a-e980-4bd6-9ced-e1c4df714665 |
| activity_id * | string | Oui | Identifiant unique de l'Activité de l'Entreprise recherchée | 4384a162-6fc5-4c75-b892-7aae8135aad7 |
curl -X 'GET' \
'https://www.agata-consent.com/companies/fef1b25a-e980-4bd6-9ced-e1c4df714665/activities/4384a162-6fc5-4c75-b892-7aae8135aad7' \
-H 'accept: application/json'
Réponse
| Code | Titre | Description |
|---|---|---|
| 200 | OK | Retourne l'Activité |
| 404 | Not Found | L'Activité est introuvable |
| Body | Type | Description | Exemple |
|---|---|---|---|
| name | string | Nom de l'Activité | GAEC DU VERGER |
| identifier_type | string | Type d'Activité : SIRET, SIREN, NUMAGRIN, NUMAGRIT, EDE_NUMBER, MARKING_CODE, PACAGE_NUMBER, CVI_NUMBER | SIRET |
| business_identifier | string | Valeur de l'identifiant de l'Activité | 73282932000074 |
| id | string | Identifiant unique de l'Activité | 4384a162-6fc5-4c75-b892-7aae8135aad7 |
| company_id | string | Identifiant unique de l'Entreprise à laquelle l'Activité est rattachée | fef1b25a-e980-4bd6-9ced-e1c4df714665 |
| period | {PeriodModel} | Date de création et date de clôture de l'Activité dans AGATA CONSENT | 2020-11-24T10:55:47.362Z, 2023-11-24T10:55:47.362Z |
| status | string | État de l'Activité : ACTIVE, INACTIVE | ACTIVE |
{
"name": "GAEC DU VERGER",
"identifier_type": "SIRET",
"business_identifier": "73282932000074",
"id": "4384a162-6fc5-4c75-b892-7aae8135aad7",
"company_id": "fef1b25a-e980-4bd6-9ced-e1c4df714665",
"period" : {
"start_date": "2020-11-24T10:55:47.362Z",
"end_date": ""
},
"status": "ACTIVE"
}
Rechercher une Activité
Rechercher une Activité spécifique par son business_identifier sans avoir connaissance de la Company à laquelle l'Activité est rattachée.
Requête
GET activities?identifierType={identifier_type}&businessIdentifier={business_identifier}
| Paramètre | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| identifierType * | string | Oui | Type d'identifiant utilisé pour désigner l'Activité | PACAGE_NUMBER |
| businessIdentifier * | string | Oui | Valeur de l'identifiant selon le type spécifié dans identifier_type | 085123456 |
curl -X 'GET' \
'https://www.agata-consent.com/activities/?identifierType=PACAGE_NUMBER&businessIdentifier=085123456' \
-H 'accept: application/json'
Réponse
| Code | Titre | Description |
|---|---|---|
| 200 | OK | Retourne l'Activité |
| 404 | Not Found | L'Activité est introuvable |
| Body | Type | Description | Exemple |
|---|---|---|---|
| name | string | Nom de l'Activité | atelier parcellaire |
| identifier_type | string | Type d'Activité : SIRET, SIREN, NUMAGRIN, NUMAGRIT, EDE_NUMBER, MARKING_CODE, PACAGE_NUMBER, CVI_NUMBER | PACAGE_NUMBER |
| business_identifier | string | Valeur de l'identifiant de l'Activité | 085123456 |
| id | string | Identifiant unique de l'Activité | 91cb0b72-6adf-48eb-8a97-64d3ebc564f4 |
| company_id | string | Identifiant unique de l'Entreprise à laquelle l'Activité est rattachée | 0d42de28-a70a-40f2-9e14-31d9c067656d |
| period | {PeriodModel} | Date de création et date de clôture de l'Activité dans AGATA CONSENT | 2020-11-24T10:55:47.362Z, |
| status | string | État de l'Activité : ACTIVE, INACTIVE | ACTIVE |
{
"name": "atelier parcellaire",
"identifier_type": "PACAGE_NUMBER",
"business_identifier": "085123456",
"id": "91cb0b72-6adf-48eb-8a97-64d3ebc564f4",
"company_id": "0d42de28-a70a-40f2-9e14-31d9c067656d",
"period" : {
"start_date": "2020-11-24T10:55:47.362Z",
"end_date": ""
},
"status": "ACTIVE"
}
Ajouter une Activité à une Entreprise
Permet d'ajouter une Activité à une Entreprise.
Requête
POST /companies/{company_id}/activities
| Paramètre | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| company_id * | string | Oui | Identifiant unique de l'Entreprise recherchée | fef1b25a-e980-4bd6-9ced-e1c4df714665 |
| Body | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| name | string | Oui | Nom de l'Activité à créer | Atelier Porc |
| identifier_type | string | Oui | Type d'identifiant de l'Activité | MARKING_CODE |
| business_identifier | string | Oui | Valeur de l'identifiant selon le type spécifié dans identifier_type | FR56ABC |
| status | string | Oui | État de l'Activité : ACTIVE | INACTIVE | ACTIVE |
curl -X 'POST' \
'https://www.agata-consent.com/companies/fef1b25a-e980-4bd6-9ced-e1c4df714665/activities' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"name": "Atelier Porc",
"identifier_type": "MARKING_CODE",
"business_identifier": "FR56ABC",
"status": "ACTIVE"
}'
Réponse
Réponses possibles de l'API :
| Code | Titre | Description |
|---|---|---|
| 201 | Created | Activité créée avec succès |
| 400 | Bad request | Syntaxe de la requête invalide |
{
"name": "Atelier Porc",
"identifier_type": "MARKING_CODE",
"business_identifier": "FR56ABC",
"id": "05f9816f-326a-4b8a-ba14-97df46c51526",
"company_id": "00000000-0000-0000-0000-000000000000",
"period" : {
"start_date": "2020-11-24T10:55:47.362Z",
"end_date": ""
},
"status": "ACTIVE"
}'
Mise en application
Pour illustrer l'usage des APIs, reprenons l'exemple de l'Entreprise GAEC du Verger :
{
"corporate_name":"GAEC DU VERGER",
"address": "LD BEAUREGARD",
"postal_code": "16310",
"city": "MONTEMBOEUF",
"email": "gaec.verger@orange.fr",
"id": "fef1b25a-e980-4bd6-9ced-e1c4df714665",
"identifier_type": "SIRET",
"business_identifier": "73282932000074",
"status": "ACTIVE"
}
Et son Activité par défaut initialisée lors de la création du Détenteur :
{
"name": "GAEC DU VERGER",
"identifier_type": "SIRET",
"business_identifier": "73282932000074",
"id": "c64bec18-1e9c-4b87-abad-a73a2c127077",
"company_id": "fef1b25a-e980-4bd6-9ced-e1c4df714665",
"period" : {
"start_date": "2020-11-24T10:55:47.362Z",
"end_date": ""
},
"status": "ACTIVE"
}
Soit la modélisation suivante :
flowchart TD;
A[GAEC du Verger]-->|Activité par défaut| B[business_identifier : 732 829 320 000 74];
Nous souhaitons ajouter un atelier porc défini par le MARKING_CODE FR56ABC. Pour ajouter cette Activité, la requête est la suivante :
curl -X 'POST' \
'https://www.agata-consent.com/companies/fef1b25a-e980-4bd6-9ced-e1c4df714665/activities' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"name": "Atelier Porc",
"identifier_type": "MARKING_CODE",
"business_identifier": "FR56ABC",
"status": "ACTIVE"
}'
Cette Activité va s'ajouter à l'activité de l'Entreprise "GAEC Du Verger" précédemment définie. Le résultat sera donc :
- Le Détenteur (GAEC du Verger) : identique à l'état précédent ;
- L'Activité par défaut (business_identifier : 732 829 320 000 74) : identique à l'état précédent ;
- L'Activité liée à l'atelier porc (MARKING_CODE : FR56ABC) : nouvellement créée.
La nouvelle situation peut être modélisée de la manière suivante :
flowchart TD;
A[GAEC du Verger]-->|Activité par défaut| B[business_identifier : 732 829 320 000 74];
A[GAEC du Verger]-->|Atelier Porc| C[MARKING_CODE : FR56ABC];
Cette activité est peut être récupérée par l'une des requêtes suivantes :
-
Par le {company_id} de l'Entreprise et le {activity_id} de l'Activité :
/companies/{companyId}/activities/{activityId}Exemple de requêtecurl -X 'GET' \ 'https://www.agata-consent.com/companies/fef1b25a-e980-4bd6-9ced-e1c4df714665/activities/05f9816f-326a-4b8a-ba14-97df46c51526' \ -H 'accept: application/json' -
Par les identifiants métiers {identifier_type} et {business_identifier} de l'Activité :
/activitiesExemple de requêtecurl -X 'GET' \ 'https://www.agata-consent.com/activities?identifier_type=MARKING_CODE&business_identifier=FR56ABC' \ -H 'accept: application/json'
Ces appels retourneront le même résultat, à savoir l'Activité "Atelier Porc" nouvellement créée :
{
"name": "Atelier Porc",
"identifier_type": "MARKING_CODE",
"business_identifier": "FR56ABC",
"id": "05f9816f-326a-4b8a-ba14-97df46c51526",
"company_id": "00000000-0000-0000-0000-000000000000",
"period" : {
"start_date": "2020-11-24T10:55:47.362Z",
"end_date": ""
},
"status": "ACTIVE"
}'
Gestion des Familles de données et des Usages
Gestion des Familles de données
Dans le cadre d'un traitement ou d'une valorisation, de nombreuses données sont nécessaires en amont. Afin de rester intelligible et pour éviter une sursollicitation des Détenteurs, les consentements AGATA CONSENT s'appliquent sur un périmètre plus large : la Famille de données (Family). Cette dénomination correspond aux catégories de données collectées évoquées par la CNIL dans le cadre du RGPD (source). Les données collectées sont ainsi regroupées par catégories cohérentes afin de garantir la validité du consentement.
flowchart TD;
B[Donnée 1]-->A[Famille de données];
C[Donnée 2]-->A[Famille de données];
D[Donnée 3]-->A[Famille de données];
E[Donnée 4]-->A[Famille de données];
F[Donnée 5]-->A[Famille de données];
G[Donnée 6]-->A[Famille de données];
Dans AGATA CONSENT, une Famille de données a les caractéristiques suivantes :
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
| name * | string | Oui | Intitulé de la Famille de données |
| business_identifier * | string | Oui | Identifiant métier de la Famille de données |
| id * | string | Oui | Identifiant unique (UUID) de la Famille de données |
| domain_id * | string | Oui | Identifiant unique (UUID) du Domaine auquel est rattachée la Famille de données |
| datas_collected * | string | Oui | Descriptions usuelles des catégories de données couvertes par le consentement |
Prenons l'exemple des informations de naissance d'un bovin. Sans être exhaustif, voici les données la constituant :
flowchart TD;
B["N° animal"]-->A[Information de naissance d'un animal];
C[Mère]-->A;
D[Père]-->A;
E[Code race]-->A;
F[Poids]-->A;
G[Date de naissance]-->A;
H[Condition de vêlage]-->A;
Néanmoins, la liste des données précises peut être amenée à évoluer selon les process des organismes, les évolutions réglementaires, les besoins de suivi sanitaires, de recherche, etc. Dans le cas où chaque donnée est listée dans la Famille, toute évolution de cette liste invaliderait les précédents consentements et/ou imposerait la mise en place de versionning de consentements et sa bonne prise en compte par chaque éditeur de logiciel.
Comme indiqué précédemment et conformément à la CNIL, choix est fait de porter le périmètre de la Famille sur les catégories de données collectées. Dans l'exemple précédemment cité, un consentement souhaitant recueillir les informations de naissance d'un animal mentionnera la Famille « Informations de naissance d'un animal » et non pas l'inventaire complet des données collectées.
La récupération des Familles est un préalable indispensable avant la création des demandes de consentement. La Famille permet de définir les catégories de données collectées et donc concernées par la demande de consentement.

Lister les Familles
Lister les Familles de données d'un Domaine spécifique.
Requête
GET /domains/{domain_id}/families
| Paramètre | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| domain_id * | string | Oui | Identifiant unique (UUID) du Domaine visé | f3c281e1-85bf-463f-809f-9648bf297cf7 |
curl -X 'GET' \
'https://www.agata-consent.com/domains/f3c281e1-85bf-463f-809f-9648bf297cf7/families' \
-H 'accept: application/json'
Réponse
| Code | Titre | Description |
|---|---|---|
| 200 | OK | Retourne un tableau de Familles |
| 404 | Not Found | Aucune Famille présente sur le Domaine |
| Body | Type | Description | Exemple |
|---|---|---|---|
| name | string | Nom de la Famille | Carnet sanitaire d'un bovin |
| business_identifier | string | Valeur de l'identifiant de la Famille | BOVIN_carnet_sanitaire |
| id | string | Identifiant unique de la Famille | 0a63fcfe-e8fa-4acc-81a2-72fcfe0d7b50 |
| domain_id | string | Identifiant unique du Domaine de la Famille | f3c281e1-85bf-463f-809f-9648bf297cf7 |
| datas_collected | string | Description du ou des type(s) de données collectées | [Identification animale,informations sanitaires animal] |
[
{
"name": "Carnet sanitaire d'un bovin",
"business_identifier": "BOVIN_carnet_sanitaire",
"id": "0a63fcfe-e8fa-4acc-81a2-72fcfe0d7b50",
"domain_id": "f3c281e1-85bf-463f-809f-9648bf297cf7",
"datas_collected": [
"Identification animale",
"informations sanitaires animal"
]
}
{
"name": "Informations génétique d'un bovin",
"business_identifier": "BOVIN_genetique",
"id": "1cc477dc-6aeb-4259-a541-9ea12f8fb553",
"domain_id": "f3c281e1-85bf-463f-809f-9648bf297cf7",
"datas": [
"génotype bovin"
]
}
]
Récupérer une Famille
Récupérer les éléments d'une Famille de donnée liée à une Domaine grâce à son identifiant unique {family_id}.
Requête
GET /domains/{domain_id}/families/{family_id}
| Paramètre | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| domain_id * | string | Oui | Identifiant unique (UUID) du Domaine visé | f3c281e1-85bf-463f-809f-9648bf297cf7 |
| family_id * | string | Oui | Identifiant unique (UUID) de la Famille de données recherchée | 0a63fcfe-e8fa-4acc-81a2-72fcfe0d7b50 |
curl -X 'GET' \
'https://www.agata-consent.com/domains/f3c281e1-85bf-463f-809f-9648bf297cf7/families/0a63fcfe-e8fa-4acc-81a2-72fcfe0d7b50' \
-H 'accept: application/json'
Réponse
| Code | Titre | Description |
|---|---|---|
| 200 | OK | Retourne une Famille |
| 404 | Not Found | Aucune Famille connue avec cet id sur le Domaine |
| Body | Type | Description | Exemple |
|---|---|---|---|
| name | string | Nom de la Famille | Informations génétique d'un bovin |
| business_identifier | string | Valeur de l'identifiant de la Famille | BOVIN_genetique |
| id | string | Identifiant unique de la Famille | 0a63fcfe-e8fa-4acc-81a2-72fcfe0d7b50 |
| domain_id | string | Identifiant unique du Domaine de la Famille | f3c281e1-85bf-463f-809f-9648bf297cf7 |
| datas_collected | string[ ] | Description du ou des type(s) de données collectées | [génotype bovin] |
{
"name": "Informations génétique d'un bovin",
"business_identifier": "BOVIN_genetique",
"id": "0a63fcfe-e8fa-4acc-81a2-72fcfe0d7b50",
"domain_id": "f3c281e1-85bf-463f-809f-9648bf297cf7",
"datas_collected": ["génotype bovin"]
}
Ajouter une Famille
Ajoute une Famille de données à un Domaine.
Requête
POST /domains/{domain_id}/families
| Paramètre | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| domain_id * | string | Oui | Identifiant unique (UUID) du Domaine visé | f3c281e1-85bf-463f-809f-9648bf297cf7 |
| Body | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| name | string | Oui | Nom de la Famille à créer | Carnet de pâturage |
| business_identifier | string | Oui | Type d'identifiant de la Famille | carnet_paturage |
| datas_collected | string[ ] | Oui | Description du ou des type(s) de données collectées | [carnet de pâturage] |
curl -X 'POST' \
'https://www.agata-consent.com/domains/{5c7d01d4-45f1-40d1-94c9-9cc667a7f304}/families' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"name": "Carnet de pâturage",
"business_identifier": "carnet_paturage",
"datas_collected": [carnet de pâturage]
}
Réponse
| Code | Titre | Description |
|---|---|---|
| 201 | Created | Famille créée avec succès |
| 400 | Bad request | Syntaxe de la requête invalide |
| 409 | Conflict | Une Famille avec le même business_identifier existe déjà |
| Body | Type | Description | Exemple |
|---|---|---|---|
| name | string | Nom de la Famille | Carnet de pâturage |
| business_identifier | string | Valeur de l'identifiant de la Famille | carnet_paturage |
| id | string | Identifiant unique de la Famille | fe264dcb-ef97-44db-bb2d-c87c56dae06e |
| domain_id | string | Identifiant unique du Domaine de la Famille | 5c7d01d4-45f1-40d1-94c9-9cc667a7f304 |
| datas_collected | string[ ] | Description du ou des type(s) de données collectées | [Carnet de pâturage] |
{
"name": "Carnet de pâturage",
"business_identifier": "carnet_paturage",
"id": "fe264dcb-ef97-44db-bb2d-c87c56dae06e",
"domain_id": "5c7d01d4-45f1-40d1-94c9-9cc667a7f304",
"datas_collected": ["Carnet de pâturage"]
}
Modifier une Famille
La modification de Famille de données n'est pas possible. En effet, la Famille étant enregistrée au moment de la création d'une demande de consentement, toute modification ultérieure de celle-ci invaliderait l'ensemble des consentements utilisant cette Famille. Il serait alors indispensable de procéder à une nouvelle signature de tous ces consentements.
De fait, soyez particulièrement attentif au moment de créer vos Familles pour éviter toute erreur, notamment dans la description de celle ci.
Supprimer une Famille
La suppression de Famille de données n'est pas possible. En effet, la Famille étant enregistrée au moment de la création d'une demande de consentement, toute suppression invaliderait l'ensemble des consentements utilisant cette Famille.
De fait, soyez particulièrement attentif au moment de créer vos Familles pour éviter toute erreur, notamment dans la description de celle ci.
Gestion des Usages
Pour rappel, l'Usage explicite la finalité des traitements appliqués sur les Familles de données collectées et répond à la question : « A quoi vont servir les données concernées par cette demande de consentement ? ». L'usage est spécifique pour chaque demande de consentement.
Quelques exemples de finalités de traitement :
- Gestion de la clientèle
- Enquête de satisfaction
- Recherche et développement
- Réalisation d'indicateurs de suivi pour conseil
- Prospection commerciale
- etc.
Comme précisé par la CNIL (source] : une fois l'usage précisé, celui ci doit être respecté. En cas de changement de finalité sur l'usage prévu des données, une nouvelle demande de consentement doit être établie. Il en va de votre responsabilité de vous assurer que les données que vous collectez soient utilisées selon le cadre spécifié dans les consentements recueillis.
Dans AGATA CONSENT, la structure des Usages est la suivante :
| Attribut | Type | Obligatoire | Description |
|---|---|---|---|
| name * | string | Oui | Dénomination de l'Usage |
| description * | string | Oui | Description de la finalité de traitement |
| business_identifier * | string | Oui | Identifiant métier de l'Usage |
| domain_id * | string | Oui | Identifiant unique du domaine (UUID) auquel est rattaché l'Usage |
| id * | string | Oui | Identifiant unique de l'usage (UUID) |
Tout comme les Familles, la récupération préalable des Usages est un pré requis à l'enregistrement d'une demande de consentement : l'Usage permet de définir la finalité des traitements appliqués sur les Familles de données collectées.

Lister les Usages
Lister les Usages de données d'un Domaine spécifique.
Requête
GET /domains/{domain_id}/usages
| Paramètre | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| domain_id * | string | Oui | Identifiant unique (UUID) du Domaine visé | f3c281e1-85bf-463f-809f-9648bf297cf7 |
curl -X 'GET' \
'https://www.agata-consent.com/domains/f3c281e1-85bf-463f-809f-9648bf297cf7/usages' \
-H 'accept: application/json'
Réponse
| Code | Titre | Description |
|---|---|---|
| 200 | OK | Retourne un tableau des Usages du Domaine |
| 404 | Not Found | Aucun Usage présent sur le Domaine |
| Body | Type | Description | Exemple |
|---|---|---|---|
| name | string | Dénomination de l'Usage | Tableau de bord pour technicien |
| description | string | Description de l'usage qui est fait des données | Fabrication des indicateurs de suivi du tableau de bord Technicien conseil en élevage |
| business_identifier | string | Identifiant métier de l'Usage | TDB_Technicien |
| domain_id | string | Identifiant unique (UUID) du Domaine référençant l'Usage | f3c281e1-85bf-463f-809f-9648bf297cf7 |
| id | string | Identifiant unique (UUID) de l'Usage | 1d5d4ec4-0a83-49a7-9209-f78a7af9360d |
[
{
"name": "Tableau de bord pour technicien",
"description": "Fabrication des indicateurs de suivi du tableau de bord Technicien conseil en élevage",
"business_identifier": "TDB_Technicien",
"domain_id": "f3c281e1-85bf-463f-809f-9648bf297cf7",
"id": "1d5d4ec4-0a83-49a7-9209-f78a7af9360d"
}
{
"name": "Facturation Élevage",
"description": "Calcul de la facturation selon les paramètres d'élevage",
"business_identifier": "Facturation_Elevage",
"domain_id": "f3c281e1-85bf-463f-809f-9648bf297cf7",
"id": "c9aec0b1-0a04-4c71-aff7-7dffb9592150"
}
]
Récupérer un Usage
Récupérer un Usage de données par son identifiant unique.
Requête
GET /domains/{domain_id}/usages/{usage_id}
| Paramètre | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| domain_id * | string | Oui | Identifiant unique (UUID) du Domaine visé | f3c281e1-85bf-463f-809f-9648bf297cf7 |
| usage_id * | string | Oui | Identifiant unique (UUID) de l'Usage recherché | 1d5d4ec4-0a83-49a7-9209-f78a7af9360d |
curl -X 'GET' \
'https://www.agata-consent.com/domains/f3c281e1-85bf-463f-809f-9648bf297cf7/usages/1d5d4ec4-0a83-49a7-9209-f78a7af9360d' \
-H 'accept: application/json'
Réponse
| Code | Titre | Description |
|---|---|---|
| 200 | OK | Retourne l'Usage du Domaine visé |
| 404 | Not Found | Aucun Usage présent sur le Domaine |
| Body | Type | Description | Exemple |
|---|---|---|---|
| name | string | Dénomination de l'Usage | Tableau de bord pour technicien |
| description | string | Description de l'usage qui est fait des données | Fabrication des indicateurs de suivi du tableau de bord Technicien conseil en élevage |
| business_identifier | string | Identifiant métier de l'Usage | TDB_Technicien |
| domain_id | string | Identifiant unique (UUID) du Domaine référençant l'Usage | f3c281e1-85bf-463f-809f-9648bf297cf7 |
| id | string | Identifiant unique (UUID) de l'Usage | 1d5d4ec4-0a83-49a7-9209-f78a7af9360d |
{
"name": "Tableau de bord pour technicien",
"description": "Fabrication des indicateurs de suivi du tableau de bord Technicien conseil en élevage",
"business_identifier": "TDB_Technicien",
"domain_id": "f3c281e1-85bf-463f-809f-9648bf297cf7",
"id": "1d5d4ec4-0a83-49a7-9209-f78a7af9360d"
}
Ajouter un Usage
Ajoute un Usage de données à un Domaine.
Requête
POST /domains/{domain_id}/usages
| Paramètre | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| domain_id * | string | Oui | Identifiant unique (UUID) du Domaine visé | f3c281e1-85bf-463f-809f-9648bf297cf7 |
| Body | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| name | string | Oui | Dénomination de l'Usage | Établissement de devis |
| description | string | Oui | Description de l'usage qui est fait des données | Établissement d`un devis suite rédaction dossier technique |
| business_identifier | string | Oui | Identifiant métier de l'Usage | Fabrication_Devis |
curl -X 'POST' \
'https://www.agata-consent.com/domains/{440d98ed-466a-4114-a3f2-6d4d2d946e3c}/usages' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"name": "Établissement de devis",
"description": "Établissement d`un devis suite rédaction dossier technique",
"business_identifier": "Fabrication_Devis"
}
Réponse
| Code | Titre | Description |
|---|---|---|
| 201 | Created | Usage créée avec succès |
| 400 | Bad request | Syntaxe de la requête invalide |
| 409 | Conflict | Un Usage avec le même business_identifier existe déjà |
| Body | Type | Description | Exemple |
|---|---|---|---|
| name | string | Dénomination de l'Usage | Établissement de devis |
| description | string | Description de l'usage qui est fait des données | Établissement d`un devis suite rédaction dossier technique |
| business_identifier | string | Identifiant métier de l'Usage | Fabrication_Devis |
| domain_id | string | Identifiant unique (UUID) du Domaine référençant l'Usage | 440d98ed-466a-4114-a3f2-6d4d2d946e3c |
| id | string | Identifiant unique (UUID) de l'Usage | 0019e6a4-4192-4f66-87ca-f33a8bfaf22d |
{
"name": "Établissement de devis",
"description": "Établissement d`un devis suite rédaction dossier technique",
"business_identifier": "Fabrication_Devis",
"domain_id": "440d98ed-466a-4114-a3f2-6d4d2d946e3c",
"id": "0019e6a4-4192-4f66-87ca-f33a8bfaf22d"
}
Modifier un Usage
La modification des Usages n'est pas possible. En effet, l'Usage étant enregistré au moment de la création d'une demande de consentement, toute édition invaliderait l'ensemble des consentements utilisant cet Usage.
De fait, soyez particulièrement attentif au moment de créer vos Usages pour éviter toute erreur, notamment dans le nom et la description de ceux-ci.
Supprimer un Usage
La suppression des Usages n'est pas possible. En effet, l'Usage étant enregistré au moment de la création d'une demande de consentement, toute suppression invaliderait l'ensemble des consentements utilisant cet Usage.
De fait, soyez particulièrement attentif au moment de créer vos Usages pour éviter toute erreur, notamment dans le nom et la description de ceux-ci.
Gestion des demandes de consentements
Une demande de Consentement est un consentement en attente de signature (ou refus) par une Entreprise détentrice des données.
Pour rappel, afin qu'un consentement soit valide (au sens RGPD), il doit contenir les informations suivantes :
- l'identité du détenteur des données : l'Activité de l'entreprise détenant les données
- l’identité du responsable de traitement : une Entreprise agissant en tant que Bénéficiaire
- les catégories de données collectées : la Famille explicitant les catégories de données collectées
- les finalités du traitement : l'Usage qui sera fait des données collectées
- la durée de validité : la Période ou du moins la date de début à laquelle le Consentement commence à courir
Dans les chapitres précédents, vous avez abordé l'ensemble de ces concepts. Vous êtes donc en mesure de créer une demande de consentement agrégeant tous ces éléments.
Dans AGATA CONSENT, le Consentement (consent) contient les informations suivantes afin de répondre aux obligations réglementaires :
- L' identifiant unique du consentement sous la forme d'UUID : id
- L' Activité (basée sur le modèle activity) qui détient les droits des données (le rôle holder). Cette Activité peut être celle par Défaut pour porter sur le périmètre complet de l'Entreprise ou sur une autre Activité plus spécifique. Les informations incluses sont :
| Attribut d'une Activité | Type | Description |
|---|---|---|
| name | string | Dénomination de l'Activité |
| identifier_type | string | Type d'identifiant utilisé dans le business_identifier |
| business_identifier | string | Valeur de l'identifiant selon le type spécifié dans identifier_type |
| id | string | Identifiant unique (UUID) de l'Activité courante |
| company_id | string | Identifiant unique (UUID) de l'Entreprise mère de l'Activité courante |
- L' Entreprise (basé sur le modèle company) qui va bénéficier du droit à utiliser les données (rôle beneficiary) grâce au Consentement incluant :
| Attribut | Type | Description |
|---|---|---|
| corporate_name | string | Raison sociale de l'entreprise bénéficiaire |
| address | string | Adresse postale du Bénéficiaire |
| postal_code | string | Code postal du Bénéficiaire |
| city | string | Commune du Bénéficiaire |
| id | string | Identifiant unique (UUID) du Bénéficiaire |
| identifier_type | string | Type d'identifiant utilisé dans le business_identifier |
| business_identifier | string | Valeur de l'identifiant selon le type spécifié dans identifier_type |
- L' Entreprise (basé sur le modèle company) à l'initiative de la création de la demande de consentement (rôle creator). Cette donnée sera dans la plupart des cas identique au Bénéficiaire. Les informations incluses sont :
| Attribut | Type | Description |
|---|---|---|
| corporate_name | string | Raison sociale du Créateur |
| address | string | Adresse postale du Créateur |
| postal_code | string | Code postal du Créateur |
| city | string | Commune du Créateur |
| id | string | Identifiant unique (UUID) du Créateur |
| identifier_type | string | Type d'identifiant utilisé dans le business_identifier |
| business_identifier | string | Valeur de l'identifiant selon le type spécifié dans identifier_type |
- Le Domaine (domain) sur lequel est rattaché le consentement et incluant :
| Attribut | Type | Description |
|---|---|---|
| name | string | Dénomination du Domaine |
| id | string | Identifiant unique (UUID) du Domaine |
- La Famille de données (family) sur laquelle porte le Consentement et incluant :
| Attribut | Type | Description |
|---|---|---|
| name | string | Nom de la Famille de données |
| id | string | Identifiant unique (UUID) de la Famille de données |
- Les traitements (usage) auxquels sont destinés les données incluant :
| Attribut | Type | Description |
|---|---|---|
| name | string | Nom de l'Usage |
| description | string | Description de l'Usage |
| id | string | Identifiant unique (UUID) de l'Usage |
- Les informations liées à un éventuel contrat de référence (contract) auquel les consentements sont adossés :
| Attribut | Type | Description |
|---|---|---|
| contract_signature_date | string | Date de signature du contrat de référence |
| contract_ending_date | string | Date de fin du contrat de référence |
| contract_reference | string | Référence du contrat adossé au consentement |
- L' historique du consentement (history) avec les éléments de traçabilité :
| Attribut | Type | Description |
|---|---|---|
| created_by | string | Identifiant unique (UUID) de l'entité à l'origine de la création de la demande de consentement |
| created_by_user_type | string | Type d'entité ayant crée la demande de Consentement : COMPANY | ACTIVITY |
| created_at | string | Date de création de la demande de consentement |
| accepted_by | string | Identifiant unique (UUID) de l'entité ayant signé la demande de consentement |
| accepted_by_user_type | string | Type d'entité ayant signé la demande de Consentement : COMPANY | ACTIVITY |
| accepted_at | string | Date de signature de la demande de consentement |
| rejected_by | string | Identifiant unique (UUID) de l'entité ayant refusé la demande de consentement |
| rejected_by_user_type | string | Type d'entité ayant refusé la demande de Consentement : COMPANY | ACTIVITY |
| rejected_at | string | Date de refus de la demande de consentement |
| closed_by | string | Identifiant unique (UUID) de l'entité ayant clôturé le consentement |
| closed_by_user_type | string | Type d'entité ayant clôturé le Consentement : COMPANY | ACTIVITY |
| closed_at | string | Date de clôture du Consentement |
- les informations de validité temporelle du consentement :
| Attribut | Type | Description |
|---|---|---|
| starting_date | string | Date de début de validité du consentement |
| ending_date | string | Date de fin de validité du consentement |
| last_update_date | string | Date de dernière mise à jour du consentement |
- le motif d'un éventuel refus de signature de consentement : refusal_reason
- l' état courant du consentement (state) qui peut être :
| Valeur de state | Description |
|---|---|
| REQUESTED | Demande de consentement en attente de signature par le Détenteur |
| VALIDATED | Consentement signé par le Détenteur et donc valide |
| REVOKED | Consentement refusé ou révoqué par le Détenteur. Une Demande de consentement refusée (par le Détenteur) possède une date renseignée dans le champ rejected_at et closed_at. Un Consentement clôturé (par le Détenteur ou le Bénéficiaire) possède uniquement une date renseignée dans le champ closed_at. |
Vérifier l'existence d'un consentement
Le cas d'usage le plus courant d'AGATA CONSENT est l'interrogation du système pour vérifier la présence ou non d'un Consentement selon certaines conditions :
- Pour un Détenteur et un Bénéficiaire identifiés
- Portant sur une Famille de données précise
- Selon un Usage spécifique
- Sur une période de temps précisée
Requête
HEAD /companies/{companyId}/activities/{activityId}/consents?activeAt={active}&beneficiaryId={beneficiary_id}&familyId={family_id}&usageId={usage_id}&contract_reference={contract_reference}
| Paramètre | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| companyId * | string | Oui | Identifiant unique (UUID) de l'Entreprise visée | f3c281e1-85bf-463f-809f-9648bf297cf7 |
| activityId * | string | Oui | Identifiant unique (UUID) de l'Activité visée | eefb8f5a-a220-2E78-988e-e1dcaf719856 |
| activeAt * | string | Oui | Date pour laquelle le consentement recherché doit être actif | 2022-08-25T19:32:56.109Z |
| beneficiaryId * | string | Oui | Identifiant unique (UUID) du Bénéficiaire du Consentement | 5a978f05-ce36-4a66-a271-b09c202c0f13 |
| familyId * | string | Oui | Identifiant unique (UUID) de la Famille | 0a63fcfe-e8fa-4acc-81a2-72fcfe0d7b50 |
| usageId * | string | Oui | Identifiant unique (UUID) de l'Usage | 1d5d4ec4-0a83-49a7-9209-f78a7af9360d |
| contractReference | string | Non | Référence du contrat associé au consentement | ref_32423_frwe_20191002 |
curl -X 'HEAD' \
'https://api.agata-consent.com/companies/fef1b25a-e980-4bd6-9ced-e1c4df714665/activities/eefb8f5a-a220-2E78-988e-e1dcaf719856/consents?activeAt=2022-08-25T19%3A32%3A56.109Z&beneficiaryId=5a978f05-ce36-4a66-a271-b09c202c0f13&familyId=3fa85f64-5717-4562-b3fc-2c963f66afa6&usageId=678df96b-b61e-4adf-9912-0efd1181d057&contractReference=ref_32423_frwe_20191002' \
-H 'accept: application/json'
Réponse
| Code | Titre | Description |
|---|---|---|
| 200 | OK | Succès |
| 204 | No content | Aucun Consentement correspondant aux critères trouvé |
| 400 | Bad request | Syntaxe de la requête invalide |
{
"OK"
}
{
"NO CONTENT"
}
Créer une demande de Consentement
Enregistrer une Demande de consentement en précisant le Bénéficiaire, la Famille, l'Usage et la Période.
Requête
POST /companies/{companyId}/activities/{activityId}/consents
| Paramètre | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| companyId * | string | Oui | Identifiant unique (UUID) de l'Entreprise visée | f3c281e1-85bf-463f-809f-9648bf297cf7 |
| activityId * | string | Oui | Identifiant unique (UUID) de l'Activité visée | eefb8f5a-a220-2E78-988e-e1dcaf719856 |
| Body | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| beneficiary_id * | string | Oui | Identifiant unique (UUID) du Bénéficiaire des données | 5a978f05-ce36-4a66-a271-b09c202c0f13 |
| family_id * | string | Oui | Identifiant Unique (UUID) de la Famille de données à laquelle se réfère la demande de Consentement | 736c6eb0-5ca2-4c0c-82d1-197cef752790 |
| usage_id * | string | Oui | Identifiant Unique (UUID) de l'Usage prévu des données | 678df96b-b61e-4adf-9912-0efd1181d057 |
| contract_reference | string | Non | Référence du Contrat adossé à la demande de Consentement | ref_32423_frwe_20191002 |
| contract_signature_date | string | Non | Date de signature du Contrat adossé à la demande de Consentement | 2022-07-13T08:31:46.375Z |
| contract_ending_date | string | Non | Date de fin du Contrat adossé à la demande de Consentement | 2023-07-13T08:31:46.375Z |
| starting_date * | string | Oui | Date de début de validité du Consentement | 2022-07-13T08:31:46.375Z |
| ending_date | string | Non | Date de fin de validité du Consentement | 2023-07-13T08:31:46.375Z |
curl -X 'POST' \
'https://api.agata-consent.com/companies/fef1b25a-e980-4bd6-9ced-e1c4df714665/activities/eefb8f5a-a220-2E78-988e-e1dcaf719856/consents' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"beneficiary_id": "5a978f05-ce36-4a66-a271-b09c202c0f13",
"family_id": "736c6eb0-5ca2-4c0c-82d1-197cef752790",
"usage_id": "678df96b-b61e-4adf-9912-0efd1181d057",
"starting_date": "2022-07-13T08:31:46.375Z"
}'
curl -X 'POST' \
'https://api.agata-consent.com/companies/fef1b25a-e980-4bd6-9ced-e1c4df714665/activities/eefb8f5a-a220-2E78-988e-e1dcaf719856/consents' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"beneficiary_id": "5a978f05-ce36-4a66-a271-b09c202c0f13",
"family_id": "736c6eb0-5ca2-4c0c-82d1-197cef752790",
"usage_id": "678df96b-b61e-4adf-9912-0efd1181d057",
"contract_reference": "ref_32423_frwe_20191002",
"contract_signature_date": "2022-07-13T08:31:46.375Z",
"contract_ending_date": "2023-07-13T08:31:46.375Z",
"starting_date": "2022-07-13T08:31:46.375Z",
"ending_date": "2023-07-13T08:31:46.375Z"
}'
Réponse
| Code | Titre | Description |
|---|---|---|
| 201 | Created | Demande de Consentement créée avec succès |
| 400 | Bad request | Syntaxe de la requête invalide |
| 409 | Conflict | La demande de Consentement existe déjà |
| Body | Type | Description | Exemple |
|---|---|---|---|
| holder | object | Activité détentrice des droits visés par le Consentement | |
| beneficiary | object | L'Entreprise qui va bénéficier du droit à utiliser les données | |
| creator | object | L'Entreprise à l'initiative de la création de la demande de consentement | |
| domain | object | Domaine concerné par le Consentement | |
| family | object | Famille de données sur laquelle porte le Consentement | |
| usage | object | Usage de données sur lequel porte le Consentement | |
| contract | object | Informations de contractualisation éventuellement lié au Consentement | |
| history | object | Historique des actions effectuées sur le Consentement | |
| last_update_date | string | Date de dernière mise à jour du Consentement | 2022-06-30T13:39:33.269Z |
| starting_date | string | Date de début de validité du Consentement | 2022-06-08T15:11:34.254Z |
| ending_date | string | Date de fin de validité du consentement | |
| id | string | Identifiant unique (UUID) du Consentement | cf890c9d-a0de-458b-aaf4-6b07d08963bf |
| refusal_reason | string | Motif d'un éventuel refus de signature de Consentement | |
| state | string | État courant du consentement : REQUESTED | VALIDATED | REVOKED | REQUESTED |
{
"holder": {
"name": "Atelier Lait",
"business_identifier": "FR23456789",
"id": "cb9062e2a-ca7d-414f-8838-1124ad976fc7",
"siret": "28462932000013"
},
"beneficiary": {
"corporate_name": "CABINET VÉTÉRINAIRE MONTANT",
"address": "LA BLANCHE HERMINE",
"postal_code": "23004",
"city": "GUÉRET",
"id": "5a978f05-ce36-4a66-a271-b09c202c0f13",
"siret": "33987292100023"
},
"creator": {
"corporate_name": "CABINET VÉTÉRINAIRE MONTANT",
"address": "LA BLANCHE HERMINE",
"postal_code": "23004",
"city": "GUÉRET",
"id": "5a978f05-ce36-4a66-a271-b09c202c0f13",
"siret": "33987292100023"
},
"domain": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "Sanitaire"
},
"family": {
"id": "736c6eb0-5ca2-4c0c-82d1-197cef752790",
"name": "BOVIN : Carnet Sanitaire (pathologie, traitement)"
},
"usage": {
"description": "Suivi sanitaire lors des visites de contrôle",
"id": "678df96b-b61e-4adf-9912-0efd1181d057",
"name": "Abattoir - Suivi Perf carcasses"
},
"contract": {
"contract_ending_date": "2023-07-13T08:31:46.375Z",
"contract_reference": "ref_32423_frwe_20191002",
"contract_signature_date": "2022-07-13T08:31:46.375Z"
},
"history": {
"created_by": "5a978f05-ce36-4a66-a271-b09c202c0f13",
"created_at": "2022-06-30T13:39:33.269Z",
"accepted_by": null,
"accepted_at": null,
"rejected_by": null,
"rejected_at": null,
"closed_by": null,
"closed_at": null
},
"last_update_date": "2022-06-30T13:39:33.269Z",
"starting_date": "2022-06-08T15:11:34.254Z",
"ending_date": null,
"id": "cf890c9d-a0de-458b-aaf4-6b07d08963bf",
"refusal_reason": null,
"state": "REQUESTED",
}
Lister les Consentements
Lister l'ensemble des Consentements d'une Activité selon des critères de recherche spécifiques.
Requête
GET /companies/{companyId}/activities/{activityId}/consents
| Paramètre | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| companyId * | string | Oui | Identifiant unique (UUID) de l'Entreprise visée | f3c281e1-85bf-463f-809f-9648bf297cf7 |
| activityId * | string | Oui | Identifiant unique (UUID) de l'Activité visée | eefb8f5a-a220-2E78-988e-e1dcaf719856 |
| beneficiaryId | string | Non | Identifiant unique (UUID) du Bénéficiaire du Consentement | 5a978f05-ce36-4a66-a271-b09c202c0f13 |
| creatorId | string | Non | Identifiant unique (UUID) Créateur du Consentement | 5a978f05-ce36-4a66-a271-b09c202c0f13 |
| domainId | string | Non | Identifiant unique (UUID) du Domaine | 3fa85f64-5717-4562-b3fc-2c963f66afa6 |
| familyId | string | Non | Identifiant unique (UUID) de la Famille | 0a63fcfe-e8fa-4acc-81a2-72fcfe0d7b50 |
| usageId | string | Non | Identifiant unique (UUID) de l'Usage | 1d5d4ec4-0a83-49a7-9209-f78a7af9360d |
| state | string | Non | Statut du Consentement : REQUESTED | VALIDATED | REVOKED | VALIDATED |
| activeOnly | booléen | Non | Filtre les consentements pour ne retourner que ceux actifs à la date du jour | true |
| contractReference | string | Non | Référence du contrat associé au consentement | ref_32423_frwe_20191002 |
curl -X 'GET' \
'https://api.agata-consent.com/companies/f3c281e1-85bf-463f-809f-9648bf297cf7/activities/eefb8f5a-a220-2E78-988e-e1dcaf719856/consents?beneficiaryId=5a978f05-ce36-4a66-a271-b09c202c0f13&creatorId=5a978f05-ce36-4a66-a271-b09c202c0f13&domainId=3fa85f64-5717-4562-b3fc-2c963f66afa6&familyId=0a63fcfe-e8fa-4acc-81a2-72fcfe0d7b50&usageId=1d5d4ec4-0a83-49a7-9209-f78a7af9360d&state=VALIDATED&activeOnly=true&contractReference=ref_32423_frwe_20191002' \
-H 'accept: application/json'
Réponse
| Code | Titre | Description |
|---|---|---|
| 200 | OK | Retourne un tableau des Consentements |
| 204 | Not Found | Aucun Consentement correspondant à la recherche |
| 400 | Bad request | Syntaxe de la requête invalide |
| Body | Type | Description | Exemple |
|---|---|---|---|
| holder | object | Activité détentrice des droits visés par le Consentement | |
| beneficiary | object | L'Entreprise qui va bénéficier du droit à utiliser les données | |
| creator | object | L'Entreprise à l'initiative de la création de la demande de consentement | |
| domain | object | Domaine concerné par le Consentement | |
| family | object | Famille de données sur laquelle porte le Consentement | |
| usage | object | Usage de données sur lequel porte le Consentement | |
| contract | object | Informations de contractualisation éventuellement lié au Consentement | |
| history | object | Historique des actions effectuées sur le Consentement | |
| last_update_date | string | Date de dernière mise à jour du Consentement | 2022-06-30T13:39:33.269Z |
| starting_date | string | Date de début de validité du Consentement | 2022-06-08T15:11:34.254Z |
| ending_date | string | Date de fin de validité du consentement | 2023-07-08T15:11:34.254Z |
| id | string | Identifiant unique (UUID) du Consentement | bc04f4b1-5b4e-4316-aa57-8d67ec8a983d |
| refusal_reason | string | Motif d'un éventuel refus de signature de Consentement | Données confidentielles |
| state | string | État courant du consentement : REQUESTED | VALIDATED | REVOKED | VALIDATED |
[
{
"holder": {
"name": "Atelier Bovin",
"identifier_type": "EDE_NUMBER",
"business_identifier": "FR35167340",
"id": "2a06d08d-4ac0-4022-87cf-481271aea05d",
"company_id": "fef1b25a-e980-4bd6-9ced-e1c4df714665"
},
"beneficiary": {
"corporate_name": "COOPÉRATIVE AGRICOLE",
"address": "96 rue des agriculteurs CS 23240",
"postal_code": "81011",
"city": "ALBI",
"identifier_type": "SIRET",
"business_identifier": "33987292100023",
"id": "5a978f05-ce36-4a66-a271-b09c202c0f13"
},
"creator": {
"corporate_name": "COOPÉRATIVE AGRICOLE",
"address": "96 rue des agriculteurs CS 23240",
"postal_code": "81011",
"city": "ALBI",
"identifier_type": "SIRET",
"business_identifier": "33987292100023",
"id": "5a978f05-ce36-4a66-a271-b09c202c0f13"
},
"domain": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "Zootechnique partagée"
},
"family": {
"id": "0a63fcfe-e8fa-4acc-81a2-72fcfe0d7b50",
"name": "reproduction"
},
"usage": {
"description": "Appui technique éleveur périmètre NUTRITION",
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "Conseil en Élevage - Nutrition"
},
"contract": {
"contract_ending_date": "2022-07-30T13:39:33.269Z",
"contract_reference": "ref_32423_frwe_20191002",
"contract_signature_date": "2022-06-30T13:39:33.269Z"
},
"history": {
"created_by":"5a978f05-ce36-4a66-a271-b09c202c0f13",
"created_by_user_type":"COMPANY",
"created_at":"2022-06-30T13:39:33.269Z",
"accepted_by":"155f5deb-a7f3-49e9-9392-cab32b9c7980",
"accepted_by_user_type":"COMPANY",
"accepted_at":"2022-06-30T13:39:33.269Z",
"rejected_by": null,
"rejected_by_user_type": null,
"rejected_at": null,
"closed_by":"155f5deb-a7f3-49e9-9392-cab32b9c7980",
"closed_by_user_type":"COMPANY",
"closed_at":"2022-07-30T13:39:33.269Z"
},
"last_update_date": "2022-06-30T13:39:33.269Z",
"starting_date": "2022-06-08T15:11:34.254Z",
"ending_date": "2023-07-08T15:11:34.254Z",
"id": "bc04f4b1-5b4e-4316-aa57-8d67ec8a983d",
"refusal_reason": null,
"state": "REVOKED",
}
]
Récupérer un Consentement
Recherche d'un consentement lié à une activité par son id unique.
Requête
GET /companies/{companyId}/activities/{activityId}/consents/{consentId}
| Paramètre | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| companyId * | string | Oui | Identifiant unique (UUID) de l'Entreprise portant l'Activité liée au consentement | f3c281e1-85bf-463f-809f-9648bf297cf7 |
| activityId * | string | Oui | Identifiant unique (UUID) de l'Activité visée | eefb8f5a-a220-2E78-988e-e1dcaf719856 |
| consentId | string | Non | Identifiant unique (UUID) du Consentement | 5a978f05-ce36-4a66-a271-b09c202c0f13 |
curl -X 'GET' \
'https://api.agata-consent.com/companies/f3c281e1-85bf-463f-809f-9648bf297cf7/activities/eefb8f5a-a220-2E78-988e-e1dcaf719856/consents/5a978f05-ce36-4a66-a271-b09c202c0f13' \
-H 'accept: application/json'
Réponse
| Code | Titre | Description |
|---|---|---|
| 200 | OK | Retourne le Consentement |
| 400 | Bad request | Syntaxe de la requête invalide |
| 404 | Not Found | Pas de Consentement avec cet id |
| Body | Type | Description | Exemple |
|---|---|---|---|
| holder | object | Activité détentrice des droits visés par le Consentement | |
| beneficiary | object | L'Entreprise qui va bénéficier du droit à utiliser les données | |
| creator | object | L'Entreprise à l'initiative de la création de la demande de consentement | |
| domain | object | Domaine concerné par le Consentement | |
| family | object | Famille de données sur laquelle porte le Consentement | |
| usage | object | Usage de données sur lequel porte le Consentement | |
| contract | object | Informations de contractualisation éventuellement lié au Consentement | |
| history | object | Historique des actions effectuées sur le Consentement | |
| last_update_date | string | Date de dernière mise à jour du Consentement | 2022-06-30T13:39:33.269Z |
| starting_date | string | Date de début de validité du Consentement | 2022-06-08T15:11:34.254Z |
| ending_date | string | Date de fin de validité du consentement | 2023-07-08T15:11:34.254Z |
| id | string | Identifiant unique (UUID) du Consentement | bc04f4b1-5b4e-4316-aa57-8d67ec8a983d |
| refusal_reason | string | Motif d'un éventuel refus de signature de Consentement | Données confidentielles |
| state | string | État courant du consentement : REQUESTED | VALIDATED | REVOKED | VALIDATED |
{
"holder": {
"name": "Engraissement",
"business_identifier": "FR14987123",
"id": "cb9062e2a-ca7d-414f-8838-1124ad976fc7",
"siret": "56142932000024"
},
"beneficiary": {
"corporate_name": "ABATTOIR B-A-Y",
"address": "LA CROIX BLANCHE",
"postal_code": "77350",
"city": "LE MEE-SUR-SEINE",
"id": "5a978f05-ce36-4a66-a271-b09c202c0f13",
"siret": "33987292100023"
},
"creator": {
"corporate_name": "ABATTOIR B-A-Y",
"address": "LA CROIX BLANCHE",
"postal_code": "77350",
"city": "LE MEE-SUR-SEINE",
"id": "5a978f05-ce36-4a66-a271-b09c202c0f13",
"siret": "33987292100023"
},
"domain": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "Zootechnique partagée"
},
"family": {
"id": "736c6eb0-5ca2-4c0c-82d1-197cef752790",
"name": "croissance"
},
"usage": {
"description": "Création de rapport de suivi des carcasses",
"id": "678df96b-b61e-4adf-9912-0efd1181d057",
"name": "Abattoir - Suivi Perf carcasses"
},
"contract": {
"contract_ending_date": null,
"contract_reference": null,
"contract_signature_date": null
},
"history": {
"created_by": "5a978f05-ce36-4a66-a271-b09c202c0f13",
"created_at": "2022-06-30T13:39:33.269Z",
"accepted_by": "cb9062e2a-ca7d-414f-8838-1124ad976fc7",
"accepted_at": "2022-06-30T13:39:33.269Z",
"rejected_by": null,
"rejected_at": null,
"closed_by": null,
"closed_at": null
},
"last_update_date": "2022-06-30T13:39:33.269Z",
"starting_date": "2022-06-08T15:11:34.254Z",
"ending_date": null,
"id": "cf890c9d-a0de-458b-aaf4-6b07d08963bf",
"refusal_reason": null,
"state": "VALIDATED",
}
Rechercher des Consentements d'une entreprise
Recherche des Consentements liés à une Entreprise selon son statut de Bénéficiaire ou Détenteur.
Requête
GET /companies/{companyId}/consents?companyConsentRole={companyConsentRole}
Le paramètre companyConsentRole permet de définir le positionnement de l'Entreprise vis à vis du/des Consentement(s) recherché(s) :
Précisions
companyConsentRole=HOLDER: la recherche porte sur les Consentements pour lesquels l'Entreprise est Détentrice.companyConsentRole=BENEFICIARY: la recherche porte sur les Consentements pour lesquels l'Entreprise est Bénéficiaire.
| Paramètre | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| companyId * | string | Oui | Identifiant unique (UUID) de l'Entreprise portant l'Activité liée au consentement | fef1b25a-e980-4bd6-9ced-e1c4df714665 |
| companyConsentRole * | string | Oui | Statut de l'entreprise vis à vis du Consentement recherché : BENEFICIARY | HOLDER | HOLDER |
| domainId | string | Non | Identifiant unique (UUID) du Domaine | 3fa85f64-5717-4562-b3fc-2c963f66afa6 |
| familyId | string | Non | Identifiant unique (UUID) de la Famille | 0a63fcfe-e8fa-4acc-81a2-72fcfe0d7b50 |
| usageId | string | Non | Identifiant unique (UUID) de l'Usage | 1d5d4ec4-0a83-49a7-9209-f78a7af9360d |
| state | string | Non | Statut du Consentement : REQUESTED | VALIDATED | REVOKED | VALIDATED |
| activeOnly | booléen | Non | Filtre les consentements pour ne retourner que ceux actifs à la date du jour | true |
| contractReference | string | Non | Référence du contrat associé au consentement | ref_32423_frwe_20191002 |
curl -X 'GET' \
'https://api.agata-consent.com/companies/fef1b25a-e980-4bd6-9ced-e1c4df714665/consents?companyConsentRole=HOLDER&domainId=3fa85f64-5717-4562-b3fc-2c963f66afa6&familyId=0a63fcfe-e8fa-4acc-81a2-72fcfe0d7b50&usageId=1d5d4ec4-0a83-49a7-9209-f78a7af9360d&state=VALIDATED&activeOnly=true&contractReference=ref_32423_frwe_20191002' \
-H 'accept: application/json'
Réponse
| Code | Titre | Description |
|---|---|---|
| 200 | OK | Retourne le Consentement |
| 204 | No content | Aucun Consentement correspondant à la recherche |
| 400 | Bad request | Syntaxe de la requête invalide |
| Body | Type | Description | Exemple |
|---|---|---|---|
| holder | object | Activité détentrice des droits visés par le Consentement | |
| beneficiary | object | L'Entreprise qui va bénéficier du droit à utiliser les données | |
| creator | object | L'Entreprise à l'initiative de la création de la demande de consentement | |
| domain | object | Domaine concerné par le Consentement | |
| family | object | Famille de données sur laquelle porte le Consentement | |
| usage | object | Usage de données sur lequel porte le Consentement | |
| contract | object | Informations de contractualisation éventuellement lié au Consentement | |
| history | object | Historique des actions effectuées sur le Consentement | |
| last_update_date | string | Date de dernière mise à jour du Consentement | 2022-06-30T13:39:33.269Z |
| starting_date | string | Date de début de validité du Consentement | 2022-06-08T15:11:34.254Z |
| ending_date | string | Date de fin de validité du consentement | 2023-07-08T15:11:34.254Z |
| id | string | Identifiant unique (UUID) du Consentement | bc04f4b1-5b4e-4316-aa57-8d67ec8a983d |
| refusal_reason | string | Motif d'un éventuel refus de signature de Consentement | Données confidentielles |
| state | string | État courant du consentement : REQUESTED | VALIDATED | REVOKED | VALIDATED |
{
"holder": {
"name": "Engraissement",
"business_identifier": "FR14987123",
"id": "cb9062e2a-ca7d-414f-8838-1124ad976fc7",
"siret": "56142932000024"
},
"beneficiary": {
"corporate_name": "ABATTOIR B-A-Y",
"address": "LA CROIX BLANCHE",
"postal_code": "77350",
"city": "LE MEE-SUR-SEINE",
"id": "5a978f05-ce36-4a66-a271-b09c202c0f13",
"siret": "33987292100023"
},
"creator": {
"corporate_name": "ABATTOIR B-A-Y",
"address": "LA CROIX BLANCHE",
"postal_code": "77350",
"city": "LE MEE-SUR-SEINE",
"id": "5a978f05-ce36-4a66-a271-b09c202c0f13",
"siret": "33987292100023"
},
"domain": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "Zootechnique partagée"
},
"family": {
"id": "736c6eb0-5ca2-4c0c-82d1-197cef752790",
"name": "croissance"
},
"usage": {
"description": "Création de rapport de suivi des carcasses",
"id": "678df96b-b61e-4adf-9912-0efd1181d057",
"name": "Abattoir - Suivi Perf carcasses"
},
"contract": {
"contract_ending_date": null,
"contract_reference": null,
"contract_signature_date": null
},
"history": {
"created_by": "5a978f05-ce36-4a66-a271-b09c202c0f13",
"created_at": "2022-06-30T13:39:33.269Z",
"accepted_by": "cb9062e2a-ca7d-414f-8838-1124ad976fc7",
"accepted_at": "2022-06-30T13:39:33.269Z",
"rejected_by": null,
"rejected_at": null,
"closed_by": null,
"closed_at": null
},
"last_update_date": "2022-06-30T13:39:33.269Z",
"starting_date": "2022-06-08T15:11:34.254Z",
"ending_date": null,
"id": "cf890c9d-a0de-458b-aaf4-6b07d08963bf",
"refusal_reason": null,
"state": "VALIDATED",
}
Mise en application
Rappel
En tenant compte des précédentes explications, la création de la Demande de consentement adressée au Détenteur est désormais possible et se déroule en XX étapes :
-
La création du Détenteur si celui ci n'existe pas en amont :
POST /companiespour la création de la company.POST /companies/{company_id}/activitiespour la création de l'Activity si celle visée par le Consentement ne concernant pas l'Activité créée par défaut.
-
La récupération de la Famille de données afin de définir le périmètre des données concernées :
-
La récupération de l'Usage afin de définir les traitements appliquées prévus sur les données :
-
La création de la Demande de consentement avec ces éléments :
Contexte du cas d'usage
Nous souhaitons créer une Demande de consentement satisfaisant les exigences suivantes :
- Nous évoluons sur le Domaine 3fa85f64-5717-4562-b3fc-2c963f66afa6
- Entreprise détentrice : d6c0dfab-fcae-4faf-ae32-bc8ca90c01d6 sur le périmètre de l'Activité cb9062e2a-ca7d-414f-8838-1124ad976fc7
- Famille de données concernée par les consentements : 9dac45d5-914e-41d8-8c7b-54c438b1c32c
- L'Usage prévu des données : 678df96b-b61e-4adf-9912-0efd1181d057
- Le Bénéficiaire est le Créateur de la demande de Consentement , à savoir 33fd1623-ea8f-4cfe-9fee-a964dc246a60
- Le Consentement est adossé à un Contrat ayant pour référence ref_32423_frwe_20191002 signé le 13/07/2022 et pour une durée de 1 an
Vérification de l'existant
Le premier réflexe pourrait être de s'assurer qu'aucun consentement satisfaisant ces exigences ne soit actif. La requête pour effectuer cette recherche est donc :
curl -X 'GET' \
'https://api.agata-consent.com/companies/d6c0dfab-fcae-4faf-ae32-bc8ca90c01d6/activities/cb9062e2a-ca7d-414f-8838-1124ad976fc7/consents?beneficiaryId=33fd1623-ea8f-4cfe-9fee-a964dc246a60&creatorId=33fd1623-ea8f-4cfe-9fee-a964dc246a60&domainId=3fa85f64-5717-4562-b3fc-2c963f66afa6&familyId=9dac45d5-914e-41d8-8c7b-54c438b1c32c&usageId=678df96b-b61e-4adf-9912-0efd1181d057&state=VALIDATED&activeOnly=true&contractReference=ref_32423_frwe_20191002' \
-H 'accept: application/json'
Création de la Demande
Dans le cas où aucun Consentement n'existe, la requête à envoyer pour procéder à la création est la suivante :
curl -X 'POST' \
'https://api.agata-consent.com/companies/d6c0dfab-fcae-4faf-ae32-bc8ca90c01d6/activities/cb9062e2a-ca7d-414f-8838-1124ad976fc7/consents' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"beneficiary_id": "33fd1623-ea8f-4cfe-9fee-a964dc246a60",
"family_id": "9dac45d5-914e-41d8-8c7b-54c438b1c32c",
"usage_id": "678df96b-b61e-4adf-9912-0efd1181d057",
"contract_reference": "ref_32423_frwe_20191002",
"contract_signature_date": "2022-07-13T08:31:46.375Z",
"contract_ending_date": "2023-07-13T00:00:00.000Z",
"starting_date": "2022-07-13T08:31:46.375Z",
"ending_date": "2023-07-13T00:00:00.000Z"
}'
Réponse de la Demande
Une fois la Demande de consentement envoyée, la réponse est la suivante :
{
"holder": {
"name": "Elevage bovin",
"business_identifier": "FR14987123",
"id": "cb9062e2a-ca7d-414f-8838-1124ad976fc7",
"siret": "56142932000024"
},
"beneficiary": {
"corporate_name": "Cabinet VETAGRI",
"address": "LA CROIX BLANCHE",
"postal_code": "77350",
"city": "LE MEE-SUR-SEINE",
"id": "33fd1623-ea8f-4cfe-9fee-a964dc246a60",
"siret": "33987292100023"
},
"creator": {
"corporate_name": "Cabinet VETAGRI",
"address": "LA CROIX BLANCHE",
"postal_code": "77350",
"city": "LE MEE-SUR-SEINE",
"id": "33fd1623-ea8f-4cfe-9fee-a964dc246a60",
"siret": "33987292100023"
},
"domain": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "Sanitaire"
},
"family": {
"id": "9dac45d5-914e-41d8-8c7b-54c438b1c32c",
"name": "croissance"
},
"usage": {
"description": "Completion carnet sanitaire",
"id": "678df96b-b61e-4adf-9912-0efd1181d057",
"name": "Vétérinaire - Suivi carnet sanitaire"
},
"contract": {
"contract_ending_date": "2023-07-13T00:00:00.000Z",
"contract_reference": "ref_32423_frwe_20191002",
"contract_signature_date": "2022-07-13T08:31:46.375Z"
},
"history": {
"created_by": "33fd1623-ea8f-4cfe-9fee-a964dc246a60",
"created_at": "2022-07-14T08:31:46.375Z",
"accepted_by": null,
"accepted_at": null,
"rejected_by": null,
"rejected_at": null,
"closed_by": null,
"closed_at": null
},
"last_update_date": "2022-07-14T08:31:46.375Z",
"starting_date": "2022-07-14T08:31:46.375Z",
"ending_date": "2023-07-14T00:00:00.000Z",
"id": "cf890c9d-a0de-458b-aaf4-6b07d08963bf",
"refusal_reason": null,
"state": "REQUESTED",
}
La prochaine et dernière étape avant validation finale de la Demande de consentement est son approbation (ou son éventuel refus) par le Détenteur des données à travers l'interface AGATA CONSENT destinée aux utilisateurs.
Depuis l'écran Bénéficiaires, un détenteur peux visualiser les consentements en attente de signatures qui lui sont adressés et les valider ou refuser.

Système de hook
Fonctionnement général
![]() |
|---|
| Principe de fonctionnement des hook AGATA CONSENT |
Déroulé
Le fonctionnement des Hook d'AGATA CONSENT est très similaire au principe du paiement en ligne type e-commerce.
Au cours d'une souscription à un abonnement numérique, un applicatif externe nécessite de vérifier et/ou faire signer un ensemble de consentements au partage des données.
-
Pour cela, il fait un appel à un web-service d'authentification (Documentation)
-
Il envoie ensuite une demande de transaction à AGATA CONSENT en regroupant ces demandes de consentements via un appel de Webservice (après s'être authentifié). (Documentation)
-
Le lancement du traitement des hooks se fait dans une pop-up grâce au code suivant que vous devez rajouter dans l'application :
Il fait appel au hook (URLs) avec les paramètres suivants :<script> const popup = window.open( "[URL_HOOK]?transaction_id=[TRANSACTION_ID]&token=[TOKEN]", "Gestion des consentements", `width=${window.innerWidth * 0.9},height=${window.innerHeight * 0.9}` ); </script>[URL_HOOK] # Url des hooks (dépendant de l'environnement preprod/prod) [TRANSACTION_ID] # Identifiant de la transaction [TOKEN] # Le token d'authentification -
AGATA CONSENT réceptionne cette transaction. Pour chacune des demandes de consentements la constituant, AGATA vérifie automatiquement l'existence d'un consentement signé ayant les mêmes caractéristiques (Famille, Usage, Bénéficiaire, Ayant Droit) et valide sur la temporalité indiquée dans la transaction.

-
En cas de complétude sur l'intégralité des consentements demandés, AGATA CONSENT redonne automatiquement la main à l'applicatif externe après en avoir informé l'Ayant Droit.

-
Dans le cas où au moins un consentement est absent, AGATA CONSENT propose à la signature cette demande de consentement. Une fois fait, l'utilisateur est informé du bon enregistrement des signatures et redirigé vers l'applicatif externe.

-
Un écran de refus est affiché en cas de refus par l'Ayant-Droit de signer une ou plusieurs demandes de consentements. Après la confirmation de son refus, il est redirigé vers l'applicatif externe.

-
Le processus d'abonnement au sein de l'applicatif externe se poursuit selon son fonctionnement prévu.
Redirection
Une fois la gestion des consentements terminée, la pop-up est fermée automatiquement. Pour ajouter un traitement supplémentaire il faut modifier le code précédent :
<script>
window.addEventListener("message", (event) => {
if (event.data === "HOOK_CLOSED") {
console.log("Popup fermée via message !");
// Lancer la suite du traitement ici
}
});
const popup = window.open(
"[URL_HOOK]?transaction_id=[TRANSACTION_ID]&token=[TOKEN]",
"Gestion des consentements",
`width=${window.innerWidth * 0.9},height=${window.innerHeight * 0.9}`
);
</script>
Diagramme de séquence
sequenceDiagram
Application->>Serveur authentification: Authentification via client_id/secret_id
Serveur authentification-->>Application: TOKEN
Application->>API: Création de la transaction
API-->>Application: ID transaction
Application->+Hook: Appel de l'url (iFrame, nouvel onglet)
Note right of Hook: Traitement des consentements
Hook->-Application: Redirection
Appels API
Authentification
L'application peut s’authentifier en utilisant le type de grant « client_credentials » associé à un client_id et un secret. Pour récupérer ces informations, il faut se rapprocher de l'équipe d'Agata-Consent.
curl --location --request POST 'https://keycloak.agata-consent.com/auth/realms/sgc/protocol/openid-connect/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Cookie: KEYCLOAK_LOCALE=fr' \
--data-urlencode 'client_id=<client id>' \
--data-urlencode 'client_secret=<client secret>' \
--data-urlencode 'grant_type=client_credentials'
Récupération de la transaction
Appel
GET/transactions/{transaction_id}
Cette méthode permet d'obtenir les informations d'une transaction.
| Body | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| transaction_id * | string | Oui | Identifiant unique de la transaction | 08b55957-5c80-4564-a2fd-3038c624f347 |
curl
--location 'https://api.agata-consent.com/transactions/08b55957-5c80-4564-a2fd-3038c624f347'
--header 'accept: application/json'
Réponse
| Code | Titre | Description |
|---|---|---|
| 201 | OK | Retourne la transaction |
| 401 | Not Authenticate | L'utilisateur n'est pas authentifié |
| 403 | Unauthorized | L'entreprise n'a pas les droits nécessaires pour utiliser cette API |
| 404 | Not Found | La transaction n'a pas été trouvée |
TransactionGetModel
| Body | Type | Description |
|---|---|---|
| id | string | Identifiant unique de la transaction (UUID) |
| application | ApplicationGetModel | Application |
| holder | CompanyGetModel | Détenteur des données |
| starting_date | string | Date de début des demandes de consentement |
| ending_date | string | Date de fin des demandes de consentement |
| created_at | string | Date de création de la transaction |
| accepted_at | string | Date à laquelle la transaction à été acceptée. Null à la création |
| rejected_at | string | Date à laquelle la transaction à été refusée. Null à la création |
| closed_at | string | Date de cloture de la transaction |
| consents_requested | array<TransactionDetailGetModel> | Consentements requis par l'application |
| signature_uri | string | Url de signature de la transaction |
TransactionDetailGetModel
| Body | Type | Description |
|---|---|---|
| id | string | Identifiant unique de la demande de consentement (UUID) |
| family | FamilyLightGetModel | Famille de données |
| usage | UsageLightGetModel | Usage des données |
| required | bool | Indique si le consentement est obligatoire pour pouvoir valider la transaction |
| created_at | string | Date de création de la transaction |
| consents | ConsentGetModel | Consentements / Demandes de consentement associés à la demande indiquée dans la transaction. Null à la création |
ApplicationGetModel
| Body | Type | Description |
|---|---|---|
| id | string | Identifiant unique de l'application (UUID) |
| company | CompanyGetModel | Entreprise |
| name | string | Dénomination de l'application |
| description | string | Description de l'application |
| app_key | string | Clé de l'application |
| callback_uri | string | Url de retour |
| created_at | string | Date de création de l'application |
| closed_at | string | Date de clôture de l'application |
{
"id": "08b55957-5c80-4564-a2fd-3038c624f347",
"application": {
"id": "c2472ea7-5a66-44f2-9f10-c65cd2108d32",
"company": {
"id": "ad97c8bb-af72-4f2d-9664-70fd9785f54t",
"corporate_name": "Entreprise Test",
"address": "Rue de la tulipe",
"postal_code": "01250",
"city": "Ceyzeriat",
"identifier_type": "SIRET",
"business_identifier": "73282932000074"
},
"name": "Agri Maker",
"description": "Agri Maker est le portail des agriculteurs. Acceptez les consentements pour pouvoir accéder à vos services.",
"app_key": "hook-app-example",
"callback_url": "https://api.agri-maker.com/consent-callback",
"created_at": "2023-10-07T09:37:43.993Z",
"closed_at": null
},
"holder": {
"type": "OWNER",
"id": "678df96b-b61e-4adf-9912-0efd1181d057",
"business_identifier": "FR35167340",
"siret": "73282932000074",
"name": "SAS Dupond Martin",
"address": "Rue de la tulipe",
"postal_code": "79200",
"city": "Ville-sur-mer"
},
"starting_date": "2023-10-07T10:37:43.993Z",
"ending_date": null,
"created_at": "2023-10-07T09:37:43.993Z",
"accepted_at": null,
"rejected_at": null,
"closed_at": null,
"consents_requested": [
{
"id": "08b55957-5c80-4564-a2fd-3038c624f347",
"family": {
"id": "5a978f05-ce36-4a66-a271-b09c202c0f13",
"name": "Registre sanitaire d'un bovin",
"business_identifier": "san-registre-bovin"
},
"usage": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "Tableau de bord pour technicien",
"description": "Fabrication des indicateurs de suivi du tableau de bord Technicien conseil en élevage",
"business_identifier": "idx-tdb-tk-cl"
},
"required": true,
"created_at": "2023-10-07T09:37:43.993Z",
"consents": null
}
],
"signature_uri": "null"
}
Infos complémentaires
La recherche de la transaction se fait via son id ET l'id de l'entreprise connectée via l'application
Création de la transaction
Appel
POST/transactions
Cette méthode permet de créer une nouvelle transaction liée à une application.
| Body | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| app_key * | string | Oui | Clé applicative | hook-app-exemple |
| holder_id * | string | Oui | Identifiant unique du détenteur des données | 678df96b-b61e-4adf-9912-0efd1181d057 |
| starting_date * | string | Oui | Date de début des demandes de consentement | 2024-03-07T10:37:43.993Z |
| ending_date | string | Non | Date de fin des demandes de consentement | 2025-03-07T10:37:43.993Z |
| consents_requested * | array | Oui | Consentements requis par l'application |
consents_requested
| Body | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| family_id * | string | Oui | Identifiant unique de la famille de données | 5a978f05-ce36-4a66-a271-b09c202c0f13 |
| usage_id * | string | Oui | Identifiant unique de l'usage des données | 3fa85f64-5717-4562-b3fc-2c963f66afa6 |
| required | bool | Non | Indique si le consentement est obligatoire pour pouvoir valider la transaction (défaut: true) | true |
curl
--location 'https://api.agata-consent.com/transactions'
--header 'accept: application/json'
--data-raw '{
"app_key": "hook-app-example",
"holder_id": "678df96b-b61e-4adf-9912-0efd1181d057",
"starting_date": "2024-03-07T10:37:43.993Z",
"ending_date": null,
"consents_requested": [
{
"family_id": "5a978f05-ce36-4a66-a271-b09c202c0f13",
"usage_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
"required": true
},
{
"family_id": "4a4a06c9-c72b-43db-9d2f-2a7dd741f7cc",
"usage_id": "d2423881-c407-4c04-ba43-14a752d912c1"
"required": false
}
]
}'
Réponse
| Code | Titre | Description |
|---|---|---|
| 201 | OK | Retourne la transaction |
| 401 | Not Authenticate | L'utilisateur n'est pas authentifié |
| 403 | Unauthorized | L'entreprise n'a pas les droits nécessaires pour utiliser cette API |
| 400 | Bad Request | Une des familles indiquée n'existe pas |
| 400 | Bad Request | Un des usages indiqué n'existe pas |
| 400 | Bad Request | Le détenteur n'existe pas |
| 400 | Bad Request | L'application n'existe pas |
TransactionGetModel
| Body | Type | Description |
|---|---|---|
| id | string | Identifiant unique de la transaction (UUID) |
| application | ApplicationGetModel | Application |
| holder | CompanyGetModel | Détenteur des données |
| starting_date | string | Date de début des demandes de consentement |
| ending_date | string | Date de fin des demandes de consentement |
| created_at | string | Date de création de la transaction |
| accepted_at | string | Date à laquelle la transaction à été acceptée. Null à la création |
| rejected_at | string | Date à laquelle la transaction à été refusée. Null à la création |
| closed_at | string | Date de cloture de la transaction |
| consents_requested | array<TransactionDetailGetModel> | Consentements requis par l'application |
| signature_uri | string | Url de signature de la transaction |
TransactionDetailGetModel
| Body | Type | Description |
|---|---|---|
| id | string | Identifiant unique de la demande de consentement (UUID) |
| family | FamilyLightGetModel | Famille de données |
| usage | UsageLightGetModel | Usage des données |
| required | bool | Indique si le consentement est obligatoire pour pouvoir valider la transaction |
| created_at | string | Date de création de la transaction |
| consents | ConsentGetModel | Consentements / Demandes de consentement associés à la demande indiquée dans la transaction. Null à la création |
ApplicationGetModel
| Body | Type | Description |
|---|---|---|
| id | string | Identifiant unique de l'application (UUID) |
| company | CompanyGetModel | Entreprise |
| name | string | Dénomination de l'application |
| description | string | Description de l'application |
| app_key | string | Clé de l'application |
| callback_uri | string | Url de retour |
| created_at | string | Date de création de l'application |
| closed_at | string | Date de clôture de l'application |
{
"id": "08b55957-5c80-4564-a2fd-3038c624f347",
"application": {
"id": "c2472ea7-5a66-44f2-9f10-c65cd2108d32",
"company": {
"id": "ad97c8bb-af72-4f2d-9664-70fd9785f54t",
"corporate_name": "Entreprise Test",
"address": "Rue de la tulipe",
"postal_code": "01250",
"city": "Ceyzeriat",
"identifier_type": "SIRET",
"business_identifier": "73282932000074"
},
"name": "Agri Maker",
"description": "Agri Maker est le portail des agriculteurs. Acceptez les consentements pour pouvoir accéder à vos services.",
"app_key": "hook-app-example",
"callback_url": "https://api.agri-maker.com/consent-callback",
"created_at": "2023-10-07T09:37:43.993Z",
"closed_at": null
},
"holder": {
"type": "OWNER",
"id": "678df96b-b61e-4adf-9912-0efd1181d057",
"business_identifier": "FR35167340",
"siret": "73282932000074",
"name": "SAS Dupond Martin",
"address": "Rue de la tulipe",
"postal_code": "79200",
"city": "Ville-sur-mer"
},
"starting_date": "2023-10-07T10:37:43.993Z",
"ending_date": null,
"created_at": "2023-10-07T09:37:43.993Z",
"accepted_at": null,
"rejected_at": null,
"closed_at": null,
"consents_requested": [
{
"id": "08b55957-5c80-4564-a2fd-3038c624f347",
"family": {
"id": "5a978f05-ce36-4a66-a271-b09c202c0f13",
"name": "Registre sanitaire d'un bovin",
"business_identifier": "san-registre-bovin"
},
"usage": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "Tableau de bord pour technicien",
"description": "Fabrication des indicateurs de suivi du tableau de bord Technicien conseil en élevage",
"business_identifier": "idx-tdb-tk-cl"
},
"required": true,
"created_at": "2023-10-07T09:37:43.993Z",
"consents": null
}
],
"signature_uri": "https://sign.agata-consent.com/9d8ee04cd09548b39e5a05b95f0d7b58/08b55957-5c80-4564-a2fd-3038c624f347"
}
Infos complémentaires
La signature Uri est composée de [Url application de signature] / [Application Key] / [transaction ID]
Création de la transaction dénormalisée
Appel
POST/denormalizedTransactions
Cette méthode permet de créer une nouvelle transaction liée à une application. La spécificité de cette méthode c'est qu'elle va utiliser les identifiants métier.
| Body | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| app_key * | string | Oui | Clé applicative | hook-app-exemple |
| holder_business_identifier * | string | Oui | Identifiant métier du détenteur des données | FR35167340 |
| starting_date * | string | Oui | Date de début des demandes de consentement | 2024-03-07T10:37:43.993Z |
| ending_date | string | Non | Date de fin des demandes de consentement | 2025-03-07T10:37:43.993Z |
| consents_requested * | array | Oui | Consentements requis par l'application |
consents_requested
| Body | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| domain_business_identifier * | string | Oui | Identifiant unique du domaine de données | zootechnique |
| family_business_identifier * | string | Oui | Identifiant unique de la famille de données | san-registre-bovin |
| usage_business_identifier * | string | Oui | Identifiant unique de l'usage des données | idx-tdb-tk-cl |
| required | bool | Non | Indique si le consentement est obligatoire pour pouvoir valider la transaction (défaut: true) | true |
curl
--location 'https://api.agata-consent.com/transactions'
--header 'accept: application/json'
--data-raw '{
"app_key": "hook-app-example",
"holder_business_identifier": "FR35167340",
"starting_date": "2024-03-07T10:37:43.993Z",
"ending_date": null,
"consents_requested": [
{
"domain_business_identifier": "zootechnique",
"family_business_identifier": "san-registre-bovin",
"usage_business_identifier": "idx-tdb-tk-cl"
"required": true
}
]
}'
Réponse
| Code | Titre | Description |
|---|---|---|
| 201 | OK | Retourne la transaction |
| 401 | Not Authenticate | L'utilisateur n'est pas authentifié |
| 403 | Unauthorized | L'entreprise n'a pas les droits nécessaires pour utiliser cette API |
| 400 | Bad Request | Une des familles indiquée n'existe pas |
| 400 | Bad Request | Un des usages indiqué n'existe pas |
| 400 | Bad Request | Le détenteur n'existe pas |
| 400 | Bad Request | L'application n'existe pas |
TransactionGetModel
| Body | Type | Description |
|---|---|---|
| id | string | Identifiant unique de la transaction (UUID) |
| application | ApplicationGetModel | Application |
| holder | CompanyGetModel | Détenteur des données |
| starting_date | string | Date de début des demandes de consentement |
| ending_date | string | Date de fin des demandes de consentement |
| created_at | string | Date de création de la transaction |
| accepted_at | string | Date à laquelle la transaction à été acceptée. Null à la création |
| rejected_at | string | Date à laquelle la transaction à été refusée. Null à la création |
| closed_at | string | Date de cloture de la transaction |
| consents_requested | array<TransactionDetailGetModel> | Consentements requis par l'application |
| signature_uri | string | Url de signature de la transaction |
TransactionDetailGetModel
| Body | Type | Description |
|---|---|---|
| id | string | Identifiant unique de la demande de consentement (UUID) |
| family | FamilyLightGetModel | Famille de données |
| usage | UsageLightGetModel | Usage des données |
| required | bool | Indique si le consentement est obligatoire pour pouvoir valider la transaction |
| created_at | string | Date de création de la transaction |
| consents | ConsentGetModel | Consentements / Demandes de consentement associés à la demande indiquée dans la transaction. Null à la création |
ApplicationGetModel
| Body | Type | Description |
|---|---|---|
| id | string | Identifiant unique de l'application (UUID) |
| company | CompanyGetModel | Entreprise |
| name | string | Dénomination de l'application |
| description | string | Description de l'application |
| app_key | string | Clé de l'application |
| callback_uri | string | Url de retour |
| created_at | string | Date de création de l'application |
| closed_at | string | Date de clôture de l'application |
{
"id": "08b55957-5c80-4564-a2fd-3038c624f347",
"application": {
"id": "c2472ea7-5a66-44f2-9f10-c65cd2108d32",
"company": {
"id": "ad97c8bb-af72-4f2d-9664-70fd9785f54t",
"corporate_name": "Entreprise Test",
"address": "Rue de la tulipe",
"postal_code": "01250",
"city": "Ceyzeriat",
"identifier_type": "SIRET",
"business_identifier": "73282932000074"
},
"name": "Agri Maker",
"description": "Agri Maker est le portail des agriculteurs. Acceptez les consentements pour pouvoir accéder à vos services.",
"app_key": "hook-app-example",
"callback_url": "https://api.agri-maker.com/consent-callback",
"created_at": "2023-10-07T09:37:43.993Z",
"closed_at": null
},
"holder": {
"type": "OWNER",
"id": "678df96b-b61e-4adf-9912-0efd1181d057",
"business_identifier": "FR35167340",
"siret": "73282932000074",
"name": "SAS Dupond Martin",
"address": "Rue de la tulipe",
"postal_code": "79200",
"city": "Ville-sur-mer"
},
"starting_date": "2023-10-07T10:37:43.993Z",
"ending_date": null,
"created_at": "2023-10-07T09:37:43.993Z",
"accepted_at": null,
"rejected_at": null,
"closed_at": null,
"consents_requested": [
{
"id": "08b55957-5c80-4564-a2fd-3038c624f347",
"family": {
"id": "5a978f05-ce36-4a66-a271-b09c202c0f13",
"name": "Registre sanitaire d'un bovin",
"business_identifier": "san-registre-bovin"
},
"usage": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "Tableau de bord pour technicien",
"description": "Fabrication des indicateurs de suivi du tableau de bord Technicien conseil en élevage",
"business_identifier": "idx-tdb-tk-cl"
},
"required": true,
"created_at": "2023-10-07T09:37:43.993Z",
"consents": null
}
],
"signature_uri": "https://sign.agata-consent.com/9d8ee04cd09548b39e5a05b95f0d7b58/08b55957-5c80-4564-a2fd-3038c624f347"
}
Fermer une transaction
Appel
DELETE/transactions/{transaction_id}
Cette méthode permet de fermer tous les consentements d'une transaction validée.
| QueryParam | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| transaction_id * | string | Oui | Identifiant unique de la transaction | 08b55957-5c80-4564-a2fd-3038c624f347 |
curl
--location 'https://api.agata-consent.com/transactions/08b55957-5c80-4564-a2fd-3038c624f347'
--header 'accept: application/json'
Réponse
| Code | Titre | Description |
|---|---|---|
| 201 | OK | Retourne la transaction |
| 401 | Not Authenticate | L'utilisateur n'est pas authentifié |
| 403 | Unauthorized | L'entreprise n'a pas les droits nécessaires pour utiliser cette API |
| 404 | Not Found | La transaction indiquée n'existe pas |
TransactionGetModel
| Body | Type | Description |
|---|---|---|
| id | string | Identifiant unique de la transaction (UUID) |
| application | ApplicationGetModel | Application |
| holder | CompanyGetModel | Détenteur des données |
| starting_date | string | Date de début des demandes de consentement |
| ending_date | string | Date de fin des demandes de consentement |
| created_at | string | Date de création de la transaction |
| accepted_at | string | Date à laquelle la transaction à été acceptée. Null à la création |
| rejected_at | string | Date à laquelle la transaction à été refusée. Null à la création |
| closed_at | string | Date de cloture de la transaction |
| consents_requested | array<TransactionDetailGetModel> | Consentements requis par l'application |
| signature_uri | string | Url de signature de la transaction |
TransactionDetailGetModel
| Body | Type | Description |
|---|---|---|
| id | string | Identifiant unique de la demande de consentement (UUID) |
| family | FamilyLightGetModel | Famille de données |
| usage | UsageLightGetModel | Usage des données |
| required | bool | Indique si le consentement est obligatoire pour pouvoir valider la transaction |
| created_at | string | Date de création de la transaction |
| consents | ConsentGetModel | Consentements / Demandes de consentement associés à la demande indiquée dans la transaction. Null à la création |
ApplicationGetModel
| Body | Type | Description |
|---|---|---|
| id | string | Identifiant unique de l'application (UUID) |
| company | CompanyGetModel | Entreprise |
| name | string | Dénomination de l'application |
| description | string | Description de l'application |
| app_key | string | Clé de l'application |
| callback_uri | string | Url de retour |
| created_at | string | Date de création de l'application |
| closed_at | string | Date de clôture de l'application |
{
"id": "08b55957-5c80-4564-a2fd-3038c624f347",
"application": {
"id": "c2472ea7-5a66-44f2-9f10-c65cd2108d32",
"company": {
"id": "ad97c8bb-af72-4f2d-9664-70fd9785f54t",
"corporate_name": "Entreprise Test",
"address": "Rue de la tulipe",
"postal_code": "01250",
"city": "Ceyzeriat",
"identifier_type": "SIRET",
"business_identifier": "73282932000074"
},
"name": "Agri Maker",
"description": "Agri Maker est le portail des agriculteurs. Acceptez les consentements pour pouvoir accéder à vos services.",
"app_key": "hook-app-example",
"callback_url": "https://api.agri-maker.com/consent-callback",
"created_at": "2023-10-07T09:37:43.993Z",
"closed_at": null
},
"holder": {
"type": "OWNER",
"id": "678df96b-b61e-4adf-9912-0efd1181d057",
"business_identifier": "FR35167340",
"siret": "73282932000074",
"name": "SAS Dupond Martin",
"address": "Rue de la tulipe",
"postal_code": "79200",
"city": "Ville-sur-mer"
},
"starting_date": "2023-10-07T10:37:43.993Z",
"ending_date": null,
"created_at": "2023-10-07T09:37:43.993Z",
"accepted_at": null,
"rejected_at": null,
"closed_at": null,
"consents_requested": [
{
"id": "08b55957-5c80-4564-a2fd-3038c624f347",
"family": {
"id": "5a978f05-ce36-4a66-a271-b09c202c0f13",
"name": "Registre sanitaire d'un bovin",
"business_identifier": "san-registre-bovin"
},
"usage": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "Tableau de bord pour technicien",
"description": "Fabrication des indicateurs de suivi du tableau de bord Technicien conseil en élevage",
"business_identifier": "idx-tdb-tk-cl"
},
"required": true,
"created_at": "2023-10-07T09:37:43.993Z",
"consents": [
{
"id": "e69ed05d-0a95-42db-b3df-f8614bebcb82",
"assignee": {
"type": "OWNER",
"id": "678df96b-b61e-4adf-9912-0efd1181d057",
"business_identifier": "FR35167340",
"siret": "73282932000074",
"name": "SAS Dupond Martin",
"address": "Rue de la tulipe",
"postal_code": "79200",
"city": "Ville-sur-mer"
},
"beneficiary": {
"type": "ACTOR",
"id": "3fa85f64-b61e-4adf-b3fc-2c963f66afa6",
"business_identifier": "FR35167340",
"siret": "73282932000074",
"name": "SAS Dupond Martin",
"address": "Rue de la tulipe",
"postal_code": "79200",
"city": "Ville-sur-mer"
},
"owner": {
"type": "OWNER",
"id": "678df96b-b61e-4adf-9912-0efd1181d057",
"business_identifier": "FR35167340",
"siret": "73282932000074",
"name": "SAS Dupond Martin",
"address": "Rue de la tulipe",
"postal_code": "79200",
"city": "Ville-sur-mer"
},
"creator": {
"type": "ACTOR",
"id": "3fa85f64-b61e-4adf-b3fc-2c963f66afa6",
"business_identifier": "FR35167340",
"siret": "73282932000074",
"name": "SAS Dupond Martin",
"address": "Rue de la tulipe",
"postal_code": "79200",
"city": "Ville-sur-mer"
},
"family": {
"id": "5a978f05-ce36-4a66-a271-b09c202c0f13",
"name": "Registre sanitaire d'un bovin",
"business_identifier": "san-registre-bovin"
},
"usage": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "Tableau de bord pour technicien",
"description": "Fabrication des indicateurs de suivi du tableau de bord Technicien conseil en élevage",
"business_identifier": "idx-tdb-tk-cl"
},
"domain": {
"id": "c6fea1f4-eb41-4783-871e-84fcd73e334c",
"name": "Zootechnique",
"business_identifier": "zootechnique"
},
"state": "REVOKED",
"starting_date": "2023-10-07T10:37:43.993Z",
"ending_date": "2024-04-03T17:56:00.000Z",
"validation_date": "2023-10-07T09:40:02.056Z",
"creation_date": "2023-10-07T09:37:43.993Z",
"last_update_date": "2024-04-03T17:56:00.000Z"
}
]
}
],
"signature_uri": "null"
}
Infos complémentaires
La recherche de la transaction se fait via son id ET l'id de l'entreprise connectée via l'application
Cette méthode à pour objectif de permettre à un acteur bénéficiaire d'AGATA CONSENT de fermer des consentements à la place du détenteur des données. Par exemple lorsque le détenteur clos un contrat avec l'entreprise bénéficiaire ou lors du désabonnement à un service par le détenteur.
La méthode applique les contrôles d'accès et de cohérence des données puis pour chaque ligne de détail va clore à la date du jour, tous les consentements "actifs" ou "futurs" qui lui sont rattachés.
Après ce traitement, la date de cloture de transaction est renseignée à la date du jour et la transaction est enregistrée en base de données.
Lancer le traitement d'une transaction
Appel
GET/applications/{app_key}/transactions/{transaction_id}
Cette méthode permet de lancer l'analyse d'une transaction, la création des demandes de consentement si nécessaire puis d'obtenir la transaction complétée.
| QueryParam | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| app_key * | string | Oui | Clé d'api utilisée pour faire desdemandes de transaction ainsi que dans la construction de l'url d'appel du portail de signature des consentements | hook-app-example |
| transaction_id * | string | Oui | Identifiant unique de la transaction | 08b55957-5c80-4564-a2fd-3038c624f347 |
curl
--location
--request GET 'https://api.agata-consent.com/applications/hook-app-example/transactions/08b55957-5c80-4564-a2fd-3038c624f347'
--header 'accept: application/json'
Réponse
| Code | Titre | Description |
|---|---|---|
| 200 | OK | Retourne la transaction complétée |
| 204 | No Content | La transaction à été complétée dans besoin de signature |
| 404 | Not Found | Le couple app_key / transaction_id n'a retournée aucune transaction |
| 404 | Not Found | La transaction indiquée a déjà été acceptée ou refusée |
TransactionGetModel
| Body | Type | Description |
|---|---|---|
| id | string | Identifiant unique de la transaction (UUID) |
| application | ApplicationGetModel | Application |
| holder | CompanyGetModel | Détenteur des données |
| starting_date | string | Date de début des demandes de consentement |
| ending_date | string | Date de fin des demandes de consentement |
| created_at | string | Date de création de la transaction |
| accepted_at | string | Date à laquelle la transaction à été acceptée. Null à la création |
| rejected_at | string | Date à laquelle la transaction à été refusée. Null à la création |
| closed_at | string | Date de cloture de la transaction |
| consents_requested | array<TransactionDetailGetModel> | Consentements requis par l'application |
| signature_uri | string | Url de signature de la transaction. Uniquement disponible si la transaction n'a été ni acceptée, ni refusée |
TransactionDetailGetModel
| Body | Type | Description |
|---|---|---|
| id | string | Identifiant unique de la demande de consentement (UUID) |
| family | FamilyLightGetModel | Famille de données |
| usage | UsageLightGetModel | Usage des données |
| required | bool | Indique si le consentement est obligatoire pour pouvoir valider la transaction |
| created_at | string | Date de création de la transaction |
| consents | ConsentGetModel | Consentements / Demandes de consentement associés à la demande indiquée dans la transaction. |
ApplicationGetModel
| Body | Type | Description |
|---|---|---|
| id | string | Identifiant unique de l'application (UUID) |
| company | CompanyGetModel | Entreprise |
| name | string | Dénomination de l'application |
| description | string | Description de l'application |
| app_key | string | Clé de l'application |
| callback_uri | string | Url de retour |
| created_at | string | Date de création de l'application |
| closed_at | string | Date de clôture de l'application |
{
"id": "08b55957-5c80-4564-a2fd-3038c624f347",
"application": {
"id": "c2472ea7-5a66-44f2-9f10-c65cd2108d32",
"company": {
"id": "ad97c8bb-af72-4f2d-9664-70fd9785f54t",
"corporate_name": "Entreprise Test",
"address": "Rue de la tulipe",
"postal_code": "01250",
"city": "Ceyzeriat",
"identifier_type": "SIRET",
"business_identifier": "73282932000074"
},
"name": "Agri Maker",
"description": "Agri Maker est le portail des agriculteurs. Acceptez les consentements pour pouvoir accéder à vos services.",
"app_key": "hook-app-example",
"callback_url": "https://api.agri-maker.com/consent-callback",
"created_at": "2023-10-07T09:37:43.993Z",
"closed_at": null
},
"holder": {
"type": "OWNER",
"id": "678df96b-b61e-4adf-9912-0efd1181d057",
"business_identifier": "FR35167340",
"siret": "73282932000074",
"name": "SAS Dupond Martin",
"address": "Rue de la tulipe",
"postal_code": "79200",
"city": "Ville-sur-mer"
},
"starting_date": "2023-10-07T10:37:43.993Z",
"ending_date": null,
"created_at": "2023-10-07T09:37:43.993Z",
"accepted_at": null,
"rejected_at": null,
"closed_at": null,
"consents_requested": [
{
"id": "08b55957-5c80-4564-a2fd-3038c624f347",
"family": {
"id": "5a978f05-ce36-4a66-a271-b09c202c0f13",
"name": "Registre sanitaire d'un bovin",
"business_identifier": "san-registre-bovin"
},
"usage": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "Tableau de bord pour technicien",
"description": "Fabrication des indicateurs de suivi du tableau de bord Technicien conseil en élevage",
"business_identifier": "idx-tdb-tk-cl"
},
"required": true,
"created_at": "2023-10-07T09:37:43.993Z",
"consents": [
{
"id": "e69ed05d-0a95-42db-b3df-f8614bebcb82",
"assignee": {
"type": "OWNER",
"id": "678df96b-b61e-4adf-9912-0efd1181d057",
"business_identifier": "FR35167340",
"siret": "73282932000074",
"name": "SAS Dupond Martin",
"address": "Rue de la tulipe",
"postal_code": "79200",
"city": "Ville-sur-mer"
},
"beneficiary": {
"type": "ACTOR",
"id": "3fa85f64-b61e-4adf-b3fc-2c963f66afa6",
"business_identifier": "FR35167340",
"siret": "73282932000074",
"name": "SAS Dupond Martin",
"address": "Rue de la tulipe",
"postal_code": "79200",
"city": "Ville-sur-mer"
},
"owner": {
"type": "OWNER",
"id": "678df96b-b61e-4adf-9912-0efd1181d057",
"business_identifier": "FR35167340",
"siret": "73282932000074",
"name": "SAS Dupond Martin",
"address": "Rue de la tulipe",
"postal_code": "79200",
"city": "Ville-sur-mer"
},
"creator": {
"type": "ACTOR",
"id": "3fa85f64-b61e-4adf-b3fc-2c963f66afa6",
"business_identifier": "FR35167340",
"siret": "73282932000074",
"name": "SAS Dupond Martin",
"address": "Rue de la tulipe",
"postal_code": "79200",
"city": "Ville-sur-mer"
},
"family": {
"id": "5a978f05-ce36-4a66-a271-b09c202c0f13",
"name": "Registre sanitaire d'un bovin",
"business_identifier": "san-registre-bovin"
},
"usage": {
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "Tableau de bord pour technicien",
"description": "Fabrication des indicateurs de suivi du tableau de bord Technicien conseil en élevage",
"business_identifier": "idx-tdb-tk-cl"
},
"domain": {
"id": "c6fea1f4-eb41-4783-871e-84fcd73e334c",
"name": "Zootechnique",
"business_identifier": "zootechnique"
},
"state": "VALIDATED",
"starting_date": "2023-10-07T10:37:43.993Z",
"creation_date": "2023-10-07T09:37:43.993Z"
}
]
}
],
"signature_uri": "null"
}
Infos complémentaires
La recherche de la transaction se fait via son id ET l'id de l'entreprise connectée via l'application
Cette méthode a pour objectif de traiter la liste des consentements existant afin de sélectionner les consentements/ demandes actifs sur la période de la transaction tout en créant les demandes de consentements "intercalaires".
Accepter / Refuser une transaction
Appel
PATCH/applications/{app_key}/transactions/{transaction_id}
Cette méthode permet d'accepter ou refuser les consentements d'une transaction. A l'exception des lignes de détails optionnelles qui peuvent être refusées unitairement, le choix d'accepter ou refuser les consentements se fait sur l'ensemble de la transaction.
| QueryParam | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| app_key * | string | Oui | Indique si les consentements de la transaction ont été acceptés | true |
| transaction_id * | string | Oui | Identifiant unique de la transaction | 08b55957-5c80-4564-a2fd-3038c624f347 |
| Body | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| transaction_is_accepted * | bool | Oui | Clé d'api utilisée pour faire desdemandes de transaction ainsi que dans la construction de l'url d'appel du portail de signature des consentements | hook-app-example |
| refusal_reason * | string | Oui/Non | Cause de refus. Obligatoire si la transaction est refusée | Je ne souhaite pas partager mes données. |
| rejected_optional_detail_ids * | Array string | Non | Identifiants des lignes optionnelles de détail refusées par l'utilisateur | [e69ed05d-0a95-42db-b3dff8614bebcb82] |
curl
--location
--request PATCH 'https://api.agata-consent.com/applications/hook-app-example/transactions/08b55957-5c80-4564-a2fd-3038c624f347'
--header 'accept: application/json'
--data-raw '{
"transaction_is_accepted": true,
"refusal_reason": null,
"rejected_optional_detail_ids": ["e69ed05d-0a95-42db-b3df-f8614bebcb82"]
}'
Réponse
| Code | Titre | Description |
|---|---|---|
| 204 | No Content | La transaction à été traitée avec succès |
| 404 | Not Found | Le couple app_key / transaction_id n'a retournée aucune transaction |
| 404 | Not Found | La transaction indiquée a déjà été acceptée ou refusée |
Infos complémentaires
La recherche de la transaction se fait via son id ET l'id de l'entreprise connectée via l'application
Cette méthode doit modifier les demandes de consentements associées à chaque ligne de détail de la transaction pour prendre en compte le choix de l'utilisateur (accepter / refuser). Seules les demandes doivent être modifiées (consentements sans date de validation, refus ou clôture).
Dans le cas d'une validation de la transaction, il est possible d'indiquer dans le champ RejectedOptionalDetailIds une liste d'ID de lignes de détails ayant la propriété required à false. Dans ce cas les demandes de consentements associées à ces lignes de détail seront refusées avec pour motif "Demande optionnelle refusée lors de la validation de la transaction", les autres demandes de consentements seront validées.
Une fois que les demandes de consentements sont mises à jour, il faut modifier la transaction pour indiquer une date d'acceptation (accepted_at) ou une date de refus (rejected_at).
Après la mise à jour en base de données, il reste à faire appel à l'url de "callback" indiquée dans l'application.
POSThttps://mon-url-de-callback.mon-application.com?seckey=.....
curl
--location
--request POST 'https://mon-url-de-callback.mon-application.com?seckey=....'
--header 'accept: application/json'
--data-raw '{
"transaction_id": "e69ed05d-0a95-42db-b3df-f8614bebcb82",
"transaction_is_accepted": true,
"refusal_reason": null
}'
Exigence de consentement
Fonctionnement général
Cette nouvelle fonctionnalité se découpe en deux parties :
- La gestion des exigences de consentement (création / suppression / consultation)
- La prise en compte des exigences de consentement dans le cycle de vie des consentements
La gestion des exigences de consentement
Ajout d'une exigence de consentement
La fonctionnalité d'exigence de consentement doit permettre à un acteur de déclarer les familles de données et les ayants-droits pour lesquels il souhaite être partie prenante (ayant droit complémentaire) lors des demandes de consentements faites par un acteur bénéficiaire. Il est alors nécessaire de pouvoir controler la légitimité de cet ayant droit complémentaire envers la famille et l'ayant droit (concrètement s’il a bien contribué à la collecte des données de la famille sur cette exploitation). Agata Consent n'est pas en mesure d'établir cette légitimité et doit donc faire appel à une API fournie par la Base Pro.
Cloture d'une exigence de consentement
A tout moment, un acteur doit pouvoir retirer une exigence de consentement qu'il a créé. Cette fonctionnalité permet aussi au porteur de domaine d'intervenir sur toute exigence de consentement de son domaine en cas de litige.
Consultation des exigences de consentement
Deux api de consultations permettent:
- de consulter les exigences de consentement d'un domaine
- de rechercher une exigence de consentement active pour une famille, un acteur et un ayant droit
Prise en compte des exigences de consentement
L'objectif pour un acteur de déposer une exigence de consentement est qu'aucune entreprise ne puisse accéder aux données qui sont sous sa responsabilité sans qu'il ait donné son accord préalable. Pour obtenir le consentement d'une exploitation, l'acteur bénéficiaire devra au préalable faire une demande de consentement auprès de l'ayant droit complémentaire (consentement chapeau). Ce n'est qu'une fois que ce consentement chapeau sera signé que le bénéficiaire pourra faire des demandes de consentements auprès des exploitations.
Diagramme de séquence
sequenceDiagram
participant ActeurBénéficiaire as Acteur<br>Bénéficiaire
participant ActeurAyantDroit as Acteur Ayant-droit<br>complémentaire
participant Exploitation as Exploitation
Note left of ActeurBénéficiaire: POST /headConsentDenormalized<br>family: BGES<br>Usage: CONS
ActeurBénéficiaire->>ActeurAyantDroit: Demande de consentement pour une famille, <br>un usage pour une ou toutes les exploitations
ActeurAyantDroit-->>ActeurBénéficiaire: L'ayant droit signe le consentement chapeau dans un délai<br>imparti ou accord implicite
ActeurBénéficiaire->>Exploitation: Demande de consentement pour une famille, un usage
Note left of ActeurBénéficiaire: POST /consentDenormalized<br>family: BGES<br>Usage: CONS
Exploitation->>ActeurBénéficiaire: L'exploitation signe le consentement
L'acteur bénéficiaire sera mis au courant de la nécessité d'obtenir l'accord de l'ayant-droit complémentaire par deux moyens :
- Lors de la contractualisation, il lui sera fait mention des familles nécéssitant des consentements chapeaux
- Par e-mail avec une date d'application lorsqu'un acteur demandera à activer la fonctionnalité d'exigence de consentement
Un code de rejet spécifique (Http 412) sera mis en place sur l'API de création d'une demande de consentement pour prévenir qu'un consentement chapeau est nécéssaire avant l'enregistrement de la demande.
Création d'une demande de consentement chapeau
Pour obtenir l'accord d'un ayant-droit complémentaire, un bénéficiaire fera appel à une API spécifique de création de demande de consentement. Les informations à envoyer seront presque identiques à un consentement standard mais les règles d'utilisation de cette API seront différentes.
Quelques règles qui diffèrent d'un consentement classique :
- Il devra être possible de créer plusieurs consentements chapeaux sur la même période si l'exploitation cible est différente.
- Tous les acteurs, qualifiés ou non, pourront créer des demandes de consentements chapeaux mais il ne sera pas possible de créer directement un consentement chapeau.
La création d'une demande de consentement chapeau sans exploitation précisée portera sur l'intégralité des exploitations gérées par l'ayant-droit complémentaire. Si l'exploitation est renseignée, le consentement chapeau ne portera que sur cette exploitation.
Exigence de consentement
Description
Dans le cadre des domaines CNE, les données exposées par les webservices des porteurs de domaine peuvent avoir plusieurs "propriétaires" (ex: un éleveur et un acteur ayant completé les données de base avec des données valorisées).
La fonctionnalité d'exigence de consentement doit permettre aux acteurs ayant participé à la création des données de devenir ayant-droit complémentaire lors des demandes de consentements faites par un acteur bénéficiaire.
Les données exposées ne sont pas toutes liées à un ayant-droit complémentaire. Pour distinguer les familles de données où une exigence de consentement peut être créée, des champs complémentaires vont être ajoutés de façon optionnelle pour indiquer s'il y a possibilité de déposer une exigence de consentement et par quelle typologie d'acteur.
La création d'une exigence de consentement permet de changer le cycle de vie des consentements entre un bénéficiaire et une exploitation agricole. Lorsqu'une exigence de consentement est créée, l'acteur bénéficiaire demande en premier lieu l'accord d'accéder aux données auprès de l'ayant-droit complémentaire et s'il obtient cet accord, il peut alors demander l'autorisation auprès de l'exploitation agricole.
Point d'attention :
- La création d'une exigence de consentement se fait via API pour une famille de données et une exploitation agricole. Il n'est pas prévu pour le moment d'ajouter cette fonctionnalité dans l'Espace Pro.
Les acteurs d'un domaine CNE ne sont pas tous éligibles à la création d'exigences de consentement. Pour qu'un acteur soit éligible à être ayant-droit complémentaire sur une famille de données, il doit avoir contractualisé avec l'agriculteur. Pour qu'Agata Consent puisse vérifier cette éligibilité, FGE a developpé une API de contrôle pour un SIRET (ayant droit complémentaire), une famille, un N° EDE (exploitation) et une date, si l'acteur est éligible ou pas.

Les ayants-droits complémentaires ont la possibilité de clore ou consulter les exigences de consentement qu'ils ont créé via API. Les porteurs de domaines auront eux accès à l'intégralité des exigences de consentement de leurs domaines respectif et pourront clore les exigences de consentement.
Procédure de mise à disposition :
- Le dépot d'une exigence de consentement ayant un impact direct sur les utilisateurs Agata Consent, la fonctionnalité de dépot des exigences de consentement sera activée sur demande auprès de FAST. Lors de la réception d'une demande d'activation de la fonctionnalité par un acteur, FAST préviendra l'ensemble des abonnés au domaine qu'un consentement chapeau pourra être nécessaire pour effectuer de nouvelles demandes de consentement à partir d'une date convenue avec l'acteur.
Appels API
Authentification
L'application peut s’authentifier en utilisant le type de grant « client_credentials » associé à un client_id et un secret. Pour récupérer ces informations, il faut se rapprocher de l'équipe d'Agata-Consent.
curl --location --request POST 'https://keycloak.agata-consent.com/auth/realms/sgc/protocol/openid-connect/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Cookie: KEYCLOAK_LOCALE=fr' \
--data-urlencode 'client_id=<client id>' \
--data-urlencode 'client_secret=<client secret>' \
--data-urlencode 'grant_type=client_credentials'
Création de l'exigence de consentement
Route : /consentRequirementsDenormalized
Méthode : POST
Description :
Route permettant d'ajouter une exigence de consentement avec les identifiants métiers.
| Propriété | Type | Obligatoire | Description | Défaut | Exemple |
|---|---|---|---|---|---|
| domain_business_identifier | string | Oui | Identifiant métier du domaine | zootechnique | |
| family_business_identifier | string | Oui | entiant métier de la famille de données | BGES | |
| actor_siret | string | Oui | Siret de l'entreprise ayant-droit complémentaire | Siret de l'enteprise connectée | 146542586400014 |
| owner_business_identifier | string | Oui | Identifiant métier de l'exploitation | FR34951951 |
Exemple d'appel
curl -X 'POST' \
'https://api-preprod.agata-consent.com/consentRequirementsDenormalized' \
-H 'accept: text/plain' \
-H 'Content-Type: application/json' \
-d '{
"domain_business_identifier": "zootechnique",
"family_business_identifier": "BGES",
"actor_siret": "146542586400014",
"owner_business_identifier": "FR34951951"
}'
Réponse
| Code | Titre | Description |
|---|---|---|
| 201 | OK | Retourne l'exigence de consentement |
| 400 | Bad Request | Une des données saisies est erronée |
| 403 | Forbidden | L'acteur doit être actif |
| 403 | Forbidden | L'acteur bénéficiaire doit être abonné au domaine |
| 403 | Forbidden | La famille ne doit pas être publique |
| 403 | Forbidden | Les exigences de consentement doivent être activées sur la famille |
| 403 | Forbidden | Le secteur d'activité de l'acteur doit faire parti des secteurs d'activités déclaré pour la famille |
| 403 | Forbidden | L'acteur doit avoir un contrat avec l'exploitation (vérication via WS FGE) 4 |
| 404 | Not Found | L'acteur doit être connu |
| 404 | Not Found | La famille de données doit exister |
| 409 | Conflict | Une exigence de consentement identique et active ne doit pas déjà exister |
{
"id": "00000000-0000-0000-0000-000000000000",
"rightholder": {
"type": "OWNER",
"id": "00000000-0000-0000-0000-000000000000",
"business_identifier": "FR35167340",
"siret": "73282932000074",
"name": "SAS Dupond Martin",
"address": "Rue de la tulipe",
"postal_code": "79200",
"city": "Ville-sur-mer"
},
"additional_rightholder": {
"type": "OWNER",
"id": "00000000-0000-0000-0000-000000000000",
"business_identifier": "FR35167340",
"siret": "73282932000074",
"name": "SAS Dupond Martin",
"address": "Rue de la tulipe",
"postal_code": "79200",
"city": "Ville-sur-mer"
},
"family": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "Registre sanitaire d'un bovin",
"business_identifier": "san-registre-bovin"
},
"requirement_consent_delay": 0,
"starting_date": "2025-01-23T14:46:29.168Z",
"ending_date": "2025-01-23T14:46:29.168Z"
}
Clotûre d'une exigence de consentement
Route : /consentRequirementsDenormalized
Méthode : DELETE
Description :
Route permettant de supprimer une exigence de consentement avec les identifiants métiers.
| Propriété | Type | Obligatoire | Description | Défaut | Exemple |
|---|---|---|---|---|---|
| domain_business_identifier | string | Oui | Identifiant métier du domaine | zootechnique | |
| family_business_identifier | string | Oui | entiant métier de la famille de données | BGES | |
| actor_siret | string | Non | Siret de l'entreprise ayant-droit complémentaire | Siret de l'enteprise connectée | 146542586400014 |
| owner_business_identifier | string | Oui | Identifiant métier de l'exploitation | FR34951951 |
Exemple d'appel
curl -X 'DELETE' \
'https://api-preprod.agata-consent.com/consentRequirementsDenormalized?domain_business_identifier=zootechnique&family_business_identifier=BGES&owner_business_identifier=FR34951951&actor_siret=146542586400014' \
-H 'accept: text/plain'
Réponse
| Code | Titre | Description |
|---|---|---|
| 201 | OK | Supprime l'exigence de consentement |
| 400 | Bad Request | Une des données saisies est erronée |
| 403 | Forbidden | Le client applcatif doit avoir le droit de suppression des exigences de consentement sur le domaine |
| 404 | Not Found | L'acteur doit être connu |
| 404 | Not Found | La famille de données doit exister |
| 404 | Not Found | Une exigence de consentement active doit exister pour la famille, l'acteur et l'exploitation |
Consultation des exigences de consentement
Route : /consentRequirementsDenormalized
Méthode : GET
Description :
Route permettant de consulter une exigence de consentement avec les identifiants métiers.
| Propriété | Type | Obligatoire | Description | Défaut | Exemple |
|---|---|---|---|---|---|
| domain_business_identifier | string | Oui | Identifiant métier du domaine | zootechnique | |
| family_business_identifier | string | Oui | entiant métier de la famille de données | BGES | |
| actor_siret | string | Non | Siret de l'entreprise ayant-droit complémentaire | Siret de l'enteprise connectée | 146542586400014 |
| owner_business_identifier | string | Non | Identifiant métier de l'exploitation | FR34951951 | |
| active_only | boolean | Non | Indique s'il ne faut retourner que les exigences de consentements actives à la date du jour | true |
Exemple d'appel
curl -X 'GET' \
'https://api-preprod.agata-consent.com/consentRequirementsDenormalized?domain_business_identifier=zootechnique&family_business_identifier=BGES' \
-H 'accept: text/plain'
Réponse
| Code | Titre | Description |
|---|---|---|
| 201 | OK | Renvoi l'exigence de consentement |
| 400 | Bad Request | Une des données saisies est erronée |
| 403 | Forbidden | L'acteur doit être abonné au domaine |
| 403 | Forbidden | L'acteur doit être actif |
| 404 | Not Found | L'acteur doit être connu |
| 404 | Not Found | La famille de données doit exister |
[
{
"id": "00000000-0000-0000-0000-000000000000",
"rightholder": {
"type": "OWNER",
"id": "00000000-0000-0000-0000-000000000000",
"business_identifier": "FR35167340",
"siret": "73282932000074",
"name": "SAS Dupond Martin",
"address": "Rue de la tulipe",
"postal_code": "79200",
"city": "Ville-sur-mer"
},
"additional_rightholder": {
"type": "OWNER",
"id": "00000000-0000-0000-0000-000000000000",
"business_identifier": "FR35167340",
"siret": "73282932000074",
"name": "SAS Dupond Martin",
"address": "Rue de la tulipe",
"postal_code": "79200",
"city": "Ville-sur-mer"
},
"family": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "Registre sanitaire d'un bovin",
"business_identifier": "san-registre-bovin"
},
"requirement_consent_delay": 0,
"starting_date": "2025-01-23T15:10:52.913Z",
"ending_date": "2025-01-23T15:10:52.913Z"
}
]
Consentement chapeau
Description
Un consentement dit "chapeau" est un consentement entre un acteur bénéficiaire et un acteur ayant droit complémentaire ayant enregistré une exigence de consentement sur une famille de données. La demande de consentement chapeau est à la charge du bénéficiaire. Lorsqu'elle est acceptée, elle ouvre la possibilité au bénéficiaire de faire des demandes de consentements vers les ayants-droits (exploitation) couverts par le consentement chapeau.
Le bénéficiaire peut faire une demande de consentement chapeau pour une exploitation en particulier ou sur l'ensemble des exploitations gérées par l'ayant-droit complémentaire. Lorsqu'une demande de consentement chapeau est émise, l'ayant-droit complémentaire dispose d'un temps limité pour accepter ou refuser le consentement chapeau. Une fois le délai passé, le consentement chapeau est considéré comme accepté par l'ayant-droit complémentaire. Le délai de signature est paramètrable pour chaque exigence de consentement.
Point d'attention :
- La création d'une demande de consentement chapeau se fait via API. Il n'est pas prévu dans cette version d'ajouter cette fonctionnalité dans l'Espace Pro ou dans le portail d'administration.
Appels API
Création du consentement chapeau
Route : headConsents/headConsentsDenormalized
Méthode : POST
Description :
Route permettant d'ajouter un consentement chapeau avec les identifiants métiers
| Propriété | Type | Obligatoire | Description | Défaut | Exemple |
|---|---|---|---|---|---|
| rightholder_business_identifier | string | Non | Identifiant métier de l'exploitation. Null pour une demande globale | FR29031987 | |
| additional_rightholder_siret | string | Oui | Siret de l'entreprise ayant-droit complémentaire | 24453630980002 | |
| beneficiary_siret | string | Non | Siret de l'entreprise bénéficiaire | Siret de l'entreprise connectée | 24453630980002 |
| domain_business_identifier | string | Oui | Identifiant métier du domaine | zootechnique | |
| family_business_identifier | string | Oui | Identifiant métier de la famille de données | BGES | |
| usage_business_identifier | string | Oui | Identifiant métier de l'usage | REGL | |
| starting_date | string | Oui | Date de début de validité du consentement chapeau | 2023-05-17T12:37:05.546Z | |
| ending_date | string | Non | Date de fin de validité du consentement chapeau | 2024-05-17T12:37:05.546Z |
Exemple d'appel
curl
--location 'https://api.agata-consent.com/headConsents/headConsentsDenormalized'
--header 'accept: application/json'
--data-raw '{
"rightholder_business_identifier": "FR29031987",
"additional_rightholder_siret": "24453630980002",
"beneficiary_siret": "24453630980002",
"domain_business_identifier": "zootechnique",
"family_business_identifier": "BGES",
"usage_business_identifier": "REGL",
"starting_date": "2023-05-17T12:37:05.546Z",
"ending_date": "2024-05-17T12:37:05.546Z"
}'
Réponse
| Code | Titre | Description |
|---|---|---|
| 201 | OK | Retourne le consentement chapeau |
| 400 | Bad Request | Une des données saisies est erronée |
| 403 | Forbidden | L'acteur bénéficiaire doit être actif |
| 403 | Forbidden | L'acteur bénéficiaire doit être abonné au domaine |
| 409 | Conflict | Un consentement chapeau ou un demande identique ne doivent pas déjà exister |
{
"id": "00001dea-9735-4c08-a708-d55163c5d9ee",
"additional_rightholder": {
"id": "0f24f33b-3450-4ee4-8d3b-3b5f40042d7d",
"name": "COOPER ELEVAGE CENTRE NORD ET AUBE",
"business_identifier": "77571835600022",
"siret": "77571835600022",
"address": "5 rue jules rimet",
"postal_code": "89400",
"city": "MIGENNES",
"type": "ACTOR"
},
"beneficiary": {
"id": "1dab4f22-58fd-4208-8a98-e57e1424c919",
"name": "OXYGEN LABORATOIRES D'analyses",
"business_identifier": "38347161200028",
"siret": "38347161200028",
"address": "117 rue d'arras",
"postal_code": "62130",
"city": "SAINT-POL-SUR-TERNOISE",
"type": "ACTOR"
},
"rightholder": {
"id": "aef5d461-bab2-4670-b410-b274dea76545",
"name": "GAEC RECONNU DECROIX",
"business_identifier": "FR62822022",
"siret": "40093896500011",
"address": "6 ROUTE DE CAUMONT",
"postal_code": "62390",
"city": "TOLLENT",
"type": "OWNER"
},
"domain": {
"id": "54cd4519-e9f8-49a3-9547-a924714072ab",
"name": "Zootechnique",
"business_identifier": "zootechnique"
},
"family": {
"id": "38af4ef3-49ad-49ad-89f7-2a2976bb89a7",
"name": "Bovin Donnees Controle Laitier",
"business_identifier": "BCL"
},
"usage": {
"id": "45089f4e-bbc8-4e42-a79f-affd5f09476c",
"name": "R&D",
"description": "Recherche et Developpement",
"business_identifier": "RETD"
},
"starting_date": "2023-05-17T14:25:06.101Z",
"ending_date": "2025-05-17T14:25:06.101Z",
"state": "REQUESTED",
"creation_date": "2023-05-17T14:25:06.101Z"
}
HeadConsentGetModel
| Propriété | Type | Nullable | Description |
|---|---|---|---|
| id | UUID | Non | Identifiant unique du consentement chapeau |
| additional_rightholder | CompanyGetModel | Non | Acteur ayant droit complémentaire, destinataire du consentement chapeau |
| beneficiary | CompanyGetModel | Non | Acteur bénéficiaire, demandeur de l'accès aux données |
| rightholder | CompanyGetModel | Oui | Ayant droit concerné par le consentement chapeau (exploitation), null si demande globale |
| domain | DomainLightGetModel | Non | Domaine |
| family | FamilyLightGetModel | Non | Famille des données |
| usage | UsageLightGetModel | Non | Usage des données |
| starting_date | DateTime | Non | Date de début d'application du consentement chapeau |
| ending_date | DateTime | Oui | Date de fin d'application du consentement chapeau |
| state | string | Non | Etat du consentement (REQUESTED à la création) |
| creation_date | DateTime | Non | Date de création de la demande |
Validation / refus d'un consentement de chapeau
Route : headConsents/{headConsentId}
Méthode : PATCH
Description :
L'api de validation / refus n'est pas prévue en dénormalisée car son utilisation impliquerait de passer tous les champs utilisés lors de la création pour trouver le consentement chapeau à modifier. Comme son nom l'indique, cette route est prévue pour accepter ou refuser un consentement chapeau.
L'usage de cette API est prévu pour valider ou refuser la demande de consentement chapeau. Pour annuler une demande, le bénéficiaire, porteur de domaine ou l'ayant droit complémentaire devront utiliser l'api DELETE.
| Propriété | Type | Obligatoire | Description | Défaut | Exemple |
|---|---|---|---|---|---|
| state | string | Oui | Statut du consentement chapeau (VALIDATED ou REVOKED). | REVOKED | |
| refusal_reason | string | Non | Cause de rejet. Obligatoire si l'état est à REVOKED | Null | Un accord doit être d'abord être trouvé entre nos société respectives. |
Exemple d'appel
curl
--location 'https://api.agata-consent.com/headConsents/00001dea-9735-4c08-a708-d55163c5d9ee'
--header 'accept: application/json'
--data-raw '{
"state": "VALIDATED"
}
// ou
{
"state": "REJECTED",
"refusal_reason": "Un accord doit être d'abord être trouvé entre nos société respectives."
}'
Réponse
| Code | Titre | Description |
|---|---|---|
| 201 | OK | Retourne le consentement chapeau |
| 400 | Bad Request | Le statut du consentement chapeau doit être à REQUESTED |
| 403 | Forbidden | L'acteur connectée doit être l'ayant droit complémentaire |
| 403 | Forbidden | Le délai de signature (requirement_consent_delay) ne doit pas être dépassé |
| 404 | Not Found | Le consentement chapeau doit exister |
{
"id": "00001dea-9735-4c08-a708-d55163c5d9ee",
"additional_rightholder": {
"id": "0f24f33b-3450-4ee4-8d3b-3b5f40042d7d",
"name": "COOPER ELEVAGE CENTRE NORD ET AUBE",
"business_identifier": "77571835600022",
"siret": "77571835600022",
"address": "5 rue jules rimet",
"postal_code": "89400",
"city": "MIGENNES",
"type": "ACTOR"
},
"beneficiary": {
"id": "1dab4f22-58fd-4208-8a98-e57e1424c919",
"name": "OXYGEN LABORATOIRES D'analyses",
"business_identifier": "38347161200028",
"siret": "38347161200028",
"address": "117 rue d'arras",
"postal_code": "62130",
"city": "SAINT-POL-SUR-TERNOISE",
"type": "ACTOR"
},
"rightholder": {
"id": "aef5d461-bab2-4670-b410-b274dea76545",
"name": "GAEC RECONNU DECROIX",
"business_identifier": "FR62822022",
"siret": "40093896500011",
"address": "6 ROUTE DE CAUMONT",
"postal_code": "62390",
"city": "TOLLENT",
"type": "OWNER"
},
"domain": {
"id": "54cd4519-e9f8-49a3-9547-a924714072ab",
"name": "Zootechnique",
"business_identifier": "zootechnique"
},
"family": {
"id": "38af4ef3-49ad-49ad-89f7-2a2976bb89a7",
"name": "Bovin Donnees Controle Laitier",
"business_identifier": "BCL"
},
"usage": {
"id": "45089f4e-bbc8-4e42-a79f-affd5f09476c",
"name": "R&D",
"description": "Recherche et Developpement",
"business_identifier": "RETD"
},
"starting_date": "2023-05-17T14:25:06.101Z",
"ending_date": "2025-05-17T14:25:06.101Z",
"state": "VALIDATED",
"creation_date": "2023-05-17T14:25:06.101Z"
}
HeadConsentGetModel
| Propriété | Type | Nullable | Description |
|---|---|---|---|
| id | UUID | Non | Identifiant unique du consentement chapeau |
| additional_rightholder | CompanyGetModel | Non | Acteur ayant droit complémentaire, destinataire du consentement chapeau |
| beneficiary | CompanyGetModel | Non | Acteur bénéficiaire, demandeur de l'accès aux données |
| rightholder | CompanyGetModel | Oui | Ayant droit concerné par le consentement chapeau (exploitation), null si demande globale |
| domain | DomainLightGetModel | Non | Domaine |
| family | FamilyLightGetModel | Non | Famille des données |
| usage | UsageLightGetModel | Non | Usage des données |
| starting_date | DateTime | Non | Date de début d'application du consentement chapeau |
| ending_date | DateTime | Oui | Date de fin d'application du consentement chapeau |
| state | string | Non | Etat du consentement (REQUESTED à la création) |
| creation_date | DateTime | Non | Date de création de la demande |
Clotûre / annulation d'un consentement de chapeau
Route : headConsents/{headConsentId}?refusal_reason=Fin%20de%20contrat
Méthode : DELETE
Description :
L'api de cloture / annulation n'est pas prévue en dématerialisée car son utilisation impliquerai de passer tous les champs utilisés lors de la création pour trouver le consentement chapeau à modifier.
Point d'attention :
- La cloture d'un consentement chapeau VALIDATED entraine automatiquement la cloture des consentements "éleveur" qui lui sont associés même si le consentement est rattaché à d'autres consentements chapeaux toujours valides.
| Propriété | Type | Obligatoire | Description | Défaut | Exemple |
|---|---|---|---|---|---|
| refusal_reason | string | Oui | Cause de clotûre / annulation | Fin de contrat. |
Exemple d'appel
curl
--location 'https://api.agata-consent.com/headConsents/00001dea-9735-4c08-a708-d55163c5d9ee?Findecontrat'
--header 'accept: application/json'
--data-raw '{
"refusal_reason": "Fin de contrat"
}'
Exemple de réponse
| Code | Titre | Description |
|---|---|---|
| 201 | OK | Retourne le consentement chapeau |
| 400 | Bad Request | Le statut du consentement chapeau doit être à VALIDATED ou REQUESTED |
| 403 | Forbidden | L'acteur connecté doit être l'ayant droit complémentaire, le bénéficiaire ou le porteur de domaine |
| 404 | Not Found | Le consentement chapeau doit exister |
{
"id": "00001dea-9735-4c08-a708-d55163c5d9ee",
"additional_rightholder": {
"id": "0f24f33b-3450-4ee4-8d3b-3b5f40042d7d",
"name": "COOPER ELEVAGE CENTRE NORD ET AUBE",
"business_identifier": "77571835600022",
"siret": "77571835600022",
"address": "5 rue jules rimet",
"postal_code": "89400",
"city": "MIGENNES",
"type": "ACTOR"
},
"beneficiary": {
"id": "1dab4f22-58fd-4208-8a98-e57e1424c919",
"name": "OXYGEN LABORATOIRES D'analyses",
"business_identifier": "38347161200028",
"siret": "38347161200028",
"address": "117 rue d'arras",
"postal_code": "62130",
"city": "SAINT-POL-SUR-TERNOISE",
"type": "ACTOR"
},
"rightholder": {
"id": "aef5d461-bab2-4670-b410-b274dea76545",
"name": "GAEC RECONNU DECROIX",
"business_identifier": "FR62822022",
"siret": "40093896500011",
"address": "6 ROUTE DE CAUMONT",
"postal_code": "62390",
"city": "TOLLENT",
"type": "OWNER"
},
"domain": {
"id": "54cd4519-e9f8-49a3-9547-a924714072ab",
"name": "Zootechnique",
"business_identifier": "zootechnique"
},
"family": {
"id": "38af4ef3-49ad-49ad-89f7-2a2976bb89a7",
"name": "Bovin Donnees Controle Laitier",
"business_identifier": "BCL"
},
"usage": {
"id": "45089f4e-bbc8-4e42-a79f-affd5f09476c",
"name": "R&D",
"description": "Recherche et Developpement",
"business_identifier": "RETD"
},
"starting_date": "2023-05-17T14:25:06.101Z",
"ending_date": "2023-05-18T14:25:06.101Z",
"state": "REVOKED",
"refusal_reason": "Fin de contrat",
"creation_date": "2023-05-17T14:25:06.101Z"
}
HeadConsentGetModel
| Propriété | Type | Nullable | Description |
|---|---|---|---|
| id | UUID | Non | Identifiant unique du consentement chapeau |
| additional_rightholder | CompanyGetModel | Non | Acteur ayant droit complémentaire, destinataire du consentement chapeau |
| beneficiary | CompanyGetModel | Non | Acteur bénéficiaire, demandeur de l'accès aux données |
| rightholder | CompanyGetModel | Oui | Ayant droit concerné par le consentement chapeau (exploitation), null si demande globale |
| domain | DomainLightGetModel | Non | Domaine |
| family | FamilyLightGetModel | Non | Famille des données |
| usage | UsageLightGetModel | Non | Usage des données |
| starting_date | DateTime | Non | Date de début d'application du consentement chapeau |
| ending_date | DateTime | Oui | Date de fin d'application du consentement chapeau |
| state | string | Non | Etat du consentement (REQUESTED à la création) |
| creation_date | DateTime | Non | Date de création de la demande |
Recherche d'un consentement chapeau
Route : headConsents/{headConsentId}
Méthode : GET
Description :
L'api de recherche d'un consentement chapeau permet de rechercher un consentement chapeau via son identifiant unique.
| Propriété | Type | Obligatoire | Description | Défaut | Exemple |
|---|---|---|---|---|---|
| id | string | Oui | Identifiant unique du consentement chapeau | 00001dea-9735-4c08-a708-d55163c5d9ee |
Exemple d'appel
curl
--location 'https://api.agata-consent.com/headConsents/00001dea-9735-4c08-a708-d55163c5d9ee'
--header 'accept: application/json'
--data-raw '{
"id": "00001dea-9735-4c08-a708-d55163c5d9ee"
}'
Exemple de réponse
| Code | Titre | Description |
|---|---|---|
| 201 | OK | Retourne le consentement chapeau |
| 404 | Not Found | Le consentement chapeau doit exister |
{
"id": "00001dea-9735-4c08-a708-d55163c5d9ee",
"additional_rightholder": {
"id": "0f24f33b-3450-4ee4-8d3b-3b5f40042d7d",
"name": "COOPER ELEVAGE CENTRE NORD ET AUBE",
"business_identifier": "77571835600022",
"siret": "77571835600022",
"address": "5 rue jules rimet",
"postal_code": "89400",
"city": "MIGENNES",
"type": "ACTOR"
},
"beneficiary": {
"id": "1dab4f22-58fd-4208-8a98-e57e1424c919",
"name": "OXYGEN LABORATOIRES D'analyses",
"business_identifier": "38347161200028",
"siret": "38347161200028",
"address": "117 rue d'arras",
"postal_code": "62130",
"city": "SAINT-POL-SUR-TERNOISE",
"type": "ACTOR"
},
"rightholder": {
"id": "aef5d461-bab2-4670-b410-b274dea76545",
"name": "GAEC RECONNU DECROIX",
"business_identifier": "FR62822022",
"siret": "40093896500011",
"address": "6 ROUTE DE CAUMONT",
"postal_code": "62390",
"city": "TOLLENT",
"type": "OWNER"
},
"domain": {
"id": "54cd4519-e9f8-49a3-9547-a924714072ab",
"name": "Zootechnique",
"business_identifier": "zootechnique"
},
"family": {
"id": "38af4ef3-49ad-49ad-89f7-2a2976bb89a7",
"name": "Bovin Donnees Controle Laitier",
"business_identifier": "BCL"
},
"usage": {
"id": "45089f4e-bbc8-4e42-a79f-affd5f09476c",
"name": "R&D",
"description": "Recherche et Developpement",
"business_identifier": "RETD"
},
"starting_date": "2023-05-17T14:25:06.101Z",
"ending_date": "2023-05-18T14:25:06.101Z",
"state": "REVOKED",
"refusal_reason": "Fin de contrat",
"creation_date": "2023-05-17T14:25:06.101Z"
}
HeadConsentGetModel
| Propriété | Type | Nullable | Description |
|---|---|---|---|
| id | UUID | Non | Identifiant unique du consentement chapeau |
| additional_rightholder | CompanyGetModel | Non | Acteur ayant droit complémentaire, destinataire du consentement chapeau |
| beneficiary | CompanyGetModel | Non | Acteur bénéficiaire, demandeur de l'accès aux données |
| rightholder | CompanyGetModel | Oui | Ayant droit concerné par le consentement chapeau (exploitation), null si demande globale |
| domain | DomainLightGetModel | Non | Domaine |
| family | FamilyLightGetModel | Non | Famille des données |
| usage | UsageLightGetModel | Non | Usage des données |
| starting_date | DateTime | Non | Date de début d'application du consentement chapeau |
| ending_date | DateTime | Oui | Date de fin d'application du consentement chapeau |
| state | string | Non | Etat du consentement (REQUESTED à la création) |
| refusal_reason | string | Oui | Cause de cloture / annulation |
| creation_date | DateTime | Non | Date de création de la demande |
Recherche dénormalisé des consentements chapeaux
Route : headConsents/headConsentsDenormalized
Méthode : GET
Description :
L'api de recherche dénormalisée des consentements chapeaux permet de retrouver tous les consentements chapeaux correspondants aux critères fournis. Les recherches retournant une liste de résultats retournent un code 204 lorsqu'il n'y a pas de résultats correspondants à la recherche effectuée.
| Propriété | Type | Obligatoire | Description | Défaut | Exemple |
|---|---|---|---|---|---|
| activeOnly | Bool | Non | Filtre sur les consentements chapeaux actifs | true | |
| rightholderBusinessIdentifier | string | Non | Identifiant métier de l'ayant droit (N° exploitation) | FR62822022 | |
| beneficiaryBusinessIdentifier | string | Non | Identifiant métier du bénéficiaire (N° siret) | 38347161200028 | |
| additionalRightholderBusinessIdentifier | string | Non | Identifiant métier de l'ayant droit complémentaire (N° siret) | 77571835600022 | |
| domainBusinessIdentifier | string | Non | Identifiant métier du domaine | zootechnique | |
| familyBusinessIdentifier | string | Non | Identifiant métier de la famille de données | BCL | |
| usageBusinessIdentifier | string | Non | Identifiant métier de l'usage | RETD | |
| state | string | Non | Statut du consentement | VALIDATED |
Exemple d'appel
curl
--location 'https://api.agata-consent.com/headConsents/headConsentsDenormalized'
--header 'accept: application/json'
--data-raw '{
"activeOnly": "true",
"rightholderBusinessIdentifier": "FR62822022",
"beneficiaryBusinessIdentifier": "38347161200028",
"additionalRightholderBusinessIdentifier": "77571835600022",
"domainBusinessIdentifier": "zootechnique",
"familyBusinessIdentifier": "BCL",
"usageBusinessIdentifier": "RETD",
"state": "VALIDATED"
}'
Exemple de réponse
| Code | Titre | Description |
|---|---|---|
| 201 | OK | Retourne les consentements chapeaux correspondants aux critères |
| 403 | Forbidden | L'acteur doit être abonné au domaine |
| 404 | Not Found | L'acteur doit être partie prenante du consentement (ayant-droit complémentaire ou bénéficiaire) |
[
{
"id": "00001dea-9735-4c08-a708-d55163c5d9ee",
"additional_rightholder": {
"id": "0f24f33b-3450-4ee4-8d3b-3b5f40042d7d",
"name": "COOPER ELEVAGE CENTRE NORD ET AUBE",
"business_identifier": "77571835600022",
"siret": "77571835600022",
"address": "5 rue jules rimet",
"postal_code": "89400",
"city": "MIGENNES",
"type": "ACTOR"
},
"beneficiary": {
"id": "1dab4f22-58fd-4208-8a98-e57e1424c919",
"name": "OXYGEN LABORATOIRES D'analyses",
"business_identifier": "38347161200028",
"siret": "38347161200028",
"address": "117 rue d'arras",
"postal_code": "62130",
"city": "SAINT-POL-SUR-TERNOISE",
"type": "ACTOR"
},
"rightholder": {
"id": "aef5d461-bab2-4670-b410-b274dea76545",
"name": "GAEC RECONNU DECROIX",
"business_identifier": "FR62822022",
"siret": "40093896500011",
"address": "6 ROUTE DE CAUMONT",
"postal_code": "62390",
"city": "TOLLENT",
"type": "OWNER"
},
"domain": {
"id": "54cd4519-e9f8-49a3-9547-a924714072ab",
"name": "Zootechnique",
"business_identifier": "zootechnique"
},
"family": {
"id": "38af4ef3-49ad-49ad-89f7-2a2976bb89a7",
"name": "Bovin Donnees Controle Laitier",
"business_identifier": "BCL"
},
"usage": {
"id": "45089f4e-bbc8-4e42-a79f-affd5f09476c",
"name": "R&D",
"description": "Recherche et Developpement",
"business_identifier": "RETD"
},
"starting_date": "2023-05-17T14:25:06.101Z",
"state": "VALIDATED",
"creation_date": "2023-05-17T14:25:06.101Z"
},
{ ... }
]
HeadConsentGetModel
| Propriété | Type | Nullable | Description |
|---|---|---|---|
| id | UUID | Non | Identifiant unique du consentement chapeau |
| additional_rightholder | CompanyGetModel | Non | Acteur ayant droit complémentaire, destinataire du consentement chapeau |
| beneficiary | CompanyGetModel | Non | Acteur bénéficiaire, demandeur de l'accès aux données |
| rightholder | CompanyGetModel | Oui | Ayant droit concerné par le consentement chapeau (exploitation), null si demande globale |
| domain | DomainLightGetModel | Non | Domaine |
| family | FamilyLightGetModel | Non | Famille des données |
| usage | UsageLightGetModel | Non | Usage des données |
| starting_date | DateTime | Non | Date de début d'application du consentement chapeau |
| ending_date | DateTime | Oui | Date de fin d'application du consentement chapeau |
| state | string | Non | Etat du consentement (REQUESTED à la création) |
| creation_date | DateTime | Non | Date de création de la demande |
FAQ
Quelles garanties pour la sécurité et la confidentialité de l'hébergement AGATA CONSENT ?
Notre infrastructure est située en Europe / France. notre hébergeur AWS est multi certifié :
- ISO 27017 pour la sécurité du cloud (source et preuve de certification)
- ISO 27701 pour la gestion des informations sur la confidentialité (source et preuve de certification)
- ISO 27018 pour la confidentialité du cloud (source et preuve de certification)
AWS est également membre de l'initiative GAIA-X (source) et s'est engagé à respecter le Code de Conduite des fournisseurs de services d'infrastructure cloud en Europe (CISPE) garantissant aux entreprises que leur fournisseur de services d’infrastructure cloud répond aux exigences applicables au sous-traitant des données en vertu du RGPD (source).
Pourquoi le choix d'une Blockchain ?
Une fois votre consentement établi, celui-ci est inscrit dans un registre numérique appelé Blockchain. En pratique, une blockchain est une base de données qui contient l’historique de tous les échanges effectués entre ses utilisateurs depuis sa création.
Le site economie.gouv.fr détaille les caractéristiques d'une blockchain :
- l’identification de chaque partie s’effectue par un procédé cryptographique
- la transaction est envoyée à un réseau (ou « nœud » de stockage) d’ordinateurs situés dans le monde entier
- chaque « nœud » héberge une copie de la base de données dans lequel est inscrit l’historique des transactions effectuées. Toutes les parties prenantes peuvent y accéder simultanément
- le système de sécurisation repose sur un mécanisme de consensus de tous les « nœuds » à chaque ajout d’informations. Les données sont déchiffrées et authentifiées par des « centres de données » ou « mineurs ». La transaction ainsi validée est ajoutée dans la base sous forme d’un bloc de données chiffrées (c’est le « block » dans blockchain)
- la décentralisation de la gestion de la sécurité empêche la falsification des transactions. Chaque nouveau bloc ajouté à la blockchain est lié au précédent et une copie est transmise à tous les « nœuds » du réseau. L’intégration est chronologique, indélébile et infalsifiable.
Pour résumer, les données enregistrées dans cette Blockchain sont sécurisées car cryptées et infalsifiables. Une fois votre consentement renseigné, il ne peut plus être altéré de quelque manière possible.
