Aller au contenu

Demander une adhésion à cette association

POST
/v1/me/membership
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.

Type de médiaapplication/json
object
membership_type
string format : uuid
accept_statuto
obligatoire
object
version
obligatoire
integer
sha256
string
privacy_notice

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
version
obligatoire

La version en vigueur de la notice affichée (GET /v1/aps/{slug} → privacy_notice)

integer
sha256
string
locale

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

string
address

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
kind
string
par défaut : residence
Valeurs autorisées : residence domicile
line
obligatoire

Rue et numéro

string
<= 150 caractères
postal_code
string
nullable <= 12 caractères
city
obligatoire
string
<= 150 caractères
province

Adresses italiennes seulement (deux lettres) ; ignorée à l’étranger

string
nullable <= 2 caractères
country

ISO 3166-1 alpha-2

string
par défaut : IT >= 2 caractères <= 2 caractères
locale

La langue de la page que la personne a utilisée (it, en) : la traduction de la notice qu’elle a lue

string
nullable

OK

Requête invalide

Type de médiaapplication/problem+json
object
type
obligatoire
string format : uri
title
obligatoire
string
status
obligatoire
integer
detail
string
code
obligatoire
string
request_id
string
errors
Array<object>
object
field
string
code
string
message
string
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

Type de médiaapplication/problem+json
object
type
obligatoire
string format : uri
title
obligatoire
string
status
obligatoire
integer
detail
string
code
obligatoire
string
request_id
string
errors
Array<object>
object
field
string
code
string
message
string
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é

Type de médiaapplication/problem+json
object
type
obligatoire
string format : uri
title
obligatoire
string
status
obligatoire
integer
detail
string
code
obligatoire
string
request_id
string
errors
Array<object>
object
field
string
code
string
message
string
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

Type de médiaapplication/problem+json
object
type
obligatoire
string format : uri
title
obligatoire
string
status
obligatoire
integer
detail
string
code
obligatoire
string
request_id
string
errors
Array<object>
object
field
string
code
string
message
string
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

Type de médiaapplication/problem+json
object
type
obligatoire
string format : uri
title
obligatoire
string
status
obligatoire
integer
detail
string
code
obligatoire
string
request_id
string
errors
Array<object>
object
field
string
code
string
message
string
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

Type de médiaapplication/problem+json
object
type
obligatoire
string format : uri
title
obligatoire
string
status
obligatoire
integer
detail
string
code
obligatoire
string
request_id
string
errors
Array<object>
object
field
string
code
string
message
string
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"
}
]
}