Portale

Anbieter-Portale eines Produktpartners — Login-URLs, Credentials und Metadaten zu den externen Portal-Zugängen (z. B. Allianz-Maklerportal, AXA-Vermittler-Login). Full-CRUD top-level über `/v3/portals/{id}` plus parent-scoped Listing/Create unter `/v3/products/{kid}/portals`.

Zuletzt geprüft: 14. Mai 2026

Übersicht

Ein Portal ist ein Anbieter-Portal-Zugang, der an einem Produktpartner hängt — z. B. das Maklerportal eines Versicherers oder das Vermittler-Login einer Bank. Portale tragen URL, Login-Daten, Notizen und optionale Branding-Felder.

Das Portal hat eine global eindeutige id — alle CRUD-Operationen laufen daher top-level über /v3/portals/{id}, ohne Detour über den Produktpartner:

  1. Top-Level Full-CRUD — /v3/portals (List, Create) und /v3/portals/{id} (Read, Update, Delete).
  2. Parent-scoped Listing + Create — GET /v3/products/{kid}/portals und POST /v3/products/{kid}/portals. Path-kid ist Source-of-Truth; Body darf kein kid-Feld tragen (sonst 400 body_kid_forbidden).

Beide Patterns teilen sich die Scope-Familie mit Produktpartnern: v3:products:*.

Scopes

EndpointScope
GET /v3/portalsv3:products:read
POST /v3/portalsv3:products:write
GET /v3/portals/<id>v3:products:read
PATCH /v3/portals/<id>v3:products:write
DELETE /v3/portals/<id>v3:products:write
GET /v3/products/<kid>/portalsv3:products:read
POST /v3/products/<kid>/portalsv3:products:write

Wer Customers (Typ 0) verwalten will und Portale lesen will, braucht beide Scopes — v3:customers:* und v3:products:read — getrennt und unabhängig. Auth-Mechanik und Fehler siehe Authentifizierung. Vollständige Scope-Referenz mit Token-Beispielen: Scopes.

Pagination & Limits

Standard-Pagination (page, limit). Default-Limit 50, Hard-Cap 5000, Envelope { page, page_size, total, items }. Details und Beispiel-Loop in der Customers-Pagination.

Schema

json
{
  "id": 41001,
  "kid": 67890,                       // Customer-ID des Produktpartners
  "art": "Intern",
  "name": "Maklerportal",
  "url": "https://makler.example-versicherer.de/login",
  "user": "MAKLER-12345",             // Login-Name
  "pass": "****",                    // nicht-leerer Wert im Response maskiert
  "zusatz": "Login funktioniert nur über VPN.",
  "insert_datum": "2024-03-08",
  "edit_datum": "2024-06-15"
}

Endpoints

Portale abfragen

Liefert eine paginierte Liste aller Portale deiner Organisation. Optional auf einen einzelnen Produktpartner einschränkbar.

Query-Parameter:

NameTypDefaultBeschreibung
pageint ≥ 11Seitenzahl
limitint 1-500050Items pro Seite (Cap 5000)
kidint—Filter: nur Portale am Produktpartner mit dieser KID
with_schemaboolfalseSchema-Block im Response mitliefern (opt-in)
bash
curl "https://www.api.i-planner.app/v3/portals?kid=67890&limit=50" \
  -H "Authorization: Bearer $IPLANNER_API_TOKEN"

Response: Standard-Envelope { page, page_size, total, items, fields?, select_fields? }.

Einzelnes Portal abrufen

GET/v3/portals/<id> Im Playground testen ↗

Liefert ein einzelnes Portal über seine numerische id.

Path-Parameter: id (integer, positiv).

Response: 200 mit dem vollen Portal-Objekt. 404 endpoint_not_found bei nicht-numerischer ID, 404 not_found bei syntaktisch gültiger aber nicht existierender ID, 400 invalid_id bei 0 oder negativen Werten. Volle Error-Tabelle in Fehler.

bash
curl https://www.api.i-planner.app/v3/portals/41001 \
  -H "Authorization: Bearer $IPLANNER_API_TOKEN"

Portal top-level anlegen

Produktpartner-kid ist Pflicht-Feld im Body — ein Portal ohne Produktpartner ergibt fachlich keinen Sinn.

bash
curl -X POST 'https://www.api.i-planner.app/v3/portals' \
  -H "Authorization: Bearer $IPLANNER_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "kid": 67890,
    "art": "Intern",
    "name": "Maklerportal",
    "url": "https://makler.example-versicherer.de/login",
    "user": "MAKLER-12345",
    "zusatz": "Login nur über VPN."
  }'

Portal am Produktpartner anlegen

POST/v3/products/<kid>/portals Im Playground testen ↗

kid aus dem Pfad ist Source-of-Truth; Body darf kein kid tragen (400 body_kid_forbidden).

bash
curl -X POST 'https://www.api.i-planner.app/v3/products/67890/portals' \
  -H "Authorization: Bearer $IPLANNER_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "art": "Intern",
    "name": "Maklerportal",
    "url": "https://makler.example-versicherer.de/login",
    "user": "MAKLER-12345"
  }'

Portal aktualisieren

PATCH/v3/portals/<id> Im Playground testen ↗

PATCH-Semantik. Für Zugangsdaten heißt das Feld pass. Ein gesetzter Wert wird in späteren v3-Leseantworten maskiert; die v3-API fügt beim Schreiben keine eigene Verschlüsselung hinzu.

Portal löschen

DELETE/v3/portals/<id> Im Playground testen ↗

Soft-Delete, idempotent. Volle Error-Tabelle in Fehler.

Annotations

Portale haben keine direkten Documents. Anhänge werden über Links verbunden.

/v3/portals/<id>/comments[/<rid>]   # 5-op: list, get, create, patch, delete
/v3/portals/<id>/followers[/<rid>]  # 3-op: list, create, delete
/v3/portals/<id>/tags[/<rid>]       # 3-op: list, create, delete
/v3/portals/<id>/links[/<rid>]      # 3-op: list, create, delete

/v3/portals/<id>/documents ist nicht verfügbar — der Endpoint antwortet 404 unsupported_sub_resource.