Salta ai contenuti

Conferma una richiesta di tesseramento inviata per tuo conto (dal link nell'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" } }'

Consuma il token contenuto nel link di conferma e crea la richiesta di tesseramento in attesa. Idempotente alla ripetizione: usare il link due volte riporta solo lo stato attuale.

Tipo di contenutoapplication/json
object
token
obbligatorio
string
identification

Solo dopo un 409 identification_required: ciò che manca ancora all’account — un codice fiscale, oppure data, luogo e Stato di nascita. Completa i campi VUOTI del profilo, senza mai sovrascrivere quelli che ci sono

object
dob
string formato: date
birthplace
string
<= 150 caratteri
birth_country
string
>= 2 caratteri <= 2 caratteri
codicefiscale
string
<= 16 caratteri
codicefiscale_confirmed
boolean
address

Solo dopo un 409 address_required: l’associazione chiede l’indirizzo a ogni socio (member_address: required nel suo profilo pubblico). Facoltativo dove ha dichiarato optional; ignorato dove non ne raccoglie

object
kind
string
predefinito: residence
Valori ammessi: residence domicile
line
obbligatorio

Via e numero

string
<= 150 caratteri
postal_code
string
nullable <= 12 caratteri
city
obbligatorio
string
<= 150 caratteri
province

Solo indirizzi italiani (due lettere); scartata per quelli esteri

string
nullable <= 2 caratteri
country

ISO 3166-1 alpha-2

string
predefinito: IT >= 2 caratteri <= 2 caratteri

La richiesta di tesseramento nell’associazione

Tipo di contenutoapplication/json
object
status
obbligatorio
string
Valori ammessi: pending active suspended revoked rejected
already
obbligatorio

La persona aveva già una richiesta di tesseramento o una tessera qui

boolean
pending_reasons

Perché l’adesione è ancora in attesa, nell’ordine: prima l’approvazione dell’associazione (quando ammette per decisione del consiglio), poi la quota. Vuoto quando è attiva

Array<string>
Valori ammessi: approval payment
payment_open

La quota si può già versare? Vale false finché l’approvazione è in attesa: l’approvazione apre il pagamento

boolean
valid_from

Da quando la tessera è utilizzabile, per un’adesione attiva dentro l’intervallo stabilito dall’associazione; null altrimenti

string formato: date-time
nullable
association
obbligatorio
object
name
string
slug
string
event

Solo per un link inviato dalla pagina di iscrizione dell’associazione su Vimine, quando quella pagina è stata aperta da uno dei suoi eventi pubblici: che ne è stato del posto che la persona ha chiesto insieme alla richiesta. null per ogni altro link

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

0 = gratuita

number
currency
string
state

confirmed: il posto è suo. reserved: tenuto da parte, vedi waiting. held: è la richiesta di tesseramento stessa ad attendere ancora la conferma dell’indirizzo, e nessun posto è stato chiesto. unavailable: nessun posto, vedi reasons

string
Valori ammessi: confirmed reserved held unavailable
waiting

Che cosa aspetta un posto reserved: che l’adesione diventi attiva (allora si conferma da solo, se gratuito), il contributo, o entrambi

Array<string>
Valori ammessi: membership contribution
reasons

Perché il posto è unavailable: le ragioni di GET /v1/events/{slug}/eligibility

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

Come versare un contributo dovuto, con le parole dell’associazione

string
nullable
already

La persona aveva già questo posto prima che il link venisse usato

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

Il link non è valido o è scaduto (invalid_token)

Non trovato

Tipo di contenutoapplication/problem+json
object
type
obbligatorio
string formato: uri
title
obbligatorio
string
status
obbligatorio
integer
detail
string
code
obbligatorio
string
request_id
string
errors
Array<object>
object
field
string
code
string
message
string
Esempiogenerato
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"code": "example",
"request_id": "example",
"errors": [
{
"field": "example",
"code": "example",
"message": "example"
}
]
}

Lo statuto è cambiato da quando il link è stato inviato (statuto_outdated); l’account non è ancora identificato (identification_required, errors[] nomina ciò che manca): invia di nuovo il token con identification; oppure l’associazione chiede l’indirizzo a ogni socio (address_required): invia di nuovo il token con address

Il blocco identification non regge (validation_failed)

Troppe richieste

Tipo di contenutoapplication/problem+json
object
type
obbligatorio
string formato: uri
title
obbligatorio
string
status
obbligatorio
integer
detail
string
code
obbligatorio
string
request_id
string
errors
Array<object>
object
field
string
code
string
message
string
Esempiogenerato
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"code": "example",
"request_id": "example",
"errors": [
{
"field": "example",
"code": "example",
"message": "example"
}
]
}

Errore interno

Tipo di contenutoapplication/problem+json
object
type
obbligatorio
string formato: uri
title
obbligatorio
string
status
obbligatorio
integer
detail
string
code
obbligatorio
string
request_id
string
errors
Array<object>
object
field
string
code
string
message
string
Esempiogenerato
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"code": "example",
"request_id": "example",
"errors": [
{
"field": "example",
"code": "example",
"message": "example"
}
]
}