Request a membership in this association
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" }'Creates the membership request. What happens next depends on how the association admits (GET /v1/aps/{slug} → admission): with board the request stays PENDING until the association’s board decides (pending_reasons: approval, then payment — the fee is paid after the admission, see payment_open); with provisional or automatic a free type is issued ACTIVE at once and a paid one when the fee is recorded. An active membership may still carry a valid_from in the future: the card is usable from then. A request that is not accepted ends as rejected. accept_statuto must name the in-force statuto version (and sha256 when published). When the association has a privacy notice in force that the person has not acknowledged yet, privacy_notice must name it the same way (422 validation_failed on privacy_notice without it, 422 privacy_notice_outdated when it names an older one): your page shows the notice (GET /v1/aps/{slug}/privacy-notice) and the acknowledgement is stored as a proof row for this membership. An association that asks every member for an address (member_address: required on its public profile) needs address (422 validation_failed on address). The person must be IDENTIFIED — a fiscal code, or date, place and country of birth: otherwise 422 identification_required, with errors[] naming each missing particular; complete the profile with PATCH /v1/me and ask again.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”object
object
The association’s privacy notice the person read on your page (from GET /v1/aps/{slug}; add locale when you showed a translation). Required while a notice is in force that the person has not acknowledged yet (GET /v1/me/acceptances lists what is pending); ignored otherwise
object
The in-force notice version shown (GET /v1/aps/{slug} → privacy_notice)
The language of the notice you showed (privacy_notice.locale of the answer you read it from). Each language is its own document, with its own version: name it when you read the profile with ?locale=. Default: the request’s locale, then the association’s language
Residence or, where different, domicile — kept on the association’s own record of the member. Required where the association declared member_address: required, stored where it declared optional, ignored where it collects none
object
Street and number
Italian addresses only (two letters); dropped abroad
ISO 3166-1 alpha-2
The language of the page the person used (it, en): which translation of the notice they read
Responses
Section titled “Responses”OK
Invalid request
object
object
Examplegenerated
{ "type": "https://example.com", "title": "example", "status": 1, "detail": "example", "code": "example", "request_id": "example", "errors": [ { "field": "example", "code": "example", "message": "example" } ]}Missing or invalid credentials
object
object
Examplegenerated
{ "type": "https://example.com", "title": "example", "status": 1, "detail": "example", "code": "example", "request_id": "example", "errors": [ { "field": "example", "code": "example", "message": "example" } ]}Not allowed
object
object
Examplegenerated
{ "type": "https://example.com", "title": "example", "status": 1, "detail": "example", "code": "example", "request_id": "example", "errors": [ { "field": "example", "code": "example", "message": "example" } ]}Not found
object
object
Examplegenerated
{ "type": "https://example.com", "title": "example", "status": 1, "detail": "example", "code": "example", "request_id": "example", "errors": [ { "field": "example", "code": "example", "message": "example" } ]}Rate limited
object
object
Examplegenerated
{ "type": "https://example.com", "title": "example", "status": 1, "detail": "example", "code": "example", "request_id": "example", "errors": [ { "field": "example", "code": "example", "message": "example" } ]}Internal error
object
object
Examplegenerated
{ "type": "https://example.com", "title": "example", "status": 1, "detail": "example", "code": "example", "request_id": "example", "errors": [ { "field": "example", "code": "example", "message": "example" } ]}