{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/wordline/main/json-schema/wordline-modify-corporate-contract-request-schema.json",
  "title": "ModifyCorporateContractRequest",
  "x-generated": "2026-10-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/wordline-corporate-contract-api-openapi.yml#/components/schemas/ModifyCorporateContractRequest",
  "type": "object",
  "x-wl-patch-request": true,
  "properties": {
    "specificFields": {
      "type": "object",
      "description": "The issuer can update Specific Fields for the corporate contract.\nIt is a list of external data {\"label\":\"value\"} separated by a \",\" related to the contract (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 contract.\nThose provided data have no impact on our system business processes.",
      "additionalProperties": {
        "type": "string"
      }
    },
    "corporateContractLevels": {
      "description": "The issuer can modify the description of one or several level(s) of a company organization belonging to the corporate contract.",
      "type": "array",
      "items": {
        "$ref": "#/$defs/CorporateContractLevel"
      }
    },
    "postingAccountForMembershipFee": {
      "description": "The issuer can change if the membership fees have to be posted to employee card accounts, intermediate account or to the root (usually paid by the company) as default value for the corporate contract.\nPossible values:\n- ROOT_ACCOUNT \n- CARD_ACCOUNT\n- ENTITY_ACCOUNT",
      "type": "string",
      "enum": [
        "ROOT_ACCOUNT",
        "CARD_ACCOUNT",
        "ENTITY_ACCOUNT"
      ]
    },
    "postingAccountForAccountSetupFee": {
      "description": "The issuer can change if the account setup fees have to be posted to employee card account, intermediate account or to the root (usually paid by the company) as default value for the corporate contract.\nPossible values:\n- ROOT_ACCOUNT \n- CARD_ACCOUNT\n- ENTITY_ACCOUNT",
      "type": "string",
      "enum": [
        "ROOT_ACCOUNT",
        "CARD_ACCOUNT",
        "ENTITY_ACCOUNT"
      ]
    },
    "dispatchCode": {
      "description": "The issuer can modify the default disptach code to be used by the embosser to send cards to the right addressee.",
      "type": "string"
    },
    "logoReference": {
      "description": "The issuer can change the default logo reference to be used for each card issued from this corporate contract.",
      "type": "string"
    },
    "statementDuplicatedForCompany": {
      "description": "The issuer can change if the company receives a duplicate for statement generated by other paying accounts in the corporate contract (true) or not (false).",
      "type": "boolean"
    },
    "hierarchyDefaultResetCreditLimit": {
      "description": "The issuer can indicate, for a Corporate contract only, the default value at contract level to be applied for each account if the Open-to-buy should be reset to its maximum Credit limit at Authorization system side as soon as an account cycle is closed. Of course the amount due (minimum payment amount) is considered as to be repaid by the customer by our solution.",
      "type": "boolean"
    },
    "postingEntityLevelForMembershipFee": {
      "description": "In case postingAccountForMembershipFee= \"ENTITY_ACCOUNT\", then the issuer must provide the corresponding entity level number on which the Membership Fee needs to be posted",
      "type": "integer"
    },
    "postingEntityLevelForAccountSetupFee": {
      "description": "In case postingAccountForAccountSetupFee= \"ENTITY_ACCOUNT\", then the issuer must provide the corresponding entity level number on which the Account Setup Fee needs to be posted",
      "type": "integer"
    },
    "numberOfFreeCardsAccountSetupFee": {
      "type": "integer",
      "format": "int32",
      "description": "The issuer can define the number of cards for which account setup fee is not generated  (free cards).\nIf not provided, the default value will be used if defined at product level."
    },
    "numberOfFreeCardsMembershipFee": {
      "type": "integer",
      "format": "int32",
      "description": "The issuer can define the number of cards for which membership fee is not generated (free cards).\nIf not provided, the default value will be used if defined at product level."
    }
  },
  "$defs": {
    "CorporateContractLevel": {
      "type": "object",
      "properties": {
        "level": {
          "type": "string",
          "description": "Level number in the company organization (e.g. 1 corresponding to the company, 2 corresponding to country)"
        },
        "levelDescription": {
          "type": "string",
          "description": "Description of the level in the company organization (e.g. Company for level 1, Country for level 2)"
        }
      },
      "description": "Specify the level in the company organization",
      "title": "CorporateContractLevel"
    }
  }
}