Salta ai contenuti

Chiede una tessera in questa associazione

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

Crea la richiesta di tesseramento. Cosa succede poi dipende da come l’associazione ammette i soci (GET /v1/aps/{slug} → admission): con board la richiesta resta PENDING finché il consiglio dell’associazione non decide (pending_reasons: approval, poi payment — la quota si versa dopo l’ammissione, vedi payment_open); con provisional o automatic un tipo gratuito nasce ACTIVE subito, uno a pagamento quando la quota viene registrata. Un’adesione attiva può comunque avere un valid_from nel futuro: la tessera è utilizzabile da allora. Una richiesta non accolta finisce come rejected. accept_statuto deve indicare la versione dello statuto in vigore (e sha256, quando è pubblicato). Quando l’associazione ha in vigore un’informativa privacy di cui la persona non ha ancora preso visione, privacy_notice deve indicarla allo stesso modo (senza, 422 validation_failed su privacy_notice; 422 privacy_notice_outdated quando ne indica una precedente): la tua pagina mostra l’informativa (GET /v1/aps/{slug}/privacy-notice) e la presa visione viene conservata come riga di prova per questa tessera. Un’associazione che chiede l’indirizzo a ogni socio (member_address: required nel suo profilo pubblico) richiede address (422 validation_failed su address). La persona deve essere IDENTIFICATA — un codice fiscale, oppure data, luogo e Stato di nascita: altrimenti 422 identification_required, con errors[] che nomina ogni dato mancante; completa il profilo con PATCH /v1/me e ripeti la richiesta.

Tipo di contenutoapplication/json
object
membership_type
string formato: uuid
accept_statuto
obbligatorio
object
version
obbligatorio
integer
sha256
string
privacy_notice

L’informativa privacy dell’associazione che la persona ha letto sulla tua pagina (da GET /v1/aps/{slug}; aggiungi locale se hai mostrato una traduzione). Obbligatoria finché è in vigore un’informativa di cui la persona non ha ancora preso visione (GET /v1/me/acceptances elenca ciò che è ancora da confermare); altrimenti ignorata

object
version
obbligatorio

La versione in vigore dell’informativa mostrata (GET /v1/aps/{slug} → privacy_notice)

integer
sha256
string
locale

La lingua dell’informativa che hai mostrato (privacy_notice.locale della risposta da cui l’hai letta). Ogni lingua è un documento a sé, con la sua versione: indicala quando leggi il profilo con ?locale=. Predefinita: il locale della richiesta, poi la lingua dell’associazione

string
address

Residenza o, se diverso, domicilio — conservato nella scheda che l’associazione tiene del socio. Obbligatorio dove l’associazione ha dichiarato member_address: required, conservato 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
locale

La lingua della pagina che la persona ha usato (it, en): quale traduzione dell’informativa ha letto

string
nullable

OK

Richiesta non valida

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

Credenziali mancanti o non valide

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

Non consentito

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

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

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