Chiede una tessera in questa associazione
const url = 'https://api.vimine.network/v1/me/membership';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"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"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}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.
Autorizzazioni
Sezione intitolata “Autorizzazioni”Corpo della richiestaobbligatorio
Sezione intitolata “Corpo della richiestaobbligatorio”object
object
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
La versione in vigore dell’informativa mostrata (GET /v1/aps/{slug} → privacy_notice)
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
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
Via e numero
Solo indirizzi italiani (due lettere); scartata per quelli esteri
ISO 3166-1 alpha-2
La lingua della pagina che la persona ha usato (it, en): quale traduzione dell’informativa ha letto
Risposte
Sezione intitolata “Risposte”OK
Richiesta non valida
object
object
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
object
object
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
object
object
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
object
object
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
object
object
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
object
object
Esempiogenerato
{ "type": "https://example.com", "title": "example", "status": 1, "detail": "example", "code": "example", "request_id": "example", "errors": [ { "field": "example", "code": "example", "message": "example" } ]}