Aller au contenu

Confirmer une demande d’adhésion envoyée en votre nom (lien reçu par e-mail)

POST
/v1/enroll/confirm
curl --request POST \
--url https://api.vimine.network/v1/enroll/confirm \
--header 'Content-Type: application/json' \
--data '{ "token": "example", "identification": { "dob": "2026-04-15", "birthplace": "example", "birth_country": "example", "codicefiscale": "example", "codicefiscale_confirmed": true }, "address": { "kind": "residence", "line": "example", "postal_code": "example", "city": "example", "province": "example", "country": "IT" } }'

Consomme le jeton porté par le lien de confirmation et crée la demande d’adhésion en attente. Idempotent en cas de rejeu : utiliser le lien deux fois indique simplement l’état actuel.

Type de médiaapplication/json
object
token
obligatoire
string
identification

Seulement après un 409 identification_required : ce qui manque encore au compte — un code fiscal, ou la date, le lieu et le pays de naissance. Complète les champs VIDES du profil, sans jamais écraser ce qui s’y trouve

object
dob
string format : date
birthplace
string
<= 150 caractères
birth_country
string
>= 2 caractères <= 2 caractères
codicefiscale
string
<= 16 caractères
codicefiscale_confirmed
boolean
address

Seulement après un 409 address_required : l’association demande une adresse à chaque membre (member_address: required dans son profil public). Facultative 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

La demande d’adhésion à l’association

Type de médiaapplication/json
object
status
obligatoire
string
Valeurs autorisées : pending active suspended revoked rejected
already
obligatoire

La personne avait déjà une demande d’adhésion ou une adhésion ici

boolean
pending_reasons

Pourquoi l’adhésion est encore en attente, dans l’ordre : d’abord l’approbation de l’association (quand elle admet par décision de son conseil), puis la cotisation. Vide quand elle est active

Array<string>
Valeurs autorisées : approval payment
payment_open

La cotisation peut-elle déjà être payée ? Vaut false tant que l’approbation est en attente : l’approbation ouvre le paiement

boolean
valid_from

Quand la carte devient utilisable, pour une adhésion active encore dans le délai fixé par l’association ; null sinon

string format : date-time
nullable
association
obligatoire
object
name
string
slug
string
event

Seulement pour un lien envoyé par la page d’adhésion hébergée de l’association quand cette page a été ouverte depuis l’un de ses événements publics : ce qu’est devenue la place que la personne a demandée avec sa demande d’adhésion. null pour tout autre lien

object
slug
string
title
string
starts_at
string format : date-time
timezone
string
place
string
nullable
registration_type
object
uid
string format : uuid
name
string
amount

0 = gratuit

number
currency
string
state

confirmed : la place est la sienne. reserved : retenue, voir waiting. held : la demande d’adhésion elle-même attend encore la confirmation de l’adresse, et aucune place n’a été demandée. unavailable : pas de place, voir reasons

string
Valeurs autorisées : confirmed reserved held unavailable
waiting

Ce qu’attend une place reserved : que l’adhésion devienne active (elle est alors confirmée d’elle-même quand elle est gratuite), la contribution, ou les deux

Array<string>
Valeurs autorisées : membership contribution
reasons

Pourquoi la place est unavailable : les raisons de GET /v1/events/{slug}/eligibility

Array<string>
reserved_until
string format : date-time
nullable
payment_instructions

Comment payer une contribution due, dans les mots de l’association

string
nullable
already

La personne détenait déjà cette place avant que le lien soit utilisé

boolean
Exemple
{
"status": "pending",
"pending_reasons": [
"approval"
],
"event": {
"state": "confirmed",
"waiting": [
"membership"
]
}
}

Le lien est invalide ou a expiré (invalid_token)

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"
}
]
}

Le statuto a changé depuis l’envoi du lien (statuto_outdated) ; le compte n’est pas encore identifié (identification_required, errors[] nomme ce qui manque) : renvoyez le jeton avec identification ; ou l’association demande une adresse à chaque membre (address_required) : renvoyez le jeton avec address

Le bloc identification ne tient pas (validation_failed)

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"
}
]
}