Skip to content

Chapter 7: Technical Specifications

The technical data specifications are based on AFD 2.0 from SIVI AFS.

7.1 Messages & Schemes

Each message can concern multiple schemes (pension.scheme) but always relates to a single pension provider (party.pensionProvider).

7.2 Validations

Validation rules can be implemented to check for correct message structure, data types, mandatory fields, number of repetitions, and use of allowed codes from code lists. Relational checks (validation rules between different data elements) are still under development.

7.3 JSON

The standard uses JSON (JavaScript Object Notation), as specified in RFC 8259. It's a lightweight format for structuring data. Guideline: If a non-mandatory attribute has no value, it should be completely omitted from the JSON message. This is a recommended practice according to JSON conventions.

7.4 Transport / OpenAPI

7.4.1 OpenAPI Model

A standard for transporting messages has been developed using an OpenAPI specification. This supports all parties implementing the RESTful API and promotes uniform application. The API acts as a digital gateway. Communication is initiated by the sender (push model). To guarantee integrity, a digital signature of the payload can be included in an x-jws-signature header (optional). The standard only supports the OpenAPI API; other forms of data exchange are not supported.

7.4.2 API Implementation and Backup

The deployment and operation of the API are the responsibility of the providing party. The standard assumes that any downtime will be brief. Email can serve as a "backup" transport mechanism in exceptional cases. The main security measures are authentication via API key, authorization via OAuth 2.0, optional digital signatures, and encrypted communication via HTTPS.

7.5 Message Composition, Versioning, and Publication

7.5.1 Explanation of using "afdDefinitionVersion"

The afdDefinitionVersion field in a message must be filled with the version number of the VBPUO JSON schema used to create it. These schemas are maintained in SIVI's "AFD Online Samenstellen (AOS)" tool.

7.5.2 Publication on GitHub Version Number and Tag

When releasing on GitHub, the release gets a Name and a Tag (e.g., "2024_Juli" with tag v1.1.0). These are not present in the message payload itself.

7.6 Processing Protocol for Partial Messages (Chunking)

This protocol describes how to split (sender) and process (receiver) large messages that exceed a pre-agreed size limit (default: 4 MB). * Principles: Each chunk must be a standalone, valid JSON message. All chunks of a single logical message share the same messageId. Failure of one chunk invalidates the entire logical message. * Splitting (Sender): The sender creates multiple chunks by dividing the data from large, repeating arrays. Each chunk gets a chunkMeta block with metadata. * Reconstruction (Receiver): The receiver uses the shared messageId to collect chunks and reconstructs the original message using chunkFragmentPaths.