Zum Hauptinhalt springen

Zustellpunkte verwalten

TL;DR – DestinationClient (Java) bzw. DestinationApiService (.NET) erlaubt CRUD-Operationen auf Zustellpunkten ohne Self-Service-Portal-Umweg: Anlegen, Aktualisieren, Auflisten, Schlüssel verwalten, Limits beantragen.

Client erstellen​

Zustellpunkt-Verwaltung läuft über Management — den Einstiegspunkt für alles, was nicht an eine bestimmte Rolle (Organisation/OnlineService) gebunden ist. destinations() liefert daraus den DestinationClient:

DestinationClient destClient = sdk.manage().destinations();

Zustellpunkt anlegen​

Zuerst die Bausteine — Kontaktdaten und die angebotene Verwaltungsleistung:

ContactInformation contact = ContactInformation.builder()
.legalName("Stadt Sindelfingen")
.email("it@sindelfingen.de")
.build();

DestinationService service = DestinationService.builder()
.identifier("urn:de:fim:leika:leistung:99400048079000")
.regions(Set.of("DE080115"))
.submissionSchemas(Set.of(/* … */))
.build();

Daraus das vollständige DTO zusammensetzen — inklusive Callback-URL und den öffentlichen Schlüsseln, mit denen dieser Zustellpunkt künftig adressiert wird:

CreateDestination dto = CreateDestination.builder()
.status(DestinationStatus.DRAFT)
.name("Bauamt Sindelfingen")
.contactInformation(contact)
.services(Set.of(service))
.callback(new Callback(
URI.create("https://example.com/fit-connect/callback"),
"32+characters-long-secret"))
.encryptionKid("key-2026-01")
.encryptionPublicKey(encryptionJwk)
.signingPublicKey(signingJwk)
.metadataVersions(Set.of("1.5.0"))
.build();

Und anlegen:

Destination created = destClient.createDestination(dto);

Zustellpunkt aktualisieren oder löschen​

Zwei Wege, um einen bestehenden Zustellpunkt zu ändern. Vollständiges Update — bauen Sie das DTO wie beim Anlegen, mit den neuen Werten; ausgelassene Felder werden serverseitig geleert:

UpdateDestination updated = UpdateDestination.builder()
// … übrige Felder wie beim Anlegen, hier nur der geänderte Schlüssel …
.encryptionKid("key-2026-02")
.encryptionPublicKey(newEncryptionJwk)
.build();

destClient.updateDestination(destinationId, updated);

Teiländerung — nur gesetzte Felder werden gesendet, alles andere bleibt unangetastet:

DestinationPatch patch = DestinationPatch.builder()
.name("Bauamt Sindelfingen (neu)")
.build();

destClient.patchDestination(destinationId, patch);

Löschen — nur erlaubt, solange der Status created ist:

destClient.deleteDestination(destinationId);
Patch statt Update für Teiländerungen

Bei updateDestination werden ausgelassene Felder serverseitig geleert, da die ganze Destination ersetzt wird. Wenn Sie nur einzelne Felder ändern wollen, verwenden Sie patchDestination mit einem DestinationPatch — dort werden ausgelassene Felder nicht mitgesendet.

Status-Voraussetzung

Löschen funktioniert nur, solange sich der Zustellpunkt im Status created befindet. Aktive Zustellpunkte müssen zuerst auf inactive oder decommissioned gesetzt werden.

Zustellpunkte auflisten​

DestinationFilter filter = DestinationFilter.builder()
.statuses(List.of(Status.ACTIVE))
.search("Hamburg")
.minimal(true)
.build();

Destinations page = destClient.listDestinations(0, 100, filter);

// Alle Seiten auf einmal
List<Destination> everything = destClient.listAllDestinations(DestinationFilter.none());

Schlüssel verwalten​

Der aktive Schlüssel eines Zustellpunkts sowie die Historie aller hinterlegten Schlüssel:

var currentKey = destClient.getActiveDestinationKey(destinationId);
var keys = destClient.getKeysForDestination(destinationId, 0, 10);

Für einen Schlüsselwechsel fügen Sie zunächst den neuen Public Key hinzu, ohne den alten zu entfernen — Details dazu unter Key-Rollover:

destClient.addKeyToDestination(destinationId, newPublicKey);
Attachment-Limits abrufen und ändern

Pro Zustellpunkt sind Limits für Anhang-Größen und -Anzahl konfigurierbar.

DestinationLimits limits = destClient.getAttachmentLimits(destinationId);

// Erhöhung der Limits beantragen
destClient.requestLimitChange(
destinationId,
newLimits,
"Begründung für die Erhöhung",
"contact@example.com");
Validierung und Fehlerbehandlung

Wenn das Create-DTO unvollständig oder inkonsistent ist, antwortet die API mit einer fachlichen Exception, die genau benennt, welche Felder korrigiert werden müssen. Prüfen Sie die Exception-Message bzw. das errors-Feld auf das oder die problematischen Felder.

Weiterführende Themen​