ID PhotoREST · JSONOpenAPI 3.1

SVOYAGER ID Photo API

Verwandeln Sie jedes Foto in ein konformes Ausweis-, Reisepass- oder Visumfoto.

Übersicht

Funktionsweise

Die SVOYAGER ID Photo API verwandelt ein gewöhnliches Porträtfoto in ein normkonformes Passfoto. ID Photo ist ein einziges Produkt: Reisepass, Visum, Aufenthaltsgenehmigung und Personalausweis werden als Dokumentenspezifikationen dargestellt, nicht als separate Produkte. Sie laden ein Foto hoch, generieren eine Vorschau mit Wasserzeichen gemäß einer Spezifikation und finalisieren den Vorgang, um das Ergebnis ohne Wasserzeichen zu erhalten.

Vorschau → endgültiger Workflow

  1. 1Laden Sie ein Foto hoch. Erstellen Sie ein Upload-Ziel und senden Sie die Bildbytes dorthin.
  2. 2Erstellen Sie eine Sitzung. Erstellen Sie eine Vorschau mit Wasserzeichen anhand einer Spezifikation. Überprüfen Sie die zurückgemeldeten Probleme.
  3. 3Abschließen. Wandeln Sie die geprüfte Sitzung in einen Auftrag um und erhalten Sie die endgültige Version ohne Wasserzeichen.

Schnellstart

Jede Anfrage wird mit einem geheimen Bearer-Schlüssel authentifiziert. Starten Sie im Testmodus:

curl
# List specifications to find a spec_id
curl -G "https://partner.svoyager.com/v1/photo-specifications" \
  -H "Authorization: Bearer svoy_sk_test_YOUR_KEY" \
  --data-urlencode "country=US"

Basis-URL und Umgebungen

Alle Endpunkte werden unter einer einzigen Basis-URL bereitgestellt:

Base URL
https://partner.svoyager.com/v1

Es gibt keinen Umgebungspfad und keine Umgebungsparameter. Ob eine Anfrage im Test- oder Live-Modus ausgeführt wird, wird ausschließlich durch das Präfix Ihres API-Schlüssels bestimmt (svoy_sk_test_… vs. svoy_sk_live_…). Die Antworten geben dies als „livemode“ wieder.

Authentifizierung

API-Schlüssel

Authentifizieren Sie jede Anfrage mit einem „Authorization“-Header, der Ihren geheimen Schlüssel enthält. Die Schlüssel werden im Partner Center erstellt und regelmäßig aktualisiert.

Header
Authorization: Bearer svoy_sk_test_R2p9Kx7YOURKEYHERExxxxxxx

Das Präfix gibt die Umgebung an: „svoy_sk_test_…“ für die Testumgebung, „svoy_sk_live_…“ für die Live-Umgebung. Ein Testschlüssel kann niemals auf Live-Daten zugreifen (und umgekehrt) – bei Nichtübereinstimmungen wird der Status 401 „wrong_environment“ zurückgegeben.

Gültigkeitsbereiche

Schlüssel sind mit expliziten, auf das Mindestmaß beschränkten Berechtigungsbereichen versehen. Eine Anfrage, bei der der erforderliche Berechtigungsbereich fehlt, führt zu dem Status 403 „insufficient_scope“.

GültigkeitsbereichBerechtigungen
photo.specs.readList and retrieve photo specifications.
photo.sessions.readRetrieve sessions and their previews.
photo.sessions.writeCreate uploads and photo sessions (previews).
photo.finalize.writeFinalize a session into a no-watermark order.
photo.orders.readRetrieve orders and download finals.

Sichere Aufbewahrung der Schlüssel

Geheime Schlüssel sind ausschließlich für die Kommunikation von Server zu Server bestimmt. Betten Sie einen geheimen Schlüssel niemals in Browser- oder Mobilcode, ein öffentliches Repository oder ein clientseitiges Bundle ein. Sollte ein Schlüssel offengelegt werden, ändern Sie ihn unverzüglich im Partner Center.

Kern-API

Endpunkte

Pflichtfelder sind mit * gekennzeichnet. In den Beispielen werden Platzhalter-Anmeldedaten verwendet – niemals echte Schlüssel.

POST/v1/uploads

Upload a photo

Create a short-lived presigned upload target, then PUT the raw image bytes straight to `upload_url`. This bypasses request-body size limits (product cap 10 MB). No quota is spent.

scope photo.sessions.write
Anfrage
Body (application/json)
FeldTypBeschreibung
content_type*stringMIME type of the image.image/jpegimage/pngimage/webpimage/heic
  • `upload_url` is single-use and expires; upload promptly and do not modify the URL.
Beispielanfrage
curl
# 1) Create the upload target
curl -X POST "https://partner.svoyager.com/v1/uploads" \
  -H "Authorization: Bearer svoy_sk_test_R2p9Kx7YOURKEYHERExxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"content_type":"image/jpeg"}'

# 2) PUT the bytes to the returned upload_url (exactly as returned)
curl -X PUT "$UPLOAD_URL" \
  -H "Content-Type: image/jpeg" \
  --data-binary @photo.jpg
Antwort · 201
201 · application/json
{
  "object": "upload",
  "upload_url": "https://upload.svoyager.com/v1/EXAMPLE?signature=…",
  "upload_ref": "up_ref_tXk3W2b8Qe7Ra1Nc0",
  "max_bytes": 10485760,
  "expires_at": "2026-07-24T18: 20: 00Z"
}
Fehler
StatusCodeWenn
400missing_content_type`content_type` was not provided.
415unsupported_formatThe content type is not an accepted image format.
503temporarily_unavailableUploads are temporarily unavailable.
502upload_init_failedThe upload could not be initialised — retry shortly.

Hinzu kommen die üblichen Fehlermeldungen zu Authentifizierung, Berechtigungen und Ratenbegrenzung – siehe Fehler & Wiederholungsversuche.

POST/v1/photo-sessions

Create a photo session

Generate a watermarked preview from an upload against a specification. Spends one `preview` unit of your plan. Review `issues` before finalizing.

scope photo.sessions.write Idempotency-Key erforderlich
Anfrage
Body (application/json)
FeldTypBeschreibung
upload_ref*stringThe `upload_ref` from Upload a photo.
spec_id*stringThe `photo_specification` id (`spc_…`) to render against.
Beispielanfrage
curl
curl -X POST "https://partner.svoyager.com/v1/photo-sessions" \
  -H "Authorization: Bearer svoy_sk_test_R2p9Kx7YOURKEYHERExxxxxxx" \
  -H "Idempotency-Key: a7f3c9e1-2b4d-4c8a-9f10-3e5d6b7a8c9d" \
  -H "Content-Type: application/json" \
  -d '{"upload_ref":"up_ref_tXk3W2b8Qe7Ra1Nc0","spec_id":"spc_9wTv2c1Kd8Qe"}'
Antwort · 201
201 · application/json
{
  "object": "photo_session",
  "id": "3f9c1e77-2b8a-4a1e-9d2c-6b5a4c3d2e10",
  "livemode": false,
  "status": "preview_ready",
  "spec_id": "spc_9wTv2c1Kd8Qe",
  "preview_url": "https://partner.svoyager.com/v1/photo-sessions/3f9c1e77-2b8a-4a1e-9d2c-6b5a4c3d2e10/preview",
  "watermarked": true,
  "issues": [],
  "created_at": "2026-07-24T18: 30: 00Z"
}
Fehler
StatusCodeWenn
400missing_idempotency_keyThe `Idempotency-Key` header is missing.
400missing_upload_ref`upload_ref` is missing.
400missing_spec_id`spec_id` is missing.
400invalid_upload_refThe referenced upload could not be read.
413file_too_largeThe uploaded file exceeds 10 MB.
415unsupported_formatThe uploaded file is not an accepted image format.
404spec_not_foundNo active specification matches `spec_id`.
402no_active_planNo active plan is assigned for this environment.
402quota_exceededIncluded preview quota for the period is exhausted.
402plan_inactiveThe plan is not active for this environment.
409idempotency_key_reuseThe key was reused with a different body.
409request_in_progressA request with this key is still processing.
422unprocessable_imageThe image could not be processed.
502provider_errorThe preview could not be generated upstream — retry shortly.
503provider_busyThe processing service is busy — retry shortly.

Hinzu kommen die üblichen Fehlermeldungen zu Authentifizierung, Berechtigungen und Ratenbegrenzung – siehe Fehler & Wiederholungsversuche.

GET/v1/photo-sessions/{id}

Retrieve a photo session

Fetch a session by id, including its current status, `preview_url`, and any `issues`.

scope photo.sessions.read
Anfrage
Pfadparameter
FeldTypBeschreibung
id*stringSession id.
Beispielanfrage
curl
curl "https://partner.svoyager.com/v1/photo-sessions/3f9c1e77-2b8a-4a1e-9d2c-6b5a4c3d2e10" \
  -H "Authorization: Bearer svoy_sk_test_R2p9Kx7YOURKEYHERExxxxxxx"
Antwort · 200
200 · application/json
{
  "object": "photo_session",
  "id": "3f9c1e77-2b8a-4a1e-9d2c-6b5a4c3d2e10",
  "livemode": false,
  "status": "preview_ready",
  "spec_id": "spc_9wTv2c1Kd8Qe",
  "preview_url": "https://partner.svoyager.com/v1/photo-sessions/3f9c1e77-2b8a-4a1e-9d2c-6b5a4c3d2e10/preview",
  "watermarked": true,
  "issues": [],
  "created_at": "2026-07-24T18: 30: 00Z"
}
Fehler
StatusCodeWenn
404session_not_foundNo session matches the id for this account/environment.

Hinzu kommen die üblichen Fehlermeldungen zu Authentifizierung, Berechtigungen und Ratenbegrenzung – siehe Fehler & Wiederholungsversuche.

GET/v1/photo-sessions/{id}/preview

Download the preview image

Stream the watermarked preview image bytes for a session (SVOYAGER-hosted; the upstream URL is never exposed). This is the resource `preview_url` points to.

scope photo.sessions.readGibt Bildbytes zurück
Anfrage
Pfadparameter
FeldTypBeschreibung
id*stringSession id.
  • Returns raw `image/*` bytes on success (not JSON).
Beispielanfrage
curl
curl "https://partner.svoyager.com/v1/photo-sessions/3f9c1e77-2b8a-4a1e-9d2c-6b5a4c3d2e10/preview" \
  -H "Authorization: Bearer svoy_sk_test_R2p9Kx7YOURKEYHERExxxxxxx" \
  --output preview.jpg
Antwort · 200

Bei Erfolg überträgt der Endpunkt die Rohdaten des Bildes (kein JSON). Speichern Sie den Antworttext in einer Datei.

Fehler
StatusCodeWenn
404preview_not_foundThe session or its preview does not exist.

Hinzu kommen die üblichen Fehlermeldungen zu Authentifizierung, Berechtigungen und Ratenbegrenzung – siehe Fehler & Wiederholungsversuche.

POST/v1/photo-sessions/{id}/finalize

Finalize a photo

Turn a reviewed session into a deliverable order. In live mode this produces the no-watermark final and spends one `final` unit; in test mode it emulates the final from the preview.

scope photo.finalize.write Idempotency-Key erforderlich
Anfrage
Pfadparameter
FeldTypBeschreibung
id*stringSession id to finalize.
Beispielanfrage
curl
curl -X POST "https://partner.svoyager.com/v1/photo-sessions/3f9c1e77-2b8a-4a1e-9d2c-6b5a4c3d2e10/finalize" \
  -H "Authorization: Bearer svoy_sk_live_A8m4Qz1YOURKEYHERExxxxxxx" \
  -H "Idempotency-Key: a7f3c9e1-2b4d-4c8a-9f10-3e5d6b7a8c9d"
Antwort · 201Returns 200 with the existing order if the session was already finalized (never double-charged).
201 · application/json
{
  "object": "photo_order",
  "id": "8a2d5b40-71c6-4f0e-b3a9-1e7c9d05f284",
  "livemode": true,
  "sandbox_emulated": false,
  "status": "final_ready",
  "session_id": "3f9c1e77-2b8a-4a1e-9d2c-6b5a4c3d2e10",
  "spec_id": "spc_9wTv2c1Kd8Qe",
  "final_url": "https://partner.svoyager.com/v1/orders/8a2d5b40-71c6-4f0e-b3a9-1e7c9d05f284/final",
  "watermarked": false,
  "created_at": "2026-07-24T18: 31: 00Z"
}
Fehler
StatusCodeWenn
400missing_idempotency_keyThe `Idempotency-Key` header is missing.
404session_not_foundNo session matches the id for this account/environment.
422session_not_finalizableThe session is not in a finalizable state.
402no_active_planNo active plan is assigned for this environment.
402quota_exceededIncluded final quota for the period is exhausted.
402plan_inactiveThe plan is not active for this environment.
409idempotency_key_reuseThe key was reused with a different request.
409request_in_progressA request with this key is still processing.
502provider_errorThe final could not be produced upstream — retry shortly.
503provider_busyThe processing service is busy — retry shortly.

Hinzu kommen die üblichen Fehlermeldungen zu Authentifizierung, Berechtigungen und Ratenbegrenzung – siehe Fehler & Wiederholungsversuche.

GET/v1/orders/{id}

Retrieve an order

Fetch a finalized order by id, including its status and `final_url` once ready.

scope photo.orders.read
Anfrage
Pfadparameter
FeldTypBeschreibung
id*stringOrder id.
Beispielanfrage
curl
curl "https://partner.svoyager.com/v1/orders/8a2d5b40-71c6-4f0e-b3a9-1e7c9d05f284" \
  -H "Authorization: Bearer svoy_sk_live_A8m4Qz1YOURKEYHERExxxxxxx"
Antwort · 200
200 · application/json
{
  "object": "photo_order",
  "id": "8a2d5b40-71c6-4f0e-b3a9-1e7c9d05f284",
  "livemode": true,
  "sandbox_emulated": false,
  "status": "final_ready",
  "session_id": "3f9c1e77-2b8a-4a1e-9d2c-6b5a4c3d2e10",
  "spec_id": "spc_9wTv2c1Kd8Qe",
  "final_url": "https://partner.svoyager.com/v1/orders/8a2d5b40-71c6-4f0e-b3a9-1e7c9d05f284/final",
  "watermarked": false,
  "created_at": "2026-07-24T18: 31: 00Z"
}
Fehler
StatusCodeWenn
404order_not_foundNo order matches the id for this account/environment.

Hinzu kommen die üblichen Fehlermeldungen zu Authentifizierung, Berechtigungen und Ratenbegrenzung – siehe Fehler & Wiederholungsversuche.

GET/v1/orders/{id}/final

Download the final image

Stream the final image bytes for an order (SVOYAGER-hosted). In live mode this is the no-watermark deliverable; in test mode it is the sandbox-emulated copy. This is the resource `final_url` points to.

scope photo.orders.readGibt Bildbytes zurück
Anfrage
Pfadparameter
FeldTypBeschreibung
id*stringOrder id.
  • Returns raw `image/*` bytes on success (not JSON).
Beispielanfrage
curl
curl "https://partner.svoyager.com/v1/orders/8a2d5b40-71c6-4f0e-b3a9-1e7c9d05f284/final" \
  -H "Authorization: Bearer svoy_sk_live_A8m4Qz1YOURKEYHERExxxxxxx" \
  --output final.jpg
Antwort · 200

Bei Erfolg überträgt der Endpunkt die Rohdaten des Bildes (kein JSON). Speichern Sie den Antworttext in einer Datei.

Fehler
StatusCodeWenn
404final_not_foundThe order or its final does not exist.

Hinzu kommen die üblichen Fehlermeldungen zu Authentifizierung, Berechtigungen und Ratenbegrenzung – siehe Fehler & Wiederholungsversuche.

GET/v1/photo-specifications

List photo specifications

Return a cursor-paginated list of available photo specifications. Filter by country or document type to find the `spec_id` you need.

scope photo.specs.read
Anfrage
Abfrageparameter
FeldTypBeschreibung
limitintegerPage size, 1–100 (default 20).
starting_afterstringA specification id (`spc_…`) to page after.
countrystringISO-3166 alpha-2 filter, e.g. `US`.
document_typestringFilter by document type, e.g. `passport`.
Beispielanfrage
curl
curl -G "https://partner.svoyager.com/v1/photo-specifications" \
  -H "Authorization: Bearer svoy_sk_test_R2p9Kx7YOURKEYHERExxxxxxx" \
  --data-urlencode "country=US" \
  --data-urlencode "limit=20"
Antwort · 200
200 · application/json
{
  "object": "list",
  "data": [
    {
      "object": "photo_specification",
      "id": "spc_9wTv2c1Kd8Qe",
      "name": "United States Passport"
    }
  ],
  "has_more": false,
  "next_cursor": null
}
Fehler

Dieser Endpunkt gibt ausschließlich die unten aufgeführten Standardfehler zurück.

Hinzu kommen die üblichen Fehlermeldungen zu Authentifizierung, Berechtigungen und Ratenbegrenzung – siehe Fehler & Wiederholungsversuche.

GET/v1/photo-specifications/{id}

Retrieve a photo specification

Fetch a single specification by its stable `spec_id`, including its full requirements.

scope photo.specs.read
Anfrage
Pfadparameter
FeldTypBeschreibung
id*stringSpecification id (`spc_…`).
Beispielanfrage
curl
curl "https://partner.svoyager.com/v1/photo-specifications/spc_9wTv2c1Kd8Qe" \
  -H "Authorization: Bearer svoy_sk_test_R2p9Kx7YOURKEYHERExxxxxxx"
Antwort · 200
200 · application/json
{
  "object": "photo_specification",
  "id": "spc_9wTv2c1Kd8Qe",
  "name": "United States Passport",
  "country_code": "US",
  "document_type": "passport",
  "physical_size": {
    "width": 51,
    "height": 51,
    "unit": "mm"
  },
  "pixel_size": {
    "width": 600,
    "height": 600
  },
  "dpi": 300,
  "background": {
    "color": "#FFFFFF",
    "name": "white"
  },
  "requirements": {
    "head_height": "25–35 mm (1–1⅜ in)",
    "eye_to_bottom": "28–35 mm (1⅛–1⅜ in)",
    "recency_months": 6,
    "expression": "neutral",
    "color": true,
    "glasses": "not allowed",
    "eyes_and_ears": "both eyes open"
  },
  "updated_at": "2026-07-01T12: 00: 00Z"
}
Fehler
StatusCodeWenn
404spec_not_foundNo active specification matches the id.

Hinzu kommen die üblichen Fehlermeldungen zu Authentifizierung, Berechtigungen und Ratenbegrenzung – siehe Fehler & Wiederholungsversuche.

Senden Sie einen „Idempotency-Key“-Header (einen eindeutigen Wert, z. B. eine UUID), damit eine erneut gesendete Anfrage niemals doppelt abgerechnet oder doppelt verarbeitet wird. Dies ist erforderlich bei:

  • POST /v1/photo-sessions
  • POST /v1/photo-sessions/{id}/finalize
  • Gleicher Schlüssel + gleicher Body → das ursprüngliche Ergebnis wird wiedergegeben (keine zweite Abrechnung, kein zweites Rendern).
  • Gleicher Schlüssel + anderer Body → 409 idempotency_key_reuse.
  • Bei einem wiederholbaren Fehler können Sie den Vorgang mit demselben Schlüssel, Body und „upload_ref“ erneut versuchen.
  • Gleichzeitige Abschlussanfragen für eine Sitzung dürfen niemals zwei Bestellungen erstellen oder belasten.

Eine Sitzung durchläuft verschiedene Vorschau-Zustände; eine Bestellung verschiedene Abschluss-Zustände.

Sitzungsstatus
  • preview_readyVorschau erstellt, keine Probleme.
  • preview_has_issuesVorschau mit Fehlern generiert.
  • preview_failedDie Vorschau konnte nicht erstellt werden.
  • finalizedDie Sitzung wurde beendet.
Bestellstatus
  • final_readyDie endgültige Version ist verfügbar.
  • processingDie Abschlussprüfung wird derzeit vorbereitet.
  • failedFinalisierung fehlgeschlagen.

Die Umgebung wird durch Ihr Schlüsselpräfix bestimmt – Clients können dieses niemals übergeben. Im Testmodus wird die echte Vorschau mit Wasserzeichen angezeigt, sodass Sie den tatsächlichen Ablauf testen können, jedoch wird die endgültige Version emuliert, sodass keine Live-Kontingente oder Produktionsrenderings verwendet werden.

AspektTestLive
livemodefalsetrue
VorschauEcht, mit WasserzeichenEcht, mit Wasserzeichen
AbschließendSandbox-Emulation aus der VorschauEcht, ohne Wasserzeichen
sandbox_emulatedtruefalse
watermarkedtruefalse
Verbrauchte QuoteNur TestkontingentNur Live-Kontingent

Ihr Tarif umfasst eine bestimmte Anzahl an Vorschauen und Endversionen pro Zeitraum, die separat gezählt werden. Das Erstellen einer Sitzung verbraucht eine Vorschau; das Finalisieren verbraucht eine Endversion. Das Kontingent wird vor der Verarbeitung atomar reserviert.

  • Wenn die enthaltene Vorschau oder das endgültige Kontingent aufgebraucht ist, gibt die Anfrage den Status 402 „quota_exceeded“ zurück.
  • 402 ist ein endgültiger Stopp – ein erneuter Versuch wird erst ab dem nächsten Zeitraum oder nach einer Planänderung erfolgreich sein.
  • Test- und Live-Kontingente sind vollständig voneinander unabhängig.

Jeder Fehler verwendet einen Envelope. Die `request_id` erscheint auch im Antwort-Header `X-Request-Id` – fügen Sie diese in Support-Anfragen ein.

Error envelope
{
  "error": {
    "type": "invalid_request_error",
    "code": "quota_exceeded",
    "message": "Your included final quota for this period is exhausted.",
    "request_id": "req_9wTv2c1Kd8QeR7"
  }
}

Standardfehler (alle Endpunkte)

StatusCodeWenn
401invalid_api_keyMissing, malformed, or unknown API key.
401revoked_api_keyThe key was revoked.
401expired_api_keyThe key passed its rotation grace period.
401wrong_environmentA test key was used on live traffic (or vice versa).
403client_disabledThe API client is disabled.
403api_access_revokedAPI access for the account is not active.
403insufficient_scopeThe key lacks the required scope for this endpoint.
429rate_limitedPer-key rate limit exceeded. Honour `Retry-After`.

422 wird nur bei einem bestätigten Bildproblem zurückgegeben. 402 bedeutet, dass das Kontingent ausgeschöpft ist. 409 steht für einen Idempotenz- oder Ressourcenkonflikt.

429 bedeutet, dass Sie das Ratenlimit pro Schlüssel erreicht haben – beachten Sie den „Retry-After“-Header. Bei 502/503 und anderen 5xx-Fehlern versuchen Sie es erneut mit Backoff und demselben „Idempotency-Key“.

Eine Vorschau kann null oder mehr Fehler zurückgeben, jeweils bestehend aus einem stabilen Code und einer Meldung. Zeigen Sie diese dem Endnutzer an, damit er das Foto erneut aufnehmen kann. Ein nicht erkanntes Upstream-Signal wird als „other“ klassifiziert.

CodeNachricht
face_not_foundNo face was detected in the photo.
uneven_lightingLighting on the face is uneven.
poor_brightnessFace brightness is too dark, too bright, or the photo is low quality.
low_sharpnessThe photo is blurry or not sharp enough.
eyeglasses_not_allowedEyeglasses are not allowed.
sunglasses_not_allowedSunglasses are not allowed.
headwear_not_allowedHats or head coverings are not allowed.
face_mask_not_allowedA face mask is not allowed.
face_covering_foundA face covering was detected.
expression_not_neutralThe expression is not neutral.
crop_bottomNot enough space is visible below the shoulders.
crop_leftNot enough of the left shoulder is visible.
crop_rightNot enough of the right shoulder is visible.
head_turnedThe head is turned too far to the side.
head_tiltedThe head is tilted too far up or down.
not_in_colorThe photo must be in color.
otherThe photo did not meet a requirement.
  • Vorschauen und endgültige Versionen werden ausschließlich über von SVOYAGER gehostete, authentifizierte URLs bereitgestellt. Für den Zugriff sind Ihr API-Schlüssel und der richtige Geltungsbereich erforderlich – der zugrunde liegende Speicher wird niemals öffentlich zugänglich gemacht.
  • Hochgeladene Bilder sind privat und auf Ihr Konto und Ihre Umgebung beschränkt; Upload-Ziele sind kurzlebig und nur einmal verwendbar.
  • Fotos aus Dokumenten werden zur Erstellung Ihres Ergebnisses verarbeitet und nicht zwischen Konten weitergegeben.

Siehe die Bestimmungen von SVOYAGER zur Datenverarbeitung, -aufbewahrung und -löschung:Datenschutzerklärung ·Partnervereinbarung und Nutzungsbedingungen