{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/wordline/main/json-schema/wordline-modify-customer-request-schema.json",
  "title": "ModifyCustomerRequest",
  "x-generated": "2026-10-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/wordline-customer-api-openapi.yml#/components/schemas/ModifyCustomerRequest",
  "x-wl-patch-request": true,
  "type": "object",
  "properties": {
    "active": {
      "type": "boolean",
      "description": "DEPRECATED",
      "default": true
    },
    "courtesyTitle": {
      "type": "string",
      "description": "Refer to Customer.courtesyTitle "
    },
    "lastName": {
      "type": "string",
      "description": "Refer to Customer.lastName. Only mandatory when using PUT method"
    },
    "firstName": {
      "type": "string",
      "description": "Refer to Customer.firstName. Only mandatory when using PUT method"
    },
    "onlineRiskCategory": {
      "type": "string",
      "description": "Only when using PUT method : If this field is not provided and a default value is configured, the default value will be used. Otherwise, the issuer must provide an online risk category among those allowed"
    },
    "offlineRiskCategory": {
      "type": "string",
      "description": "Only when using PUT method : If this field is not provided and a default value is configured, the default value will be used. Otherwise, the issuer must provide an offline risk category among those allowed."
    },
    "commercialStatus": {
      "type": "string",
      "description": "Only when using PUT method : If this field is not provided and a default value is configured, the default value will be used. Otherwise, the issuer must provide a commercial status among those allowed."
    },
    "secondFirstName": {
      "type": "string",
      "description": "Refer to Customer.secondFirstName"
    },
    "maidenName": {
      "type": "string",
      "description": "Refer to Customer.maidenName"
    },
    "correspondenceName": {
      "type": "string",
      "description": "Refer to Customer.correspondenceName"
    },
    "sex": {
      "type": "string",
      "description": "Refer to Customer.sex"
    },
    "birthDate": {
      "type": "string",
      "format": "date-time",
      "description": "Refer to Customer.birthDate "
    },
    "birthPlace": {
      "type": "string",
      "description": "Refer to Customer.birthPlace "
    },
    "nationality": {
      "type": "string",
      "description": "Refer to Customer.nationality"
    },
    "profession": {
      "type": "string",
      "description": "Refer to Customer.profession "
    },
    "employerName": {
      "type": "string",
      "description": "Refer to Customer.employerName"
    },
    "employerAddress": {
      "type": "string",
      "description": "Refer to Customer.employerAddress"
    },
    "monthlySalary": {
      "type": "string",
      "description": "Refer to Customer.monthlySalary "
    },
    "maritalStatus": {
      "type": "string",
      "description": "Refer to Customer.maritalStatus"
    },
    "preferredCorrespondenceLanguage": {
      "type": "string",
      "description": "Refer to Customer.preferredCorrespondenceLanguage"
    },
    "picture": {
      "type": "string",
      "description": "Refer to Customer.picture "
    },
    "url1": {
      "type": "string",
      "description": "Refer to Customer.url1"
    },
    "url2": {
      "type": "string",
      "description": "Refer to Customer.url2"
    },
    "secretQuestion": {
      "type": "string",
      "description": "Refer to Customer.secretQuestion"
    },
    "secretAnswer": {
      "type": "string",
      "description": "Refer to Customer.secretAnswer"
    },
    "vatNumber": {
      "type": "string",
      "description": "Refer to Customer.vatNumber"
    },
    "vatCountry": {
      "type": "string",
      "description": "Refer to Customer.vatCountry"
    },
    "customerClass": {
      "type": "string",
      "description": "Refer to Customer.customerClass"
    },
    "employee": {
      "type": "boolean",
      "description": "Refer to Customer.employee "
    },
    "partnerExternalReference": {
      "type": "string",
      "description": "Refer to Customer.partnerExternalReference"
    },
    "doNotContact": {
      "type": "boolean",
      "description": "Refer to Customer.doNotContact"
    },
    "specificFields": {
      "type": "object",
      "description": "The issuer can update Specific Fields for the customer. \nIt is a list of external data {\"label\":\"value\"} separated by a \",\" related to the customer (pass-thru data) that can be provided by e.g. the issuer for information or for usage by other systems.\nA new data can be added or an existing data can be updated {\"label1\":\"newValue\"} or removed {\"label2\":\"null\"}.\nAny existing data that is not present in this list is not updated in the customer.\nThose provided data have no impact on our system business processes.",
      "additionalProperties": {
        "type": "string"
      }
    },
    "vulnerabilities": {
      "description": "List of vulnerabilities applicable to the customer.",
      "type": "array",
      "items": {
        "$ref": "#/$defs/Vulnerability"
      }
    },
    "vulnerabilityIndicator": {
      "type": "boolean",
      "description": "indicates if the client is vulnerable"
    },
    "vulnerabilityNote": {
      "type": "string",
      "description": "note about the client's vulnerability (free text)"
    },
    "contacts": {
      "type": "array",
      "description": "List of contacts linked to the customer",
      "items": {
        "$ref": "#/$defs/ModifyCustomerRequestContact"
      }
    }
  },
  "$defs": {
    "ModifyAddressRequestMailAddress": {
      "type": "object",
      "required": [
        "country"
      ],
      "properties": {
        "typeCode": {
          "type": "string",
          "description": "DEPRECATED"
        },
        "courtesyTitle": {
          "type": "string",
          "description": "Courtesy title of the address. Free text"
        },
        "line1": {
          "type": "string",
          "description": "Address line 1 (conditional). Free text. A specific issuer algorithm can be activated to e.g. build the line, apply controls (e.g. length restriction)."
        },
        "line2": {
          "type": "string",
          "description": "Address line 2 (conditional). Free text. A specific issuer algorithm can be activated to e.g. build the line, apply controls (e.g. length restriction)."
        },
        "line3": {
          "type": "string",
          "description": "Address line 3 (conditional). Free text. A specific issuer algorithm can be activated to e.g. build the line, apply controls (e.g. length restriction)."
        },
        "line4": {
          "type": "string",
          "description": "Address line 4 (conditional). Free text. A specific issuer algorithm can be activated to e.g. build the line, apply controls (e.g. length restriction)."
        },
        "line5": {
          "type": "string",
          "description": "Address line 5 (conditional). Free text. A specific issuer algorithm can be activated to e.g. build the line, apply controls (e.g. length restriction)."
        },
        "buildingNumber": {
          "type": "string",
          "description": "Building number of the address (optional)"
        },
        "boxNumber": {
          "type": "string",
          "description": "Box number of the address (optional)"
        },
        "streetName": {
          "type": "string",
          "description": "Street name of the address (optional)"
        },
        "postCode": {
          "type": "string",
          "description": "zip code of the address (optional)"
        },
        "townName": {
          "type": "string",
          "description": "City corresponding to the address"
        },
        "countrySubdivision": {
          "type": "string",
          "description": "Subdivision of the country (optional)"
        },
        "country": {
          "type": "string",
          "description": "Code of the country (mandatory). Free text. The value can be subject to a validation process if a specific rule has been configured at issuer level. The value can be optional if a specific rule has been configured."
        }
      },
      "title": "ModifyAddressRequest.MailAddress"
    },
    "ModifyCustomerRequestContact": {
      "x-wl-patch-request": true,
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "Refer to Contact.lastName"
        },
        "firstName": {
          "type": "string",
          "description": "Refer to Contact.firstName "
        },
        "description": {
          "type": "string",
          "description": "Refer to Contact.description "
        },
        "courtesyTitle": {
          "type": "string",
          "description": "Refer to Customer.courtesyTitle "
        },
        "sex": {
          "type": "string",
          "description": "Refer to Contact.sex"
        },
        "type": {
          "type": "string",
          "description": "Refer to Contact.type"
        },
        "birthDate": {
          "type": "string",
          "format": "date-time",
          "description": "Refer to Contact.birthDate "
        },
        "postalAddress": {
          "description": "The postal adress of the contact",
          "allOf": [
            {
              "$ref": "#/$defs/ModifyAddressRequestMailAddress"
            }
          ]
        }
      },
      "title": "ModifyCustomerRequestContact"
    },
    "Vulnerability": {
      "type": "object",
      "required": [
        "type"
      ],
      "properties": {
        "type": {
          "type": "string",
          "description": "Type of vulnerability applicable to the customer (free text)."
        },
        "comment": {
          "type": "string",
          "description": "Details about the vulnerability of the customer (free text)."
        }
      }
    }
  }
}