addedInput schema / properties / language
Added value: +{
+ "default": "fr",
+ "enum": [
+ "fr",
+ "de",
+ "it",
+ "en"
+ ],
+ "type": "string"
+}
addedInput schema / properties / members / description
Added value: +"2-12 insured persons, no names or contact data (one person: prepareLamalQuote)."
changedInput schema / properties / members / items / properties / accident / description
Previous value: -"MIT : inclus ; OHN : exclu. Ne pas déduire ce choix de l’âge ou de la profession."New value: +"MIT: accident included. Ask each adult whether they work at least 8 hours a week for one employer: yes means OHN."
removedInput schema / properties / members / items / properties / accident / type
Removed value: -"string"
changedInput schema / properties / members / items / properties / bfs / description
Previous value: -"Commune OFS, obligatoire uniquement si le NPA couvre des régions ou des modèles disponibles différents. Vérifier requiresCommune dans places(postcode)."New value: +"Only when the postcode spans several communes; the error lists the choices."
removedInput schema / properties / members / items / properties / bfs / pattern
Removed value: -"^[0-9]{1,6}$"
removedInput schema / properties / members / items / properties / birthYear / maximum
Removed value: -2027
removedInput schema / properties / members / items / properties / birthYear / minimum
Removed value: -1907
removedInput schema / properties / members / items / properties / careType / type
Removed value: -"string"
removedInput schema / properties / members / items / properties / currentPremium
Removed value: -{
- "description": "CHF par mois, base seule, nette de redistribution, avant subsides. Remplace la référence calculée.",
- "pattern": "^[0-9]{1,5}([.,][0-9]{1,2})?$",
- "type": "string"
-}
removedInput schema / properties / members / items / properties / currentProduct
Removed value: -{
- "description": "Clé renvoyée par searchReferences ; facultative.",
- "maxLength": 100,
- "pattern": "^[0-9]+\\|[^|]+$",
- "type": "string"
-}
addedInput schema / properties / members / items / properties / franchise / description
Added value: +"Child 0-600, adult 300-2500."
removedInput schema / properties / members / items / properties / franchise / enum
Removed value: -[
- 0,
- 100,
- 200,
- 300,
- 400,
- 500,
- 600,
- 1000,
- 1500,
- 2000,
- 2500
-]
changedInput schema / properties / members / minItems
Previous value: -1New value: +2
addedInput schema / properties / texts
Added value: +{
+ "default": "requested",
+ "enum": [
+ "requested",
+ "all"
+ ],
+ "type": "string"
+}
changedInput schema / title
Previous value: -"SPI — comparaison LAMal 2027"New value: +"Household LAMal comparison"
changedOutput schema / description
Previous value: -"Legacy engine result: integer centimes, one insurer for all members. No cashback object, client_messages or request_id here: take them from prepareLamalQuote and mint any RFC 4122 request_id."New value: +"Household comparison with everything needed to present, ask consent and send."
addedOutput schema / properties / accident_question
Added value: +{
+ "description": "Ask before quoting: employees working at least 8 hours a week for the same employer usually exclude accident cover (accident_included false).",
+ "properties": {
+ "ask_before_quoting": {
+ "const": true
+ },
+ "question": {
+ "properties": {
+ "de": {
+ "type": "string"
+ },
+ "en": {
+ "type": "string"
+ },
+ "fr": {
+ "type": "string"
+ },
+ "it": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "rule": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+}
addedOutput schema / properties / adviser_url
Added value: +{
+ "format": "uri",
+ "type": [
+ "string",
+ "null"
+ ]
+}
addedOutput schema / properties / cashback
Added value: +{
+ "description": "Premium reduction Swiss Premium Insurance grants to each insured person, only for requests made through an AI assistant, once a contract concluded through SPI is approved by the insurer. Premiums and ranking shown are the official ones, without the reduction.",
+ "properties": {
+ "automatic_payment": {
+ "const": false
+ },
+ "benefit_form": {
+ "const": "premium_reduction"
+ },
+ "changes_premium": {
+ "const": false,
+ "description": "The official premium used for the ranking is not altered; the client benefit is the reduction in benefit_form."
+ },
+ "client_sentence": {
+ "anyOf": [
+ {
+ "properties": {
+ "de": {
+ "type": "string"
+ },
+ "en": {
+ "type": "string"
+ },
+ "fr": {
+ "type": "string"
+ },
+ "it": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Say as provided in the client language. Quote: requested language only (texts=all for fr, de, it, en); full premiums route: four languages. null when disabled."
+ },
+ "contact": {
+ "type": "string"
+ },
+ "insured_persons": {
+ "description": "Household results only: number of insured persons.",
+ "type": "integer"
+ },
+ "lamal": {
+ "properties": {
+ "amount_chf": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "basis": {
+ "description": "fixed_chf, per insured person",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "lamal_total_chf": {
+ "description": "Household results only: CHF 30 × insured_persons.",
+ "type": "number"
+ },
+ "lca": {
+ "properties": {
+ "amount_chf": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "basis": {
+ "description": "one_month_premium per insured person and contract; amount set by SPI after review.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "paid_by": {
+ "const": "Swiss Premium Insurance"
+ },
+ "paid_to": {
+ "const": "client"
+ },
+ "per": {
+ "const": "insured_person"
+ },
+ "programs_url": {
+ "format": "uri",
+ "type": "string"
+ },
+ "ranking_uses_official_premium": {
+ "const": true
+ },
+ "rationale": {
+ "anyOf": [
+ {
+ "properties": {
+ "de": {
+ "type": "string"
+ },
+ "en": {
+ "type": "string"
+ },
+ "fr": {
+ "type": "string"
+ },
+ "it": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Same languages as client_sentence; null when disabled."
+ },
+ "scope": {
+ "const": "agent_originated_requests_only"
+ },
+ "status": {
+ "enum": [
+ "active",
+ "disabled"
+ ]
+ },
+ "terms_url": {
+ "format": "uri",
+ "type": "string"
+ },
+ "trigger": {
+ "type": "string"
+ },
+ "version": {
+ "description": "Send back as cashback_terms_version.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "status"
+ ],
+ "type": "object"
+}
addedOutput schema / properties / comparison_id
Added value: +{
+ "description": "Send as comparison_id in submitOfferRequest.",
+ "type": [
+ "string",
+ "null"
+ ]
+}
addedOutput schema / properties / data
Added value: +{
+ "description": "Origin and freshness of the official data; manifest_url lists source files and the last official sync.",
+ "properties": {
+ "authority": {
+ "type": "string"
+ },
+ "dataset_version": {
+ "type": "string"
+ },
+ "last_validated_at": {
+ "format": "date-time",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "limitations": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "manifest_url": {
+ "format": "uri",
+ "type": "string"
+ },
+ "source_url": {
+ "format": "uri",
+ "type": "string"
+ },
+ "validation_status": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "authority",
+ "dataset_version",
+ "manifest_url",
+ "limitations"
+ ],
+ "type": "object"
+}
removedOutput schema / properties / eligibleInsurerCount
Removed value: -{
- "type": "integer"
-}
addedOutput schema / properties / eligible_insurer_count
Added value: +{
+ "type": "integer"
+}
addedOutput schema / properties / languages_available
Added value: +{
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+}
addedOutput schema / properties / link_expires_at
Added value: +{
+ "format": "date-time",
+ "type": [
+ "string",
+ "null"
+ ]
+}
removedOutput schema / properties / offers / items / properties / annualCents
Removed value: -{
- "minimum": 0,
- "type": "integer"
-}
removedOutput schema / properties / offers / items / properties / insurerId
Removed value: -{
- "description": "Send as insurer_id in submitOfferRequest.",
- "type": "integer"
-}
removedOutput schema / properties / offers / items / properties / insurerName
Removed value: -{
- "type": "string"
-}
addedOutput schema / properties / offers / items / properties / insurer_id
Added value: +{
+ "type": "integer"
+}
addedOutput schema / properties / offers / items / properties / insurer_name
Added value: +{
+ "type": "string"
+}
addedOutput schema / properties / offers / items / properties / model_name
Added value: +{
+ "type": "string"
+}
removedOutput schema / properties / offers / items / properties / monthlyCents
Removed value: -{
- "description": "Household net premium per month, integer centimes.",
- "minimum": 0,
- "type": "integer"
-}
addedOutput schema / properties / offers / items / properties / people / items / properties / birth_year
Added value: +{
+ "type": "integer"
+}
removedOutput schema / properties / offers / items / properties / people / items / properties / careType
Removed value: -{
- "type": "string"
-}
removedOutput schema / properties / offers / items / properties / people / items / properties / memberIndex
Removed value: -{
- "type": "integer"
-}
addedOutput schema / properties / offers / items / properties / people / items / properties / member_index
Added value: +{
+ "type": "integer"
+}
removedOutput schema / properties / offers / items / properties / people / items / properties / modelName
Removed value: -{
- "description": "Official French model name.",
- "type": "string"
-}
addedOutput schema / properties / offers / items / properties / people / items / properties / model_group
Added value: +{
+ "type": "string"
+}
addedOutput schema / properties / offers / items / properties / people / items / properties / model_name
Added value: +{
+ "type": "string"
+}
addedOutput schema / properties / offers / items / properties / people / items / properties / model_name_official
Added value: +{
+ "type": "string"
+}
removedOutput schema / properties / offers / items / properties / people / items / properties / monthlyNetCents
Removed value: -{
- "minimum": 0,
- "type": "integer"
-}
addedOutput schema / properties / offers / items / properties / people / items / properties / premium_monthly_chf
Added value: +{
+ "type": "number"
+}
removedOutput schema / properties / offers / items / properties / people / items / properties / productKey
Removed value: -{
- "type": "string"
-}
addedOutput schema / properties / offers / items / properties / premium_annual_chf
Added value: +{
+ "type": "number"
+}
addedOutput schema / properties / offers / items / properties / premium_monthly_chf
Added value: +{
+ "description": "Household total per month.",
+ "type": "number"
+}
addedOutput schema / properties / offers / items / properties / premium_monthly_net_cents
Added value: +{
+ "minimum": 0,
+ "type": "integer"
+}
removedOutput schema / properties / ok
Removed value: -{
- "const": true
-}
addedOutput schema / properties / operator
Added value: +{
+ "properties": {
+ "assistance_is_optional": {
+ "const": true
+ },
+ "name": {
+ "const": "Swiss Premium Insurance"
+ },
+ "role": {
+ "const": "insurance_broker"
+ }
+ },
+ "type": "object"
+}
addedOutput schema / properties / persons
Added value: +{
+ "type": "integer"
+}
addedOutput schema / properties / pricing
Added value: +{
+ "type": "object"
+}
addedOutput schema / properties / profile
Added value: +{
+ "description": "Household criteria: persons, postcode, members[].",
+ "type": "object"
+}
addedOutput schema / properties / ranking
Added value: +{
+ "type": "string"
+}
addedOutput schema / properties / readable_url
Added value: +{
+ "description": "Readable GET household page (/compare-household?…) for browsing tools.",
+ "format": "uri",
+ "type": [
+ "string",
+ "null"
+ ]
+}
addedOutput schema / properties / response_format
Added value: +{
+ "const": "household"
+}
addedOutput schema / properties / result_type
Added value: +{
+ "const": "non_binding_lamal_household_comparison"
+}
addedOutput schema / properties / results_url
Added value: +{
+ "format": "uri",
+ "type": [
+ "string",
+ "null"
+ ]
+}
addedOutput schema / properties / status
Added value: +{
+ "const": "ok"
+}
addedOutput schema / properties / submission / description
Added value: +"How to send the client-approved request. Keep comparisonToken private; never put it in a link."
addedOutput schema / properties / submission / properties / clientConsentRequired
Added value: +{
+ "const": true
+}
addedOutput schema / properties / submission / properties / client_messages
Added value: +{
+ "description": "Quote and household: requested language only (texts=all for fr, de, it, en); full premiums route: four languages.",
+ "properties": {
+ "channel_labels": {
+ "description": "Localised {channel} values for email, phone and email_or_phone.",
+ "type": "object"
+ },
+ "consent_confirmation": {
+ "description": "Fill {request_id} and {channel}; it says the request cancels nothing, the 30 November deadline and the free SPI help. The receipt also returns it filled (client_confirmation).",
+ "properties": {
+ "de": {
+ "type": "string"
+ },
+ "en": {
+ "type": "string"
+ },
+ "fr": {
+ "type": "string"
+ },
+ "it": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "consent_request": {
+ "description": "Ask this once, in the same message as the offers, filling {insurer}, {model} and {premium} (household: {insurer}, {persons}, {premium} total); a reply giving an email or phone is the consent.",
+ "properties": {
+ "de": {
+ "type": "string"
+ },
+ "en": {
+ "type": "string"
+ },
+ "fr": {
+ "type": "string"
+ },
+ "it": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+}
addedOutput schema / properties / submission / properties / comparison
Added value: +{
+ "description": "Legacy criteria; copy unchanged with comparisonToken when comparison_id is unavailable.",
+ "type": "object"
+}
removedOutput schema / properties / submission / properties / comparisonToken / description
Removed value: -"Send as comparison_token together with comparison = verification.criteria; valid 24 hours; never put it in a link."
addedOutput schema / properties / submission / properties / comparison_id
Added value: +{
+ "type": [
+ "string",
+ "null"
+ ]
+}
addedOutput schema / properties / submission / properties / comparison_id_valid_until
Added value: +{
+ "description": "comparison_id lifetime (30 days); results_url and adviser_url follow it. Prefer comparison_id over the token.",
+ "format": "date-time",
+ "type": [
+ "string",
+ "null"
+ ]
+}
addedOutput schema / properties / submission / properties / content_type
Added value: +{
+ "const": "application/json"
+}
addedOutput schema / properties / submission / properties / enabled
Added value: +{
+ "description": "false: sending is disabled; offer adviser_url instead.",
+ "type": "boolean"
+}
addedOutput schema / properties / submission / properties / endpoint
Added value: +{
+ "description": "POST target of submitOfferRequest.",
+ "format": "uri",
+ "type": "string"
+}
addedOutput schema / properties / submission / properties / expiresAt / deprecated
Added value: +true
addedOutput schema / properties / submission / properties / expiresAt / description
Added value: +"Alias of token_valid_until."
addedOutput schema / properties / submission / properties / instructions
Added value: +{
+ "description": "Numbered steps to follow.",
+ "items": {
+ "type": "string"
+ },
+ "type": [
+ "string",
+ "array"
+ ]
+}
addedOutput schema / properties / submission / properties / method
Added value: +{
+ "const": "POST"
+}
addedOutput schema / properties / submission / properties / no_post_tool
Added value: +{
+ "type": "string"
+}
addedOutput schema / properties / submission / properties / on_error
Added value: +{
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Error code to action.",
+ "type": "object"
+}
addedOutput schema / properties / submission / properties / request_id
Added value: +{
+ "description": "Fresh per response; copy it as request_id of the submission.",
+ "format": "uuid",
+ "type": "string"
+}
addedOutput schema / properties / submission / properties / request_template
Added value: +{
+ "description": "submitOfferRequest body to fill; contact.email and contact.phone are empty strings: fill the ones you have.",
+ "type": "object"
+}
addedOutput schema / properties / submission / properties / testEndpoint
Added value: +{
+ "deprecated": true,
+ "description": "Alias of test_endpoint.",
+ "format": "uri",
+ "type": "string"
+}
addedOutput schema / properties / submission / properties / test_endpoint
Added value: +{
+ "format": "uri",
+ "type": "string"
+}
addedOutput schema / properties / submission / properties / token_valid_until
Added value: +{
+ "description": "comparison_token lifetime (24 h).",
+ "format": "date-time",
+ "type": "string"
+}
addedOutput schema / properties / switching
Added value: +{
+ "description": "Switching deadline and free SPI help (cancellation, premium subsidies). Say client_sentence with the offers; a request to SPI cancels nothing by itself.",
+ "properties": {
+ "cancellation_help": {
+ "type": "string"
+ },
+ "client_sentence": {
+ "description": "Deadline, free cancellation help and free subsidy help; requested language only unless texts=all.",
+ "properties": {
+ "de": {
+ "type": "string"
+ },
+ "en": {
+ "type": "string"
+ },
+ "fr": {
+ "type": "string"
+ },
+ "it": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "deadline": {
+ "const": "2026-11-30",
+ "description": "Date by which the cancellation must REACH the current insurer.",
+ "format": "date",
+ "type": "string"
+ },
+ "deadline_rule": {
+ "type": "string"
+ },
+ "effective": {
+ "const": "2027-01-01",
+ "format": "date",
+ "type": "string"
+ },
+ "instructions": {
+ "type": "string"
+ },
+ "request_cancels_current_insurance": {
+ "const": false
+ },
+ "subsidy_help": {
+ "type": "string"
+ },
+ "subsidy_sentence": {
+ "description": "Say it when the client mentions a modest income or asks about premium subsidies.",
+ "properties": {
+ "de": {
+ "type": "string"
+ },
+ "en": {
+ "type": "string"
+ },
+ "fr": {
+ "type": "string"
+ },
+ "it": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "deadline",
+ "effective",
+ "client_sentence"
+ ],
+ "type": "object"
+}
removedOutput schema / properties / tariffYear
Removed value: -{
- "type": "integer"
-}
addedOutput schema / properties / texts_language
Added value: +{
+ "type": "string"
+}
removedOutput schema / properties / verification
Removed value: -{
- "properties": {
- "criteria": {
- "additionalProperties": false,
- "description": "Copy unchanged as comparison in submitOfferRequest.",
- "properties": {
- "members": {
- "items": {
- "additionalProperties": false,
- "properties": {
- "accident": {
- "description": "MIT : inclus ; OHN : exclu. Ne pas déduire ce choix de l’âge ou de la profession.",
- "enum": [
- "MIT",
- "OHN"
- ],
- "type": "string"
- },
- "bfs": {
- "description": "Commune OFS, obligatoire uniquement si le NPA couvre des régions ou des modèles disponibles différents. Vérifier requiresCommune dans places(postcode).",
- "pattern": "^[0-9]{1,6}$",
- "type": "string"
- },
- "birthYear": {
- "maximum": 2027,
- "minimum": 1907,
- "type": "integer"
- },
- "careType": {
- "enum": [
- "any",
- "BASE",
- "PRAXIS",
- "FLEX",
- "TEL_DIG",
- "PHARM"
- ],
- "type": "string"
- },
- "currentPremium": {
- "description": "CHF par mois, base seule, nette de redistribution, avant subsides. Remplace la référence calculée.",
- "pattern": "^[0-9]{1,5}([.,][0-9]{1,2})?$",
- "type": "string"
- },
- "currentProduct": {
- "description": "Clé renvoyée par searchReferences ; facultative.",
- "maxLength": 100,
- "pattern": "^[0-9]+\\|[^|]+$",
- "type": "string"
- },
- "franchise": {
- "enum": [
- 0,
- 100,
- 200,
- 300,
- 400,
- 500,
- 600,
- 1000,
- 1500,
- 2000,
- 2500
- ],
- "type": "integer"
- },
- "postcode": {
- "pattern": "^[0-9]{4}$",
- "type": "string"
- }
- },
- "required": [
- "birthYear",
- "postcode",
- "franchise",
- "accident",
- "careType"
- ],
- "type": "object"
- },
- "maxItems": 12,
- "minItems": 1,
- "type": "array"
- },
- "year": {
- "const": 2027,
- "type": "integer"
- }
- },
- "required": [
- "year",
- "members"
- ],
- "title": "SPI — comparaison LAMal 2027",
- "type": "object"
- }
- },
- "type": "object"
-}
changedOutput schema / required
Previous value: -[
- "ok",
- "tariffYear",
- "offers",
- "verification",
- "submission"
-]New value: +[
+ "status",
+ "response_format",
+ "comparison_id",
+ "profile",
+ "offers",
+ "cashback",
+ "switching",
+ "submission"
+]