Einen Beitrittsantrag für eine Person stellen (serverseitig)
const url = 'https://api.vimine.network/v1/enroll';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"email":"hello@example.com","first_name":"example","last_name":"example","codicefiscale":"example","codicefiscale_confirmed":true,"guardian":{"first_name":"example","last_name":"example","relation":"example","codicefiscale":"example","email":"hello@example.com","phone":"example"},"address":{"kind":"residence","line":"example","postal_code":"example","city":"example","province":"example","country":"IT"},"phone":"example","dob":"2026-04-15","gender":"M","birthplace":"example","birth_country":"example","membership_type":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","locale":"example","accept_statuto":{"version":1,"sha256":"example"},"privacy_notice":{"version":1,"sha256":"example","locale":"example"},"accept_terms":{"version":"example","sha256":"example"},"acknowledge_privacy":{"version":"example","sha256":"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/enroll \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "email": "hello@example.com", "first_name": "example", "last_name": "example", "codicefiscale": "example", "codicefiscale_confirmed": true, "guardian": { "first_name": "example", "last_name": "example", "relation": "example", "codicefiscale": "example", "email": "hello@example.com", "phone": "example" }, "address": { "kind": "residence", "line": "example", "postal_code": "example", "city": "example", "province": "example", "country": "IT" }, "phone": "example", "dob": "2026-04-15", "gender": "M", "birthplace": "example", "birth_country": "example", "membership_type": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "locale": "example", "accept_statuto": { "version": 1, "sha256": "example" }, "privacy_notice": { "version": 1, "sha256": "example", "locale": "example" }, "accept_terms": { "version": "example", "sha256": "example" }, "acknowledge_privacy": { "version": "example", "sha256": "example" } }'Legt bei einer neuen Adresse die Identität an, dazu den Beitrittsantrag (bei einer kostenlosen Art ohne Genehmigungspflicht sofort ACTIVE ausgestellt, sonst PENDING, bis der Verein den Mitgliedsbeitrag erfasst und/oder genehmigt). Eine Adresse, die schon ein Vimine-Konto hat, wird nie stillschweigend verknüpft: Ihr Inhaber erhält einen Bestätigungslink, und der Antrag entsteht, wenn er ihn verwendet. Antwortet immer 202. accept_statuto muss die geltende Version des Statuto nennen (und sha256, wenn veröffentlicht). Nur Client-Tokens (enroll:write); akzeptiert Idempotency-Key.
Autorisierungen
Abschnitt betitelt „Autorisierungen“Anfrage-Bodyerforderlich
Abschnitt betitelt „Anfrage-Bodyerforderlich“object
Optional. Eine Person wird über eine Steuernummer ODER über dob + birthplace + birth_country identifiziert — nie über keins von beidem (422 required für jede fehlende Geburtsangabe). Wenn vorhanden, wird sie geprüft und mit den Namen, dem Datum und dem Ort abgeglichen (bei im Ausland geborenen Personen mit dem Staat)
Die Person bestätigt eine Steuernummer, die nicht zu ihren Angaben passt (422 codicefiscale_mismatch mit confirmable: true)
Wer die elterliche Sorge für eine minderjährige Person innehat (unter 18 laut dob). PFLICHT bei einer minderjährigen Person, wo der Verein erklärt hat, dass er den Block erfasst (aps.collects_guardian_data): sonst 422 required auf dem Feld guardian; nur gespeichert, wo er das erklärt hat
object
Elternteil, Vormund… wie der Verein es erfasst
Optional; abgelehnt, wenn fehlerhaft aufgebaut
Wohnsitz oder, falls abweichend, Domizil. Wird von allen Mitgliedern oder von keinem verlangt: Das öffentliche Profil sagt, was der Verein erklärt hat (member_address: none — ignoriert, nicht gespeichert · optional · required — ohne Adresse 422 required auf dem Feld address)
object
Straße und Hausnummer
Nur italienische Adressen (zwei Buchstaben); bei Adressen im Ausland verworfen
ISO 3166-1 alpha-2
Nur statistisch: wird nicht abgeglichen
Gemeinde (in Italien geboren) oder Stadt, freier Text (im Ausland geboren)
ISO 3166-1 alpha-2
Eine der Mitgliedsarten des Vereins (weglassen, wenn er genau eine hat)
Die Sprache der Seite, die die Person ausgefüllt hat (eine Sprache der Plattform — it, en, …; jedes andere Tag wird einer Sprache der Plattform zugeordnet: en-GB → en, zh-TW → zh-Hant). Sie bestimmt die Sprache der folgenden E-Mails und wird zur Einstellung eines NEUEN Kontos; ein bestehendes Konto behält seine eigene. Nicht unterstützte Werte werden ignoriert
Das geltende Statuto, das die Person auf Ihrer Website akzeptiert hat (aus GET /v1/aps/{slug})
object
Die Datenschutzhinweise des Vereins, die die Person auf Ihrer Website gelesen hat (GET /v1/aps/{slug} → privacy_notice). PFLICHT, wenn der Verein welche veröffentlicht; 422 privacy_notice_outdated, wenn nicht die geltende Version genannt wird
object
Die gezeigte geltende Version der Datenschutzhinweise (GET /v1/aps/{slug} → privacy_notice)
Die Sprache der Datenschutzhinweise, die Sie gezeigt haben (privacy_notice.locale der Antwort, aus der Sie sie gelesen haben). Jede Sprache ist ein eigenes Dokument mit eigener Version: Nennen Sie sie, wenn Sie das Profil mit ?locale= lesen. Standard: das locale der Anfrage, dann die Sprache des Vereins
Die Nutzungsbedingungen des Kontos (platform_terms), die die Person auf Ihrer Website akzeptiert hat — optional, muss die geltende Version nennen
object
Die gezeigte geltende Versionsbezeichnung (GET /v1/legal/{kind})
Der Hash der Vorlage, wenn veröffentlicht
Die Datenschutzerklärung der Plattform (platform_privacy), die die Person gelesen hat — optional, dieselbe Regel
object
Die gezeigte geltende Versionsbezeichnung (GET /v1/legal/{kind})
Der Hash der Vorlage, wenn veröffentlicht
Antworten
Abschnitt betitelt „Antworten“Angenommen
object
Beispiel
{ "status": "accepted"}Ungültige Anfrage
object
object
Beispielerzeugt
{ "type": "https://example.com", "title": "example", "status": 1, "detail": "example", "code": "example", "request_id": "example", "errors": [ { "field": "example", "code": "example", "message": "example" } ]}Fehlende oder ungültige Zugangsdaten
object
object
Beispielerzeugt
{ "type": "https://example.com", "title": "example", "status": 1, "detail": "example", "code": "example", "request_id": "example", "errors": [ { "field": "example", "code": "example", "message": "example" } ]}Der Verein nimmt keine Beitrittsanträge an (api_disabled)
Nicht gefunden
object
object
Beispielerzeugt
{ "type": "https://example.com", "title": "example", "status": 1, "detail": "example", "code": "example", "request_id": "example", "errors": [ { "field": "example", "code": "example", "message": "example" } ]}Validierung fehlgeschlagen, unbekannte Mitgliedsart, oder accept_statuto nennt nicht das geltende Statuto
Ratenlimit überschritten
object
object
Beispielerzeugt
{ "type": "https://example.com", "title": "example", "status": 1, "detail": "example", "code": "example", "request_id": "example", "errors": [ { "field": "example", "code": "example", "message": "example" } ]}Interner Fehler
object
object
Beispielerzeugt
{ "type": "https://example.com", "title": "example", "status": 1, "detail": "example", "code": "example", "request_id": "example", "errors": [ { "field": "example", "code": "example", "message": "example" } ]}