Demander une adhésion à cette association
const url = 'https://api.vimine.network/v1/me/membership';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"membership_type":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","accept_statuto":{"version":1,"sha256":"example"},"privacy_notice":{"version":1,"sha256":"example","locale":"example"},"address":{"kind":"residence","line":"example","postal_code":"example","city":"example","province":"example","country":"IT"},"locale":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.vimine.network/v1/me/membership \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "membership_type": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "accept_statuto": { "version": 1, "sha256": "example" }, "privacy_notice": { "version": 1, "sha256": "example", "locale": "example" }, "address": { "kind": "residence", "line": "example", "postal_code": "example", "city": "example", "province": "example", "country": "IT" }, "locale": "example" }'Crée la demande d’adhésion. La suite dépend de la façon dont l’association admet ses membres (GET /v1/aps/{slug} → admission) : avec board, la demande reste à l’état PENDING jusqu’à ce que le conseil de l’association décide (pending_reasons : approval, puis payment — la cotisation est payée après l’admission, voir payment_open) ; avec provisional ou automatic, l’adhésion est émise à l’état ACTIVE tout de suite pour un type gratuit, et pour un type payant quand la cotisation est enregistrée. Une adhésion active peut encore porter un valid_from dans le futur : la carte est utilisable à partir de ce moment. Une demande qui n’est pas acceptée se termine en rejected. accept_statuto doit nommer la version du statuto en vigueur (et son sha256 quand il est publié). Quand l’association a en vigueur une notice d’information dont la personne n’a pas encore pris acte, privacy_notice doit la nommer de la même façon (422 validation_failed sur privacy_notice sans elle, 422 privacy_notice_outdated quand elle en nomme une plus ancienne) : votre page affiche la notice (GET /v1/aps/{slug}/privacy-notice) et la prise de connaissance est conservée comme une ligne de preuve pour cette adhésion. Une association qui demande une adresse à chaque membre (member_address: required dans son profil public) exige address (422 validation_failed sur address). La personne doit être IDENTIFIÉE — un code fiscal, ou la date, le lieu et le pays de naissance : sinon 422 identification_required, avec errors[] qui nomme chaque donnée de naissance manquante ; complétez le profil avec PATCH /v1/me et refaites la demande.
Autorisations
Section intitulée « Autorisations »Corps de la requêteobligatoire
Section intitulée « Corps de la requêteobligatoire »object
object
La notice d’information de l’association que la personne a lue sur votre page (depuis GET /v1/aps/{slug} ; ajoutez locale quand vous avez affiché une traduction). Obligatoire tant qu’une notice dont la personne n’a pas encore pris acte est en vigueur (GET /v1/me/acceptances liste ce qui est en attente) ; ignorée sinon
object
La version en vigueur de la notice affichée (GET /v1/aps/{slug} → privacy_notice)
La langue de la notice que vous avez affichée (privacy_notice.locale de la réponse dans laquelle vous l’avez lue). Chaque langue est un document à part, avec sa propre version : nommez-la quand vous lisez le profil avec ?locale=. Par défaut : le locale de la requête, puis la langue de l’association
Adresse de résidence ou, si le domicile est différent, de domicile — conservée dans la fiche que l’association tient elle-même sur le membre. Obligatoire là où l’association a déclaré member_address: required, conservée là où elle a déclaré optional, ignorée là où elle n’en recueille aucune
object
Rue et numéro
Adresses italiennes seulement (deux lettres) ; ignorée à l’étranger
ISO 3166-1 alpha-2
La langue de la page que la personne a utilisée (it, en) : la traduction de la notice qu’elle a lue
Réponses
Section intitulée « Réponses »OK
Requête invalide
object
object
Exemplegénéré
{ "type": "https://example.com", "title": "example", "status": 1, "detail": "example", "code": "example", "request_id": "example", "errors": [ { "field": "example", "code": "example", "message": "example" } ]}Identifiants manquants ou invalides
object
object
Exemplegénéré
{ "type": "https://example.com", "title": "example", "status": 1, "detail": "example", "code": "example", "request_id": "example", "errors": [ { "field": "example", "code": "example", "message": "example" } ]}Non autorisé
object
object
Exemplegénéré
{ "type": "https://example.com", "title": "example", "status": 1, "detail": "example", "code": "example", "request_id": "example", "errors": [ { "field": "example", "code": "example", "message": "example" } ]}Introuvable
object
object
Exemplegénéré
{ "type": "https://example.com", "title": "example", "status": 1, "detail": "example", "code": "example", "request_id": "example", "errors": [ { "field": "example", "code": "example", "message": "example" } ]}Limite de débit atteinte
object
object
Exemplegénéré
{ "type": "https://example.com", "title": "example", "status": 1, "detail": "example", "code": "example", "request_id": "example", "errors": [ { "field": "example", "code": "example", "message": "example" } ]}Erreur interne
object
object
Exemplegénéré
{ "type": "https://example.com", "title": "example", "status": 1, "detail": "example", "code": "example", "request_id": "example", "errors": [ { "field": "example", "code": "example", "message": "example" } ]}