Pular para o conteúdo

Confirmar um pedido de adesão enviado em seu nome (link do 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" } }'

Consome o token trazido pelo link de confirmação e cria o pedido de adesão pendente. Idempotente na repetição: usar o link duas vezes só informa o status atual.

Tipo de mídiaapplication/json
object
token
obrigatório
string
identification

Só depois de um 409 identification_required: o que ainda falta à conta — um código fiscal, ou data, local e país de nascimento. Completa os campos VAZIOS do perfil, nunca sobrescreve o que já existe

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

Só depois de um 409 address_required: a associação pede um endereço a todos os associados (member_address: required no seu perfil público). Opcional quando ela declarou optional; ignorado quando não coleta nenhum

object
kind
string
padrão: residence
Valores permitidos: residence domicile
line
obrigatório

Rua e número

string
<= 150 caracteres
postal_code
string
nullable <= 12 caracteres
city
obrigatório
string
<= 150 caracteres
province

Só endereços italianos (duas letras); descartado no exterior

string
nullable <= 2 caracteres
country

ISO 3166-1 alpha-2

string
padrão: IT >= 2 caracteres <= 2 caracteres

O pedido de adesão na associação

Tipo de mídiaapplication/json
object
status
obrigatório
string
Valores permitidos: pending active suspended revoked rejected
already
obrigatório

A pessoa já tinha um pedido de adesão ou uma carteirinha aqui

boolean
pending_reasons

Por que a carteirinha ainda está pendente, em ordem: primeiro a aprovação da associação (quando ela admite por decisão da diretoria), depois a taxa. Vazio quando ativa

Array<string>
Valores permitidos: approval payment
payment_open

A taxa já pode ser paga? É false enquanto a aprovação está pendente: a aprovação abre o pagamento

boolean
valid_from

Quando a carteirinha se torna utilizável, para uma carteirinha ativa dentro do intervalo de utilização da associação; null nos outros casos

string formato: date-time
nullable
association
obrigatório
object
name
string
slug
string
event

Só para um link enviado pela página de adesão hospedada da associação quando essa página foi aberta a partir de um dos seus eventos públicos: o que aconteceu com a vaga que a pessoa solicitou junto com o pedido. null para qualquer outro 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 = gratuito

number
currency
string
state

confirmed: a vaga é da pessoa. reserved: guardada, veja waiting. held: o próprio pedido de adesão ainda aguarda a confirmação do endereço, e nenhuma vaga foi pedida. unavailable: nenhuma vaga, veja reasons

string
Valores permitidos: confirmed reserved held unavailable
waiting

O que uma vaga reserved aguarda: que a carteirinha fique ativa (a vaga é então confirmada sozinha, quando gratuita), a contribuição, ou as duas coisas

Array<string>
Valores permitidos: membership contribution
reasons

Por que a vaga está unavailable: os motivos de GET /v1/events/{slug}/eligibility

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

Como pagar uma contribuição devida, nas palavras da associação

string
nullable
already

A vaga já estava guardada para a pessoa antes de o link ser usado

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

O link é inválido ou expirou (invalid_token)

Não encontrado

Tipo de mídiaapplication/problem+json
object
type
obrigatório
string formato: uri
title
obrigatório
string
status
obrigatório
integer
detail
string
code
obrigatório
string
request_id
string
errors
Array<object>
object
field
string
code
string
message
string
Exemplogerado
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"code": "example",
"request_id": "example",
"errors": [
{
"field": "example",
"code": "example",
"message": "example"
}
]
}

O statuto mudou desde que o link foi enviado (statuto_outdated); a conta ainda não está identificada (identification_required, errors[] indica o que falta): envie o token de novo com identification; ou a associação pede um endereço a todos os associados (address_required): envie o token de novo com address

O bloco identification não confere (validation_failed)

Limite de requisições excedido

Tipo de mídiaapplication/problem+json
object
type
obrigatório
string formato: uri
title
obrigatório
string
status
obrigatório
integer
detail
string
code
obrigatório
string
request_id
string
errors
Array<object>
object
field
string
code
string
message
string
Exemplogerado
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"code": "example",
"request_id": "example",
"errors": [
{
"field": "example",
"code": "example",
"message": "example"
}
]
}

Erro interno

Tipo de mídiaapplication/problem+json
object
type
obrigatório
string formato: uri
title
obrigatório
string
status
obrigatório
integer
detail
string
code
obrigatório
string
request_id
string
errors
Array<object>
object
field
string
code
string
message
string
Exemplogerado
{
"type": "https://example.com",
"title": "example",
"status": 1,
"detail": "example",
"code": "example",
"request_id": "example",
"errors": [
{
"field": "example",
"code": "example",
"message": "example"
}
]
}