{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/baloise/main/json-schema/baloise-contract-schema.json", "title": "Contract", "x-generated": "2026-10-09", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/baloise-corellia-contracts-openapi.yml#/components/schemas/Contract", "required": [ "action", "creationDate", "endDate", "fileHandles", "identifier", "payment", "product", "roles", "stampTaxCode", "startDate", "termsOfService", "totalNetPrice" ], "type": "object", "properties": { "creationDate": { "type": "string", "description": "The day the contract was issued", "format": "date" }, "startDate": { "type": "string", "description": "Start of contract which means start of insurance coverage", "format": "date" }, "endDate": { "type": "string", "description": "End of contract which means end of insurance coverage", "format": "date" }, "totalNetPrice": { "$ref": "#/$defs/MonetaryAmount" }, "roles": { "maxItems": 99, "minItems": 1, "type": "array", "description": "All roles in the contract, e.g. insuranceHolder", "items": { "$ref": "#/$defs/Role" } }, "product": { "$ref": "#/$defs/Product" }, "agent": { "$ref": "#/$defs/Agent" }, "fileHandles": { "maxItems": 2, "minItems": 0, "type": "array", "description": "A contract is only complete with its corresponding documents. This is the contract issued by the SaaS provider and maybe some further documents like e.g. customer provided documents like e.g. receipts. At least one contract document is required. In case of migration contracts zero documents are accepted.", "items": { "$ref": "#/$defs/FileHandle" } }, "stampTaxCode": { "type": "integer", "description": "The tax stamp code for this contract", "format": "int32" }, "termsOfService": { "$ref": "#/$defs/TermsOfService" }, "action": { "$ref": "#/$defs/Action" }, "identifier": { "$ref": "#/$defs/Identifier" }, "payment": { "$ref": "#/$defs/Payment" } }, "$defs": { "Action": { "required": [ "reason", "type" ], "type": "object", "properties": { "type": { "type": "integer", "description": "The type of the action", "format": "int32" }, "reason": { "type": "integer", "description": "The reason for this type", "format": "int32" }, "effective": { "type": "string", "description": "The date when this change should be effective", "format": "date" } } }, "Address": { "required": [ "city", "houseNumber", "street", "zipCode" ], "type": "object", "properties": { "sequentialAddressNumber": { "type": "integer", "description": "The sequential address number within the Baloise internal partner system.", "format": "int32" }, "street": { "maxLength": 35, "minLength": 0, "type": "string" }, "houseNumber": { "maxLength": 10, "minLength": 0, "type": "string" }, "zipCode": { "maxLength": 4, "minLength": 4, "type": "string" }, "city": { "maxLength": 30, "minLength": 0, "type": "string" } } }, "Agent": { "required": [ "agentNumber" ], "type": "object", "properties": { "agentNumber": { "maxLength": 8, "minLength": 0, "type": "string", "description": "Identification of an Agent" }, "email": { "maxLength": 70, "minLength": 2, "type": "string", "description": "A valid email adress" } }, "description": "The agent who induced the contract issuance, usually is eligible for receiving commission" }, "Company": { "type": "object", "properties": { "name": { "maxLength": 70, "minLength": 3, "type": "string", "description": "Required when partnerNr not set!" }, "uidNumber": { "maxLength": 15, "minLength": 0, "type": "string", "description": "Identifies a company uniquely, example CHE-105.805.649" }, "legalForm": { "maxLength": 2, "minLength": 2, "type": "string", "description": "Identifies the legal form of the company by CrediReform codes. Has to be provided if UID is missing.", "enum": [ "PRIVATPERSON", "EINZELUNTERNEHMEN", "GEWERBEBETRIEB", "EINFACHE_GESELLSCHAFT", "KOLLEKTIVGESELLSCHAFT", "KOMMANDITGESELLSCHAFT", "TREUHAENDERSCHAFT_TREUUNTERNEHMEN", "ERBENGEMEINSCHAFT", "EUROPAEISCHE_GESELLSCHAFT", "GENOSSENSCHAFT", "AKTIENGESELLSCHAFT", "KOMMANDIT_AKTIENGESELLSCHAFT", "GMBH", "STIFTUNG", "VEREIN", "ANSTALT_LI", "FORMLOSER_BERICHT", "ZWEIGNIEDERL_AUSLAEND_GESELLSCH", "INSTITUT_DES_OEFFENTL_RECHTS" ] }, "contactSalutation": { "type": "string", "description": "A contact is a person representing the company. Required when partnerNr not set!", "enum": [ "Mr", "Mrs" ] }, "contactLastName": { "maxLength": 35, "minLength": 2, "type": "string", "description": "A contact is a person representing the company. Required when partnerNr not set!" }, "contactFirstName": { "maxLength": 35, "minLength": 2, "type": "string", "description": "A contact is a person representing the company. Required when partnerNr not set!" }, "address": { "$ref": "#/$defs/Address" }, "partnerNr": { "type": "integer", "description": "The PartnerNr of the partner.", "format": "int32" } } }, "Coverable": { "required": [ "code", "coverages" ], "type": "object", "properties": { "code": { "type": "integer", "description": "A code uniquely identifying a type of coverable", "format": "int32" }, "riskLocation": { "$ref": "#/$defs/Address" }, "coverages": { "maxItems": 99, "minItems": 1, "type": "array", "items": { "$ref": "#/$defs/Coverage" } } } }, "Coverage": { "required": [ "code", "premium", "sumInsured" ], "type": "object", "properties": { "code": { "type": "integer", "description": "A code uniquely identifying a type of coverage", "format": "int32" }, "premium": { "$ref": "#/$defs/MonetaryAmount" }, "deductible": { "$ref": "#/$defs/MonetaryAmount" }, "sumInsured": { "$ref": "#/$defs/MonetaryAmount" }, "measurandType": { "type": "integer", "format": "int32" }, "measurandValue": { "$ref": "#/$defs/MonetaryAmount" }, "discountType": { "type": "integer", "format": "int32" }, "discountValue": { "$ref": "#/$defs/MonetaryAmount" }, "extraChargeType": { "type": "integer", "format": "int32" }, "extraChargeValue": { "$ref": "#/$defs/MonetaryAmount" } } }, "FileHandle": { "required": [ "handle" ], "type": "object", "properties": { "handle": { "type": "string", "description": "Reference to an uploaded document. This can be a PDF or a picture (e.g. JPG) of a contract or a purchase receipt." } } }, "Identifier": { "required": [ "id", "type" ], "type": "object", "properties": { "id": { "type": "string", "description": "Id depending on the type." }, "type": { "type": "string", "description": "The type of the id. EXT or INT.", "enum": [ "INT", "EXT" ] } } }, "MonetaryAmount": { "required": [ "amount" ], "type": "object", "properties": { "amount": { "type": "number", "description": "An amount with two decimal digit like an insured sum or a deductible (e.g. 100,22)." } } }, "Payment": { "required": [ "code", "recurringType" ], "type": "object", "properties": { "code": { "type": "integer", "description": "A code uniquely identifying the type of payment e.g. invoice or creditcard, Paypal etc.", "format": "int32" }, "recurringType": { "type": "integer", "description": "The recurring type code.", "format": "int32" }, "dueDate": { "type": "string", "description": "The due date for the recurring type", "format": "date" } } }, "Person": { "type": "object", "properties": { "salutation": { "type": "string", "description": "Required when partnerNr not set!", "enum": [ "Mr", "Mrs" ] }, "lastName": { "maxLength": 35, "minLength": 2, "type": "string", "description": "Required when partnerNr not set!" }, "firstName": { "maxLength": 35, "minLength": 2, "type": "string", "description": "Required when partnerNr not set!" }, "dateOfBirth": { "type": "string", "format": "date" }, "phoneNumber": { "$ref": "#/$defs/PhoneNumber" }, "emailAddress": { "maxLength": 70, "minLength": 2, "type": "string", "description": "A valid email address" }, "language": { "maxLength": 2, "minLength": 2, "type": "string", "description": "The language for correspondence with the customer. According to ISO 639-1 language codes, only the values 'de', 'fr', 'it' or 'en' are accepted. Required when partnerNr not set!" }, "address": { "$ref": "#/$defs/Address" }, "partnerNr": { "type": "integer", "description": "The PartnerNr of the partner.", "format": "int32" } } }, "PhoneNumber": { "required": [ "phoneNumber" ], "type": "object", "properties": { "countryCode": { "type": "string", "description": "Country code, default is +41." }, "phoneNumber": { "maxLength": 20, "minLength": 5, "type": "string", "description": "Phone number, without the leading zero." } } }, "Product": { "required": [ "code", "coverables", "pricingMonthYear" ], "type": "object", "properties": { "code": { "type": "integer", "description": "A code uniquely identifying the product", "format": "int32" }, "pricingMonthYear": { "maxLength": 4, "minLength": 4, "type": "string", "description": "The month/year in which the pricing for the contract was set. Format MMYY" }, "coverables": { "maxItems": 99, "minItems": 1, "type": "array", "items": { "$ref": "#/$defs/Coverable" } } } }, "Role": { "required": [ "role" ], "type": "object", "properties": { "role": { "type": "string", "enum": [ "insuranceholder", "payer" ] }, "person": { "$ref": "#/$defs/Person" }, "company": { "$ref": "#/$defs/Company" } } }, "TermsOfService": { "required": [ "edition", "type" ], "type": "object", "properties": { "type": { "type": "integer", "description": "The type of service terms", "format": "int32" }, "edition": { "type": "integer", "description": "The edition of the service terms", "format": "int32" } } } } }