{
  "components": {
    "examples": {
      "standard-error-400": {
        "description": "The request body or parameters are invalid.",
        "summary": "Bad Request",
        "value": {
          "errors": [],
          "localizedMessage": "Invalid request",
          "message": "Invalid request",
          "status": "BAD_REQUEST",
          "statusCode": 400
        }
      },
      "standard-error-401": {
        "description": "The credentials are missing or invalid, the calling IP is not on the client's allowlist, or mTLS is enforced and no valid client certificate was sent. An expired session token gets 401 Token expired.",
        "summary": "Unauthorized",
        "value": {
          "errors": [],
          "localizedMessage": "Authentication failed",
          "message": "Authentication failed",
          "status": "UNAUTHORIZED",
          "statusCode": 401
        }
      },
      "standard-error-403": {
        "description": "The client is not allowed to use this endpoint or resource.",
        "summary": "Forbidden",
        "value": {
          "errors": [],
          "localizedMessage": "Not allowed",
          "message": "Not allowed",
          "status": "FORBIDDEN",
          "statusCode": 403
        }
      },
      "standard-error-404": {
        "description": "The requested resource does not exist or has expired.",
        "summary": "Not Found",
        "value": {
          "errors": [],
          "localizedMessage": "Not found",
          "message": "Not found",
          "status": "NOT_FOUND",
          "statusCode": 404
        }
      },
      "standard-error-429": {
        "description": "The client has sent too many requests in a given time window. Retry after a delay using exponential backoff.",
        "summary": "Rate limit exceeded",
        "value": {
          "errors": [],
          "localizedMessage": "Too many requests. Please retry with backoff.",
          "message": "Too many requests. Please retry with backoff.",
          "status": "TOO_MANY_REQUESTS",
          "statusCode": 429
        }
      }
    },
    "schemas": {
      "AdditionalLoginInput": {
        "description": "Additional login input",
        "example": {
          "key": "region",
          "options": [
            {
              "label": "Centre Loire",
              "value": "centreloire"
            },
            {
              "label": "Centre Est",
              "value": "centrest"
            }
          ],
          "type": "selectOne"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/SelectOne"
          }
        ],
        "properties": {
          "type": {
            "type": "string"
          }
        }
      },
      "AdditionalLoginInputSelectOption": {
        "properties": {
          "label": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "required": [
          "label",
          "value"
        ]
      },
      "AgePeriod": {
        "allOf": [
          {
            "$ref": "#/components/schemas/PayoutPeriod"
          },
          {
            "properties": {
              "endAge": {
                "description": "The payout end age. Will not be set if the payout is lifelong.",
                "example": 70,
                "format": "int32",
                "type": "integer"
              },
              "startAge": {
                "description": "The payout start age.",
                "example": 65,
                "format": "int32",
                "type": "integer"
              },
              "type": {
                "enum": [
                  "AGE_RANGE"
                ],
                "example": "AGE_RANGE",
                "type": "string"
              }
            },
            "type": "object"
          }
        ],
        "description": "A payout period described by an age range.",
        "discriminator": {
          "mapping": {
            "parent": "#/components/schemas/PayoutPeriod"
          },
          "propertyName": "pension"
        },
        "title": "AgePeriod"
      },
      "CollectionItem": {
        "properties": {
          "externalId": {
            "example": "def8d810-e60e-4922-a7ea-852648c2cf3c",
            "type": "string"
          },
          "status": {
            "description": "Possible statuses for a policy being collected",
            "enum": [
              "NOT_STARTED",
              "COMPLETED",
              "COLLECTING",
              "FAILED",
              "NOT_COLLECTED"
            ],
            "example": "NOT_STARTED",
            "type": "string"
          },
          "subType": {
            "example": "condoInsuranceString",
            "type": "string"
          },
          "type": {
            "example": "houseContentInsurance",
            "type": "string"
          }
        }
      },
      "CollectionRequestFilter": {
        "properties": {
          "rules": {
            "items": {
              "$ref": "#/components/schemas/CollectionRequestFilterRule"
            },
            "type": "array",
            "uniqueItems": true
          }
        }
      },
      "CollectionRequestFilterRule": {
        "properties": {
          "field": {
            "enum": [
              "registrationNo"
            ],
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        }
      },
      "CollectionRequestV2": {
        "discriminator": {
          "propertyName": "api"
        },
        "properties": {
          "consents": {
            "description": "A set of consents provided by the end user.",
            "items": {
              "$ref": "#/components/schemas/ConsentRequestInput"
            },
            "type": "array",
            "uniqueItems": true
          },
          "filter": {
            "$ref": "#/components/schemas/CollectionRequestFilter"
          },
          "input": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Key-value object specifying additional input required for the insurance collection. What values should be included depends on context.Possible keys are `SWEDISH_PERSONAL_NUMBER`, `NORWEGIAN_PERSONAL_NUMBER`, `NORWEGIAN_PHONE_NUMBER`,`USERNAME`, `PASSWORD`, `LASTNAME`, `ACCOUNT_OWNER_NAME`.",
            "example": {
              "SWEDISH_PERSONAL_NUMBER": "192101010101"
            },
            "type": "object"
          },
          "insuranceCompany": {
            "description": "The name of the insurance company to trigger the insurance collection from",
            "example": "se-lansforsakringar",
            "type": "string"
          },
          "loginMethod": {
            "description": "Login method that will be used to authenticate the user. Available login methods for a company is specified in the `/insurance-company/status` response.",
            "enum": [
              "DANISH_NEMID",
              "DANISH_MITID",
              "DANISH_MITID_SAME_DEVICE",
              "ESTONIAN_MOBILE_ID",
              "ESTONIAN_SMART_ID",
              "ESTONIAN_MOBILE_ID_USERNAME",
              "ESTONIAN_SMART_ID_USERNAME",
              "LATVIAN_MOBILE_EPARAKSTS",
              "LATVIAN_SMART_ID",
              "LATVIAN_MOBILE_EPARAKSTS_USERNAME",
              "LATVIAN_SMART_ID_USERNAME",
              "LITHUANIAN_SMART_ID",
              "LITHUANIAN_MOBILE_ID",
              "LITHUANIAN_SMART_ID_USERNAME",
              "LITHUANIAN_MOBILE_ID_USERNAME",
              "SMART_ID_SAME_DEVICE",
              "SMART_ID_OTHER_DEVICE",
              "SMART_ID_USERNAME_SAME_DEVICE",
              "SMART_ID_USERNAME_OTHER_DEVICE",
              "NORWEGIAN_BANKID_ON_MOBILE",
              "NORWEGIAN_BANKID_ON_MOBILE_FULL_PERSONAL_NUMBER",
              "SWEDISH_MOBILE_BANKID_OTHER_DEVICE",
              "SWEDISH_MOBILE_BANKID_OTHER_DEVICE_MOCK",
              "SWEDISH_MOBILE_BANKID_SAME_DEVICE",
              "SWEDISH_MOBILE_BANKID_SAME_DEVICE_CLIENT_SIDE_AUTHENTICATION",
              "SWEDISH_MOBILE_BANKID_SAME_DEVICE_CLIENT_SIDE_AUTHENTICATION_MOCK",
              "SWEDISH_MOBILE_BANKID_OTHER_DEVICE_TEST",
              "SWEDISH_MOBILE_BANKID_SAME_DEVICE_TEST",
              "SWEDISH_SECURITY_TOKEN",
              "UK_DOB_USERNAME_PASSWORD",
              "UK_LASTNAME_MEMBERSHIP_NUMBER",
              "UK_USERNAME_POSTCODE",
              "USERNAME_AND_PASSWORD",
              "EMAIL",
              "PDF_UPLOAD",
              "GERMAN_EID",
              "AUTHENTICATION_APP_URL",
              "MANUAL_SELECT",
              "API_KEY"
            ],
            "example": "SWEDISH_MOBILE_BANKID_OTHER_DEVICE",
            "type": "string"
          }
        }
      },
      "CollectionStartedResponse": {
        "discriminator": {
          "propertyName": "api"
        },
        "properties": {
          "collectionId": {
            "description": "The ID of the collection request, used for fetching the status of the request and the data from the request",
            "example": "22e633bc-427d-4f4a-87cf-cfaca04ef351",
            "type": "string"
          }
        },
        "required": [
          "collectionId"
        ]
      },
      "CollectionStatus": {
        "discriminator": {
          "propertyName": "api"
        },
        "properties": {
          "collectionItems": {
            "items": {
              "$ref": "#/components/schemas/CollectionItem"
            },
            "type": "array"
          },
          "externalUserUuid": {
            "description": "The UUID of the external user this collection belongs to, when it is linked to one (null otherwise). Can be used to build a Hub deep-link of the form /collections/user/{externalUserUuid}.",
            "example": "b3f1c2a4-8d6e-4f2b-9a1c-7e5d3b2a1f0e",
            "type": "string"
          },
          "extraInformation": {
            "$ref": "#/components/schemas/CollectionStatusInformationMap",
            "description": "A key-value map containing potential extra information, depending on the company the collection is getting data from.",
            "example": {
              "AUTOSTART_TOKEN": "38bb848d-5a0d-4dec-977d-a8777f3637da",
              "SWEDISH_BANKID_QRCODE": "iVBORw0KGgoAA=="
            }
          },
          "id": {
            "description": "The collection ID of the request",
            "example": "22e633bc-427d-4f4a-87cf-cfaca04ef351",
            "type": "string"
          },
          "insuranceCompany": {
            "description": "Insurance company that this collection is from",
            "example": "se-lansforsakringar",
            "type": "string"
          },
          "pollingInterval": {
            "description": "The recommended interval in milliseconds at which to poll the `/status` endpoint for a collection. The endpoint can be polled less often, but latest by the value indicated by `pollingTimeout` to ensure that the collection is not terminated.",
            "example": 1000,
            "format": "int32",
            "type": "integer"
          },
          "pollingTimeout": {
            "description": "The collection status must be polled before this timestamp. Failure to do so may result in the termination of the collection.",
            "example": "2024-09-26T12:59:10.545Z",
            "format": "date-time",
            "type": "string"
          },
          "status": {
            "description": "Current status of the collection request. Possible values are: `RUNNING`, `LOGIN`,`CONTACT FORM PENDING`, `COLLECTING`, `COMPLETED`, `COMPLETED PARTIAL`, `COMPLETED EMPTY`, `FAILED`, `FAILED PDF PARSE`, `FAILED PDF USER INPUT` `WAITING FOR AUTHENTICATION`, `INCORRECT CREDENTIALS`, `KYC FORM`, `CUSTOMER ENROLLMENT REQUIRED`, `CONTACT FORM`, `AUTHENTICATION CONFLICT`, `AUTHENTICATION MISMATCH`, `TWO FACTOR PENDING`.",
            "example": "RUNNING",
            "type": "string"
          }
        },
        "required": [
          "id",
          "insuranceCompany",
          "status"
        ],
        "title": "CollectionStatus"
      },
      "CollectionStatusInformationMap": {
        "description": "Possible extra information returned for a collection status",
        "discriminator": {
          "propertyName": "api"
        },
        "properties": {
          "ACCESS_TOKEN": {
            "description": "Access token to call get-data. Returned when data collection is initiated by client-id.",
            "type": "string"
          },
          "AUTOSTART_TOKEN": {
            "description": "A precompiled app-link with an embedded autostart token.",
            "example": "bankid:///?autostarttoken=7c40b5c9-fa74-49cf-b98c-bfe651f9a7c6&redirect=bankid://bankid",
            "type": "string"
          },
          "AVAILABLE_TWO_FACTOR_METHODS": {
            "description": "Available 2FA methods for this collection.",
            "items": {
              "$ref": "#/components/schemas/TwoFactorOption"
            },
            "type": "array"
          },
          "DANISH_NEM_ID_CARD_CODE_LOOKUP": {
            "description": "Nem ID number lookup for correct code from code card.",
            "example": "12345",
            "type": "string"
          },
          "INSTRUCTIONS": {
            "$ref": "#/components/schemas/InstructionsRequestObject",
            "description": "Instructions used for SWEDISH_MOBILE_BANKID_SAME_DEVICE_CLIENT_SIDE_AUTHENTICATION login method."
          },
          "NORWEGIAN_BANKID_WORDS": {
            "description": "Two words for validating that the prompted session in app is the same.",
            "example": "SPINKEL BRIKKE",
            "type": "string"
          },
          "QR_CODE_DATA": {
            "description": "A base64 encoded QR-code.",
            "example": "R0lGODdhtAC0AIAAAAAAAP///ywAAALg==Lg==",
            "type": "string"
          },
          "REFERENCE_NUMBER": {
            "description": "Reference number from login page to verify on other device.",
            "example": "1234",
            "type": "string"
          },
          "SWEDISH_BANKID_QRCODE": {
            "description": "A base64 encoded swedish BankId QR-code.",
            "example": "R0lGODdhtAC0AIAAAAAAAP///ywAAALg==Lg==",
            "type": "string"
          },
          "SWEDISH_MOBILE_BANKID_ANIMATED_QR_DATA": {
            "description": "Used to generate an animated QR-code to authenticate users on other devices. The QR-code needs to be updated every second and is only applicable for companies that have the LoginMethod SWEDISH_MOBILE_BANKID_OTHER_DEVICE.",
            "example": "bankid.67df3917-fa0d-44e5-b327-edcc928297f8.0.dc69358e712458a66a7525beef148ae8526b1c71610eff2c16cdffb4cdac9bf8",
            "type": "string"
          },
          "SWEDISH_MOBILE_BANKID_AUTOSTART_TOKEN": {
            "description": "Used to compile a QR image or an app-link.",
            "example": "7c40b5c9-fa74-49cf-b98c-bfe651f9a7c6",
            "type": "string"
          },
          "TWO_FACTOR_AUTHENTICATION_INSTRUCTION": {
            "$ref": "#/components/schemas/TwoFactorAuthenticationInstruction"
          },
          "requiredInputTypes": {
            "description": "Supplemental Info Types that needs to be fetched to complete the collection.",
            "example": "EMAIL",
            "items": {
              "description": "Type of input.",
              "enum": [
                "EMAIL",
                "ESTONIAN_PERSONAL_NUMBER",
                "ESTONIAN_PHONE_NUMBER",
                "LASTNAME",
                "LATVIAN_PERSONAL_NUMBER",
                "LITHUANIAN_PERSONAL_NUMBER",
                "LITHUANIAN_PHONE_NUMBER",
                "LOGIN_METHOD",
                "MEMBERSHIP_NUMBER",
                "MOBILE_PHONE_NUMBER",
                "NORWEGIAN_BANKID_OTP",
                "NORWEGIAN_BANKID_PASSWORD",
                "NORWEGIAN_FULL_PERSONAL_NUMBER",
                "NORWEGIAN_PERSONAL_NUMBER",
                "NORWEGIAN_PHONE_NUMBER",
                "PASSWORD",
                "POSTCODE",
                "REGION",
                "SWEDISH_PERSONAL_NUMBER",
                "TRADE_UNION_MEMBERSHIP",
                "TWO_FACTOR_TOKEN",
                "UK_DATE_OF_BIRTH",
                "USERNAME"
              ],
              "example": "EMAIL",
              "type": "string"
            },
            "type": "array"
          }
        },
        "title": "CollectionStatusInformation"
      },
      "CompanyAvailability": {
        "discriminator": {
          "propertyName": "api"
        },
        "properties": {
          "additionalLoginInputs": {
            "description": "Additional input for login step",
            "items": {
              "$ref": "#/components/schemas/AdditionalLoginInput"
            },
            "type": "array",
            "uniqueItems": true
          },
          "availableCoverageScopes": {
            "description": "Set of available coverage types and subtypes for this company",
            "example": [
              {
                "insuranceSubType": "CAR_INSURANCE",
                "insuranceType": "VEHICLE_INSURANCE"
              }
            ],
            "items": {
              "$ref": "#/components/schemas/InsuranceTypeAndSubtype"
            },
            "type": "array",
            "uniqueItems": true
          },
          "companyAndLineOfBusinesses": {
            "description": "Available company and line of business for insurance pdf upload",
            "example": "UK_AXA_HOME",
            "items": {
              "enum": [
                "EE_SWEDBANK",
                "FR_ABEILLE_HOME",
                "FR_ABEILLE_VEHICLE",
                "FR_ALLIANZ_HOME",
                "FR_ALLIANZ_VEHICLE",
                "FR_ANIMAUXSANTE_HOME",
                "FR_ASSUR_OPOIL_ANIMAL",
                "FR_AXA_HOME",
                "FR_AXA_VEHICLE",
                "FR_AXA_GENERAL",
                "FR_BANQUE_POPULAIRE_HOME",
                "FR_BANQUE_POPULAIRE_VEHICLE",
                "FR_BULLE_BLEUE_HOME",
                "FR_CAISSE_DEPARGNE_HOME",
                "FR_CAISSE_DEPARGNE_VEHICLE",
                "FR_CARDIF_HOME",
                "FR_CREDIT_AGRICOLE_HOME",
                "FR_CREDIT_AGRICOLE_VEHICLE",
                "FR_CREDIT_MUTUEL_HOME",
                "FR_CREDIT_MUTUEL_VEHICLE",
                "FR_DEMO_HOME",
                "FR_DEMO_VEHICLE",
                "FR_DIRECT_ASSURANCE_HOME",
                "FR_DIRECT_ASSURANCE_VEHICLE",
                "FR_ECA_HOME",
                "FR_ECA_VEHICLE",
                "FR_ECA_ANIMAL",
                "FR_GENERALI_HOME",
                "FR_GENERALI_VEHICLE",
                "FR_GMF_HOME",
                "FR_GMF_VEHICLE",
                "FR_GROUPAMA_HOME",
                "FR_GROUPAMA_VEHICLE",
                "FR_LUKO_HOME",
                "FR_LOLIVIER_HOME",
                "FR_LOLIVIER_VEHICLE",
                "FR_LA_BANQUE_POSTALE_HOME",
                "FR_LA_BANQUE_POSTALE_VEHICLE",
                "FR_MAAF_HOME",
                "FR_MAAF_VEHICLE",
                "FR_MACIF_HOME",
                "FR_MACIF_VEHICLE",
                "FR_MAIF_HOME",
                "FR_MAIF_VEHICLE",
                "FR_MATMUT_HOME",
                "FR_MATMUT_VEHICLE",
                "FR_SOCIETE_GENERAL_INSURANCE_HOME",
                "FR_SOCIETE_GENERAL_INSURANCE_VEHICLE",
                "FR_MMA_HOME",
                "FR_MMA_VEHICLE",
                "FR_SANTEVET_HOME",
                "LT_BALCIA_HOME",
                "LT_COMPENSA_HOME",
                "LT_ERGO_HOME",
                "LT_GJENSIDIGE_HOME",
                "LT_IF_HOME",
                "LT_LIETUVOS_DRAUDIMAS_HOME",
                "LT_SWEDBANK_HOME",
                "LV_BALCIA_HOME",
                "LV_BALTA_HOME",
                "LV_COMPENSA_HOME",
                "LV_ERGO_HOME",
                "LV_GJENSIDIGE_HOME",
                "LV_IF_HOME",
                "LV_SWEDBANK_HOME",
                "SE_IF_VEHICLE",
                "SE_FOLKSAM_VEHICLE",
                "SE_LANSFORSAKRINGAR_HOME",
                "SE_PAYDRIVE_VEHICLE",
                "SE_SVEDEA_VEHICLE",
                "SE_VOLVIA_VEHICLE",
                "SE_BLIWA_ACCIDENT",
                "UK_AXA_HOME",
                "UK_AXA_VEHICLE",
                "UK_HASTINGS_DIRECT_HOME",
                "UK_HASTINGS_DIRECT_VEHICLE",
                "UK_POLICYEXPERT_HOME",
                "UK_POLICYEXPERT_VEHICLE",
                "UK_POST_OFFICE_HOME",
                "UK_THE_AA_HOME",
                "UK_THE_AA_VEHICLE",
                "UK_URBAN_JUNGLE_HOME",
                "FR_AXA_PERSON",
                "FR_ACHEEL_HOME",
                "FR_ACHEEL_VEHICLE",
                "FR_MALAKOFF_HUMANIS_HEALTH",
                "FR_HARMONIE_MUTUELLE_HEALTH",
                "FR_ALAN_HEALTH",
                "FR_AESIO_MUTUELLE_HEALTH",
                "FR_AG2R_LA_MONDIALE_HEALTH"
              ],
              "type": "string"
            },
            "type": "array",
            "uniqueItems": true
          },
          "companyLinks": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Company-specific links such as contact forms or other external resources",
            "example": "{'contactFormLink': 'https://example.com/contact-form'",
            "type": "object"
          },
          "consentRequirements": {
            "description": "The set of consents required for initiating collections from this company.",
            "items": {
              "$ref": "#/components/schemas/ConsentRequirement"
            },
            "type": "array",
            "uniqueItems": true
          },
          "functional": {
            "description": "Whether or not it is possible to collect data from the company currently",
            "example": false,
            "type": "boolean"
          },
          "insuranceCompany": {
            "description": "Insurance company name",
            "example": "uk-aviva",
            "minLength": 1,
            "type": "string"
          },
          "insuranceCompanyDisplayName": {
            "description": "Insurance company display name, for displaying to users.",
            "example": "Aviva",
            "minLength": 1,
            "type": "string"
          },
          "loginConfig": {
            "$ref": "#/components/schemas/CompanyLoginConfig",
            "description": "Configuration options for different login methods"
          },
          "loginMethods": {
            "description": "Available login methods for insurance company",
            "example": "USERNAME_AND_PASSWORD",
            "items": {
              "enum": [
                "DANISH_NEMID",
                "DANISH_MITID",
                "DANISH_MITID_SAME_DEVICE",
                "ESTONIAN_MOBILE_ID",
                "ESTONIAN_SMART_ID",
                "ESTONIAN_MOBILE_ID_USERNAME",
                "ESTONIAN_SMART_ID_USERNAME",
                "LATVIAN_MOBILE_EPARAKSTS",
                "LATVIAN_SMART_ID",
                "LATVIAN_MOBILE_EPARAKSTS_USERNAME",
                "LATVIAN_SMART_ID_USERNAME",
                "LITHUANIAN_SMART_ID",
                "LITHUANIAN_MOBILE_ID",
                "LITHUANIAN_SMART_ID_USERNAME",
                "LITHUANIAN_MOBILE_ID_USERNAME",
                "SMART_ID_SAME_DEVICE",
                "SMART_ID_OTHER_DEVICE",
                "SMART_ID_USERNAME_SAME_DEVICE",
                "SMART_ID_USERNAME_OTHER_DEVICE",
                "NORWEGIAN_BANKID_ON_MOBILE",
                "NORWEGIAN_BANKID_ON_MOBILE_FULL_PERSONAL_NUMBER",
                "SWEDISH_MOBILE_BANKID_OTHER_DEVICE",
                "SWEDISH_MOBILE_BANKID_OTHER_DEVICE_MOCK",
                "SWEDISH_MOBILE_BANKID_SAME_DEVICE",
                "SWEDISH_MOBILE_BANKID_SAME_DEVICE_CLIENT_SIDE_AUTHENTICATION",
                "SWEDISH_MOBILE_BANKID_SAME_DEVICE_CLIENT_SIDE_AUTHENTICATION_MOCK",
                "SWEDISH_MOBILE_BANKID_OTHER_DEVICE_TEST",
                "SWEDISH_MOBILE_BANKID_SAME_DEVICE_TEST",
                "SWEDISH_SECURITY_TOKEN",
                "UK_DOB_USERNAME_PASSWORD",
                "UK_LASTNAME_MEMBERSHIP_NUMBER",
                "UK_USERNAME_POSTCODE",
                "USERNAME_AND_PASSWORD",
                "EMAIL",
                "PDF_UPLOAD",
                "GERMAN_EID",
                "AUTHENTICATION_APP_URL",
                "MANUAL_SELECT",
                "API_KEY"
              ],
              "type": "string"
            },
            "type": "array",
            "uniqueItems": true
          },
          "nonFunctionalLoginMethods": {
            "description": "Disabled login methods for insurance company",
            "example": "USERNAME_AND_PASSWORD",
            "items": {
              "enum": [
                "DANISH_NEMID",
                "DANISH_MITID",
                "DANISH_MITID_SAME_DEVICE",
                "ESTONIAN_MOBILE_ID",
                "ESTONIAN_SMART_ID",
                "ESTONIAN_MOBILE_ID_USERNAME",
                "ESTONIAN_SMART_ID_USERNAME",
                "LATVIAN_MOBILE_EPARAKSTS",
                "LATVIAN_SMART_ID",
                "LATVIAN_MOBILE_EPARAKSTS_USERNAME",
                "LATVIAN_SMART_ID_USERNAME",
                "LITHUANIAN_SMART_ID",
                "LITHUANIAN_MOBILE_ID",
                "LITHUANIAN_SMART_ID_USERNAME",
                "LITHUANIAN_MOBILE_ID_USERNAME",
                "SMART_ID_SAME_DEVICE",
                "SMART_ID_OTHER_DEVICE",
                "SMART_ID_USERNAME_SAME_DEVICE",
                "SMART_ID_USERNAME_OTHER_DEVICE",
                "NORWEGIAN_BANKID_ON_MOBILE",
                "NORWEGIAN_BANKID_ON_MOBILE_FULL_PERSONAL_NUMBER",
                "SWEDISH_MOBILE_BANKID_OTHER_DEVICE",
                "SWEDISH_MOBILE_BANKID_OTHER_DEVICE_MOCK",
                "SWEDISH_MOBILE_BANKID_SAME_DEVICE",
                "SWEDISH_MOBILE_BANKID_SAME_DEVICE_CLIENT_SIDE_AUTHENTICATION",
                "SWEDISH_MOBILE_BANKID_SAME_DEVICE_CLIENT_SIDE_AUTHENTICATION_MOCK",
                "SWEDISH_MOBILE_BANKID_OTHER_DEVICE_TEST",
                "SWEDISH_MOBILE_BANKID_SAME_DEVICE_TEST",
                "SWEDISH_SECURITY_TOKEN",
                "UK_DOB_USERNAME_PASSWORD",
                "UK_LASTNAME_MEMBERSHIP_NUMBER",
                "UK_USERNAME_POSTCODE",
                "USERNAME_AND_PASSWORD",
                "EMAIL",
                "PDF_UPLOAD",
                "GERMAN_EID",
                "AUTHENTICATION_APP_URL",
                "MANUAL_SELECT",
                "API_KEY"
              ],
              "type": "string"
            },
            "type": "array",
            "uniqueItems": true
          },
          "notifications": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Company-specific notifications configuration",
            "example": "{'LOADING_SCREEN': 'SIGNIN_WARNING'}",
            "type": "object"
          },
          "reason": {
            "description": "Reason for data collection being non-functional at present",
            "enum": [
              "THIRD_PARTY_ERROR",
              "THIRD_PARTY_UPDATE",
              "INSURELY_ERROR",
              "INSURELY_UPDATE",
              "RECONSTRUCTION"
            ],
            "example": "THIRD_PARTY_ERROR",
            "type": "string"
          },
          "resetCredentials": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Reset links to reset credentials for insurance company",
            "example": "{'resetUsernameUrl': 'https://insurely.com/forgot-username', 'resetPasswordUrl': 'https://insurely.com/forgot-password'}",
            "type": "object"
          },
          "status": {
            "description": "Status indicating the quality of the data collection for this company. A company has status BETA until we can\nguarantee the data quality and stability of it, after which its status is set to OK. Once taken out of BETA\nit cannot be set to BETA again.\n",
            "enum": [
              "OK",
              "BETA",
              "NOT_IMPLEMENTED"
            ],
            "example": "OK",
            "type": "string"
          },
          "supportsPreheating": {
            "description": "Whether the company supports starting a collection without user input.\nRequires input to be passed in at a later stage through the supplemental-info endpoint.\n",
            "type": "boolean"
          }
        },
        "required": [
          "additionalLoginInputs",
          "availableCoverageScopes",
          "companyAndLineOfBusinesses",
          "consentRequirements",
          "functional",
          "insuranceCompany",
          "insuranceCompanyDisplayName",
          "loginMethods",
          "nonFunctionalLoginMethods",
          "status",
          "supportsPreheating"
        ]
      },
      "CompanyLoginConfig": {
        "properties": {
          "passwordFieldPlaceholder": {
            "enum": [
              "PASSWORD",
              "CONFIDENTIAL_CODE",
              "PERSONAL_CODE",
              "SECRET_CODE",
              "MEMBERSHIP_NUMBER",
              "PIN_OR_PASSWORD"
            ],
            "type": "string"
          },
          "passwordLabel": {
            "enum": [
              "PASSWORD",
              "CONFIDENTIAL_CODE",
              "PERSONAL_CODE",
              "SECRET_CODE",
              "MEMBERSHIP_NUMBER",
              "PIN_OR_PASSWORD"
            ],
            "type": "string"
          },
          "usernameFieldPlaceholder": {
            "enum": [
              "EMAIL",
              "IDENTIFICATION_NUMBER_11",
              "IDENTIFICATION_CHARACTERS_8",
              "EMAIL_MOBILE_MUTUAL_MEMBER",
              "EMAIL_MOBILE_CLIENT",
              "EMAIL_MUTUAL_OR_REGULAR_MEMBER",
              "EMAIL_MOBILE_CONTRACT",
              "EMAIL_OR_MEMBER",
              "CLIENT_NUMBER",
              "LAST_NAME"
            ],
            "type": "string"
          },
          "usernameLabel": {
            "enum": [
              "EMAIL",
              "USERNAME",
              "CLIENT_NUMBER",
              "LAST_NAME"
            ],
            "type": "string"
          }
        }
      },
      "ConsentRequestInput": {
        "description": "Represents a specific consent provided by the end user.",
        "properties": {
          "type": {
            "description": "The type of consent.",
            "enum": [
              "TRADE_UNION_MEMBERSHIP"
            ],
            "example": "TRADE_UNION_MEMBERSHIP",
            "type": "string"
          }
        },
        "required": [
          "type"
        ]
      },
      "ConsentRequirement": {
        "description": "The requirement for collect a specific consent.",
        "properties": {
          "method": {
            "description": "What method to use to collect the consent.",
            "enum": [
              "NONE",
              "NOTICE",
              "ACTIVE"
            ],
            "example": "ACTIVE",
            "type": "string"
          },
          "type": {
            "description": "The consent type.",
            "enum": [
              "TRADE_UNION_MEMBERSHIP"
            ],
            "example": "TRADE_UNION_MEMBERSHIP",
            "type": "string"
          }
        },
        "required": [
          "method",
          "type"
        ]
      },
      "ContactFormInput": {
        "description": "Input values for requested contact form input types.",
        "discriminator": {
          "propertyName": "api"
        },
        "properties": {
          "input": {
            "description": "The value returned for the corresponding input type.",
            "example": "test@gmail.com",
            "type": "string"
          },
          "inputType": {
            "description": "Types used in contact form input.",
            "enum": [
              "EMAIL",
              "MOBILE_PHONE_NUMBER"
            ],
            "example": "EMAIL",
            "type": "string"
          }
        },
        "required": [
          "input",
          "inputType"
        ]
      },
      "Cookie": {
        "description": "A description of an HTTP cookie.",
        "properties": {
          "domain": {
            "description": "Domain of the cookie.",
            "example": ".insurely.com",
            "type": "string"
          },
          "httpOnly": {
            "description": "Whether the cookie is set to httpOnly or not.",
            "example": false,
            "type": "boolean"
          },
          "name": {
            "description": "Name of the cookie.",
            "example": "COOKIE_CONSENT",
            "type": "string"
          },
          "path": {
            "description": "Path of the cookie.",
            "example": "/",
            "type": "string"
          },
          "secure": {
            "description": "Whether the cookie is secure or not.",
            "example": true,
            "type": "boolean"
          },
          "value": {
            "description": "Value of the cookie.",
            "example": "1",
            "type": "string"
          }
        }
      },
      "DatePeriod": {
        "allOf": [
          {
            "$ref": "#/components/schemas/PayoutPeriod"
          },
          {
            "properties": {
              "endDate": {
                "description": "The payout end date. Will not be set if the payout is lifelong.",
                "example": "2060-01-31",
                "type": "string"
              },
              "startDate": {
                "description": "The payout start date.",
                "example": "2050-01-01",
                "type": "string"
              },
              "type": {
                "enum": [
                  "DATE_RANGE"
                ],
                "example": "DATE_RANGE",
                "type": "string"
              }
            },
            "type": "object"
          }
        ],
        "description": "A payout period described by an date range.",
        "discriminator": {
          "mapping": {
            "parent": "#/components/schemas/PayoutPeriod"
          },
          "propertyName": "pension"
        },
        "title": "DatePeriod"
      },
      "ErrorResponse": {
        "description": "Standard error response returned by the API when a request fails.",
        "properties": {
          "errors": {
            "description": "Field-level validation errors, empty when not applicable.",
            "items": {
              "$ref": "#/components/schemas/InsurelyInputError"
            },
            "type": "array"
          },
          "localizedMessage": {
            "description": "Localized version of the error message, if available.",
            "example": "Invalid request",
            "type": "string"
          },
          "message": {
            "description": "Human-readable error message.",
            "example": "Invalid request",
            "type": "string"
          },
          "status": {
            "description": "HTTP status name.",
            "example": "BAD_REQUEST",
            "type": "string"
          },
          "statusCode": {
            "description": "HTTP status code.",
            "example": 400,
            "format": "int32",
            "type": "integer"
          }
        }
      },
      "Holding": {
        "description": "A pension fund contained in a pension.",
        "discriminator": {
          "mapping": {
            "parent": "#/components/schemas/PensionData"
          },
          "propertyName": "pension"
        },
        "properties": {
          "currencyCode": {
            "description": "Currency code for the fund",
            "example": "SEK",
            "type": "string"
          },
          "feeFixed": {
            "description": "Yearly fixed fee for having the fund in your holding.",
            "example": 100,
            "format": "double",
            "type": "number"
          },
          "feeVariable": {
            "description": "Yearly variable fee based on the value of the fund.",
            "example": 0.0015,
            "format": "double",
            "type": "number"
          },
          "isin": {
            "description": "ISIN code of the fund.",
            "example": "SE0005188836",
            "type": "string"
          },
          "name": {
            "description": "Name of the fund.",
            "example": "LF Global Indexnära",
            "type": "string"
          },
          "shareCount": {
            "description": "Number of shares in the fund.",
            "example": 123.43,
            "format": "double",
            "type": "number"
          },
          "value": {
            "description": "Value of the holding of the fund.",
            "example": "35000",
            "type": "string"
          },
          "valueInPercent": {
            "description": "Percentage of the entire pensions value.",
            "example": 0.8,
            "format": "double",
            "type": "number"
          }
        }
      },
      "InstructionsRequestObject": {
        "description": "The instructions request object included in the `CollectionStatusInformationMap` for the `SWEDISH_MOBILE_BANKID_SAME_DEVICE_CLIENT_SIDE_AUTHENTICATION` login method.",
        "properties": {
          "request": {
            "$ref": "#/components/schemas/Request"
          }
        },
        "required": [
          "request"
        ]
      },
      "InsuranceTypeAndSubtype": {
        "properties": {
          "insuranceSubType": {
            "description": "The specific insurance subtype",
            "enum": [
              "carInsurance",
              "boatInsurance",
              "trailerInsurance",
              "motorcycleInsurance",
              "mopedInsurance",
              "caravanInsurance",
              "motorhomeInsurance",
              "otherVehicleInsurance",
              "childInsurance",
              "pregnancyInsurance",
              "lifeInsurance",
              "healthInsurance",
              "accidentInsurance",
              "travelInsurance",
              "condoInsurance",
              "contentsInsurance",
              "villaInsurance",
              "cottageInsurance",
              "farmInsurance",
              "catInsurance",
              "dogInsurance",
              "horseInsurance",
              "otherAnimalInsurance",
              "genericInsurance",
              "groupInsurance",
              "incomeInsurance",
              "sicknessInsurance",
              "loanInsurance",
              "landlordInsurance"
            ],
            "example": "CAR_INSURANCE",
            "type": "string"
          },
          "insuranceType": {
            "description": "The main insurance type category",
            "enum": [
              "vehicleInsurance",
              "houseContentInsurance",
              "personInsurance",
              "animalInsurance",
              "groupInsurance",
              "generalInsurance",
              "incomeInsurance"
            ],
            "example": "VEHICLE_INSURANCE",
            "type": "string"
          }
        }
      },
      "InsurelyInputError": {
        "description": "Field-level validation errors, empty when not applicable."
      },
      "MonetaryAmount": {
        "description": "A monetary amount.",
        "properties": {
          "currencyCode": {
            "description": "The ISO-4217 currency code of this monetary amount.",
            "enum": [
              "DKK",
              "EUR",
              "GBP",
              "NOK",
              "SEK"
            ],
            "example": "EUR",
            "type": "string"
          },
          "minorUnitAmount": {
            "description": "The amount in minor units, as defined in ISO-4217. E.g. the minor unit of EUR is 1 cent.",
            "example": 24999,
            "format": "int64",
            "type": "integer"
          }
        },
        "title": "Monetary Amount"
      },
      "MovabilityResult": {
        "discriminator": {
          "mapping": {
            "parent": "#/components/schemas/PensionData"
          },
          "propertyName": "pension"
        },
        "properties": {
          "evaluatedRules": {
            "description": "The results of each evaluated rule.",
            "items": {
              "$ref": "#/components/schemas/MovabilityRuleResult"
            },
            "type": "array"
          },
          "managementInstitutions": {
            "description": "The institutions managing the pension.",
            "items": {
              "$ref": "#/components/schemas/PensionManagementInstitution"
            },
            "type": "array"
          },
          "result": {
            "description": "Describes whether the pension is movable or not.",
            "enum": [
              "NOT_MOVABLE",
              "MOVABLE",
              "UNKNOWN"
            ],
            "example": "MOVABLE",
            "type": "string"
          }
        }
      },
      "MovabilityRuleResult": {
        "discriminator": {
          "mapping": {
            "parent": "#/components/schemas/MovabilityResult"
          },
          "propertyName": "pension"
        },
        "properties": {
          "result": {
            "description": "The rule result.",
            "enum": [
              "NOT_MOVABLE",
              "MOVABLE",
              "UNKNOWN"
            ],
            "example": "MOVABLE",
            "type": "string"
          },
          "rule": {
            "description": "The evaluated rule.",
            "enum": [
              "ACTIVE_PAYMENT",
              "ACTIVE_PAYOUT",
              "COMPATIBLE_PENSION_TYPE",
              "DEFAULT_RULE_NAME",
              "OLD_PENSION",
              "OLD_TRAD_PENSION",
              "TRAD_PENSION"
            ],
            "example": "COMPATIBLE_PENSION_TYPE",
            "type": "string"
          }
        }
      },
      "OrganizationAlternative": {
        "description": "Alternative for insurance holder company",
        "discriminator": {
          "mapping": {
            "parent": "#/components/schemas/PensionData"
          },
          "propertyName": "pension"
        },
        "properties": {
          "orgCity": {
            "description": "Company seat.",
            "example": "Stockholm",
            "type": "string"
          },
          "orgName": {
            "description": "Organisation name.",
            "example": "Company Inc",
            "type": "string"
          },
          "orgNumber": {
            "description": "Organisational number.",
            "example": "5111111111",
            "type": "string"
          },
          "orgTurnover": {
            "$ref": "#/components/schemas/MonetaryAmount",
            "description": "The turnover in minor unit for the company that owns the pension. If it's not an occupational pension, this is undefined. This field is a premium feature and will not be returned by default. To turn this feature on, please contact your Account Manager."
          },
          "organizationalInformation": {
            "$ref": "#/components/schemas/OrganizationalInformation",
            "description": "Information about this particular alternative. In the next API version this field is expected to replace the whole OrganizationAlternative object. This is an intermediary step in order to not alter existing fields in the current API version."
          }
        }
      },
      "OrganizationalFinancialInformation": {
        "discriminator": {
          "mapping": {
            "parent": "#/components/schemas/OrganizationalInformation"
          },
          "propertyName": "pension"
        },
        "properties": {
          "employeeCount": {
            "description": "The number of employees at end of period.",
            "format": "int32",
            "type": "integer"
          },
          "netIncome": {
            "$ref": "#/components/schemas/MonetaryAmount",
            "description": "The net income during the time period."
          },
          "shareCapital": {
            "$ref": "#/components/schemas/MonetaryAmount",
            "description": "The total share capital at end of period."
          },
          "timePeriod": {
            "$ref": "#/components/schemas/TimePeriod",
            "description": "The time period the information was fetched for"
          },
          "turnover": {
            "$ref": "#/components/schemas/MonetaryAmount",
            "description": "The turnover during the period."
          }
        }
      },
      "OrganizationalInformation": {
        "description": "Information about an organization. In the next API version this field is expected to replace the whole `OrganizationAlternative` object as well as the `insuranceHolderOrgNumber` and `insuranceHolderOrgTurnover` fields. For this version, information will be found in multiple places for backward compatibility.",
        "discriminator": {
          "mapping": {
            "child-1": "#/components/schemas/OrganizationalFinancialInformation",
            "parent": "#/components/schemas/PensionData"
          },
          "propertyName": "pension"
        },
        "properties": {
          "city": {
            "description": "Company seat.",
            "example": "Stockholm",
            "type": "string"
          },
          "financialInformation": {
            "$ref": "#/components/schemas/OrganizationalFinancialInformation",
            "description": "Financial information about the organisation. This field is a premium feature and will not be returned by default. To turn this feature on, please contact your Account Manager."
          },
          "name": {
            "description": "Organisation name.",
            "example": "Company Inc",
            "type": "string"
          },
          "organizationalNumber": {
            "description": "Organisational number.",
            "example": "5111111111",
            "type": "string"
          }
        }
      },
      "PayoutDetails": {
        "description": "Provides details about a monthly payout from a pension.",
        "discriminator": {
          "mapping": {
            "parent": "#/components/schemas/PensionData"
          },
          "propertyName": "pension"
        },
        "properties": {
          "active": {
            "description": "Indicates if the payout is active.",
            "example": false,
            "type": "boolean"
          },
          "amount": {
            "$ref": "#/components/schemas/MonetaryAmount"
          },
          "lifelongPayout": {
            "description": "Indicates if the payout has a defined end.",
            "example": false,
            "type": "boolean"
          },
          "period": {
            "$ref": "#/components/schemas/PayoutPeriod",
            "description": "The payout period, can be a range of ages or dates."
          }
        }
      },
      "PayoutPeriod": {
        "discriminator": {
          "mapping": {
            "AGE_RANGE": "#/components/schemas/AgePeriod",
            "DATE_RANGE": "#/components/schemas/DatePeriod",
            "parent": "#/components/schemas/PayoutDetails"
          },
          "propertyName": "pension"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/AgePeriod"
          },
          {
            "$ref": "#/components/schemas/DatePeriod"
          }
        ],
        "properties": {
          "type": {
            "description": "Type of the period.",
            "enum": [
              "AGE_RANGE",
              "DATE_RANGE"
            ],
            "example": "AGE_RANGE",
            "type": "string"
          }
        },
        "title": "PayoutPeriod"
      },
      "PensionData": {
        "description": "Overall information about an individuals pension.",
        "discriminator": {
          "mapping": {
            "child-1": "#/components/schemas/Holding",
            "child-2": "#/components/schemas/MovabilityResult"
          },
          "propertyName": "pension"
        },
        "properties": {
          "activePayment": {
            "description": "Whether or not the pension is actively being paid into.",
            "example": true,
            "type": "boolean"
          },
          "activePayout": {
            "description": "Whether or not the pension is actively being paid out from.",
            "example": false,
            "type": "boolean"
          },
          "currentValue": {
            "description": "Current value of the pension. Current value is total paid + change in value. Change in value is affected by performance of underlying assets and withdrawals.",
            "example": 100000,
            "format": "double",
            "type": "number"
          },
          "externalId": {
            "description": "Unique identifier for the pension.",
            "example": "6a7c135e-3a56-44ae-bc53-1d0d5321f552",
            "type": "string"
          },
          "feeFixed": {
            "description": "Yearly fixed fee for having the pension.",
            "example": 100,
            "format": "double",
            "type": "number"
          },
          "feeVariable": {
            "description": "Yearly variable fee based on the value of the pension.",
            "example": 0.0015,
            "format": "double",
            "type": "number"
          },
          "feesCollected": {
            "description": "Have the fees been collected on an individual basis or mapped generelly based on name",
            "example": true,
            "type": "boolean"
          },
          "feesPreviousYear": {
            "description": "Total fees paid for pension from one year ago to today",
            "example": 3147.33,
            "format": "double",
            "type": "number"
          },
          "hasSurvivorsProtection": {
            "description": "If the pension has survivors protection.",
            "example": true,
            "type": "boolean"
          },
          "holding": {
            "description": "List of funds contained within the pension.",
            "items": {
              "$ref": "#/components/schemas/Holding"
            },
            "type": "array"
          },
          "insuranceBeneficiaryName": {
            "description": "Name of the person that is the beneficiary of the pension.",
            "example": "Namn Namnsson",
            "type": "string"
          },
          "insuranceCompany": {
            "description": "Insurance company that the pension is from.",
            "example": "se-lansforsakringar",
            "type": "string"
          },
          "insuranceCompanyDisplayName": {
            "description": "Insurance company display name, for displaying to users.",
            "example": "Aviva",
            "type": "string"
          },
          "insuranceHolderName": {
            "description": "Name of the person or company that owns the pension.",
            "example": "Bolagsnamn AB",
            "type": "string"
          },
          "insuranceHolderOrgNumber": {
            "description": "The organizational number for the company that owns the pension. If it's not an occupational pension, this is null. This field will be omitted in the future in favor for the `insuranceHolderOrganization` field.",
            "example": "555555-1111",
            "type": "string"
          },
          "insuranceHolderOrgTurnover": {
            "$ref": "#/components/schemas/MonetaryAmount",
            "description": "The turnover in minor unit for the company that owns the pension. If it's not an occupational pension, this is undefined. This field is a premium feature and will not be returned by default. To turn this feature on, please contact your Account Manager. This field will be omitted in the future in favor for the `insuranceHolderOrganization` field."
          },
          "insuranceHolderOrganization": {
            "$ref": "#/components/schemas/OrganizationalInformation",
            "description": "The turnover in minor unit for the company that owns the pension. If it's not an occupational pension, this is undefined. This field is a premium feature and will not be returned by default. To turn this feature on, please contact your Account Manager."
          },
          "insuranceName": {
            "description": "The name of the pension insurance.",
            "example": "Avtalspension FTP",
            "type": "string"
          },
          "insuranceNumber": {
            "description": "Insurance number connected to the pension.",
            "example": "123456",
            "type": "string"
          },
          "insuredPersonName": {
            "description": "Name of the insured person.",
            "example": "Namn Namnsson",
            "type": "string"
          },
          "movability": {
            "$ref": "#/components/schemas/MovabilityResult",
            "description": "Describes whether the pension is movable or not, including the results of evaluated movability rules.If the pension is movable and has a known pension classification, information about the relevant pension management institution is included."
          },
          "organizationAlternatives": {
            "description": "List of insurance holder company suggestions.",
            "items": {
              "$ref": "#/components/schemas/OrganizationAlternative"
            },
            "type": "array"
          },
          "otherInsuredPerson": {
            "description": "If the person insured by the pension is someone else than the person who initiated the collection.",
            "example": false,
            "type": "boolean"
          },
          "payoutDetails": {
            "description": "Provides details about the payout from the pension. Can contain multiple payout details depending on the payout schedule, for example, 2000 SEK monthly between age 65 and 70 and a lifelong monthly payout of 1000 SEK starting at age 70.",
            "items": {
              "$ref": "#/components/schemas/PayoutDetails"
            },
            "type": "array"
          },
          "pensionClassification": {
            "description": "Collective pension classification. Values added continuously",
            "enum": [
              "ITP",
              "FTP",
              "KAP-KL",
              "SAF-LO",
              "PA16",
              "PA-KFS",
              "GTP",
              "BTP",
              "PPA07",
              "PPA13",
              "UNKNOWN_PENSION_CLASSIFICATION"
            ],
            "example": "SAF-LO",
            "type": "string"
          },
          "pensionType": {
            "description": "Which type of pension the data is for.",
            "enum": [
              "IPS_PENSION",
              "PRIVATE_PENSION",
              "OCCUPATIONAL_PENSION",
              "COLLECTIVE_OCCUPATIONAL_PENSION",
              "CAPITAL_INSURANCE",
              "UNKNOWN_PENSION_TYPE"
            ],
            "example": "COLLECTIVE_OCCUPATIONAL_PENSION",
            "type": "string"
          },
          "personalInformation": {
            "additionalProperties": {},
            "description": "A map of personal information for the person who collected data. E.g. personal number.",
            "type": "object"
          },
          "startDate": {
            "description": "Start date of the pension.",
            "example": "2020-01-01",
            "type": "string"
          },
          "totalPaid": {
            "description": "Amount paid in to the pension.",
            "example": 30000,
            "format": "double",
            "type": "number"
          },
          "traditionallyManaged": {
            "description": "Whether the pension is traditionally managed or not.",
            "example": false,
            "type": "boolean"
          }
        },
        "required": [
          "externalId",
          "insuranceCompany",
          "insuranceCompanyDisplayName"
        ],
        "title": "Pension data"
      },
      "PensionManagementInstitution": {
        "discriminator": {
          "mapping": {
            "parent": "#/components/schemas/MovabilityResult"
          },
          "propertyName": "pension"
        },
        "properties": {
          "name": {
            "description": "The name of the institution.",
            "enum": [
              "Avtalat",
              "Fora",
              "Valcentralen",
              "Pensionsvalet",
              "SPV"
            ],
            "example": "Avtalat",
            "type": "string"
          },
          "url": {
            "description": "The login url for moving the pension.",
            "example": "https://www.avtalat.se/logga-in/",
            "type": "string"
          }
        }
      },
      "Request": {
        "properties": {
          "body": {
            "description": "If the method is POST, body to be included in the POST request.",
            "example": {
              "username": "19900101-1234"
            }
          },
          "cookies": {
            "description": "List of cookies to include in the request. They should be added to a cookie jar and included in each subsequent request.",
            "items": {
              "$ref": "#/components/schemas/Cookie"
            },
            "type": "array"
          },
          "etag": {
            "description": "Entity tag of the request, each unique request will have its own unique etag. This allows for distinguishing between new requests to be made,\nsince the same request may be \"returned with multiple `CollectionStatus` responses.",
            "example": "d5c19d129d9f4a54b7de2fa198bf73fa-initiate",
            "type": "string"
          },
          "headers": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Map of headers to include with the request.",
            "example": {
              "Content-Type": "application/json"
            },
            "type": "object"
          },
          "method": {
            "description": "HTTP method of the request.",
            "example": "POST",
            "type": "string"
          },
          "url": {
            "description": "URL to make a request towards. This will be based on the company that the collection is started towards.",
            "example": "https://insurely.com/initiate-bankid",
            "type": "string"
          }
        },
        "required": [
          "url"
        ]
      },
      "ResponseObject": {
        "description": "An HTTP response to be provided after receiving HTTP `INSTRUCTIONS` in the `CollectionStatus` `extraInformation` object. This is expected when using the `SWEDISH_MOBILE_BANKID_SAME_DEVICE_CLIENT_SIDE_AUTHENTICATION` `loginMethod`. An in-depth description of this flow can be found in the introduction.",
        "properties": {
          "headers": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The keys and values of the response headers",
            "example": {
              "Cache-Control": "no-cache, no-store, max-age=0",
              "Content-Encoding": "gzip",
              "Content-Language": "sv_SE",
              "Content-Type": "application/json; charset=UTF-8",
              "Date": "Sun, 20 Jul 1969 20:17:10 GMT",
              "Expires": "Thu, 01 Jan 1970 00:00:00 GMT",
              "Pragma": "no-cache",
              "Server": "-",
              "Strict-Transport-Security": "max-age=31536000; includeSubDomains",
              "Transfer-Encoding": "Identity",
              "Vary": "Accept-Encoding"
            },
            "type": "object"
          },
          "response": {
            "description": "The response body, in the format it was responded, e.g. html or json.",
            "example": {
              "andromedaUserToken": "some_random_token",
              "extendedUsage": false,
              "formattedServerTime": "1969-07-20 22:27",
              "links": {
                "next": {
                  "method": "GET",
                  "uri": "/v5/profile/"
                }
              },
              "maskedUserId": "19300805****",
              "serverTime": "19690720 22:17",
              "status": "COMPLETE"
            }
          },
          "type": {
            "enum": [
              "RESPONSE_OBJECT"
            ],
            "example": "RESPONSE_OBJECT",
            "type": "string"
          }
        },
        "title": "ResponseObject"
      },
      "SelectOne": {
        "properties": {
          "key": {
            "type": "string"
          },
          "options": {
            "items": {
              "$ref": "#/components/schemas/AdditionalLoginInputSelectOption"
            },
            "type": "array",
            "uniqueItems": true
          },
          "type": {
            "type": "string"
          }
        },
        "required": [
          "key",
          "options"
        ]
      },
      "SupplementInformation": {
        "discriminator": {
          "mapping": {
            "RESPONSE_OBJECT": "#/components/schemas/ResponseObject",
            "TWO_FACTOR_CHOICE": "#/components/schemas/TwoFactorChoice",
            "TWO_FACTOR_CODE": "#/components/schemas/TwoFactorCode"
          },
          "propertyName": "api"
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/TwoFactorCode"
          },
          {
            "$ref": "#/components/schemas/TwoFactorChoice"
          },
          {
            "$ref": "#/components/schemas/ResponseObject"
          }
        ],
        "properties": {
          "type": {
            "description": "Type of the supplemental information.",
            "enum": [
              "TWO_FACTOR_CODE",
              "TWO_FACTOR_CHOICE",
              "RESPONSE_OBJECT",
              "COLLECTION_INPUT"
            ],
            "type": "string"
          }
        },
        "title": "SupplementInformation"
      },
      "SupplementInformationRequest": {
        "description": "Supplemental information to be added to a running collection.",
        "discriminator": {
          "propertyName": "api"
        },
        "properties": {
          "collectionId": {
            "description": "The collection ID to append supplemental information to",
            "example": "22e633bc-427d-4f4a-87cf-cfaca04ef351",
            "minLength": 1,
            "type": "string"
          },
          "supplementalInformation": {
            "$ref": "#/components/schemas/SupplementInformation",
            "description": "The supplemental information to provide."
          }
        },
        "required": [
          "collectionId"
        ],
        "title": "SupplementInformationRequest"
      },
      "TimePeriod": {
        "description": "A representation of a time period",
        "discriminator": {
          "propertyName": "api"
        },
        "properties": {
          "endDate": {
            "description": "End of time period",
            "example": "2020-12-31",
            "type": "string"
          },
          "startDate": {
            "description": "Start of the time period",
            "example": "2020-01-01",
            "type": "string"
          }
        }
      },
      "TwoFactorAuthenticationInstruction": {
        "description": "Instructions for two factor authentication. Add supplemental information to a collection if the `responseType` is not `NO_RESPONSE`.",
        "properties": {
          "authenticationInstruction": {
            "description": "Instructions text",
            "example": "Please authenticate with the following device: <name>'s IPHONE 13",
            "type": "string"
          },
          "responseType": {
            "description": "Expected response type",
            "enum": [
              "NUMBER_CODE",
              "NO_RESPONSE",
              "PHONE_NUMBER",
              "QR_CODE"
            ],
            "example": "NUMBER_CODE",
            "type": "string"
          }
        },
        "required": [
          "authenticationInstruction",
          "responseType"
        ]
      },
      "TwoFactorChoice": {
        "description": "A two factor code to be supplied to a collection. The collection will have status `TWO FACTOR PENDING` when a two factor code is expected from the user.",
        "properties": {
          "type": {
            "enum": [
              "TWO_FACTOR_CHOICE"
            ],
            "example": "TWO_FACTOR_CHOICE",
            "type": "string"
          },
          "value": {
            "description": "UUID of Selected Two factor method",
            "example": "2331690c-06ea-499b-a5b5-c719e253ce93",
            "type": "string"
          }
        },
        "title": "TwoFactorChoice"
      },
      "TwoFactorCode": {
        "description": "A two factor code to be supplied to a collection. The collection will have status `TWO FACTOR PENDING` when a two factor code is expected from the user.",
        "properties": {
          "type": {
            "enum": [
              "TWO_FACTOR_CODE"
            ],
            "example": "TWO_FACTOR_CODE",
            "type": "string"
          },
          "value": {
            "description": "Two factor code",
            "example": "A12345",
            "type": "string"
          }
        },
        "title": "TwoFactorCode"
      },
      "TwoFactorOption": {
        "description": "Available 2FA methods for this collection.",
        "properties": {
          "displayText": {
            "description": "text to display",
            "example": "Please supply the code sent to your iPhone 070******6",
            "type": "string"
          },
          "type": {
            "description": "2FA type",
            "enum": [
              "SMS",
              "APP",
              "APP_CODE",
              "EMAIL"
            ],
            "example": "APP",
            "type": "string"
          },
          "uuid": {
            "description": "uuid for this option",
            "example": "7fbc80f0-870b-4d94-8a31-baf683780b79",
            "type": "string"
          }
        }
      }
    },
    "securitySchemes": {
      "authorization-token": {
        "description": "Your API key. Requests are only accepted from IP addresses on the client's allowlist, and with a registered client certificate when mTLS is enforced for the client.",
        "in": "header",
        "name": "authorization-token",
        "type": "apiKey"
      },
      "client-id": {
        "description": "Your client ID, as used by the Prebuilt UI. Server-to-server integrations authenticate with authorization-token instead.",
        "in": "header",
        "name": "client-id",
        "type": "apiKey"
      },
      "jwt-token": {
        "bearerFormat": "JWT",
        "description": "A user session token, sent as `Authorization: Bearer <token>`.",
        "scheme": "bearer",
        "type": "http"
      }
    }
  },
  "info": {
    "contact": {
      "email": "tech@insurely.com",
      "name": "Insurely",
      "url": "https://insurely.com"
    },
    "description": "",
    "termsOfService": "https://www.insurely.com/sv/privacy-policy",
    "title": "Insurely API",
    "version": "2022-09-26"
  },
  "openapi": "3.1.0",
  "paths": {
    "/insurance-company/status": {
      "get": {
        "description": "Obtain a full list of insurance companies available for your client, together with their current status, availability (functional or not) and available login methods.",
        "operationId": "getCompaniesStatus",
        "parameters": [
          {
            "description": "The API version to use, as YYYY-MM-DD. Must match the version of the endpoint you are targeting. A request without it, or with a version older than the client's minimum API version, is served by the client's minimum API version.",
            "example": "2022-09-26",
            "in": "header",
            "name": "Insurely-Version",
            "required": true,
            "schema": {
              "enum": [
                "2022-09-26"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/CompanyAvailability"
                  },
                  "type": "array"
                }
              }
            },
            "description": "Successful request."
          }
        },
        "security": [
          {
            "authorization-token": []
          },
          {
            "client-id": []
          }
        ],
        "summary": "Get status and availability",
        "tags": [
          "Insurance Company"
        ]
      }
    },
    "/pension-collection/add-contact-form-input/{collectionId}": {
      "post": {
        "description": "Add required contact form input fields to a collection. The required input fields are sent as extraInformation in the status response message. The collection will have the status `CONTACT FORM PENDING` in this case.",
        "operationId": "addContactFormInput",
        "parameters": [
          {
            "in": "path",
            "name": "collectionId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The API version to use, as YYYY-MM-DD. Must match the version of the endpoint you are targeting. A request without it, or with a version older than the client's minimum API version, is served by the client's minimum API version.",
            "example": "2022-09-26",
            "in": "header",
            "name": "Insurely-Version",
            "required": true,
            "schema": {
              "enum": [
                "2022-09-26"
              ],
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "items": {
                  "$ref": "#/components/schemas/ContactFormInput"
                },
                "type": "array"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Contact form input successfully added"
          },
          "400": {
            "content": {
              "application/json": {
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/standard-error-400"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description": "If status is not `CONTACT FORM PENDING` or the provided `ContactFormInput` array doesn't contain all expected fields."
          },
          "401": {
            "content": {
              "application/json": {
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/standard-error-401"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description": "Invalid authorization token or the token specified is not allowed to add contact form input to the specified `collectionId`."
          },
          "403": {
            "content": {
              "application/json": {
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/standard-error-403"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description": "The client is not allowed to use this endpoint or resource."
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/standard-error-404"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description": "No collection with that ID exists for this client."
          }
        },
        "security": [
          {
            "authorization-token": []
          },
          {
            "client-id": []
          }
        ],
        "summary": "Add collection contact form input",
        "tags": [
          "Pension Data Collection"
        ]
      }
    },
    "/pension-collection/collect-info": {
      "post": {
        "description": "Initiate an pension data collection for a specific individual. Calling this will trigger the selected login method.",
        "operationId": "initiateCollection",
        "parameters": [
          {
            "in": "header",
            "name": "insurely-session-id",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The API version to use, as YYYY-MM-DD. Must match the version of the endpoint you are targeting. A request without it, or with a version older than the client's minimum API version, is served by the client's minimum API version.",
            "example": "2022-09-26",
            "in": "header",
            "name": "Insurely-Version",
            "required": true,
            "schema": {
              "enum": [
                "2022-09-26"
              ],
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CollectionRequestV2"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CollectionStartedResponse"
                }
              }
            },
            "description": "Data collection successfully initiated."
          },
          "400": {
            "content": {
              "application/json": {
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/standard-error-400"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description": "Invalid request (Possibly invalid personal number)."
          },
          "401": {
            "content": {
              "application/json": {
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/standard-error-401"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description": "Invalid authorization token or the token specified is not allowed to collect information from the specified company."
          },
          "403": {
            "content": {
              "application/json": {
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/standard-error-403"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description": "The client is not allowed to use this endpoint or resource."
          }
        },
        "security": [
          {
            "authorization-token": []
          },
          {
            "client-id": []
          }
        ],
        "summary": "Initiate collection",
        "tags": [
          "Pension Data Collection"
        ]
      }
    },
    "/pension-collection/get-data/{collectionId}": {
      "get": {
        "operationId": "getCollectionData",
        "parameters": [
          {
            "in": "path",
            "name": "collectionId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The API version to use, as YYYY-MM-DD. Must match the version of the endpoint you are targeting. A request without it, or with a version older than the client's minimum API version, is served by the client's minimum API version.",
            "example": "2022-09-26",
            "in": "header",
            "name": "Insurely-Version",
            "required": true,
            "schema": {
              "enum": [
                "2022-09-26"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/PensionData"
                  },
                  "type": "array"
                }
              }
            },
            "description": "Pension data successfully fetched."
          },
          "401": {
            "content": {
              "application/json": {
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/standard-error-401"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description": "Authentication failed: the credentials are missing or invalid, the calling IP is not on the client's allowlist, or mTLS is enforced and no valid client certificate was sent. An expired session token gets 401 Token expired."
          },
          "403": {
            "content": {
              "application/json": {
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/standard-error-403"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description": "The client is not allowed to use this endpoint or resource."
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/standard-error-404"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description": "No collection with that ID exists for this client, the collection has expired or there was no data to fetch."
          }
        },
        "security": [
          {
            "authorization-token": []
          }
        ],
        "summary": "Get collection data",
        "tags": [
          "Pension Data Collection"
        ]
      }
    },
    "/pension-collection/status/{collectionId}": {
      "get": {
        "description": "Returns the current status of an initiated collection of pension data. The value of status will be one of the following: `RUNNING`, `LOGIN`, `COLLECTING`, `COMPLETED PARTIAL`, `COMPLETED`, `COMPLETED EMPTY`, `CONTACT FORM PENDING`, `WAITING FOR AUTHENTICATION`, `FAILED`, `KYC FORM`, `CONTACT FORM`, `CUSTOMER ENROLLMENT REQUIRED`, `AUTHENTICATION CANCELLED`, `AUTHENTICATION CONFLICT` or `AUTHENTICATION MISMATCH`.The returned object will potentially have an imageValue and a token. The token is a mobile BankID autostart token to be sent to the user, and the image is a base64 encoded QR-code to be scanned by the user in their mobile BankID app. This will need to be rendered by the API user.",
        "operationId": "getCollectionStatus",
        "parameters": [
          {
            "in": "path",
            "name": "collectionId",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The API version to use, as YYYY-MM-DD. Must match the version of the endpoint you are targeting. A request without it, or with a version older than the client's minimum API version, is served by the client's minimum API version.",
            "example": "2022-09-26",
            "in": "header",
            "name": "Insurely-Version",
            "required": true,
            "schema": {
              "enum": [
                "2022-09-26"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CollectionStatus"
                }
              }
            },
            "description": "Status successfully fetched."
          },
          "401": {
            "content": {
              "application/json": {
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/standard-error-401"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description": "Authentication failed: the credentials are missing or invalid, the calling IP is not on the client's allowlist, or mTLS is enforced and no valid client certificate was sent. An expired session token gets 401 Token expired."
          },
          "403": {
            "content": {
              "application/json": {
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/standard-error-403"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description": "The client is not allowed to use this endpoint or resource."
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/standard-error-404"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description": "No collection with that ID exists for this client, or the collection has expired."
          }
        },
        "security": [
          {
            "authorization-token": []
          },
          {
            "client-id": []
          }
        ],
        "summary": "Get collection status",
        "tags": [
          "Pension Data Collection"
        ]
      }
    },
    "/pension-collection/supplement-info": {
      "post": {
        "description": "Add supplemental information to a collection. See the extended section of SupplementInformation for what types of supplemental information that are supported.\n",
        "operationId": "addSupplementInformation",
        "parameters": [
          {
            "description": "The API version to use, as YYYY-MM-DD. Must match the version of the endpoint you are targeting. A request without it, or with a version older than the client's minimum API version, is served by the client's minimum API version.",
            "example": "2022-09-26",
            "in": "header",
            "name": "Insurely-Version",
            "required": true,
            "schema": {
              "enum": [
                "2022-09-26"
              ],
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SupplementInformationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Successfully added supplemental information."
          },
          "401": {
            "content": {
              "application/json": {
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/standard-error-401"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description": "Invalid authorization token or disabled client."
          },
          "403": {
            "content": {
              "application/json": {
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/standard-error-403"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description": "The client is not allowed to use this endpoint or resource."
          },
          "404": {
            "content": {
              "application/json": {
                "examples": {
                  "error": {
                    "$ref": "#/components/examples/standard-error-404"
                  }
                },
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description": "Collection not found for this client."
          }
        },
        "security": [
          {
            "authorization-token": []
          },
          {
            "client-id": []
          }
        ],
        "summary": "Add collection supplemental information",
        "tags": [
          "Pension Data Collection"
        ]
      }
    }
  },
  "servers": [
    {
      "description": "Production",
      "url": "https://api.insurely.com"
    },
    {
      "description": "Test",
      "url": "https://api.test.insurely.com"
    }
  ],
  "tags": [
    {
      "description": "Provides statuses of insurance companies for data collection",
      "name": "Insurance Company"
    },
    {
      "description": "Initiate a collection of pension data, see the status and get the data collected from the holder of pension data.",
      "name": "Pension Data Collection"
    }
  ]
}