# Prosperity Partner Integration — Complete Documentation > This file contains the complete partner integration documentation for the Prosperity insurance platform. > It is optimized for consumption by AI coding assistants and LLMs. > Source: https://partner.life.li/integration-docs --- ## AI-Assisted Integration URL: https://partner.life.li/integration-docs/ai-integration # AI-Assisted Integration Use the **Copy Prompt** buttons in our API guides to start an integration with an AI coding assistant. Each prompt provides the request, examples and API rules to work from. Each prompt includes the actual GraphQL schema types (SDL) read directly from our source code, so the type definitions, field constraints, and documentation comments are always in sync with the API. ## Copy Prompts (Per Operation) Each page in the [Platform Integration](https://partner.life.li/integration-docs/platform-integrations) section has focused, self-contained prompts you can copy directly into your AI coding assistant: ### API Setup - [Platform GraphQL API](https://partner.life.li/integration-docs/platform-integrations/graphql-api) — prompt to set up the authenticated API client ### Creating Offers - [Creating Offers](https://partner.life.li/integration-docs/platform-integrations/creating-offers) — per-product prompts for: - Liechtenstein Life Invest (Germany) - Liechtenstein Life Wealth (Germany) - Prosperity Plus Germany (Germany) - Prosperity 3A (Switzerland) - Existing customer offers ### Creating Pre-Registrations - [Creating pre-registrations](https://partner.life.li/integration-docs/platform-integrations/pre-registrations) — an AVD Plus prompt for existing and new customers, including broker access, preparation emails, invitations and safe retry handling. - The same guide explains how to register a customer through the API, then select them in Partner Life to prepare the AVD flow there. ### Other Operations - Fetch offer and download PDF - Update customer information - Look up customer by email Each prompt includes the exact GraphQL mutation/query, working example variables, authentication setup, relevant schema types (SDL), and product-specific notes. Just copy, paste, and tell your AI what to build. ## Schema Reference Browse the full GraphQL schema for the Partner Platform API: - [Schema Reference](https://partner.life.li/integration-docs/docs/schema) — browsable, auto-generated documentation for every type, input, enum, union, and interface - [Platform Integration API Explorer](https://partner.life.li/integration-docs/platform-integrations/graphql-api) — interactive playground with full schema introspection The schema reference is auto-generated from the source `.gql` files to stay in sync with the API. ## llms.txt (Auto-Discovered by AI Tools) Our documentation follows the [llms.txt standard](https://llmstxt.org/). AI tools that support this standard will automatically discover and consume our documentation. - **Index:** [/llms.txt](https://partner.life.li/integration-docs/llms.txt) — lightweight summary with links to all pages - **Full content:** [/llms-full.txt](https://partner.life.li/integration-docs/llms-full.txt) — complete documentation in one AI-optimized file ## Interactive GraphQL Playground Each API documentation page includes an embedded GraphQL playground where you can explore the schema, run queries, and test mutations directly: - [Platform Integration API Explorer](https://partner.life.li/integration-docs/platform-integrations/graphql-api) — for customer registration, complete offers and AVD Plus pre-registrations - [Digital Onboarding API Explorer](https://partner.life.li/integration-docs/customer-digital-onboarding/graphql-api) — for partial offers with customer onboarding ## Which API Do I Need? | Use Case | API | Graph | |----------|-----|-------| | You have **all customer data** and want to create complete offers | Partner Platform | `partner-platform` | | You want to prepare an **AVD Plus pre-registration** for an existing or new customer | Partner Platform | `partner-platform` | | You want to **register a customer**, then prepare their AVD flow in Partner Life | Partner Platform | `partner-platform` | | You have **partial data** and want customers to complete the offer in-app | Partner (Digital Onboarding) | `partner` | ## Need Help? If you need assistance with AI-assisted integration or have questions, please reach out to our support team. --- ## BiPRO Integration URL: https://partner.life.li/integration-docs/bipro # BiPRO Integration Receive policy documents and optional GDV portfolio exports from Liechtenstein Life in your broker management system using the **BiPRO Norm 430** SOAP interface. Shipments are available to fetch, process, and acknowledge. ## Credentials Your **Client ID** and **Client Secret** are displayed in [Partner Life](https://partner.life.li/my/profile/bipro) under **Profile → BiPRO Integration**. The secret is shown once when the integration is created — store it securely. You can rotate it at any time from the same page. **Note:** ### Optional GDV exports GDV delivery is off by default for each connection. In Partner Life, open the connection's BiPRO settings, enable **Provide GDV portfolio data**, and confirm with your passkey. Creating credentials alone does not enable GDV. The first export is prepared in the background, followed by weekly exports of authorised German-market contracts. Use `listShipments` and `getShipment` to retrieve completed exports, then download the ZIP from `` using your Bearer token. Requests do not trigger generation. Turning the setting off stops GDV generation and downloads. ## Environments | Environment | Base URL | |-------------|----------| | Test (Stable) | `https://api.stable.life.li` | | Production | `https://api.life.li` | Use the test environment for all initial integration work. Production credentials are separate and must be obtained after test verification. ## Endpoints | Endpoint | Method | Purpose | |----------|--------|---------| | `/bipro/oauth/token` | `POST` | Exchange client credentials for a Bearer token | | `/bipro/.well-known/jwks.json` | `GET` | Public JWKS for verifying issued tokens | | `/bipro/norm410/2.7` | `POST` | BiPRO Norm 260/410 SOAP token service (WS-Trust) | | `/bipro/norm410/2.7?wsdl` | `GET` | WSDL for the Norm 260/410 SOAP token service | | `/bipro/norm430/2.7` | `POST` | BiPRO Norm 430 SOAP endpoint | ## Authentication Authentication uses the **OAuth 2.0 client credentials** flow. Request a token before each SOAP session — tokens are valid for **15 minutes**. ### 1. Obtain a token ```bash curl -X POST https://api.life.li/bipro/oauth/token \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=client_credentials" \ -d "client_id=YOUR_CLIENT_ID" \ -d "client_secret=YOUR_CLIENT_SECRET" \ -d "scope=bipro:transfer" ``` Response: ```json { "access_token": "eyJ...", "token_type": "Bearer", "expires_in": 900, "scope": "bipro:transfer" } ``` ### 2. Call the SOAP endpoint Pass the token in the `Authorization` header on every SOAP request: ``` Authorization: Bearer YOUR_ACCESS_TOKEN ``` **Note:** The token endpoint allows a maximum of **10 requests per 60 seconds** per Client ID. Re-use tokens until they are close to expiry rather than requesting a new one per SOAP call. ## BiPRO STS (Norm 260/410) — Username/Password If your platform speaks WS-Trust rather than OAuth 2.0, request tokens through the BiPRO Norm 260/410 SecurityTokenService instead. Both paths issue the same underlying token and share one rate limit — use whichever fits your SOAP stack. Use the same **Client ID** and **Client Secret** as the OAuth flow: Client ID as the WS-Security username, Client Secret as the password. Credentials are per broker — each broker platform stores each broker's own Client ID and Secret from [Partner Life](https://partner.life.li/my/profile/bipro), not a single shared account. The WSDL is published at: ``` GET https://api.life.li/bipro/norm410/2.7?wsdl ``` ### 1. Request a token Send a WS-Trust `RequestSecurityToken` with a WS-Security `UsernameToken`: ```bash curl -X POST https://api.life.li/bipro/norm410/2.7 \ -H "Content-Type: text/xml; charset=utf-8" \ -d ' YOUR_CLIENT_ID YOUR_CLIENT_SECRET http://schemas.xmlsoap.org/ws/2005/02/sc/sct http://schemas.xmlsoap.org/ws/2005/02/trust/Issue ' ``` `TokenType` and `RequestType` must match exactly as shown — any other value returns a SOAP fault. ### 2. Read the response ```xml bipro:eyJ... 2026-07-06T12:00:00Z 2026-07-06T12:15:00Z ``` The `` is `bipro:`-prefixed and valid for **15 minutes**, matching ``/``. Store the full identifier, prefix included — you'll need it as-is for the SOAP header below. ### 3. Call Norm 430 with the token Present the identifier as a `SecurityContextToken` in the SOAP header: ```xml bipro:eyJ... ``` The HTTP `Authorization: Bearer YOUR_ACCESS_TOKEN` header from the OAuth flow above still works too — the `bipro:` prefix is optional there, the server strips it automatically if present. **Note:** The Norm 260/410 token service shares its rate limit with `/bipro/oauth/token`: **10 requests per 60 seconds** per Client ID, counted across both endpoints combined. Re-use tokens until they are close to expiry. ### Faults Errors come back as a SOAP fault with a `nachr:BiproException` detail carrying a `MeldungID`. Authentication failures — unknown Client ID, wrong secret, or a disabled integration — all return the same fault (`MeldungID 00960`), so a failed request never reveals which part of the credential pair was wrong. This fault shape is specific to this STS endpoint — Norm 430 authentication failures return the transfer service's own fault format. ## SOAP Operations All operations are sent as `POST` requests to `/bipro/norm430/2.7` with `Content-Type: text/xml`. ### listShipments Lists available (unacknowledged) shipments for your integration. ```bash curl -X POST https://api.life.li/bipro/norm430/2.7 \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Content-Type: text/xml; charset=utf-8" \ -d ' 2.7.0.1.0 false ' ``` The response contains a `` element for each available shipment, each with an `` you use for `getShipment` and `acknowledgeShipment`. ### getShipment Fetches the shipment payload, with inline content in `` or a download URL in ``. GDV exports use a download URL. ```bash curl -X POST https://api.life.li/bipro/norm430/2.7 \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Content-Type: text/xml; charset=utf-8" \ -d ' 2.7.0.1.0 SHIPMENT_ID ' ``` For inline document content, decode `` from the response: ```bash # Extract and decode the base64 document from echo "BASE64_CONTENT" | base64 -d > document.pdf ``` Key fields in the response: | Field | Description | |-------|-------------| | `` | Base64-encoded document content | | `` | Authenticated download URL; GDV exports are ZIP files | | `` | Filename (e.g. `policy-12345.pdf`) | | `` | File type | | `` | Document label | ### acknowledgeShipment Confirm receipt of a shipment. Call this after successfully processing the document. Acknowledged shipments no longer appear in `listShipments`. ```bash curl -X POST https://api.life.li/bipro/norm430/2.7 \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Content-Type: text/xml; charset=utf-8" \ -d ' 2.7.0.1.0 SHIPMENT_ID ' ``` A successful response includes `OK`. ## Recommended polling flow 1. `listShipments` — identify new shipment IDs 2. `getShipment` — download and process each document 3. `acknowledgeShipment` — confirm receipt Repeat on a schedule (e.g. every few minutes). Only unacknowledged shipments appear in `listShipments`. ## Security best practices - Store your Client Secret in a secrets manager — never in source code or config files - Request tokens server-side only — never expose credentials to client-side code - Rotate your Client Secret periodically from the [Partner Life portal](https://partner.life.li/my/profile/bipro) - Use HTTPS for all requests (enforced — plain HTTP is rejected) --- ## Creating Offers With Onboarding Customer Flows URL: https://partner.life.li/integration-docs/customer-digital-onboarding/creating-offers # Creating Offers With Onboarding Customer Flows ## Prerequisites - You have received your API Key (for stable and production environment) ## Integrating our product There are two ways to integrate our product – both lead the user from your website into our policy application flow (themed as per your brand guidelines) seamlessly. ### Option 1: Embedding our user creation widget ![User Creation Widget](https://partner.life.li/integration-docs/img/user-creation-widget.webp) You can integrate our user creation/registration widget inside your website as an ` ``` ## URL Parameters The widget can be initialized with default values using URL parameters. Here are the supported parameters: | Parameter | Default | Options | Description | | ----------------- | ------- | ------------------ | ------------------------------------------------------------------------------------------- | | graphType | preTax | postTax, preTax | Initializes the widget with the selected graph type. Users can still switch between graphs. | | initialPayment | 0 | - | Initial payment amount at policy start | | monthlyPayment | 100 | min = 30 | Monthly payment amount | | riskLevel | high | high, medium, low | Initial risk level selection (high: 9%, medium: 6%, low: 3%) | | currentAge | 25 | min = 18, max = 55 | Customer's current age | | startInXYears | 0 | - | Initializes with start year difference comparison graph if > 0 | | ageWhenPolicyEnds | 67 | 67, 75, 85 | Expected policy end age | ## Example Usage Here's an example of embedding the calculator with some predefined parameters: ```html ``` ## Customization The widget automatically adapts to your website's layout and provides a responsive experience across different screen sizes. The height can be adjusted based on your needs by modifying the `height` attribute of the iframe. ---