{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/origin-energy/main/json-schema/origin-energy-origin-account-schema.json",
  "title": "OriginAccount",
  "x-generated": "2026-10-20",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/origin-energy-account-import-api-openapi.yml#/components/schemas/OriginAccount",
  "type": "object",
  "properties": {
    "account_billing_options": {
      "allOf": [
        {
          "$ref": "#/$defs/AccountBillingOptions"
        }
      ],
      "description": "<p>Object containing account billing options for an account.</p>"
    },
    "account_campaigns": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/AccountCampaign"
      },
      "description": "<p>List of campaigns to be added to an account. Campaigns allow accounts to be grouped, essentially tagging them for easy identification.</p>",
      "x-validators": [
        {
          "name": "Validate account campaigns have consistent identifier",
          "description": "Validate that account campaigns are consistently identified by either name or slug.",
          "possible_errors": [
            "inconsistent_campaign_identifiers"
          ]
        },
        {
          "name": "Validate account campaign names are unique",
          "description": "Validate that the account campaign names provided in the payload are unique.",
          "possible_errors": [
            "duplicate_account_campaigns"
          ]
        }
      ]
    },
    "account_contracts": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/AccountContract"
      },
      "description": "<p>List of account contracts associated with the account.</p>",
      "x-validators": [
        {
          "name": "Validate no duplicate contract identifiers",
          "description": "Validates that no duplicate contract identifiers have been provided in the payload.",
          "possible_errors": [
            "duplicate_contract_identifiers"
          ]
        }
      ]
    },
    "account_type": {
      "enum": [
        "DOMESTIC",
        "BUSINESS",
        "MANAGED",
        "PORTFOLIO_LEAD",
        "DOMESTIC_VACANT",
        "BUSINESS_VACANT",
        "DOMESTIC_OCCUPIER",
        "BUSINESS_OCCUPIER",
        "SYSTEM",
        "DOMESTIC_THIRD_PARTY_BILLED",
        "BUSINESS_THIRD_PARTY_BILLED"
      ],
      "type": "string",
      "x-spec-enum-id": "e661470f8d62795b",
      "description": "<p>The type of account to be created.</p>",
      "x-enum-descriptions": {
        "DOMESTIC": "Domestic",
        "BUSINESS": "Business",
        "MANAGED": "Managed",
        "PORTFOLIO_LEAD": "Portfolio Lead",
        "DOMESTIC_VACANT": "Domestic Vacant",
        "BUSINESS_VACANT": "Business Vacant",
        "DOMESTIC_OCCUPIER": "Domestic Occupier",
        "BUSINESS_OCCUPIER": "Business Occupier",
        "SYSTEM": "System",
        "DOMESTIC_THIRD_PARTY_BILLED": "Domestic Third Party Billed",
        "BUSINESS_THIRD_PARTY_BILLED": "Business Third Party Billed"
      }
    },
    "affiliate_subdomain": {
      "type": [
        "string",
        "null"
      ],
      "description": "<p>Optional subdomain of the affiliate link to associate with the account.</p>\n<p>If provided, the matching <code>AffiliateLink</code> record will be looked up case-insensitively and set on the account and account application. The affiliate organisation's <code>sales_channel</code> and <code>sales_subchannel</code> will override any values supplied in the payload.</p>\n<p>If the subdomain does not match any known affiliate link, the import will continue and a warning will be logged.</p>"
    },
    "billing_address": {
      "allOf": [
        {
          "$ref": "#/$defs/AusBillingAddress"
        }
      ],
      "description": "<p>The billing address for the account. The payload can specify an address in this format or use the the <code>billing_address1</code> etc fields, but not both.</p>"
    },
    "billing_address1": {
      "type": "string",
      "description": "<p>Account billing address line 1.</p>",
      "maxLength": 512
    },
    "billing_address2": {
      "type": "string",
      "description": "<p>Account billing address line 2.</p>",
      "maxLength": 512
    },
    "billing_address3": {
      "type": "string",
      "description": "<p>Account billing address line 3.</p>",
      "maxLength": 512
    },
    "billing_address4": {
      "type": "string",
      "description": "<p>Account billing address line 4.</p>",
      "maxLength": 512
    },
    "billing_address5": {
      "type": "string",
      "description": "<p>Account billing address line 5.</p>",
      "maxLength": 512
    },
    "billing_attention_of": {
      "type": "string",
      "description": "<p>Extra recipient information for when this account represents a large organisation (e.g. \"The Bursar\" or \"Accounts Payable\"). If provided, it will be used for producing statements.</p>",
      "maxLength": 256
    },
    "billing_customer_reference": {
      "type": "string",
      "description": "<p>Customer-specified reference to use in communications (e.g. \"Energy supply\"). If provided, it will be used for producing statements.</p>",
      "maxLength": 256
    },
    "billing_delivery_point_identifier": {
      "type": "string",
      "description": "<p>The postal delivery point identifier for this address. For GB addresses this will be the postcode (without the space) and Delivery Point Suffix, for AU addresses the Delivery Point Identifier, and for US addresses the full 11-digit Delivery Point code (without hyphens).</p>",
      "maxLength": 11,
      "x-validators": [
        {
          "name": "Validate delivery point identifier",
          "description": "Validate that the delivery point identifier contains only capital letters and numbers.",
          "possible_errors": [
            "invalid_delivery_point_identifier"
          ]
        }
      ]
    },
    "billing_email": {
      "type": [
        "string",
        "null"
      ],
      "format": "email",
      "description": "<p>If populated the bill/invoice communications will be emailed to this email address.</p>",
      "maxLength": 254,
      "x-validators": [
        {
          "name": "Validate email is not internal",
          "description": "Validates that a customer email address does not use an internal Kraken handler. For example, if an instance of Kraken has registered <code>info@kraken.info</code> as an internal email address, then the customer email address must not match this.",
          "possible_errors": [
            "internal_email_address"
          ]
        },
        {
          "name": "Validate 'blackhole+' is not in billing email",
          "description": "Validates that billing email does not contain 'blackhole+'.",
          "possible_errors": [
            "billing_email_not_valid"
          ]
        }
      ]
    },
    "billing_name": {
      "type": "string",
      "description": "<p>Optional billing name to be used on the account. If provided, it will be used for producing statements. If not, the customer names will be used.</p>",
      "maxLength": 510
    },
    "billing_postcode": {
      "type": "string",
      "description": "<p>Account billing address postcode.</p>",
      "maxLength": 512,
      "x-validators": [
        {
          "name": "Validate and normalize postcode",
          "description": "Validate the postal code and normalize it to a standard format.",
          "possible_errors": [
            "invalid_postcode"
          ]
        }
      ]
    },
    "billing_sub_name": {
      "type": "string",
      "description": "<p>Optional billing sub-name to be used on the account. Use this field if the name needs to be split into multiple lines. If provided, it will be used for producing statements.</p>",
      "maxLength": 256
    },
    "business": {
      "allOf": [
        {
          "$ref": "#/$defs/Business"
        }
      ],
      "description": "<p> Information about the business this account is related to. </p>"
    },
    "business_type": {
      "enum": [
        "SOLE_TRADER",
        "LTD",
        "PTY_LTD",
        "PARTNERSHIP",
        "CHARITY",
        "PLC",
        "LLP",
        "TRUST",
        "TRADING_AS",
        "GOVERNMENT",
        "NON_PROFIT",
        "CHURCH",
        "HOMEOWNER_ASSOCIATION",
        "TBD",
        ""
      ],
      "type": "string",
      "x-spec-enum-id": "8cd3a9d2ed8d5378",
      "description": "<p>The type of business this account related to. The business type can only be provided for business accounts.</p>",
      "x-enum-descriptions": {
        "SOLE_TRADER": "Sole trader",
        "LTD": "Limited",
        "PTY_LTD": "Proprietary Limited Company",
        "PARTNERSHIP": "Partnership",
        "CHARITY": "Charity",
        "PLC": "Public limited company",
        "LLP": "Limited liability partnership",
        "TRUST": "Trust",
        "TRADING_AS": "Trading as",
        "GOVERNMENT": "Government",
        "NON_PROFIT": "Non profit",
        "CHURCH": "Church",
        "HOMEOWNER_ASSOCIATION": "Homeowner association",
        "TBD": "To be determined",
        "": ""
      },
      "deprecated": true,
      "x-use-instead": "business.business_type"
    },
    "communication_preference": {
      "enum": [
        "ONLINE",
        "PRINT"
      ],
      "type": "string",
      "x-spec-enum-id": "888267663b9129b6",
      "default": "ONLINE",
      "description": "<p>The communication preference for this account. Defaults to ONLINE.</p>",
      "x-enum-descriptions": {
        "ONLINE": "Online",
        "PRINT": "Print"
      }
    },
    "company_number": {
      "type": "string",
      "description": "<p>The company number for a business account.</p>",
      "deprecated": true,
      "x-use-instead": "business.company_number",
      "maxLength": 100,
      "x-validators": [
        {
          "name": "Validate company number",
          "description": "Validate the company number and standardize its format.",
          "possible_errors": [
            "invalid_company_number"
          ]
        }
      ]
    },
    "complaints": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Complaint"
      },
      "description": "<p>List of complaints associated with this account that have not yet been resolved.</p>"
    },
    "consents": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/AccountConsent"
      },
      "description": "<p>A list of what this account has and has not consented to. This field should be used for consents that apply to the entire account not just the customers linked to this account.</p>",
      "x-validators": [
        {
          "name": "Validate consents are only provided if enabled",
          "description": "Validate consents are only provided if enabled within this Kraken.",
          "possible_errors": [
            "field_not_enabled"
          ]
        },
        {
          "name": "Validate that each child has unique values for the <code>⁨type⁩</code> field",
          "description": "Validate that each child has unique values for the <code>⁨type⁩</code> field.",
          "possible_errors": [
            "children_with_duplicate_values"
          ]
        }
      ]
    },
    "contribution_agreements": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/ContributionSchemeAgreement"
      },
      "description": "<p>List of contribution agreements on the account. A contribution agreement is an agreement by an account to contribute a fixed sum on a regular cadence.</p>",
      "x-validators": [
        {
          "name": "Validate contribution agreements do not overlap",
          "description": "Validate that no contribution agreements of the same scheme overlap with each other.",
          "possible_errors": [
            "overlapping_contribution_agreements"
          ]
        }
      ]
    },
    "current_statement_transactions": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/AusTransaction"
      },
      "description": "<p>Transactions that are meant to be billed by Kraken.</p><p>These could be the transactions that took place after the last statement was issued or all of the transactions that have taken place since the account was created if it has never been billed.</p><p>Their value, plus the <code>last_statement_balance</code>, must add up to the <code>transfer_balance</code>.</p>",
      "deprecated": true,
      "x-use-instead": "ledgers.current_statement_transactions"
    },
    "customers": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/AusCustomer"
      },
      "description": "<p>List of the account customers associated with the account.</p>",
      "x-validators": [
        {
          "name": "Validate that the customers provided do not have the same value for any unique detail namespaces",
          "description": "Validate that the customers provided do not have the same value for any of the following unique detail namespaces ⁨external_user_id⁩",
          "possible_errors": [
            "repeated_values_for_unique_customer_detail_namespace"
          ]
        }
      ]
    },
    "date_of_sale": {
      "type": "string",
      "format": "date",
      "description": "<p>Date the account was signed up.</p>"
    },
    "debt": {
      "allOf": [
        {
          "$ref": "#/$defs/Debt"
        }
      ],
      "description": "<p>Object containing information about debt on the account.</p>",
      "deprecated": true,
      "x-use-instead": "debts"
    },
    "debts": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Debt"
      },
      "description": "<p>List of debts on the account.</p>"
    },
    "deposit_agreements": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/DepositAgreement"
      },
      "description": "<p>List of deposit agreements on the account. Currently only one deposit agreement can be migrated onto an account. Deposit agreements track how much we expect a customer to pay as a deposit and when they agreed to pay that deposit.</p>",
      "x-validators": [
        {
          "name": "Validate deposit agreements",
          "description": "Validate the maximum number of deposit agreements",
          "possible_errors": [
            "multiple_active_deposits_not_allowed"
          ]
        }
      ]
    },
    "document_accessibility": {
      "enum": [
        "LARGE_PRINT",
        "BRAILLE",
        "SPOKEN",
        ""
      ],
      "type": "string",
      "x-spec-enum-id": "524112fb2f6615a6",
      "default": "",
      "description": "<p>The document accessibility preferences for this account.</p>",
      "x-enum-descriptions": {
        "LARGE_PRINT": "Large print",
        "BRAILLE": "Braille",
        "SPOKEN": "Spoken",
        "": ""
      }
    },
    "dunning_path": {
      "allOf": [
        {
          "$ref": "#/$defs/DunningPath"
        }
      ],
      "description": "<p>Object containing information about which dunning path this account should go onto.</p>",
      "x-validators": [
        {
          "name": "Validate dunning path supported",
          "description": "Validate that the dunning path passed in the payload is available for this Kraken instance.",
          "possible_errors": [
            "dunning_path_not_found"
          ]
        }
      ]
    },
    "events": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/AusAccountEvent"
      },
      "description": "<p>List of events to be associated with this account.</p>"
    },
    "external_account_number": {
      "type": "string",
      "description": "<p>Account number in the source system that the account is migrating from.</p>",
      "maxLength": 128
    },
    "hardship_agreements": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/HardshipAgreement"
      },
      "description": "<p>List of hardship agreements with the account. Accepts at most only one entry.</p>",
      "maxItems": 1
    },
    "historical_statement_transactions": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/AusTransaction"
      },
      "description": "<p>Transactions that are <strong>not</strong> meant to be billed by Kraken.</p><p>If these are provided then they will appear on the initial closed statement on the account.</p><p>The sum of historic transactions must equal the <code>last_statement_balance</code> if it is provided.</p><p>If a value for <code>last_statement_balance</code> is not provided the it will be assumed this value is zero and the payload will likely fail validation.</p>",
      "deprecated": true,
      "x-use-instead": "ledgers.historical_statement_transactions"
    },
    "import_supplier": {
      "enum": [
        "ORIGIN_SOLARFLEX_INACTIVE",
        "ORIGIN",
        "WIN_CONNECT_PARENT",
        "ORIGIN_CNI",
        "ORIGIN_BUSINESS",
        "WIN_CONNECT",
        "ORIGIN_SOLARFLEX",
        "ORIGIN_BUSINESS_NO_CONTRACT"
      ],
      "type": "string",
      "x-spec-enum-id": "9572ea198e3a9787",
      "description": "<p>The import supplier code that the account will be imported in to. The import supplier code will be provided to you.</p>",
      "x-enum-descriptions": {
        "ORIGIN_SOLARFLEX_INACTIVE": "Origin SolarFlex Inactive",
        "ORIGIN": "Origin",
        "WIN_CONNECT_PARENT": "Win Connect Parent",
        "ORIGIN_CNI": "Origin CNI",
        "ORIGIN_BUSINESS": "Origin Zero Business Import Supplier",
        "WIN_CONNECT": "WinConnect",
        "ORIGIN_SOLARFLEX": "Origin SolarFlex",
        "ORIGIN_BUSINESS_NO_CONTRACT": "Origin Business - No Contracts e.g. trustee"
      }
    },
    "is_managed": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "<p>Whether the account is a managed account. This option is not available for all instances of Kraken. Defaults to false.</p>",
      "deprecated": true,
      "x-use-instead": "account_type"
    },
    "is_portfolio_lead": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "<p>Whether the account is a portfolio lead account. If this flag is selected, the payload MUST include either <code>last_billed_to_date</code> or <code>last_statement_issue_date</code>, and MUST NOT include any contracts or supply points. Additionally, the import config flags MUST include <code>skip_meter_point_creation</code>. It should be set to true. Talk to the tech team if you want to use this option.</p>",
      "deprecated": true,
      "x-use-instead": "account_type"
    },
    "language_preference": {
      "enum": [
        "en-gb",
        "en-us",
        "es-419",
        "fr-fr"
      ],
      "type": "string",
      "x-spec-enum-id": "12edf511757640b4",
      "description": "<p>The language preference for comms for this account.</p>",
      "x-enum-descriptions": {
        "en-gb": "English (GB)",
        "en-us": "English (US)",
        "es-419": "Spanish (Latin America)",
        "fr-fr": "French"
      }
    },
    "last_billed_to_date": {
      "type": "string",
      "format": "date",
      "description": "<p>Date up to which consumption has been billed on the account.</p><p>For some markets this value can be provided at the supply point level if supply points have been billed to different points in time.</p><p>If the account has never been billed before, this should be the supply start date for the account and Kraken will bill from then.</p><p>This value is also used for the <code>last_statement_closing_date</code> and <code>last_statement_issue_date</code> where these values are not provided.</p>"
    },
    "last_payment_review_date": {
      "type": [
        "string",
        "null"
      ],
      "format": "date",
      "description": "<p>Date in the past when the last payment review took place. If this is provided then <code>payment_adequacy_changes</code> must <strong>not</strong> be included in the payload. Providing this date will create a single payment adequacy change against the account for this date.</p>",
      "x-validators": [
        {
          "name": "Validate last payment review date is not future dated",
          "description": "Validate that the last payment review date is not later than today.",
          "possible_errors": [
            "last_payment_review_date_is_future_dated"
          ]
        }
      ]
    },
    "last_statement_balance": {
      "type": "string",
      "format": "decimal",
      "pattern": "^-?\\d{0,10}(?:\\.\\d{0,10})?$",
      "description": "<p>The balance of the latest statement issued by the previous supplier. Credit balances must be positive, debit balances must be negative.</p>",
      "deprecated": true,
      "x-use-instead": "ledgers.last_statement_balance"
    },
    "last_statement_closing_date": {
      "type": "string",
      "format": "date",
      "description": "<p>Date when the last statement was closed.</p><p>Kraken will create an initial closed statement for all historical transactions, and will use this value for its <strong>closing</strong> date. This also means that Kraken will bill any transactions (but not necessarily consumption) from the day <strong>after</strong> this date.</p><p>For backwards compatibility, when this value is omitted the importer will tolerate either current or historical transactions (but not both!) being on the <code>last_billed_to_date</code> and adjust appropriately. However, if <code>last_statement_closing_date</code> is supplied, historical transactions can be on or before this date, but any current transactions must be strictly after this date.</p>",
      "deprecated": true,
      "x-use-instead": "ledgers.last_statement_closing_date"
    },
    "last_statement_issue_date": {
      "type": "string",
      "format": "date",
      "description": "<p>Date when the last statement was issued. If this date is not given then the <code>last_statement_closing_date</code> will be used as the issue date of the initial statement.</p>",
      "deprecated": true,
      "x-use-instead": "ledgers.last_statement_issue_date"
    },
    "ledgers": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/OriginLedgerRecordWithTransactions"
      },
      "description": "<p>The list of ledger records linked to the account.</p>"
    },
    "metadata": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Metadata"
      },
      "description": "<p>An array of key value pairs for storing generic metadata relating to an account. Metadata is externally focused and is not used for any logic within Kraken. Its main motivation is to provide a simple persistence mechanism for clients building their own integrations with Kraken. If a customer already exists in Kraken with existing metadata for the provided key, the value associated with this key will be overwritten.</p>"
    },
    "next_bill_due_date": {
      "type": [
        "string",
        "null"
      ],
      "format": "date",
      "description": "<p>Date to determine the current open account statement's to date.</p>"
    },
    "notes": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Note"
      },
      "description": "<p>List of notes linked to the account. A note <code>body</code> or <code>document_paths</code> must be provided.</p>"
    },
    "operations_team_name": {
      "type": "string",
      "description": "<p>The operations team name that this account should be assigned to on creation.</p>",
      "x-validators": [
        {
          "name": "Validate that an operations team exists",
          "description": "Validate that an operations team exists with the name provided.",
          "possible_errors": [
            "operations_team_name_does_not_exist"
          ]
        }
      ]
    },
    "partner_file_attachments": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/PartnerFileAttachment"
      },
      "description": "<p>The list of S3 paths for documents to be attached to the Partner Organisation. These files must already be uploaded to S3</p>"
    },
    "partner_organisations": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/PartnerOrganisation"
      },
      "description": "<p>List of partner organisations.</p>"
    },
    "payment_adequacy_changes": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/PaymentAdequacyChange"
      },
      "description": "<p>List of completed payment adequacy reviews for this account. If this is provided then the <code>last_payment_review_date</code> must <strong>not</strong> be provided.</p>"
    },
    "payment_instructions": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/AusPaymentInstruction"
      },
      "description": "<p>List of payment instructions to create for the account.</p>",
      "x-validators": [
        {
          "name": "Validate uniformity of ledger code in payment instructions",
          "description": "Validate that either all payment instructions have a ledger code or none have it.",
          "possible_errors": [
            "payment_instructions_ledger_code_uniformity_failed"
          ]
        },
        {
          "name": "Validate payment instructions",
          "description": "Validates that only one open-ended payment instruction per type and there is no overlaps periods between payment instructions with the same type.",
          "possible_errors": [
            "invalid_payment_instruction"
          ]
        }
      ]
    },
    "payment_plans": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/AusPaymentPlan"
      },
      "description": "<p>List of payment plans agreed with the customer.</p>"
    },
    "payment_preferences": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/PaymentPreference"
      },
      "description": "<p>List of payment preferences to create for the account.</p>"
    },
    "payment_promises": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/PaymentPromise"
      },
      "description": "<p>List of payments the customer has promised to pay at a future date.</p>"
    },
    "payment_schedules": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/PaymentSchedule"
      },
      "description": "<p>List of payment schedules linked to the account.</p>",
      "x-validators": [
        {
          "name": "Validate uniformity of ledger code in payment schedules",
          "description": "Validate that either all payment schedules have a ledger code or none have it.",
          "possible_errors": [
            "payment_schedules_ledger_code_uniformity_failed"
          ]
        },
        {
          "name": "Validate that only one open-ended payment schedule is allowed within each ledger_code group",
          "description": "Validate that within each ledger_code group, only one open-ended payment schedule that is not a debt repayment plan is provided in the payload.",
          "possible_errors": [
            "multiple_open_ended_payment_schedules"
          ]
        },
        {
          "name": "Validate that payment schedules within each ledger_code group do not start on the same date",
          "description": "Validate that multiple payment schedules within each ledger_code group, which are not debt repayment plans, do not start on the same date.",
          "possible_errors": [
            "payment_schedule_date_overlaps"
          ]
        },
        {
          "name": "Validate that payment schedules do not overlap within each ledger_code group",
          "description": "Validate that within each ledger_code group, payment schedules that are not debt repayment plans do not have overlapping dates.",
          "possible_errors": [
            "payment_schedule_date_overlaps"
          ]
        },
        {
          "name": "Validate no gaps in future dated payment schedules",
          "description": "Validate that where payment schedules in the payload start in the future, there are no gaps between those and the current schedule. For past payment schedules we don't care if there are gaps as these have no impact on payments going forward. This only applies to non-debt repayment plans.",
          "possible_errors": [
            "payment_schedule_date_gaps"
          ]
        }
      ]
    },
    "payment_terms": {
      "allOf": [
        {
          "$ref": "#/$defs/AusPaymentTerms"
        }
      ],
      "description": "<p>Overrides the default payment terms created by Kraken.</p>"
    },
    "portfolio": {
      "allOf": [
        {
          "$ref": "#/$defs/Portfolio"
        }
      ],
      "description": "<p>Information about the portfolio the account belongs to.</p>"
    },
    "references": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/AccountReference"
      },
      "description": "<p>List of account references for the account. An example may be a secondary account number.</p>"
    },
    "remotely_communicating_meter_opt_out_reason": {
      "enum": [
        null,
        "RADIATION_OR_HEALTH_CONCERNS",
        "PRIVACY_OR_SECURITY_CONCERNS",
        "AESTHETICS",
        "RLED_HOLD_CUSTOMER_RELATED",
        "RLED_HOLD_ACCESS_RELATED",
        ""
      ],
      "x-spec-enum-id": "ac2526fc28af62c1",
      "description": "<p>Remotely communicating meter opt out reason.</p>",
      "x-enum-descriptions": {
        "None": "None",
        "RADIATION_OR_HEALTH_CONCERNS": "Radiation or health concerns",
        "PRIVACY_OR_SECURITY_CONCERNS": "Privacy or security concerns",
        "AESTHETICS": "Aesthetics",
        "RLED_HOLD_CUSTOMER_RELATED": "RLED HOLD - Customer Related",
        "RLED_HOLD_ACCESS_RELATED": "RLED HOLD - Access Related",
        "": ""
      }
    },
    "sales_channel": {
      "enum": [
        "DIRECT",
        "PRICE_COMPARISON",
        "TELESALES",
        "DIGI_TELESALES",
        "EVENTS",
        "FIELD_SALES",
        "AGGREGATOR",
        "PARTNERSHIPS",
        "NEW_TENANT",
        "MOVE_IN",
        "WORKPLACE_POP_UP",
        "BROKER",
        "PARENT_POWER",
        "PEOPLE_POWER",
        "GIFT_OF_KIT",
        "HIGH_REFERRER",
        "SUPPLIER_OF_LAST_RESORT",
        "ACQUISITION",
        "WORKS_WITH_OCTOPUS",
        "LANDLORD",
        "DEBT_COLLECTION_AGENCY",
        ""
      ],
      "type": "string",
      "x-spec-enum-id": "f4ccf4dcda60c174",
      "default": "DIRECT",
      "description": "<p>The sales channel to set on account when it's created. A default <code>sales_channel</code> can also be set on the import supplier - this is done by a member of the Kraken tech team when setting up an import supplier. These are the rules around how the sales channel gets assigned:</p>\n<ul>\n    <li>If a default is set on the import supplier, and the import supplier is configured to override the value in the payload, the override will be used.</li>\n    <li>If a default is provided on the import supplier, but the import supplier is configured not to override the value in the payload, then default will only be used if the <code>sales_channel</code> value in the payload is not provided or is an empty string.</li>\n    <li>If no default <code>sales channel</code> is set on the import supplier and the import supplier is set to override the value in the payload, then we default to using <code>ACQUISITION</code> as the <code>sales_channel</code>.</li>\n    <li>If a default is <strong>not</strong> set on the import supplier and the import supplier is not set to override the value in the payload and there is no value in the payload, then the sales channel will be set to an empty string.</li>\n</ul>",
      "x-enum-descriptions": {
        "DIRECT": "Direct",
        "PRICE_COMPARISON": "Price comparison",
        "TELESALES": "Telesales",
        "DIGI_TELESALES": "Digital telesales",
        "EVENTS": "Events",
        "FIELD_SALES": "Field sales",
        "AGGREGATOR": "Aggregator",
        "PARTNERSHIPS": "Partnerships",
        "NEW_TENANT": "New tenant",
        "MOVE_IN": "Move in",
        "WORKPLACE_POP_UP": "Workplace pop-up",
        "BROKER": "Broker",
        "PARENT_POWER": "Parent power",
        "PEOPLE_POWER": "People power",
        "GIFT_OF_KIT": "Gift of kit",
        "HIGH_REFERRER": "High referrer",
        "SUPPLIER_OF_LAST_RESORT": "Supplier of last resort",
        "ACQUISITION": "Acquisition",
        "WORKS_WITH_OCTOPUS": "Works with octopus",
        "LANDLORD": "Landlord",
        "DEBT_COLLECTION_AGENCY": "Debt collection agency",
        "": ""
      }
    },
    "sales_subchannel": {
      "type": "string",
      "description": "<p>Free text to be used as sales information of the account.</p><p>If the import supplier is set to override the value in the payload, then the import supplier name will be used as the value for the <code>sales_subchannel</code>.</p>"
    },
    "statements": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/AusStatement"
      },
      "description": "<p>List of historical statements for the account.</p>"
    },
    "supply_addresses": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/AusRichSupplyAddress"
      },
      "description": "<p>List of active supply addresses linked to the account.</p>",
      "x-validators": [
        {
          "name": "Validate no duplicate meter points on different supply addresses",
          "description": "Validate that there are no duplicate meter points (i.e. meter points with the same MPxN) across different supply addresses.",
          "possible_errors": [
            "duplicate_meter_points_on_different_supply_addresses_provided"
          ]
        },
        {
          "name": "Validate that supply points are provided correctly based on the value of the 'Skip supply point creation' import config setting.",
          "description": "Validate that if the value for 'Skip supply point creation' is True then supply points have not been provided, and if False that they have.",
          "possible_errors": [
            "supply_points_provided_while_skip_supply_point_creation_enabled",
            "supply_points_not_provided_while_skip_supply_point_creation_disabled"
          ]
        },
        {
          "name": "Validate that supply addresses are not provided if 'Skip property creation' is True",
          "description": "Validate that if the value for 'Skip property creation' is True then supply addresses have not been provided",
          "possible_errors": [
            "supply_addresses_provided_while_skip_property_creation_enabled"
          ]
        },
        {
          "name": "Validate no duplicate supply addresses",
          "description": "Validate there are no duplicate supply addresses provided for an account payload. This uses the <code>supply_address1</code>, <code>supply_address2</code> and <code>supply_postcode</code> fields of the address to identify uniqueness.",
          "possible_errors": [
            "duplicate_supply_addresses_found"
          ]
        },
        {
          "name": "Validate meter exchange readings provided",
          "description": "Validate that any exchanged meters provided have a reading on the date it was removed and have transfer readings.",
          "possible_errors": [
            "no_reading_on_removed_on",
            "no_transfer_reading_on_exchanged_meter"
          ]
        },
        {
          "name": "Validate all transfer reading dates match last billed to date",
          "description": "Validate that all transfer reading dates match the last billed to date. The last billed to date can be either at the account level or the at the meter/register level. Last billed to dates at the meter/register level take precedent over the account level date if both are provided.",
          "possible_errors": [
            "transfer_reading_dates_must_match_last_billed_to_date"
          ]
        },
        {
          "name": "Validate no loss in progress at supply address",
          "description": "Validate that there is no loss in progress marked for a supply point for a supply address. A loss will be deemed in progress if a future-dated <code>supply_end_date</code> is provided on the supply point.",
          "possible_errors": [
            "loss_in_progress"
          ]
        },
        {
          "name": "Validate no duplicate supply addresses",
          "description": "Validate there are no duplicate supply addresses provided for an account payload. This uses the <code>supply_address1</code>, <code>supply_address2</code> and <code>supply_postcode</code> fields of the address to identify uniqueness.",
          "possible_errors": [
            "duplicate_supply_addresses_found"
          ]
        },
        {
          "name": "Validate number of unmetered service per type",
          "description": "Validates that only one unmetered service of each mpxn type per account is supported.",
          "possible_errors": [
            "too_many_supply_addresses_for_unmetered_appliance_type"
          ]
        },
        {
          "name": "Validate one reading route",
          "description": "Validates that all reading route values for the account should match.",
          "possible_errors": [
            "reading_route_values_should_match"
          ]
        },
        {
          "name": "Validate only one life support address provided",
          "description": "Validates that only one life support address provided in payload.",
          "possible_errors": [
            "life_support_for_more_than_one_address"
          ]
        },
        {
          "name": "Validate that there are no billed readings after the <code>last_billed_to_date</code>",
          "description": "Validate that there are no billed readings after the supply point <code>last_billed_to_date</code>, if such a date is provided.",
          "possible_errors": [
            "billed_reading_after_last_billed_to_date"
          ]
        }
      ]
    },
    "transfer_balance": {
      "type": "string",
      "format": "decimal",
      "pattern": "^-?\\d{0,10}(?:\\.\\d{0,10})?$",
      "description": "<p>The balance that will be transferred over to Kraken. Credit balances must be positive, debit balances must be negative.</p>"
    },
    "unknown_occupier": {
      "type": [
        "boolean",
        "null"
      ],
      "description": "<p>Whether the account belongs to an unknown occupier. If true then no customers should be provided in the payload.</p>"
    }
  },
  "required": [
    "import_supplier"
  ],
  "x-validators": [
    {
      "name": "Validate account type is valid",
      "description": "Validate that only one account type is specified in the payload.",
      "possible_errors": [
        "multiple_account_types_selected"
      ]
    },
    {
      "name": "Derive occupier billing address from supply address",
      "description": "When an occupier account has no explicit billing address and exactly one supply address is provided, copy the supply address into the billing address fields.",
      "possible_errors": []
    },
    {
      "name": "Validate billing address fields",
      "description": "If a legacy billing address is provided, validate that it is in the correct format.",
      "possible_errors": [
        "invalid_address"
      ]
    },
    {
      "name": "Validate life support contact user email",
      "description": "Validates that life support contact user email matches with customers email. When life support <code>preferred_contact_method</code> is <code>EMAIL_ADDRESS</code>, it requires customer with email. When it is <code>PHONE</code>, it requires customer with mobile or landline.",
      "possible_errors": [
        "missing_contact_user_email_or_phone"
      ]
    },
    {
      "name": "Validate metadata",
      "description": "Validate that metadata, which is a list of key value pairs, does not contain duplicate keys.",
      "possible_errors": [
        "metadata_has_duplicate_keys"
      ]
    },
    {
      "name": "Validate unique property external identifiers",
      "description": "Ensures that <code>property_external_identifier</code> is not repeated across <code>supply_addresses</code> and <code>properties</code>.",
      "possible_errors": [
        "duplicate_property_external_identifiers"
      ]
    },
    {
      "name": "Validate managed account type is allowed",
      "description": "Validate that this instance of Kraken allows managed account types.",
      "possible_errors": [
        "managed_accounts_are_not_allowed"
      ]
    },
    {
      "name": "Validate only portfolio lead has portfolio setting",
      "description": "Validates that if portfolio settings are provided, then the account is marked as the portfolio lead.",
      "possible_errors": [
        "portfolio_settings_included_when_not_lead"
      ]
    },
    {
      "name": "Validate no customers for unknown occupier",
      "description": "Validate that no customers are provided for an unknown occupier.",
      "possible_errors": [
        "customer_with_unknown_occupier"
      ]
    },
    {
      "name": "Validate that a customer given name is provided for business accounts",
      "description": "Validate that a given name is provided for all customers on a business account. Note that this validation only applies if Kraken is configured to send registration flows for this import supplier.",
      "possible_errors": [
        "customer_given_name_required"
      ]
    },
    {
      "name": "Validate portfolio reference provided correctly",
      "description": "Validate that a portfolio reference is provided if portfolio settings have been provided and that a portfolio reference is not provided if the import supplier is set to create new portfolios.",
      "possible_errors": [
        "portfolio_references_missing",
        "portfolio_references_provided"
      ]
    },
    {
      "name": "Validate billing address style",
      "description": "Validate that a legacy billing address (<code>billing_address1</code> etc.) and new-style billing address (<code>billing_address</code> object) are not both provided.",
      "possible_errors": [
        "billing_address_new_style_and_legacy"
      ]
    },
    {
      "name": "Validate agreements are consecutive per supply point",
      "description": "Validate that the agreements provided in the payload are consecutive per supply point i.e. there are no gaps or overlaps. The exception to this is for agreements provided before the current supply period for the supply point. Agreements provided before the <code>supply_start_date</code> are allowed gaps since they represent historic periods of supply and cannot be used for billing in Kraken.",
      "possible_errors": [
        "gaps_or_overlaps_in_agreement_dates"
      ]
    },
    {
      "name": "Validate supply charge line items covered by a single agreement",
      "description": "Validate each supply charge has a single agreement with matching product code that covers the period defined by it's line items minimum <code>start_date</code> to maximum <code>end_date</code>.",
      "possible_errors": [
        "supply_charge_line_items_not_covered_by_single_agreement"
      ]
    },
    {
      "name": "Validate historical statement period end must not be in the future",
      "description": "Ensures that the historical statement period end date (last_statement_closing_date or latest transaction_date) is not set in the future.",
      "possible_errors": [
        "historical_statement_period_end_in_future"
      ]
    },
    {
      "name": "Validate that terms with supply type matches a supply point supply type",
      "description": "Validate that for terms containing a <code>supply_type</code> field that there is a supply point in the payload with a matching <code>supply_type</code>.",
      "possible_errors": [
        "term_supply_type_mismatch"
      ]
    },
    {
      "name": "Validate that supply addresses and supply points are provided if account contracts are provided",
      "description": "Validate that if <code>account_contracts</code> have been provided that a supply address with supply points has been provided under <code>supply_addresses</code>",
      "possible_errors": [
        "account_contracts_without_supply_points"
      ]
    },
    {
      "name": "Validate historical statement billing document identifier presence",
      "description": "Ensure that billing document identifiers are only provided for historical statement transactions and only when the relevant feature flag is enabled.",
      "possible_errors": [
        "historical_statement_billing_document_identifier_missing",
        "historical_statement_billing_document_identifier_not_allowed_when_feature_flag_disabled"
      ]
    },
    {
      "name": "Validate current statement transactions do not provide <code>billing_document_identifier</code>",
      "description": "Validate that none of the current statement transactions include a <code>billing_document_identifier</code>, as this field is only applicable to historical statement transactions.",
      "possible_errors": [
        "billing_document_identifier_not_allowed_for_current_statement_transactions"
      ]
    },
    {
      "name": "Validate historical statement transaction billing document identifier",
      "description": "Ensure that the billing document identifier is the same for all historical statement transactions.",
      "possible_errors": [
        "historical_statement_billing_document_identifier_mismatch"
      ]
    },
    {
      "name": "Validate that contract terms' product codes are part of supply agreements",
      "description": "Ensure that any contract terms with product references have corresponding products in supply addresses.",
      "possible_errors": [
        "contract_term_product_code_not_in_agreements"
      ]
    },
    {
      "name": "Validate that business is provided if enforcing business contracts",
      "description": "Validate that the business field is provided if <code>enforce_business_contracts_exist</code> is set to True on the import supplier configuration.",
      "possible_errors": [
        "business_field_required"
      ]
    },
    {
      "name": "Validate agreement business contract identifier is declared",
      "description": "Validates that an agreement's <code>business_contract_identifier</code>, if provided, is one of the account's declared <code>business_contract_identifiers</code>.",
      "possible_errors": [
        "agreement_business_contract_identifier_not_declared"
      ]
    },
    {
      "name": "Validate that the sum of ledger balances equals the transfer balance",
      "description": "Validate that the sum of all <code>ledger_balance</code> provided for each ledger in <code>ledgers</code> equals the account-level <code>transfer_balance</code>.",
      "possible_errors": [
        "ledger_balances_not_equal_to_transfer_balance"
      ]
    },
    {
      "name": "Validate business user info against customer info",
      "description": "Validates that business user information matches the corresponding customer information for basic fields.",
      "possible_errors": [
        "customer_details_and_user_details_both_provided"
      ]
    },
    {
      "name": "Validate payment preference <code>ledger_identifier</code>",
      "description": "Ensure that the <code>ledger_identifier</code> provided has an equivalent <code>ledger</code> object with the same <code>ledger_identifier</code> .",
      "possible_errors": [
        "invalid_payment_preference_ledger_identifier"
      ]
    },
    {
      "name": "Validate that referenced ledgers are unique in payment preferences",
      "description": "Ensure that each ledger is referenced in at most one payment preference.",
      "possible_errors": [
        "duplicate_ledger_in_payment_preferences"
      ]
    },
    {
      "name": "Validate that valid instruction_identifier provided for <code>ACTIVE_NEW</code> payment preference",
      "description": "Ensure that <code>ACTIVE_NEW</code> payment preference has instruction_identifier from </code>payment_instructions</code> object.",
      "possible_errors": [
        "active_new_payment_preference_invalid_instruction_identifier"
      ]
    },
    {
      "name": "Validate that the transactions for a voucher do not exceed its value",
      "description": "Validate that the sum of all transaction values for a voucher is not greater than the value of the voucher.",
      "possible_errors": [
        "voucher_transactions_sum_greater_than_voucher_value"
      ]
    },
    {
      "name": "Validate that each voucher charge transaction id has a matching transaction id within a transaction of type CHARGE",
      "description": "Validate that each <code>voucher</code> <code>charge_transaction_id</code> has a matching <code>transaction_id</code> within a transaction of <code>type</code> CHARGE in <code>current_statement_transactions</code>, <code>historical_statement_transactions</code> or <code>historical_billing_documents</code>.",
      "possible_errors": [
        "voucher_charge_transaction_id_not_found"
      ]
    },
    {
      "name": "Validate that each voucher redemption credit transaction id has a matching transaction id within a transaction of type CREDIT",
      "description": "Validate that every <code>credit_transaction_id</code> in all <code>voucher_redemptions</code> in every <code>voucher</code> has a matching <code>transaction_id</code> within a transaction of <code>type</code> CREDIT in <code>current_statement_transactions</code>, <code>historical_statement_transactions</code> or <code>historical_billing_documents</code>.",
      "possible_errors": [
        "voucher_redemption_credit_transaction_id_not_found"
      ]
    },
    {
      "name": "Validate parent property references exist",
      "description": "Validates that all <code>parent_property_reference</code> values in <code>supply_addresses</code> and <code>properties</code> correspond to a <code>property_external_identifier</code> in the payload. This ensures the property hierarchy is valid.",
      "possible_errors": [
        "parent_property_reference_not_found"
      ]
    },
    {
      "name": "Validate that a portfolio lead account has no supply address since it makes no sense for it to have one",
      "description": "Validate that a portfolio lead account has no supply address.",
      "possible_errors": [
        "portfolio_lead_has_a_supply_address"
      ]
    },
    {
      "name": "Validate that a system account has no supply address",
      "description": "Validate that a system account has no supply address",
      "possible_errors": [
        "system_account_has_a_supply_address"
      ]
    },
    {
      "name": "Validate auto allocation of operations team",
      "description": "Validate that operations_team_name is provided if auto allocation is not configured.",
      "possible_errors": [
        "operations_team_provided_when_using_auto_allocation",
        "operations_team_should_be_provided"
      ]
    },
    {
      "name": "Validate that Kraken can calculate when to start billing the account",
      "description": "Validate that Kraken can calculate when to start billing the account. This is determined based on the existence of last billed to date, last statement closing date, and agreements.",
      "possible_errors": [
        "cannot_determine_responsible_for_billing_from_date"
      ]
    },
    {
      "name": "Validate that a last billed to date has been provided correctly",
      "description": "Validate that last billed to date has been provided for electricity, gas and water meters. This validation does not apply to meters that have been exchanged where the new meter has already been billed. This validation is skipped if the account has not yet been billed and therefore has no historical statement data.",
      "possible_errors": [
        "last_billed_to_date_not_found"
      ]
    },
    {
      "name": "Validate that if historical statement transaction are provided then so is a last statement closing date or last billed to date",
      "description": "Validate that if <code>historical_statement_transactions</code> are provided in the payload then either a <code>last_statement_closing_date</code> or <code>last_billed_to_date</code> is also provided. If a <code>last_statement_closing_date</code> is not provided then the earliest <code>last_billed_to_date</code> on the account or supply points is used to determine when the last statement should have closed.",
      "possible_errors": [
        "historical_statement_transactions_without_last_statement_closing_date_or_last_billed_to_date"
      ]
    },
    {
      "name": "Validate unique transaction IDs",
      "description": "Validate that all transaction IDs provided are unique.",
      "possible_errors": [
        "duplicate_transaction_ids",
        "missing_transaction_id"
      ]
    },
    {
      "name": "Validate that current statement transactions are not before the current statement opening date",
      "description": "Validate that all <code>current_statement_transactions</code>, if provided, are not before the current statement opening date. This date is one day after the last statement closing date if provided, otherwise it is based on the last billed to date.",
      "possible_errors": [
        "current_statement_transaction_before_current_statement_opening_date"
      ]
    },
    {
      "name": "Validate current statement transactions are not before <code>last_billed_to_date</code>",
      "description": "Validate that there are no current statement transactions that occurred before the <code>last_billed_to_date</code> (this includes the supply point-level <code>last_billed_to_date</code>, as well as any meter- or register-level dates where applicable).",
      "possible_errors": [
        "current_statement_transaction_before_last_billed_to_date"
      ]
    },
    {
      "name": "Validate current statement transactions are after historical statement transactions",
      "description": "Validate that all current statement transactions are dated after all current historical statement transactions.",
      "possible_errors": [
        "historical_statement_transaction_after_current_statement_transaction"
      ]
    },
    {
      "name": "Validate that there are no historical statement transactions after the last statement closing date",
      "description": "Validate that if <code>historical_statement_transactions</code> are provided then none are later than the <code>last_statement_closing_date</code>. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
      "possible_errors": [
        "historical_statement_transaction_after_last_statement_closing_date"
      ]
    },
    {
      "name": "Validate that the last statement issue date is on or after the last statement closing date",
      "description": "Validate that the <code>last_statement_issue_date</code>, if given, is on or after the <code>last_statement_closing_date</code> given. If a <code>last_statement_closing_date</code> is not provided then this is inferred from the earliest <code>last_billed_to_date</code> on the account or supply points.",
      "possible_errors": [
        "last_statement_issued_before_closing_date"
      ]
    },
    {
      "name": "Validate <code>last_statement_balance</code> plus/minus <code>current_statement_transactions</code> equal <code>transfer_balance</code>",
      "description": "Validate that the sum of <code>current_statement_transactions</code> plus the <code>last_statement_balance</code> is equal to the <code>transfer_balance</code>. For example, if a <code>last_statement_balance</code> of 100 is provided, and the <code>current_statement_transactions</code> include one payment of 50, then the expected <code>transfer_balance</code> would 150. Transactions that are payments or credits add to the balance. Transactions that are repayments or charges subtract from the balance.",
      "possible_errors": [
        "balance_mismatch_on_transfer_balance"
      ]
    },
    {
      "name": "Validate that the summed historical statement transactions match the last statement balance",
      "description": "Validate that the sum of the <code>historical_statement_transactions</code> equals the <code>last_statement_balance</code>.",
      "possible_errors": [
        "historical_statement_transactions_balance_mismatch"
      ]
    },
    {
      "name": "Validate no duplicated ledgers are provided",
      "description": "Validate no duplicated ledger codes are in `ledgers` section.",
      "possible_errors": [
        "duplicate_ledger_entries_found"
      ]
    },
    {
      "name": "Validate identifiers are unique in ledgers",
      "description": "Validate identifier is not declared twice in ledgers.",
      "possible_errors": [
        "duplicate_identifiers_entries_found"
      ]
    },
    {
      "name": "Validate ledger identifiers are known",
      "description": "Validate ledger identifiers are among supply point identifiers.",
      "possible_errors": [
        "unknown_ledger_identifiers"
      ]
    },
    {
      "name": "Validate payment adequacy changes or last payment review date not both",
      "description": "Validate that only one of <code>payment_adequacy_changes</code> or <code>last_payment_review_date</code> is provided in the payload.",
      "possible_errors": [
        "payment_adequacy_changes_and_last_payment_review_date_provided"
      ]
    },
    {
      "name": "Validate no more than one property for unknown occupier",
      "description": "Validate that no more than one property is provided for an unknown occupier account.",
      "possible_errors": [
        "occupier_account_with_multiple_supply_addresses"
      ]
    },
    {
      "name": "Validate no direct debit reference for the occupier",
      "description": "Validate that if any customer is identified as an occupier, then no <code>dd_reference</code> is provided for the account. If a <code>dd_reference</code> is provided, then it implies that there is a known occupier for the account.",
      "possible_errors": [
        "dd_reference_for_occupier_account"
      ]
    },
    {
      "name": "Validate no unbilled period on former supply addresses",
      "description": "Validate that if a customer is no longer at the given supply address they have been fully billed. This check is performed if we are importing supply address history.",
      "possible_errors": [
        "unbilled_former_supply_address"
      ]
    },
    {
      "name": "Validate no agreements start before the supply start date",
      "description": "Validate that no agreements start before the supply start date of the associated meter point.",
      "possible_errors": [
        "agreement_starting_before_meter_point_ssd"
      ]
    },
    {
      "name": "Validate debt and debts",
      "description": "Validates that both debt and debts are not specified in the payload.",
      "possible_errors": [
        "debt_and_debts_are_defined"
      ]
    },
    {
      "name": "Validate at least one billable meter point is provided",
      "description": "Validate that account must have at least one billable meter point unless import config skip_meter_point_creation is ON or account is a portfolio lead, or account is an unmetered service, or account is an inactive account.",
      "possible_errors": [
        "no_supply_point_on_supply"
      ]
    },
    {
      "name": "Validate billing address style",
      "description": "Validate that a legacy billing address (<code>billing_address1</code> etc.) and new-style billing address (<code>billing_address</code> object) are not both provided.",
      "possible_errors": [
        "billing_address_new_style_and_legacy"
      ]
    },
    {
      "name": "Validate business type not provided for domestic accounts",
      "description": "Validate that a business type is not provided for domestic accounts.",
      "possible_errors": [
        "business_fields_provided_for_domestic_accounts"
      ]
    },
    {
      "name": "Validate all contracts in the payload cover last billed due date",
      "description": "Validate that at least one contract for a supply point should cover last billed due date.",
      "possible_errors": [
        "no_agreement_covering_last_billed_to_date"
      ]
    },
    {
      "name": "Validate that blackhole email addresses are paired with 'online' communication prefernence",
      "description": "Validate that the communication preference 'online' when a blackhole email address is provided.",
      "possible_errors": [
        "blackhole_email_with_online_comms"
      ]
    },
    {
      "name": "Validate customer family name",
      "description": "Validate the family name is provided for all customers on a domestic account.",
      "possible_errors": [
        "customer_family_name_required"
      ]
    },
    {
      "name": "Validate portfolio lead communication preference",
      "description": "Validates that portfolio lead is using ONLINE communication preference.",
      "possible_errors": [
        "invalid_portfolio_lead_communication_preference"
      ]
    },
    {
      "name": "Validate all billable meter points are covered by agreements in the payload",
      "description": "Validate that agreements have been provided for all billable meter points and vice versa for the period covered by Kraken from a billing perspective. A billable meter point is one that has an open-ended or future dated supply end date.",
      "possible_errors": [
        "meter_point_with_no_agreement",
        "meterpoint_with_agreement_not_on_supply"
      ]
    },
    {
      "name": "Validate transfer readings exist on active gas meters",
      "description": "Validate that each active gas meter has a single transfer reading provided.",
      "possible_errors": [
        "active_gas_meter_with_multiple_transfer_readings",
        "active_gas_meter_without_transfer_reading",
        "reading_meter_fully_billed"
      ]
    },
    {
      "name": "Validate transfer readings exist on active electricity registers",
      "description": "Validate that each active electricity meter register has a single transfer reading provided.",
      "possible_errors": [
        "missing_transfer_reading_for_register",
        "multiple_transfer_readings_for_register"
      ]
    },
    {
      "name": "Validate concession card and concession credids paid current year",
      "description": "Validates that only one customer with concession card and concession credids paid current year provided; customer with concession card needs to match with customer with concession credits paid current year.",
      "possible_errors": [
        "concession_cards_too_many_users",
        "concession_credits_and_cards_too_many_users",
        "concession_credits_paid_too_many_users"
      ]
    },
    {
      "name": "Validate payment terms apply to portfolio",
      "description": "Validate that portfolio lead account must have <code>apply_to_portfolio</code> set to true and only portfolio lead account can set <code>apply_to_portfolio</code> to true.",
      "possible_errors": [
        "invalid_apply_to_portfolio"
      ]
    },
    {
      "name": "Validate that <code>⁨dd_reference⁩</code> and <code>⁨payment_instructions⁩</code> are not both provided",
      "description": "Validate that ⁨dd_reference⁩ and ⁨payment_instructions⁩ are not both provided.",
      "possible_errors": [
        "fields_are_mutually_exclusive"
      ]
    },
    {
      "name": "Validate manually defined eligibility periods",
      "description": "Validates that manually defined rebate periods cannot be added without a primary address and some manually defined rebate periods need a concession card as well.",
      "possible_errors": [
        "manually_defined_eligibility_periods_without_concession_card",
        "manually_defined_rebate_periods_without_primary_address"
      ]
    },
    {
      "name": "Validate primary place of residence without concession card or credits paid or manually defined eligibility periods",
      "description": "Validates that only customer with concession card, credits paid or manually defined eligibility periods can have a primary place of residence.",
      "possible_errors": [
        "primary_place_of_residence_without_concession_card_or_credits_paid_or_rebate"
      ]
    },
    {
      "name": "Validate concession cards or credits paid without primary place of residence",
      "description": "Validates that concession cards cannot be loaded without a primary address and concession credits paid for the year cannot be recorded without a primary address except it is proprietor account.",
      "possible_errors": [
        "concession_cards_or_credits_paid_without_primary_place_of_residence"
      ]
    }
  ],
  "$defs": {
    "AccountBillingOptions": {
      "oneOf": [
        {
          "$ref": "#/$defs/AusAccountBillingOptions"
        },
        {
          "$ref": "#/$defs/OriginStrictAccountBillingOptions"
        }
      ]
    },
    "AccountCampaign": {
      "type": "object",
      "properties": {
        "campaign_name": {
          "enum": [
            "2 or more broken plans",
            "2 or more payment plans",
            "360 days overdue debt account",
            "Account Password",
            "Active DCA Campaign - Sensitive",
            "Aggregator SMS",
            "Annual CES PLP Credit",
            "Asylum Seeker",
            "Auto Solar Refund",
            "Bankruptcy / Insolvency",
            "Billing Remediation - Temp",
            "BLDR Multisite Child",
            "BLDR Multisite Lead",
            "BPAY Reference changed on Migration",
            "Builders Remediation",
            "Business Calls to CT2",
            "Business_Managed",
            "Business Starter Bonus",
            "Business Starter Bonus +6M",
            "Buyback Requested",
            "Centrepay Business Approved",
            "Centrepay Handback",
            "Centrepay Handback Initiated",
            "Centrepay Handback Rejected",
            "Centrepay ineligible Account reviewed",
            "Centrepay ineligible for SA handback",
            "Centrepay Remediation",
            "Centrepay Remediation Issue",
            "Centrepay UCM Remediation",
            "CES - Commercial Annuity Plan",
            "CES - Commercial Profit Share",
            "CES - Origin as Billing Agent",
            "CHI Opt Out",
            "Collective Payment Arrangement",
            "Concession Invoicing",
            "Confirmed Illegal Re-connection",
            "CPAY Complaint Exclusion",
            "CRAL",
            "CR/DB Refused",
            "Credit Campaign",
            "Credit Case Management",
            "Credit Debit Transfer",
            "Credit Dispute",
            "Credit Settlement Campaign",
            "Credit Tactical Routing",
            "Customer - Internet",
            "Debt Waiver Under Assessment",
            "Default Listing",
            "Default Listing - Creditor Watch",
            "Delayed Rebill",
            "DHS Migrated Concession",
            "Direct Calls to Credit",
            "Disconnection Hold",
            "Disc SO Pending - exclude from collections campaigns",
            "DNP Assessment",
            "DNP DB LETTER",
            "DNP Exception Category",
            "DNP Failed Disconnection",
            "DNP - Field Visit Requested",
            "DNP FV LETTER",
            "DNP - Manual BE Review Required",
            "DNP Prevention",
            "DNP SO Esco",
            "DNP Warning & Best Endeavors",
            "DN SO Issue",
            "Downtier",
            "Dunning Deferral",
            "EBR 2025 Payment Exception",
            "EBR ACT Eligible Churn",
            "EBR ACT Eligible Move",
            "EBR Business Exclude",
            "EBR Business Exclude FY25",
            "EBR Business Exclude FY26",
            "EBR Business Include",
            "EBR Business Include FY25",
            "EBR Business Include FY26",
            "EBR FER - $180",
            "EBR FER - $20",
            "EBR payment investigation",
            "EBR - Senior Energy Rebate Recipient",
            "EFT migration comms variant",
            "EHH + Energy Happy Day",
            "EHH - Ineligible Basic Meter",
            "E-mobility Shell Account for Charging Reimbursement",
            "Energy Happy Day",
            "EnergyZone Pro",
            "E & SP Origin Zero",
            "EV Overnight",
            "Expected Generation Billing",
            "FDV P1",
            "Field Visit Address Issue",
            "Field visit requested - escalated debt",
            "Field visit requested - Ex-hardship",
            "Field Visit Requested - Return Mail",
            "Final Account",
            "FlexMigrated",
            "Gold",
            "Hardship Non-Engagement Path",
            "High Risk Debt",
            "Hold Bill DNP",
            "HS FDV Non-Engagement Pathway",
            "HS Team",
            "HS Trial",
            "Increasing Risk",
            "Intent to Default",
            "Internet Account",
            "Issuance migrated",
            "Legal Review",
            "Litigation",
            "Litigation_Disconnection",
            "Loyalty Reward Ineligible - No Email",
            "LS Alternate Contact",
            "Master-sub meter",
            "Monthly Billing Applied",
            "Monthly Billing Comms Sent",
            "MS Acommodation",
            "MS Admin & Support",
            "MS Agriculture Forestry & Fishing",
            "MS Allocation",
            "MS Arts & Recreation",
            "MS_Aveo",
            "MSBG - Council GST",
            "MSBG - Councils",
            "MSBG - Government",
            "MSBG - Multisite",
            "MSBG - NSW Govt",
            "MSBG - Stratas",
            "MSBG - Telco",
            "MS - Broker",
            "MS Communities",
            "MS Construction",
            "MS Councils LGA",
            "MS Education & Training",
            "MS Energy Zone Access",
            "MS Financial & Insurance",
            "MS Food Services",
            "MS Health Care & Insurance",
            "MS Info Media & Telco",
            "MS Manufacturing",
            "MS Mining",
            "MS_PA",
            "MS Professional & Techincal",
            "MS Public Admin & Safety",
            "MS Rental Hiring & Real Estate",
            "MS Transport Postal & Housing",
            "MS - UMS",
            "MS Utilities",
            "MS Wholesale & Retail",
            "Natural Disaster Postcode",
            "NEBR FY24-25 Q1 Include",
            "NEBR FY24-25 Q2 Include",
            "NEBR FY24-25 Q3 Include",
            "NEBR FY24-25 Q4 Include",
            "NEBR FY26 Q1 Include",
            "NEBR FY26 Q2 Include",
            "NEBR FY26 Q3 Include",
            "NEBR FY26 Q4 Include",
            "Needs Medical Confirmation",
            "New Connections - Managed",
            "No Comms",
            "No Cost Meter",
            "Non-Solar Non-Energy",
            "No Permission for CCeS",
            "NSW Debt Relief Trial",
            "NSW Debt Relief Trial - Disengaged",
            "NSW Debt Relief Trial - Participating",
            "Ongoing usage requires increase",
            "Origin Business Steady",
            "Origin Internal Billing",
            "Origin Managed For Payment Plan Adherence",
            "OZ–EI&T",
            "OZ–RPM",
            "OZ–SIG",
            "Pathways HS Re-Entry",
            "Payment Difficulty",
            "Payment Plan Remediation",
            "Payment Remediation Investigation",
            "Platinum",
            "Post Bankruptcy",
            "Potential Privacy Incident",
            "Pre Litigation",
            "PrivacyInc",
            "Privacy Incident",
            "Removed Unmetered Appliance - Air conditioning",
            "Removed Unmetered Appliance - Cooktop",
            "Removed Unmetered Appliance - Heater",
            "Removed Unmetered Appliance - Temporary",
            "Resi Calls to CT9",
            "Restricted Postcode",
            "Return Mail",
            "SA EBR Backdated Q1",
            "SA EBR Backdated Q2",
            "SA EBR Backdated Q3",
            "SA EBR Backdated Q4",
            "SAP Finance Remediation Shell Account",
            "Sensitive Account Investigation",
            "Sensitive Cx Routing",
            "Sensitive Unresolved PCM",
            "Shell Account",
            "Solar for low income",
            "Solar Non-Energy",
            "Strata/Body Corporate",
            "Strata Managed Site",
            "STTP Applied",
            "STTP Comms Sent",
            "Suppress Migration Comms",
            "Suspected Fraud Account",
            "Suspected Fraud - Under Investigation",
            "Suspicious Account Activities",
            "Tactical Campaign",
            "Tactical Credit Campaign",
            "Tailored Engagement Sensitive",
            "Tenure: 10+ Years",
            "Tenure: 1-2 years",
            "Tenure: < 1 Year",
            "Tenure: 2-5 years",
            "Tenure: 5-7 Years",
            "Tenure: 7-10 Years",
            "VC Address Issue",
            "VC CES New Building",
            "VC CM Investigation Required",
            "VC Customer Contact Required",
            "VC Deemed Contract",
            "VC/DNP Account closed via DNP Process",
            "VC Exception Category",
            "VC Failed Disconnection",
            "Vc Known Customer",
            "VC Known Cx - VC BAU",
            "VC Life Support / Sensitive Load",
            "VC Meter Removed",
            "VC MS BAU",
            "VC MSBG Site Flag",
            "VC Pending Disconnection",
            "VC Pending Reconnection",
            "VC Potential Illegal Reconnection",
            "VC RTS",
            "VC SME Pause",
            "VC Supply Disconnected",
            "VC Unable To Validate Move Out",
            "VC Unmetered Supply",
            "Vendor Account",
            "Vic Group Homes",
            "Vic Group Homes FY22-23",
            "Vic Group Homes FY23-24",
            "Vic Group Homes FY24-25",
            "Vic Group Homes FY25-26",
            "Vic Group Homes FY26-27",
            "VIC Tailored Assistance",
            "VIP",
            "Volume Boundary Meter (VBM)",
            "VPP Battery",
            "VPP Battery - EOI",
            "VPP Beta Trial",
            "VPP Community Battery",
            "VPP Community Battery - Battery NMI",
            "VPP Controlled Load Overnight",
            "VPP Controlled Load Solar",
            "VPP Controlled Load Time Clock",
            "VPP Controlled Load Usage",
            "VPP ESaaS",
            "VPP ESaaS - Eligible",
            "VPP EV Power Up",
            "VPP EV Power Up - EOI",
            "VPP Spike",
            "WA Billing Redirection",
            "WINconnect Agency Billing Account",
            "WINconnect Cold Water Recovery",
            "WINconnect Migrated Account",
            "Withdrawn Account NEBR 25 Exclude",
            "Withdrawn Account NEBR FY25-26 Exclude",
            "Writeoff SAP",
            "",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "f203c333417fa5cb",
          "default": "",
          "description": "<p>The name of the campaign. Campaigns must already exist in Kraken.</p>",
          "x-enum-descriptions": {
            "2 or more broken plans": "2 or more broken plans",
            "2 or more payment plans": "2 or more payment plans",
            "360 days overdue debt account": "360 days overdue debt account",
            "Account Password": "Account Password",
            "Active DCA Campaign - Sensitive": "Active DCA Campaign - Sensitive",
            "Aggregator SMS": "Aggregator SMS",
            "Annual CES PLP Credit": "Annual CES PLP Credit",
            "Asylum Seeker": "Asylum Seeker",
            "Auto Solar Refund": "Auto Solar Refund",
            "Bankruptcy / Insolvency": "Bankruptcy / Insolvency",
            "Billing Remediation - Temp": "Billing Remediation - Temp",
            "BLDR Multisite Child": "BLDR Multisite Child",
            "BLDR Multisite Lead": "BLDR Multisite Lead",
            "BPAY Reference changed on Migration": "BPAY Reference changed on Migration",
            "Builders Remediation": "Builders Remediation",
            "Business Calls to CT2": "Business Calls to CT2",
            "Business_Managed": "Business_Managed",
            "Business Starter Bonus": "Business Starter Bonus",
            "Business Starter Bonus +6M": "Business Starter Bonus +6M",
            "Buyback Requested": "Buyback Requested",
            "Centrepay Business Approved": "Centrepay Business Approved",
            "Centrepay Handback": "Centrepay Handback",
            "Centrepay Handback Initiated": "Centrepay Handback Initiated",
            "Centrepay Handback Rejected": "Centrepay Handback Rejected",
            "Centrepay ineligible Account reviewed": "Centrepay ineligible Account reviewed",
            "Centrepay ineligible for SA handback": "Centrepay ineligible for SA handback",
            "Centrepay Remediation": "Centrepay Remediation",
            "Centrepay Remediation Issue": "Centrepay Remediation Issue",
            "Centrepay UCM Remediation": "Centrepay UCM Remediation",
            "CES - Commercial Annuity Plan": "CES - Commercial Annuity Plan",
            "CES - Commercial Profit Share": "CES - Commercial Profit Share",
            "CES - Origin as Billing Agent": "CES - Origin as Billing Agent",
            "CHI Opt Out": "CHI Opt Out",
            "Collective Payment Arrangement": "Collective Payment Arrangement",
            "Concession Invoicing": "Concession Invoicing",
            "Confirmed Illegal Re-connection": "Confirmed Illegal Re-connection",
            "CPAY Complaint Exclusion": "CPAY Complaint Exclusion",
            "CRAL": "CRAL",
            "CR/DB Refused": "CR/DB Refused",
            "Credit Campaign": "Credit Campaign",
            "Credit Case Management": "Credit Case Management",
            "Credit Debit Transfer": "Credit Debit Transfer",
            "Credit Dispute": "Credit Dispute",
            "Credit Settlement Campaign": "Credit Settlement Campaign",
            "Credit Tactical Routing": "Credit Tactical Routing",
            "Customer - Internet": "Customer - Internet",
            "Debt Waiver Under Assessment": "Debt Waiver Under Assessment",
            "Default Listing": "Default Listing",
            "Default Listing - Creditor Watch": "Default Listing - Creditor Watch",
            "Delayed Rebill": "Delayed Rebill",
            "DHS Migrated Concession": "DHS Migrated Concession",
            "Direct Calls to Credit": "Direct Calls to Credit",
            "Disconnection Hold": "Disconnection Hold",
            "Disc SO Pending - exclude from collections campaigns": "Disc SO Pending - exclude from collections campaigns",
            "DNP Assessment": "DNP Assessment",
            "DNP DB LETTER": "DNP DB LETTER",
            "DNP Exception Category": "DNP Exception Category",
            "DNP Failed Disconnection": "DNP Failed Disconnection",
            "DNP - Field Visit Requested": "DNP - Field Visit Requested",
            "DNP FV LETTER": "DNP FV LETTER",
            "DNP - Manual BE Review Required": "DNP - Manual BE Review Required",
            "DNP Prevention": "DNP Prevention",
            "DNP SO Esco": "DNP SO Esco",
            "DNP Warning & Best Endeavors": "DNP Warning & Best Endeavors",
            "DN SO Issue": "DN SO Issue",
            "Downtier": "Downtier",
            "Dunning Deferral": "Dunning Deferral",
            "EBR 2025 Payment Exception": "EBR 2025 Payment Exception",
            "EBR ACT Eligible Churn": "EBR ACT Eligible Churn",
            "EBR ACT Eligible Move": "EBR ACT Eligible Move",
            "EBR Business Exclude": "EBR Business Exclude",
            "EBR Business Exclude FY25": "EBR Business Exclude FY25",
            "EBR Business Exclude FY26": "EBR Business Exclude FY26",
            "EBR Business Include": "EBR Business Include",
            "EBR Business Include FY25": "EBR Business Include FY25",
            "EBR Business Include FY26": "EBR Business Include FY26",
            "EBR FER - $180": "EBR FER - $180",
            "EBR FER - $20": "EBR FER - $20",
            "EBR payment investigation": "EBR payment investigation",
            "EBR - Senior Energy Rebate Recipient": "EBR - Senior Energy Rebate Recipient",
            "EFT migration comms variant": "EFT migration comms variant",
            "EHH + Energy Happy Day": "EHH + Energy Happy Day",
            "EHH - Ineligible Basic Meter": "EHH - Ineligible Basic Meter",
            "E-mobility Shell Account for Charging Reimbursement": "E-mobility Shell Account for Charging Reimbursement",
            "Energy Happy Day": "Energy Happy Day",
            "EnergyZone Pro": "EnergyZone Pro",
            "E & SP Origin Zero": "E & SP Origin Zero",
            "EV Overnight": "EV Overnight",
            "Expected Generation Billing": "Expected Generation Billing",
            "FDV P1": "FDV P1",
            "Field Visit Address Issue": "Field Visit Address Issue",
            "Field visit requested - escalated debt": "Field visit requested - escalated debt",
            "Field visit requested - Ex-hardship": "Field visit requested - Ex-hardship",
            "Field Visit Requested - Return Mail": "Field Visit Requested - Return Mail",
            "Final Account": "Final Account",
            "FlexMigrated": "FlexMigrated",
            "Gold": "Gold",
            "Hardship Non-Engagement Path": "Hardship Non-Engagement Path",
            "High Risk Debt": "High Risk Debt",
            "Hold Bill DNP": "Hold Bill DNP",
            "HS FDV Non-Engagement Pathway": "HS FDV Non-Engagement Pathway",
            "HS Team": "HS Team",
            "HS Trial": "HS Trial",
            "Increasing Risk": "Increasing Risk",
            "Intent to Default": "Intent to Default",
            "Internet Account": "Internet Account",
            "Issuance migrated": "Issuance migrated",
            "Legal Review": "Legal Review",
            "Litigation": "Litigation",
            "Litigation_Disconnection": "Litigation_Disconnection",
            "Loyalty Reward Ineligible - No Email": "Loyalty Reward Ineligible - No Email",
            "LS Alternate Contact": "LS Alternate Contact",
            "Master-sub meter": "Master-sub meter",
            "Monthly Billing Applied": "Monthly Billing Applied",
            "Monthly Billing Comms Sent": "Monthly Billing Comms Sent",
            "MS Acommodation": "MS Acommodation",
            "MS Admin & Support": "MS Admin & Support",
            "MS Agriculture Forestry & Fishing": "MS Agriculture Forestry & Fishing",
            "MS Allocation": "MS Allocation",
            "MS Arts & Recreation": "MS Arts & Recreation",
            "MS_Aveo": "MS_Aveo",
            "MSBG - Council GST": "MSBG - Council GST",
            "MSBG - Councils": "MSBG - Councils",
            "MSBG - Government": "MSBG - Government",
            "MSBG - Multisite": "MSBG - Multisite",
            "MSBG - NSW Govt": "MSBG - NSW Govt",
            "MSBG - Stratas": "MSBG - Stratas",
            "MSBG - Telco": "MSBG - Telco",
            "MS - Broker": "MS - Broker",
            "MS Communities": "MS Communities",
            "MS Construction": "MS Construction",
            "MS Councils LGA": "MS Councils LGA",
            "MS Education & Training": "MS Education & Training",
            "MS Energy Zone Access": "MS Energy Zone Access",
            "MS Financial & Insurance": "MS Financial & Insurance",
            "MS Food Services": "MS Food Services",
            "MS Health Care & Insurance": "MS Health Care & Insurance",
            "MS Info Media & Telco": "MS Info Media & Telco",
            "MS Manufacturing": "MS Manufacturing",
            "MS Mining": "MS Mining",
            "MS_PA": "MS_PA",
            "MS Professional & Techincal": "MS Professional & Techincal",
            "MS Public Admin & Safety": "MS Public Admin & Safety",
            "MS Rental Hiring & Real Estate": "MS Rental Hiring & Real Estate",
            "MS Transport Postal & Housing": "MS Transport Postal & Housing",
            "MS - UMS": "MS - UMS",
            "MS Utilities": "MS Utilities",
            "MS Wholesale & Retail": "MS Wholesale & Retail",
            "Natural Disaster Postcode": "Natural Disaster Postcode",
            "NEBR FY24-25 Q1 Include": "NEBR FY24-25 Q1 Include",
            "NEBR FY24-25 Q2 Include": "NEBR FY24-25 Q2 Include",
            "NEBR FY24-25 Q3 Include": "NEBR FY24-25 Q3 Include",
            "NEBR FY24-25 Q4 Include": "NEBR FY24-25 Q4 Include",
            "NEBR FY26 Q1 Include": "NEBR FY26 Q1 Include",
            "NEBR FY26 Q2 Include": "NEBR FY26 Q2 Include",
            "NEBR FY26 Q3 Include": "NEBR FY26 Q3 Include",
            "NEBR FY26 Q4 Include": "NEBR FY26 Q4 Include",
            "Needs Medical Confirmation": "Needs Medical Confirmation",
            "New Connections - Managed": "New Connections - Managed",
            "No Comms": "No Comms",
            "No Cost Meter": "No Cost Meter",
            "Non-Solar Non-Energy": "Non-Solar Non-Energy",
            "No Permission for CCeS": "No Permission for CCeS",
            "NSW Debt Relief Trial": "NSW Debt Relief Trial",
            "NSW Debt Relief Trial - Disengaged": "NSW Debt Relief Trial - Disengaged",
            "NSW Debt Relief Trial - Participating": "NSW Debt Relief Trial - Participating",
            "Ongoing usage requires increase": "Ongoing usage requires increase",
            "Origin Business Steady": "Origin Business Steady",
            "Origin Internal Billing": "Origin Internal Billing",
            "Origin Managed For Payment Plan Adherence": "Origin Managed For Payment Plan Adherence",
            "OZ–EI&T": "OZ–EI&T",
            "OZ–RPM": "OZ–RPM",
            "OZ–SIG": "OZ–SIG",
            "Pathways HS Re-Entry": "Pathways HS Re-Entry",
            "Payment Difficulty": "Payment Difficulty",
            "Payment Plan Remediation": "Payment Plan Remediation",
            "Payment Remediation Investigation": "Payment Remediation Investigation",
            "Platinum": "Platinum",
            "Post Bankruptcy": "Post Bankruptcy",
            "Potential Privacy Incident": "Potential Privacy Incident",
            "Pre Litigation": "Pre Litigation",
            "PrivacyInc": "PrivacyInc",
            "Privacy Incident": "Privacy Incident",
            "Removed Unmetered Appliance - Air conditioning": "Removed Unmetered Appliance - Air conditioning",
            "Removed Unmetered Appliance - Cooktop": "Removed Unmetered Appliance - Cooktop",
            "Removed Unmetered Appliance - Heater": "Removed Unmetered Appliance - Heater",
            "Removed Unmetered Appliance - Temporary": "Removed Unmetered Appliance - Temporary",
            "Resi Calls to CT9": "Resi Calls to CT9",
            "Restricted Postcode": "Restricted Postcode",
            "Return Mail": "Return Mail",
            "SA EBR Backdated Q1": "SA EBR Backdated Q1",
            "SA EBR Backdated Q2": "SA EBR Backdated Q2",
            "SA EBR Backdated Q3": "SA EBR Backdated Q3",
            "SA EBR Backdated Q4": "SA EBR Backdated Q4",
            "SAP Finance Remediation Shell Account": "SAP Finance Remediation Shell Account",
            "Sensitive Account Investigation": "Sensitive Account Investigation",
            "Sensitive Cx Routing": "Sensitive Cx Routing",
            "Sensitive Unresolved PCM": "Sensitive Unresolved PCM",
            "Shell Account": "Shell Account",
            "Solar for low income": "Solar for low income",
            "Solar Non-Energy": "Solar Non-Energy",
            "Strata/Body Corporate": "Strata/Body Corporate",
            "Strata Managed Site": "Strata Managed Site",
            "STTP Applied": "STTP Applied",
            "STTP Comms Sent": "STTP Comms Sent",
            "Suppress Migration Comms": "Suppress Migration Comms",
            "Suspected Fraud Account": "Suspected Fraud Account",
            "Suspected Fraud - Under Investigation": "Suspected Fraud - Under Investigation",
            "Suspicious Account Activities": "Suspicious Account Activities",
            "Tactical Campaign": "Tactical Campaign",
            "Tactical Credit Campaign": "Tactical Credit Campaign",
            "Tailored Engagement Sensitive": "Tailored Engagement Sensitive",
            "Tenure: 10+ Years": "Tenure: 10+ Years",
            "Tenure: 1-2 years": "Tenure: 1-2 years",
            "Tenure: < 1 Year": "Tenure: < 1 Year",
            "Tenure: 2-5 years": "Tenure: 2-5 years",
            "Tenure: 5-7 Years": "Tenure: 5-7 Years",
            "Tenure: 7-10 Years": "Tenure: 7-10 Years",
            "VC Address Issue": "VC Address Issue",
            "VC CES New Building": "VC CES New Building",
            "VC CM Investigation Required": "VC CM Investigation Required",
            "VC Customer Contact Required": "VC Customer Contact Required",
            "VC Deemed Contract": "VC Deemed Contract",
            "VC/DNP Account closed via DNP Process": "VC/DNP Account closed via DNP Process",
            "VC Exception Category": "VC Exception Category",
            "VC Failed Disconnection": "VC Failed Disconnection",
            "Vc Known Customer": "Vc Known Customer",
            "VC Known Cx - VC BAU": "VC Known Cx - VC BAU",
            "VC Life Support / Sensitive Load": "VC Life Support / Sensitive Load",
            "VC Meter Removed": "VC Meter Removed",
            "VC MS BAU": "VC MS BAU",
            "VC MSBG Site Flag": "VC MSBG Site Flag",
            "VC Pending Disconnection": "VC Pending Disconnection",
            "VC Pending Reconnection": "VC Pending Reconnection",
            "VC Potential Illegal Reconnection": "VC Potential Illegal Reconnection",
            "VC RTS": "VC RTS",
            "VC SME Pause": "VC SME Pause",
            "VC Supply Disconnected": "VC Supply Disconnected",
            "VC Unable To Validate Move Out": "VC Unable To Validate Move Out",
            "VC Unmetered Supply": "VC Unmetered Supply",
            "Vendor Account": "Vendor Account",
            "Vic Group Homes": "Vic Group Homes",
            "Vic Group Homes FY22-23": "Vic Group Homes FY22-23",
            "Vic Group Homes FY23-24": "Vic Group Homes FY23-24",
            "Vic Group Homes FY24-25": "Vic Group Homes FY24-25",
            "Vic Group Homes FY25-26": "Vic Group Homes FY25-26",
            "Vic Group Homes FY26-27": "Vic Group Homes FY26-27",
            "VIC Tailored Assistance": "VIC Tailored Assistance",
            "VIP": "VIP",
            "Volume Boundary Meter (VBM)": "Volume Boundary Meter (VBM)",
            "VPP Battery": "VPP Battery",
            "VPP Battery - EOI": "VPP Battery - EOI",
            "VPP Beta Trial": "VPP Beta Trial",
            "VPP Community Battery": "VPP Community Battery",
            "VPP Community Battery - Battery NMI": "VPP Community Battery - Battery NMI",
            "VPP Controlled Load Overnight": "VPP Controlled Load Overnight",
            "VPP Controlled Load Solar": "VPP Controlled Load Solar",
            "VPP Controlled Load Time Clock": "VPP Controlled Load Time Clock",
            "VPP Controlled Load Usage": "VPP Controlled Load Usage",
            "VPP ESaaS": "VPP ESaaS",
            "VPP ESaaS - Eligible": "VPP ESaaS - Eligible",
            "VPP EV Power Up": "VPP EV Power Up",
            "VPP EV Power Up - EOI": "VPP EV Power Up - EOI",
            "VPP Spike": "VPP Spike",
            "WA Billing Redirection": "WA Billing Redirection",
            "WINconnect Agency Billing Account": "WINconnect Agency Billing Account",
            "WINconnect Cold Water Recovery": "WINconnect Cold Water Recovery",
            "WINconnect Migrated Account": "WINconnect Migrated Account",
            "Withdrawn Account NEBR 25 Exclude": "Withdrawn Account NEBR 25 Exclude",
            "Withdrawn Account NEBR FY25-26 Exclude": "Withdrawn Account NEBR FY25-26 Exclude",
            "Writeoff SAP": "Writeoff SAP",
            "": "",
            "None": "None"
          },
          "deprecated": true,
          "x-use-instead": "slug"
        },
        "campaign_note": {
          "type": [
            "string",
            "null"
          ],
          "default": "",
          "description": "<p>This will create an account note, and will link to it from the account campaign.</p>"
        },
        "expiry_date": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>The end date after which the account will no longer be associated with this campaign.</p>"
        },
        "slug": {
          "enum": [
            "2_or_more_broken_plans",
            "2_or_more_payment_plans",
            "360_days_overdue_account",
            "account_password",
            "active_dca_campaign_sensitive",
            "aggregator_sms",
            "annual_ces_plp_credit",
            "asylum_seeker",
            "auto_solar_refund",
            "bankruptcy_insolvency",
            "billing-remediation_temp",
            "bldr_multisite_child",
            "bldr_multisite_lead",
            "oz_bpay_conflict",
            "builders_remediation",
            "business_calls_to_ct2",
            "business_managed",
            "business_starter_bonus",
            "business_starter_bonus_6m",
            "buyback_requested",
            "centrepay_business_approved",
            "centrepay_handback",
            "centrepay_handback_initiated",
            "centrepay_handback_rejected",
            "centrepay_ineligible_account_reviewed",
            "centrepay_ineligible_for_sa_handback",
            "centrepay_remediation",
            "cpay_issue",
            "centrepay_ucm_remediation",
            "ces_commercial_annuity_plan",
            "ces_commercial_profit_share",
            "ces_origin_billing_agent",
            "chi_opt_out",
            "collective_payment_arrangement",
            "concession_inv",
            "confirmed_illegal_reconnection",
            "cpay_complaint_exclusion",
            "cral",
            "cr_db_refused",
            "credit_campaign",
            "credit_care_management",
            "cr_db_transfer",
            "credit_dispute",
            "credit_settlement_campaign",
            "credit_tactical_routing",
            "customer_internet",
            "debt_waiver_under_assessment",
            "default_listing",
            "default_listing_creditor_watch",
            "delayed_rebill",
            "dhs_migrated_concession",
            "direct_calls_to_credit",
            "disconnection-hold",
            "disc_so_pending_exclude_from_collections_campaigns",
            "dnp_assessment",
            "dnp_db_letter",
            "dnp_exception_category",
            "dnp_failed_disconnection",
            "dnp_field_visit_requested",
            "dnp_fv_letter",
            "dnp_manual_be_review_required",
            "dnp_prevention",
            "dnp_so_esco",
            "dnp_warning_best_endeavors",
            "dn_so_issue",
            "downtier",
            "dunning-deferral",
            "ebr_2025_payment_exception",
            "ebr_act_eligible_churn",
            "ebr_act_eligible_move",
            "ebr_business_exclude",
            "ebr_business_exclude_fy25",
            "ebr_business_exclude_fy26",
            "ebr_business_include",
            "ebr_business_include_fy25",
            "ebr_business_include_fy26",
            "ebr_fer_180",
            "ebr_fer_20",
            "ebr_payment_investigation",
            "ebr_ser",
            "flex_eft",
            "ehh_energy_happy_day",
            "ehh_ineligible_basic_meter",
            "e-mobility_shell_account_for_charging_reimbursement",
            "energy_happy_day",
            "ezp",
            "e_sp_oz",
            "ev_overnight",
            "expected_generation_billing",
            "fdv_p1",
            "fv_account_issue",
            "fv_escalateddebt",
            "field_visit_requested_escalated_debt",
            "fv_rts",
            "final-account",
            "flexmigrated",
            "gold",
            "non_engagement_hardship",
            "high_risk_debt",
            "billholddnp",
            "hs_fdv_non_engagement_pathway",
            "hs_team",
            "hs_trial",
            "increasing_risk",
            "intent_to_default",
            "internet_account",
            "issuance_migrated",
            "legal_review",
            "litigation",
            "litigation_disconnection",
            "loyalty_ineligibile_no_email",
            "ls_alternate_contact",
            "master-sub_meter",
            "monthly_billing_applied",
            "monthly_billing_comms_sent",
            "ms_acommodation",
            "ms_administrative__support_services",
            "ms_agriculture_forestry_fishing",
            "ms_allocation",
            "ms_arts_recreation_services",
            "ms_aveo",
            "msbg_council_gst",
            "msbg_councils",
            "msbg_government",
            "msbg_multisite",
            "msbg_nsw_govt",
            "msbg_stratas",
            "msbg_telco",
            "ms_broker",
            "ms_communities",
            "ms_construction",
            "ms_councils_lga",
            "ms_education_training",
            "ms_portal",
            "ms_financial_insurance_services",
            "ms_food_services",
            "ms_health_care_insurance_services",
            "ms_information_media_telecommunications",
            "ms_manufacturing",
            "ms_mining",
            "ms_pa",
            "ms_professional_techincal_services",
            "ms_public_admin_safety",
            "ms_rental_hiring_real_estate_services",
            "ms_transport_postal_housing",
            "msbg_ums",
            "ms_utilities",
            "ms_wholesale_trade_retail",
            "natural_disaster_postcode",
            "nebr25_q1_eligible",
            "nebr25_q2_eligible",
            "nebr25_q3_eligible",
            "nebr25_q4_eligible",
            "nebr26_q1_eligible",
            "nebr26_q2_eligible",
            "nebr26_q3_eligible",
            "nebr265_q4_eligible",
            "needs_medical_confirmation",
            "new_connections_managed",
            "no_comms",
            "no_cost_meter",
            "non_solar_non_energy",
            "no_permission_for_cces",
            "nsw_debt_relief_trial",
            "nsw_debt_relief_trial_disengaged",
            "nsw_debt_relief_trial-participating",
            "ongoing_usage_requires_increase",
            "originbusinesssteady",
            "origin_internal_billing",
            "origin_managed_for_pp_adherence",
            "energy_intensive_technology",
            "retail_property_manufacturing",
            "services_infrastructure_government",
            "pathways_hs_re_entry",
            "payment_difficulty",
            "payment_plan_remediation",
            "payment_remediation_investigation",
            "platinum",
            "post_bankruptcy",
            "potential_privacy_incident",
            "pre_litigation",
            "privacyinc",
            "privacy_incident",
            "uma_removed_air_conditioning",
            "uma_removed_cooktop",
            "uma_removed_heater",
            "uma_removed_temp",
            "resi_calls_to_ct9",
            "restricted_postcode",
            "return_mail",
            "sa_ebr_backdated_q1",
            "sa_ebr_backdated_q2",
            "sa_ebr_backdated_q3",
            "sa_ebr_backdated_q4",
            "sap_finance_remediation",
            "sensitive_account_investigation",
            "sensitive_cx_routing",
            "sensitive_unresolved_pcm",
            "shell_account",
            "solar_low_income",
            "solar_non_energy",
            "strata_bc",
            "strata_manage",
            "sttp_applied",
            "sttp_comms_sent",
            "suppress_migration_comms",
            "suspected_fraud_account",
            "suspected_fraud_under_investigation",
            "suspicious_account_activities",
            "tactical_campaign",
            "tactical_credit_campaign",
            "tailored_engagement_sensitive",
            "tenure_10",
            "tenuret1-2yrs",
            "tenurelessthanyr",
            "tenure_2-5",
            "tenure_5-7",
            "tenure_7-10",
            "vc_address_issue",
            "vc_ces_new_building",
            "vc_cm_investigation_required",
            "vc_customer_contact_required",
            "vc_deemed_contract",
            "vc_dnp_closed_account",
            "vc_exception_category",
            "vc_failed_disconnection",
            "vc_known_customer",
            "vc_known_cx_vc_bau",
            "vc_life_support_sensitive_load",
            "vc_meter_removed",
            "vc_ms_bau_confirmed",
            "vc_msbg_site_flag",
            "vc_pending_disconnection",
            "vc_pending_reconnection",
            "vc_potential_illegal_reconnection",
            "vc_rts",
            "vc_sme_pause",
            "vc_supply_disconnected",
            "vc_unable_to_validate_move_out",
            "vc_unmetered_supply",
            "vendor_account",
            "vic_group_homes",
            "vic_group_homes_22_23",
            "vic_group_homes_23_24",
            "vic_group_homes_24_25",
            "vic_group_homes_25_26",
            "vic_group_homes_26_27",
            "vic_tailored_assistance",
            "vip",
            "volume_boundary_meter",
            "vpp_battery",
            "vpp_battery_eoi",
            "vpp_beta_trial",
            "vpp_community_battery",
            "vpp_community_battery_battery_nmi",
            "vpp_controlled_load_overnight",
            "vpp_controlled_load_solar",
            "vpp_controlled_load_time_clock",
            "vpp_controlled_load_usage",
            "vpp_esaas",
            "vpp_esaas_eligible",
            "vpp_ev_power_up",
            "vpp_ev_power_up_eoi",
            "vpp_spike",
            "wa_billing_redirection",
            "winconnect_agency_billing_account",
            "winconnect_cold_water_recovery",
            "winconnect_migrated_account",
            "withdrawn_account_nebr_25_exclude",
            "withdrawn_account_nebr_fy25-26_exclude",
            "writeoff_sap",
            "",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "7e869f1e2feaadb5",
          "default": "",
          "description": "<p>The slug that identifies a campaign. Campaigns must already exist in Kraken.</p>",
          "x-enum-descriptions": {
            "2_or_more_broken_plans": "2 or more broken plans",
            "2_or_more_payment_plans": "2 or more payment plans",
            "360_days_overdue_account": "360 days overdue debt account",
            "account_password": "Account Password",
            "active_dca_campaign_sensitive": "Active DCA Campaign - Sensitive",
            "aggregator_sms": "Aggregator SMS",
            "annual_ces_plp_credit": "Annual CES PLP Credit",
            "asylum_seeker": "Asylum Seeker",
            "auto_solar_refund": "Auto Solar Refund",
            "bankruptcy_insolvency": "Bankruptcy / Insolvency",
            "billing-remediation_temp": "Billing Remediation - Temp",
            "bldr_multisite_child": "BLDR Multisite Child",
            "bldr_multisite_lead": "BLDR Multisite Lead",
            "oz_bpay_conflict": "BPAY Reference changed on Migration",
            "builders_remediation": "Builders Remediation",
            "business_calls_to_ct2": "Business Calls to CT2",
            "business_managed": "Business_Managed",
            "business_starter_bonus": "Business Starter Bonus",
            "business_starter_bonus_6m": "Business Starter Bonus +6M",
            "buyback_requested": "Buyback Requested",
            "centrepay_business_approved": "Centrepay Business Approved",
            "centrepay_handback": "Centrepay Handback",
            "centrepay_handback_initiated": "Centrepay Handback Initiated",
            "centrepay_handback_rejected": "Centrepay Handback Rejected",
            "centrepay_ineligible_account_reviewed": "Centrepay ineligible Account reviewed",
            "centrepay_ineligible_for_sa_handback": "Centrepay ineligible for SA handback",
            "centrepay_remediation": "Centrepay Remediation",
            "cpay_issue": "Centrepay Remediation Issue",
            "centrepay_ucm_remediation": "Centrepay UCM Remediation",
            "ces_commercial_annuity_plan": "CES - Commercial Annuity Plan",
            "ces_commercial_profit_share": "CES - Commercial Profit Share",
            "ces_origin_billing_agent": "CES - Origin as Billing Agent",
            "chi_opt_out": "CHI Opt Out",
            "collective_payment_arrangement": "Collective Payment Arrangement",
            "concession_inv": "Concession Invoicing",
            "confirmed_illegal_reconnection": "Confirmed Illegal Re-connection",
            "cpay_complaint_exclusion": "CPAY Complaint Exclusion",
            "cral": "CRAL",
            "cr_db_refused": "CR/DB Refused",
            "credit_campaign": "Credit Campaign",
            "credit_care_management": "Credit Case Management",
            "cr_db_transfer": "Credit Debit Transfer",
            "credit_dispute": "Credit Dispute",
            "credit_settlement_campaign": "Credit Settlement Campaign",
            "credit_tactical_routing": "Credit Tactical Routing",
            "customer_internet": "Customer - Internet",
            "debt_waiver_under_assessment": "Debt Waiver Under Assessment",
            "default_listing": "Default Listing",
            "default_listing_creditor_watch": "Default Listing - Creditor Watch",
            "delayed_rebill": "Delayed Rebill",
            "dhs_migrated_concession": "DHS Migrated Concession",
            "direct_calls_to_credit": "Direct Calls to Credit",
            "disconnection-hold": "Disconnection Hold",
            "disc_so_pending_exclude_from_collections_campaigns": "Disc SO Pending - exclude from collections campaigns",
            "dnp_assessment": "DNP Assessment",
            "dnp_db_letter": "DNP DB LETTER",
            "dnp_exception_category": "DNP Exception Category",
            "dnp_failed_disconnection": "DNP Failed Disconnection",
            "dnp_field_visit_requested": "DNP - Field Visit Requested",
            "dnp_fv_letter": "DNP FV LETTER",
            "dnp_manual_be_review_required": "DNP - Manual BE Review Required",
            "dnp_prevention": "DNP Prevention",
            "dnp_so_esco": "DNP SO Esco",
            "dnp_warning_best_endeavors": "DNP Warning & Best Endeavors",
            "dn_so_issue": "DN SO Issue",
            "downtier": "Downtier",
            "dunning-deferral": "Dunning Deferral",
            "ebr_2025_payment_exception": "EBR 2025 Payment Exception",
            "ebr_act_eligible_churn": "EBR ACT Eligible Churn",
            "ebr_act_eligible_move": "EBR ACT Eligible Move",
            "ebr_business_exclude": "EBR Business Exclude",
            "ebr_business_exclude_fy25": "EBR Business Exclude FY25",
            "ebr_business_exclude_fy26": "EBR Business Exclude FY26",
            "ebr_business_include": "EBR Business Include",
            "ebr_business_include_fy25": "EBR Business Include FY25",
            "ebr_business_include_fy26": "EBR Business Include FY26",
            "ebr_fer_180": "EBR FER - $180",
            "ebr_fer_20": "EBR FER - $20",
            "ebr_payment_investigation": "EBR payment investigation",
            "ebr_ser": "EBR - Senior Energy Rebate Recipient",
            "flex_eft": "EFT migration comms variant",
            "ehh_energy_happy_day": "EHH + Energy Happy Day",
            "ehh_ineligible_basic_meter": "EHH - Ineligible Basic Meter",
            "e-mobility_shell_account_for_charging_reimbursement": "E-mobility Shell Account for Charging Reimbursement",
            "energy_happy_day": "Energy Happy Day",
            "ezp": "EnergyZone Pro",
            "e_sp_oz": "E & SP Origin Zero",
            "ev_overnight": "EV Overnight",
            "expected_generation_billing": "Expected Generation Billing",
            "fdv_p1": "FDV P1",
            "fv_account_issue": "Field Visit Address Issue",
            "fv_escalateddebt": "Field visit requested - escalated debt",
            "field_visit_requested_escalated_debt": "Field visit requested - Ex-hardship",
            "fv_rts": "Field Visit Requested - Return Mail",
            "final-account": "Final Account",
            "flexmigrated": "FlexMigrated",
            "gold": "Gold",
            "non_engagement_hardship": "Hardship Non-Engagement Path",
            "high_risk_debt": "High Risk Debt",
            "billholddnp": "Hold Bill DNP",
            "hs_fdv_non_engagement_pathway": "HS FDV Non-Engagement Pathway",
            "hs_team": "HS Team",
            "hs_trial": "HS Trial",
            "increasing_risk": "Increasing Risk",
            "intent_to_default": "Intent to Default",
            "internet_account": "Internet Account",
            "issuance_migrated": "Issuance migrated",
            "legal_review": "Legal Review",
            "litigation": "Litigation",
            "litigation_disconnection": "Litigation_Disconnection",
            "loyalty_ineligibile_no_email": "Loyalty Reward Ineligible - No Email",
            "ls_alternate_contact": "LS Alternate Contact",
            "master-sub_meter": "Master-sub meter",
            "monthly_billing_applied": "Monthly Billing Applied",
            "monthly_billing_comms_sent": "Monthly Billing Comms Sent",
            "ms_acommodation": "MS Acommodation",
            "ms_administrative__support_services": "MS Admin & Support",
            "ms_agriculture_forestry_fishing": "MS Agriculture Forestry & Fishing",
            "ms_allocation": "MS Allocation",
            "ms_arts_recreation_services": "MS Arts & Recreation",
            "ms_aveo": "MS_Aveo",
            "msbg_council_gst": "MSBG - Council GST",
            "msbg_councils": "MSBG - Councils",
            "msbg_government": "MSBG - Government",
            "msbg_multisite": "MSBG - Multisite",
            "msbg_nsw_govt": "MSBG - NSW Govt",
            "msbg_stratas": "MSBG - Stratas",
            "msbg_telco": "MSBG - Telco",
            "ms_broker": "MS - Broker",
            "ms_communities": "MS Communities",
            "ms_construction": "MS Construction",
            "ms_councils_lga": "MS Councils LGA",
            "ms_education_training": "MS Education & Training",
            "ms_portal": "MS Energy Zone Access",
            "ms_financial_insurance_services": "MS Financial & Insurance",
            "ms_food_services": "MS Food Services",
            "ms_health_care_insurance_services": "MS Health Care & Insurance",
            "ms_information_media_telecommunications": "MS Info Media & Telco",
            "ms_manufacturing": "MS Manufacturing",
            "ms_mining": "MS Mining",
            "ms_pa": "MS_PA",
            "ms_professional_techincal_services": "MS Professional & Techincal",
            "ms_public_admin_safety": "MS Public Admin & Safety",
            "ms_rental_hiring_real_estate_services": "MS Rental Hiring & Real Estate",
            "ms_transport_postal_housing": "MS Transport Postal & Housing",
            "msbg_ums": "MS - UMS",
            "ms_utilities": "MS Utilities",
            "ms_wholesale_trade_retail": "MS Wholesale & Retail",
            "natural_disaster_postcode": "Natural Disaster Postcode",
            "nebr25_q1_eligible": "NEBR FY24-25 Q1 Include",
            "nebr25_q2_eligible": "NEBR FY24-25 Q2 Include",
            "nebr25_q3_eligible": "NEBR FY24-25 Q3 Include",
            "nebr25_q4_eligible": "NEBR FY24-25 Q4 Include",
            "nebr26_q1_eligible": "NEBR FY26 Q1 Include",
            "nebr26_q2_eligible": "NEBR FY26 Q2 Include",
            "nebr26_q3_eligible": "NEBR FY26 Q3 Include",
            "nebr265_q4_eligible": "NEBR FY26 Q4 Include",
            "needs_medical_confirmation": "Needs Medical Confirmation",
            "new_connections_managed": "New Connections - Managed",
            "no_comms": "No Comms",
            "no_cost_meter": "No Cost Meter",
            "non_solar_non_energy": "Non-Solar Non-Energy",
            "no_permission_for_cces": "No Permission for CCeS",
            "nsw_debt_relief_trial": "NSW Debt Relief Trial",
            "nsw_debt_relief_trial_disengaged": "NSW Debt Relief Trial - Disengaged",
            "nsw_debt_relief_trial-participating": "NSW Debt Relief Trial - Participating",
            "ongoing_usage_requires_increase": "Ongoing usage requires increase",
            "originbusinesssteady": "Origin Business Steady",
            "origin_internal_billing": "Origin Internal Billing",
            "origin_managed_for_pp_adherence": "Origin Managed For Payment Plan Adherence",
            "energy_intensive_technology": "OZ–EI&T",
            "retail_property_manufacturing": "OZ–RPM",
            "services_infrastructure_government": "OZ–SIG",
            "pathways_hs_re_entry": "Pathways HS Re-Entry",
            "payment_difficulty": "Payment Difficulty",
            "payment_plan_remediation": "Payment Plan Remediation",
            "payment_remediation_investigation": "Payment Remediation Investigation",
            "platinum": "Platinum",
            "post_bankruptcy": "Post Bankruptcy",
            "potential_privacy_incident": "Potential Privacy Incident",
            "pre_litigation": "Pre Litigation",
            "privacyinc": "PrivacyInc",
            "privacy_incident": "Privacy Incident",
            "uma_removed_air_conditioning": "Removed Unmetered Appliance - Air conditioning",
            "uma_removed_cooktop": "Removed Unmetered Appliance - Cooktop",
            "uma_removed_heater": "Removed Unmetered Appliance - Heater",
            "uma_removed_temp": "Removed Unmetered Appliance - Temporary",
            "resi_calls_to_ct9": "Resi Calls to CT9",
            "restricted_postcode": "Restricted Postcode",
            "return_mail": "Return Mail",
            "sa_ebr_backdated_q1": "SA EBR Backdated Q1",
            "sa_ebr_backdated_q2": "SA EBR Backdated Q2",
            "sa_ebr_backdated_q3": "SA EBR Backdated Q3",
            "sa_ebr_backdated_q4": "SA EBR Backdated Q4",
            "sap_finance_remediation": "SAP Finance Remediation Shell Account",
            "sensitive_account_investigation": "Sensitive Account Investigation",
            "sensitive_cx_routing": "Sensitive Cx Routing",
            "sensitive_unresolved_pcm": "Sensitive Unresolved PCM",
            "shell_account": "Shell Account",
            "solar_low_income": "Solar for low income",
            "solar_non_energy": "Solar Non-Energy",
            "strata_bc": "Strata/Body Corporate",
            "strata_manage": "Strata Managed Site",
            "sttp_applied": "STTP Applied",
            "sttp_comms_sent": "STTP Comms Sent",
            "suppress_migration_comms": "Suppress Migration Comms",
            "suspected_fraud_account": "Suspected Fraud Account",
            "suspected_fraud_under_investigation": "Suspected Fraud - Under Investigation",
            "suspicious_account_activities": "Suspicious Account Activities",
            "tactical_campaign": "Tactical Campaign",
            "tactical_credit_campaign": "Tactical Credit Campaign",
            "tailored_engagement_sensitive": "Tailored Engagement Sensitive",
            "tenure_10": "Tenure: 10+ Years",
            "tenuret1-2yrs": "Tenure: 1-2 years",
            "tenurelessthanyr": "Tenure: < 1 Year",
            "tenure_2-5": "Tenure: 2-5 years",
            "tenure_5-7": "Tenure: 5-7 Years",
            "tenure_7-10": "Tenure: 7-10 Years",
            "vc_address_issue": "VC Address Issue",
            "vc_ces_new_building": "VC CES New Building",
            "vc_cm_investigation_required": "VC CM Investigation Required",
            "vc_customer_contact_required": "VC Customer Contact Required",
            "vc_deemed_contract": "VC Deemed Contract",
            "vc_dnp_closed_account": "VC/DNP Account closed via DNP Process",
            "vc_exception_category": "VC Exception Category",
            "vc_failed_disconnection": "VC Failed Disconnection",
            "vc_known_customer": "Vc Known Customer",
            "vc_known_cx_vc_bau": "VC Known Cx - VC BAU",
            "vc_life_support_sensitive_load": "VC Life Support / Sensitive Load",
            "vc_meter_removed": "VC Meter Removed",
            "vc_ms_bau_confirmed": "VC MS BAU",
            "vc_msbg_site_flag": "VC MSBG Site Flag",
            "vc_pending_disconnection": "VC Pending Disconnection",
            "vc_pending_reconnection": "VC Pending Reconnection",
            "vc_potential_illegal_reconnection": "VC Potential Illegal Reconnection",
            "vc_rts": "VC RTS",
            "vc_sme_pause": "VC SME Pause",
            "vc_supply_disconnected": "VC Supply Disconnected",
            "vc_unable_to_validate_move_out": "VC Unable To Validate Move Out",
            "vc_unmetered_supply": "VC Unmetered Supply",
            "vendor_account": "Vendor Account",
            "vic_group_homes": "Vic Group Homes",
            "vic_group_homes_22_23": "Vic Group Homes FY22-23",
            "vic_group_homes_23_24": "Vic Group Homes FY23-24",
            "vic_group_homes_24_25": "Vic Group Homes FY24-25",
            "vic_group_homes_25_26": "Vic Group Homes FY25-26",
            "vic_group_homes_26_27": "Vic Group Homes FY26-27",
            "vic_tailored_assistance": "VIC Tailored Assistance",
            "vip": "VIP",
            "volume_boundary_meter": "Volume Boundary Meter (VBM)",
            "vpp_battery": "VPP Battery",
            "vpp_battery_eoi": "VPP Battery - EOI",
            "vpp_beta_trial": "VPP Beta Trial",
            "vpp_community_battery": "VPP Community Battery",
            "vpp_community_battery_battery_nmi": "VPP Community Battery - Battery NMI",
            "vpp_controlled_load_overnight": "VPP Controlled Load Overnight",
            "vpp_controlled_load_solar": "VPP Controlled Load Solar",
            "vpp_controlled_load_time_clock": "VPP Controlled Load Time Clock",
            "vpp_controlled_load_usage": "VPP Controlled Load Usage",
            "vpp_esaas": "VPP ESaaS",
            "vpp_esaas_eligible": "VPP ESaaS - Eligible",
            "vpp_ev_power_up": "VPP EV Power Up",
            "vpp_ev_power_up_eoi": "VPP EV Power Up - EOI",
            "vpp_spike": "VPP Spike",
            "wa_billing_redirection": "WA Billing Redirection",
            "winconnect_agency_billing_account": "WINconnect Agency Billing Account",
            "winconnect_cold_water_recovery": "WINconnect Cold Water Recovery",
            "winconnect_migrated_account": "WINconnect Migrated Account",
            "withdrawn_account_nebr_25_exclude": "Withdrawn Account NEBR 25 Exclude",
            "withdrawn_account_nebr_fy25-26_exclude": "Withdrawn Account NEBR FY25-26 Exclude",
            "writeoff_sap": "Writeoff SAP",
            "": "",
            "None": "None"
          }
        },
        "start_date": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>The start date for when the account will be associated to this campaign.</p>"
        }
      },
      "x-validators": [
        {
          "name": "Validate campaign name or slug provided",
          "description": "Validate that a campaign name or slug is provided in the payload.",
          "possible_errors": [
            "campaign_name_and_slug_provided",
            "campaign_name_or_slug_not_provided"
          ]
        },
        {
          "name": "Validate campaign exists",
          "description": "Validates that a campaign passed in the payload exists in Kraken.",
          "possible_errors": [
            "campaign_not_found"
          ]
        },
        {
          "name": "Validate <code>⁨expiry_date⁩</code> not before or equal to <code>⁨start_date⁩</code>",
          "description": "Validates that <code>⁨expiry_date⁩</code>, if given, is strictly later than ⁨start_date⁩.",
          "possible_errors": [
            "start_date_same_as_end_date"
          ]
        }
      ]
    },
    "AccountConsent": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string",
          "description": "<p>A description of any additional details about the obtaining of this consent.</p>",
          "maxLength": 255
        },
        "signed_at": {
          "type": "string",
          "format": "date-time",
          "description": "<p>The date and time the consent was signed. Defaults to now if not provided.</p>",
          "x-validators": [
            {
              "name": "Validate <code>⁨signed_at⁩</code> not in the future",
              "description": "Validates that the given <code>⁨signed_at⁩</code> is not in the future.",
              "possible_errors": [
                "date_in_future"
              ]
            }
          ]
        },
        "type": {
          "x-spec-enum-id": "4f53cda18c2baa0c",
          "description": "<p>The consent type.</p>",
          "x-comment": "Choices for this field are dynamic, once appropriate values have been configured they will be rendered here."
        },
        "value": {
          "enum": [
            "ACCEPTED",
            "REJECTED",
            "UNKNOWN",
            "PENDING"
          ],
          "type": "string",
          "x-spec-enum-id": "f72b73bd6917b6e4",
          "description": "<p>The value for this consent type.</p>",
          "x-enum-descriptions": {
            "ACCEPTED": "ACCEPTED",
            "REJECTED": "REJECTED",
            "UNKNOWN": "UNKNOWN",
            "PENDING": "PENDING"
          }
        }
      },
      "required": [
        "type",
        "value"
      ]
    },
    "AccountContract": {
      "type": "object",
      "properties": {
        "identifier": {
          "type": "string",
          "description": "<p>The contract's unique identifier.</p>",
          "x-validators": [
            {
              "name": "Validates that a contract with the given identifier does not exist",
              "description": "Validates that there is not an existing contract in Kraken with the same identifier provided in the payload.",
              "possible_errors": [
                "contract_with_identifier_exists"
              ]
            }
          ]
        },
        "sales_record": {
          "allOf": [
            {
              "$ref": "#/$defs/ContractSalesRecord"
            }
          ],
          "description": "<p>Sales record details about the contract.</p>"
        },
        "signed_at_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The date on which the contract was signed.</p>"
        },
        "valid_from_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The date from which the contract is valid. This is an inclusive date. Example: If <code>valid_from</code> is October 1, 2024, then the contract is valid on October 1, 2024 and following dates.</p>"
        },
        "valid_to_date": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>The date on which the contract expires. This is an exclusive date. Example: If <code>valid_to</code> is October 1, 2025, then the contract is not valid on October 1, 2025 or following dates.</p>"
        },
        "versions": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/ContractVersion"
          },
          "description": "<p> The versions of this contract, each version is a collection of terms and the date they are applicable. Only two versions can be provided, one which starts on the same date as the contract is valid from and one other future dated version to be scheduled.</p>",
          "maxItems": 2
        }
      },
      "required": [
        "identifier",
        "signed_at_date",
        "valid_from_date"
      ],
      "x-validators": [
        {
          "name": "Validate that contract versions include a version for the current terms",
          "description": "Validate that the earliest version in the list of contract versions provided has an <code>applicable_at_date</code> that is equal to the contract <code>valid_from_date</code>.",
          "possible_errors": [
            "contract_versions_does_not_include_current"
          ]
        }
      ]
    },
    "AccountPortfolio": {
      "type": "object",
      "properties": {
        "billing_name": {
          "type": "string",
          "description": "<p>Optional billing name to be used on the account. If provided, it will be used for producing statements. If not, the customer names will be used.</p>",
          "maxLength": 510
        },
        "notes": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Note"
          },
          "description": "<p>List of notes that should be applied at the portfolio level instead of the individual account.</p>"
        },
        "portfolio_references": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/PortfolioReference"
          },
          "description": "<p>List of references to the portfolio that this account belongs to.</p>"
        },
        "portfolio_settings": {
          "allOf": [
            {
              "$ref": "#/$defs/PortfolioSettings"
            }
          ],
          "description": "<p>This object allows for setting portfolio settings during data migration. This object is only available where the <code>is_portfolio_lead</code> flag is true. Any other account type will fail validation.</p>"
        }
      },
      "x-validators": [
        {
          "name": "Validate portfolio reference provided correctly",
          "description": "Validate that a portfolio reference is provided if portfolio settings have been provided and that a portfolio reference is not provided if the import supplier is set to create new portfolios.",
          "possible_errors": [
            "portfolio_references_missing",
            "portfolio_references_provided"
          ]
        },
        {
          "name": "Validate no duplicate portfolio reference namespaces",
          "description": "Validate that there are no duplicate portfolio reference namespaces in the payload.",
          "possible_errors": [
            "duplicate_portfolio_references"
          ]
        }
      ]
    },
    "AccountPortfolioRequiredPortfolioReference": {
      "type": "object",
      "properties": {
        "billing_name": {
          "type": "string",
          "description": "<p>Optional billing name to be used on the account. If provided, it will be used for producing statements. If not, the customer names will be used.</p>",
          "maxLength": 510
        },
        "notes": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Note"
          },
          "description": "<p>List of notes that should be applied at the portfolio level instead of the individual account.</p>"
        },
        "portfolio_references": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/PortfolioReference"
          },
          "description": "<p>List of references to the portfolio that this account belongs to.</p>",
          "minItems": 1
        },
        "portfolio_settings": {
          "allOf": [
            {
              "$ref": "#/$defs/PortfolioSettings"
            }
          ],
          "description": "<p>This object allows for setting portfolio settings during data migration. This object is only available where the <code>is_portfolio_lead</code> flag is true. Any other account type will fail validation.</p>"
        }
      },
      "required": [
        "portfolio_references"
      ],
      "x-validators": [
        {
          "name": "Validate portfolio reference provided correctly",
          "description": "Validate that a portfolio reference is provided if portfolio settings have been provided and that a portfolio reference is not provided if the import supplier is set to create new portfolios.",
          "possible_errors": [
            "portfolio_references_missing",
            "portfolio_references_provided"
          ]
        },
        {
          "name": "Validate no duplicate portfolio reference namespaces",
          "description": "Validate that there are no duplicate portfolio reference namespaces in the payload.",
          "possible_errors": [
            "duplicate_portfolio_references"
          ]
        }
      ]
    },
    "AccountReference": {
      "type": "object",
      "properties": {
        "namespace": {
          "type": "string",
          "description": "<p>The namespace refers to the particular context the reference exists in. For example, <code>tentacle-energy.allpay-client-reference-numbers</code>.</p>",
          "maxLength": 50,
          "x-validators": [
            {
              "name": "Validate account reference namespace",
              "description": "Validate that the account reference namespace matches an available account reference namespace in Kraken.",
              "possible_errors": [
                "invalid_reference_namespace"
              ]
            }
          ]
        },
        "value": {
          "type": "string",
          "description": "<p>The unique identifier for the account.</p>",
          "maxLength": 100
        }
      },
      "required": [
        "namespace",
        "value"
      ],
      "x-validators": [
        {
          "name": "Validate account reference does not already exist",
          "description": "Validate that the account reference does not already exist for any account in Kraken.",
          "possible_errors": [
            "reference_already_exists"
          ]
        }
      ]
    },
    "AgedDebt": {
      "type": "object",
      "properties": {
        "debt_amount": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,8}(?:\\.\\d{0,2})?$",
          "description": "<p>The amount of the aged debt.</p>"
        },
        "due_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The date on which the aged debt is due.</p>"
        }
      }
    },
    "AgreementIntermediaryDetails": {
      "type": "object",
      "properties": {
        "external_id": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p>An external identifier for the intermediary relationship. This can be used to store a reference to this relationship in an external system (e.g., the source system during migration).</p>",
          "maxLength": 255
        },
        "portfolio_number": {
          "type": "string",
          "description": "<p>The number of the intermediary portfolio to link this agreement to. The portfolio must exist before creating the agreement.</p>",
          "x-validators": [
            {
              "name": "Validate the portfolio number",
              "description": "Validate that the portfolio number matches the expected format (P- followed by 8 uppercase alphanumeric characters).",
              "possible_errors": [
                "invalid_portfolio_number"
              ]
            }
          ]
        }
      },
      "required": [
        "portfolio_number"
      ]
    },
    "AusAccountBillingOptions": {
      "type": "object",
      "properties": {
        "period_length": {
          "enum": [
            "MONTHLY",
            "QUARTERLY",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "8c93f45b27bbc5df",
          "description": "<p>The length of the billing period.</p>",
          "x-enum-descriptions": {
            "MONTHLY": "Monthly",
            "QUARTERLY": "Quarterly",
            "None": "None"
          }
        },
        "period_length_multiplier": {
          "type": [
            "integer",
            "null"
          ],
          "description": "<p>The multiplier for the billing period length. The period length gets multiplied by this value to get a variation of the period length for fixed billing. E.g. If the period length is monthly and the multiplier is 2, the account will be billed every 2 months.</p>"
        },
        "period_start_day": {
          "type": [
            "integer",
            "null"
          ],
          "maximum": 28,
          "minimum": 1,
          "description": "<p>The day of the month on which the billing period starts.</p>"
        },
        "period_start_month": {
          "type": [
            "integer",
            "null"
          ],
          "maximum": 12,
          "minimum": 1,
          "description": "<p>The month in which the billing period starts.</p>"
        },
        "use_industry_billing": {
          "type": "boolean",
          "description": "<p>Whether Kraken should rely on industry data to trigger billing or (if false) it should trigger it itself.</p>"
        }
      },
      "x-validators": [
        {
          "name": "Validate industry billing or period provided",
          "description": "Validates that either industry billing is being used or the billing period start day and length is being provided.",
          "possible_errors": [
            "account_billing_options_industry_billing_with_period_data",
            "account_billing_options_period_data_required"
          ]
        },
        {
          "name": "Validate period length and period start month for account billing options",
          "description": "Validate that period start month is provided when using QUARTERLY period length or for NON quarterly with period length multiplier > 1",
          "possible_errors": [
            "account_billing_options_period_start_month_required"
          ]
        }
      ]
    },
    "AusAccountEvent": {
      "type": "object",
      "properties": {
        "category": {
          "enum": [
            "communications"
          ],
          "type": "string",
          "x-spec-enum-id": "c4304107a158d80a",
          "description": "<p>Category of the account event. For example <code>communications</code>.</p>",
          "x-enum-descriptions": {
            "communications": "communications"
          }
        },
        "description": {
          "type": "string",
          "description": "<p>Description of the account event.</p>"
        },
        "event_type": {
          "enum": [
            "BEST_OFFER_CHECKED_IN_SAP",
            "MIXED_COMMS_PREF_IN_SAP",
            "PRICE_CHANGE_SENT_IN_SAP",
            "SHARED_EMAIL_7",
            "SUPPRESS_MIGRATION_COMMS"
          ],
          "type": "string",
          "x-spec-enum-id": "7a4853a98d6d4091",
          "description": "<p>The type of the account event. For example <code>EMAIL_SENT</code>.</p>",
          "x-enum-descriptions": {
            "BEST_OFFER_CHECKED_IN_SAP": "BEST_OFFER_CHECKED_IN_SAP",
            "MIXED_COMMS_PREF_IN_SAP": "MIXED_COMMS_PREF_IN_SAP",
            "PRICE_CHANGE_SENT_IN_SAP": "PRICE_CHANGE_SENT_IN_SAP",
            "SHARED_EMAIL_7": "SHARED_EMAIL_7",
            "SUPPRESS_MIGRATION_COMMS": "SUPPRESS_MIGRATION_COMMS"
          }
        },
        "occurred_at": {
          "type": "string",
          "format": "date-time",
          "description": "<p>When the account event occured at.</p>"
        },
        "subcategory": {
          "enum": [
            "best_offer",
            "mixed_comms_preference",
            "price_change",
            "migration_comms"
          ],
          "type": "string",
          "x-spec-enum-id": "dccf7f919c2ee78f",
          "description": "<p>Sub category of the account event. For example <code>best_offer</code>.</p>",
          "x-enum-descriptions": {
            "best_offer": "best_offer",
            "mixed_comms_preference": "mixed_comms_preference",
            "price_change": "price_change",
            "migration_comms": "migration_comms"
          }
        }
      },
      "required": [
        "category",
        "description",
        "event_type",
        "occurred_at",
        "subcategory"
      ],
      "x-validators": [
        {
          "name": "Validate category and subcategory",
          "description": "Validates that category and subcategory are valid for the given event type.",
          "possible_errors": [
            "invalid_event_category_combination",
            "invalid_event_subcategory_combination"
          ]
        }
      ]
    },
    "AusAgreement": {
      "type": "object",
      "properties": {
        "agreed_at": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time",
          "description": "<p>The datetime the agreement was agreed at.</p>"
        },
        "business_contract_identifier": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p>The identifier of the business contract this agreement should be linked to.</p>"
        },
        "characteristics": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/ProductCharacteristic"
          },
          "description": "<p>Characteristics of the agreed product that the customer has chosen.</p>",
          "x-validators": [
            {
              "name": "Validate that each child has unique values for the <code>⁨code⁩</code> field",
              "description": "Validate that each child has unique values for the <code>⁨code⁩</code> field.",
              "possible_errors": [
                "children_with_duplicate_values"
              ]
            }
          ]
        },
        "effective_from": {
          "type": "string",
          "format": "date",
          "description": "<p>The date from which the agreement is effective (inclusive), i.e. the agreement starts on the midnight of this date, such that this date becomes the first day covered by this agreement.</p>"
        },
        "effective_to": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>The date to which the agreement is effective (exclusive), i.e. the agreement will end on the midnight of this date, such that the previous day is the last day covered by this agreement.</p>"
        },
        "intermediary": {
          "allOf": [
            {
              "$ref": "#/$defs/AgreementIntermediaryDetails"
            }
          ],
          "description": "<p>Details about the intermediary relationship for this agreement. When provided, an intermediary link will be created between the agreement and the portfolio, establishing a business intermediary relationship.</p>"
        },
        "product_addons": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/AusAgreementAddOn"
          },
          "description": "<p>A list of product addons that apply to the specific agreement.</p>"
        },
        "rate_overrides": {
          "type": "object",
          "additionalProperties": {
            "type": "string",
            "format": "decimal",
            "pattern": "^-?\\d{0,10}(?:\\.\\d{0,5})?$"
          },
          "description": "<p>Agreement rate overrides.</p>"
        },
        "rates_agreed_at": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time",
          "description": "<p>The datetime the rates were agreed at.</p>"
        },
        "tariff_code": {
          "type": "string",
          "description": "<p>The code for the agreement tariff. Must match an existing tariff code of an active product.</p>",
          "x-validators": [
            {
              "name": "Validate product code exists",
              "description": "Validate that the product code exists in Kraken.",
              "possible_errors": [
                "product_code_does_not_exist"
              ]
            }
          ]
        }
      },
      "required": [
        "effective_from",
        "tariff_code"
      ],
      "x-validators": [
        {
          "name": "Validate <code>⁨effective_to⁩</code> not before <code>⁨effective_from⁩</code>",
          "description": "Validates that <code>⁨effective_to⁩</code>, if given, is on or later than <code>⁨effective_from⁩</code>.",
          "possible_errors": [
            "start_date_later_than_end_date"
          ]
        }
      ]
    },
    "AusAgreementAddOn": {
      "type": "object",
      "properties": {
        "code": {
          "type": "string",
          "description": "<p>Code for addon that must have been configured for the product in kraken.</p>",
          "x-validators": [
            {
              "name": "data-import--validation--contract-addon-has-valid-code--display-name",
              "description": "data-import--validation--contract-addon-has-valid-code--help-text",
              "possible_errors": [
                "addon_code_not_found"
              ]
            }
          ]
        }
      },
      "required": [
        "code"
      ]
    },
    "AusBillingAddress": {
      "type": "object",
      "properties": {
        "administrative_area": {
          "type": "string",
          "default": "",
          "description": "<p>The top-level administrative subdivision. For example a US state, Australian state/territory, Italian region, UK constituent nation or Japanese prefecture.</p>",
          "maxLength": 512
        },
        "country": {
          "type": "string",
          "description": "<p>The ISO 3166-1-alpha-2 code of the country that this address belongs to, for example AU (Australia) or GB (Great Britain).</p>",
          "maxLength": 2
        },
        "delivery_point_identifier": {
          "type": "string",
          "description": "<p>The unique country specific identifier for an address. For example the UPRN in the UK or G-NAF ID in Australia.</p>",
          "maxLength": 11,
          "x-validators": [
            {
              "name": "Validate delivery point identifier",
              "description": "Validate that the delivery point identifier contains only capital letters and numbers.",
              "possible_errors": [
                "invalid_delivery_point_identifier"
              ]
            }
          ]
        },
        "dependent_locality": {
          "type": "string",
          "default": "",
          "description": "<p>Dependent localities, neighbourhoods or boroughs. These are sometimes included in an address when the delivery point is outside the boundary of the main postal town that serves it.</p>",
          "maxLength": 512
        },
        "locality": {
          "type": "string",
          "default": "",
          "description": "<p>The city/town portion of an address. For example a US city, Australian suburb/town, Italian comune or UK postal town.</p>",
          "maxLength": 512
        },
        "name": {
          "type": "string",
          "default": "",
          "description": "<p>The recipient's name.</p>",
          "deprecated": true
        },
        "organization": {
          "type": "string",
          "default": "",
          "description": "<p>The company or organization to which the address belongs.</p>",
          "deprecated": true
        },
        "postal_code": {
          "type": "string",
          "default": "",
          "description": "<p>The code assigned to a geographical area representing a group of addresses. For example a US ZIP code, Australian postcode, Italian CAP code or UK postcode.</p>",
          "maxLength": 512
        },
        "sorting_code": {
          "type": "string",
          "default": "",
          "description": "<p>This is a non-geographic code used for recipients of large quantities of post, such as companies or government departments. An example is the French CEDEX code.</p>",
          "maxLength": 512
        },
        "street_address": {
          "type": "string",
          "default": "",
          "description": "<p>Free text field for the address. Either this field or the <code>structured_address</code> field should be provided, not both.</p>"
        },
        "structured_street_address": {
          "type": [
            "object",
            "null"
          ],
          "description": "<p>Structured address object. Fields for this object are territory dependent. Please speak to the tech team about uses of this field. Either this field or the <code>street_address</code> should be provided, not both.</p>"
        }
      },
      "required": [
        "country"
      ],
      "x-validators": [
        {
          "name": "Validate and normalize postcode",
          "description": "Validate the postal code and normalize it to a standard format.",
          "possible_errors": [
            "invalid_postcode"
          ]
        },
        {
          "name": "Validate address",
          "description": "Validate that the address is in the correct format.",
          "possible_errors": [
            "invalid_address"
          ]
        },
        {
          "name": "Validate required fields for Australian billing address",
          "description": "Validates that <code>locality</code>, <code>administrative_area</code> and <code>postal_code</code> are required for Australian billing address.",
          "possible_errors": [
            "field_required_for_aus_billing_address"
          ]
        }
      ]
    },
    "AusCharge": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "CHARGE",
            "PAYMENT",
            "REPAYMENT",
            "CREDIT",
            "SUPPLY_CHARGE"
          ],
          "type": "string",
          "x-spec-enum-id": "06d6aba5cee32f9a",
          "description": "<p>The type of the transaction.</p>",
          "x-enum-descriptions": {
            "CHARGE": "Charge",
            "PAYMENT": "Payment",
            "REPAYMENT": "Repayment",
            "CREDIT": "Credit",
            "SUPPLY_CHARGE": "Supply Charge"
          }
        },
        "amount": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,10}(?:\\.\\d{0,10})?$",
          "description": "<p>The amount of the transaction. e.g. if the customer has a consumption charge worth 23.43, this equates to a transaction of type <code>CHARGE</code> of 23.43. Payments and repayments must be positive numbers. Generally charges and credits are also positive, but may be negative to represent reversed charges or credits, or if an incorrect estimated reading has resulted in a negative consumption charge. Provide this amount in the currency's major unit rather than its minor unit (for example euros rather than cents, or pounds rather than pence). These examples are illustrative only; the same applies to any currency that has a major and minor unit. For currencies without a minor unit, such as the Japanese yen, pass the value as-is.</p>"
        },
        "billing_document_identifier": {
          "type": "string",
          "description": "<p>The identifier from the source system that groups a set of transactions together. This will be used in Kraken during the migration of historical statement transactions to create an archived billing document. For now this field is only required if <code>HISTORICAL_STATEMENT_REQUIRE_SINGLE_BILLING_DOCUMENT_IDENTIFIER</code> settings is ON and is meant for only <code>historical_statements_transactions</code>. Passing this to other transactions like <code>current_statement_transactions</code> or <code>transactions_in_open_settlement_period</code> will raise validation error.</p>"
        },
        "display_note": {
          "type": "string",
          "description": "<p>The customer-facing note that can be displayed in a statement or email to the customer.</p>"
        },
        "note": {
          "type": "string",
          "description": "<p>Any additional notes about the transaction.</p>"
        },
        "reason": {
          "type": "string",
          "description": "<p>The reason for the transaction.</p>"
        },
        "tax_items": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/TaxItem"
          },
          "description": "<p>For <code>SUPPLY_CHARGE</code> and <code>CHARGE</code> transactions only, tax items contain details about the tax. If not provided will be set to default zero tax.</p>"
        },
        "transaction_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The date of the transaction.</p>",
          "x-validators": [
            {
              "name": "Validate transaction date",
              "description": "Validates that the transaction date provided in the payload is not in the future.",
              "possible_errors": [
                "transaction_in_future"
              ]
            }
          ]
        },
        "transaction_id": {
          "type": "string",
          "description": "<p>The unique internal identifier for the transaction.</p>"
        }
      },
      "required": [
        "amount",
        "transaction_date",
        "transaction_id",
        "type"
      ]
    },
    "AusConcessionCard": {
      "type": "object",
      "properties": {
        "applies_from_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Applies from date.</p>"
        },
        "applies_to_date": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>Applies to date.</p>"
        },
        "card_expiry_date": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>Card expiry date.</p>"
        },
        "card_issue_date": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>Card issue date.</p>"
        },
        "card_number": {
          "type": "string",
          "description": "<p>It would be validated based on the card type.</p>",
          "maxLength": 30
        },
        "card_type": {
          "enum": [
            "CENTRELINK_PENSIONER",
            "CENTRELINK_HEALTH_CARE",
            "VETERANS_AFFAIRS_PENSIONER",
            "VETERANS_AFFAIRS_DVA_GOLD",
            "VETERANS_AFFAIRS_DVA_GOLD_WW",
            "VETERANS_AFFAIRS_DVA_GOLD_TPI",
            "VETERANS_AFFAIRS_DVA_GOLD_EDA",
            "QUEENSLAND_SENIORS_CARD",
            "ASYLUM_SEEKER",
            "OTHER",
            "SA_GENERIC",
            "REPATRIATION_HEALTH_CARE_CARD",
            "ACT_SERVICES_ACCESS_CARD_IMMI_CARD"
          ],
          "type": "string",
          "x-spec-enum-id": "73238433422ffb0b",
          "description": "<p>Concession card type.</p>",
          "x-enum-descriptions": {
            "CENTRELINK_PENSIONER": "Centrelink - Pensioner",
            "CENTRELINK_HEALTH_CARE": "Centrelink - Health Care",
            "VETERANS_AFFAIRS_PENSIONER": "Veterans Affairs - Pensioner",
            "VETERANS_AFFAIRS_DVA_GOLD": "Veterans Affairs - DVA Gold",
            "VETERANS_AFFAIRS_DVA_GOLD_WW": "Veterans Affairs - DVA Gold - WW",
            "VETERANS_AFFAIRS_DVA_GOLD_TPI": "Veterans Affairs - DVA Gold - TPI",
            "VETERANS_AFFAIRS_DVA_GOLD_EDA": "Veterans Affairs - DVA Gold - EDA",
            "QUEENSLAND_SENIORS_CARD": "Queensland Seniors Card",
            "ASYLUM_SEEKER": "Asylum Seeker",
            "OTHER": "Other - (no concessions apply)",
            "SA_GENERIC": "South Australia Concession",
            "REPATRIATION_HEALTH_CARE_CARD": "Repatriation Health Care Card",
            "ACT_SERVICES_ACCESS_CARD_IMMI_CARD": "ACT Services Access Card/ Immi Card"
          }
        },
        "last_validated_at": {
          "type": "string",
          "format": "date-time",
          "description": "<p>When the concession card validation occurred.</br>Note: if <code>last_validated_at</code> is not provided, <code>applies_from_date</code> is used as last validation date</p>"
        },
        "next_validation_date": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>When the concession card validation should run again. Defaults to 1 year into the future if <code>last_validated_at</code> is set and <code>next_validation_date</code> is not provided.</p>"
        },
        "validation_failure_reason": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p>Is required if the <code>validation_status</code> is <code>FAIL</code>. Can’t be longer that 255 characters.</p>",
          "maxLength": 255
        },
        "validation_source": {
          "enum": [
            "API",
            "BATCH",
            "MANUAL",
            "KRAKEN"
          ],
          "type": "string",
          "x-spec-enum-id": "df2c46f4ca8b6922",
          "description": "<p>Concession card validation source.</p>",
          "x-enum-descriptions": {
            "API": "API",
            "BATCH": "Batch",
            "MANUAL": "Manual",
            "KRAKEN": "Kraken"
          }
        },
        "validation_status": {
          "enum": [
            "PASS",
            "FAIL"
          ],
          "type": "string",
          "x-spec-enum-id": "a7ef9f84bdfa1f32",
          "description": "<p>Concession card validation status.</p>",
          "x-enum-descriptions": {
            "PASS": "Pass",
            "FAIL": "Fail"
          }
        }
      },
      "required": [
        "applies_from_date",
        "card_number",
        "card_type",
        "validation_source",
        "validation_status"
      ],
      "x-validators": [
        {
          "name": "Validate concession card dates",
          "description": "Validates that card expiry date should be greater than card issue date. Applies to date should be greater than the applies from date. Applies from date should be greater than card issue date. Card expiry date should be greater than the applies to date. Next validation date should be in the future",
          "possible_errors": [
            "invalid_concession_cards_dates"
          ]
        },
        {
          "name": "Validate validation failure reason required",
          "description": "Validates that validation failure reason required when validation status is FAIL",
          "possible_errors": [
            "validation_failure_reason_required"
          ]
        }
      ]
    },
    "AusCustomer": {
      "type": "object",
      "properties": {
        "account_roles": {
          "type": "array",
          "items": {
            "enum": [
              "EZ_CUSTOMER",
              "TRUSTEE_MAND",
              "MSP_USER",
              "BUSI_FINANCIALLY",
              "EZ_DFPP_RW",
              "NOMINATED_NONE",
              "ADMIN",
              "RECEIVES_SALES",
              "EZ_ADMIN",
              "LIFE_SUPPORT_CONTACT",
              "RECEIVES_DUNNING",
              "FLAGGED_LS",
              "RECEIVES_SERVICE",
              "NO_EMAIL",
              "MSBG_COMMS",
              "EZ_DFPP_RO",
              "TRUSTEE_BILL",
              "RECEIVES_INVOICES",
              "TRUSTEE_NONE",
              "RESI_SECONDARY",
              "BUSINESS_NO_COMMS",
              "NOMINATED_MAND",
              "MSBG_NO_COMMS",
              "BSP_USER",
              "OUTAGE_CONTACT",
              "NOMINATED_BILL",
              "EZ_BROKER",
              "TRUSTEE",
              "PRIMARY_NO_COMMS",
              "CDR_REPRESENTATIVE",
              "BUSINESS_COMMS"
            ],
            "type": "string",
            "description": "* `EZ_CUSTOMER` - EZ_CUSTOMER\n* `TRUSTEE_MAND` - TRUSTEE_MAND\n* `MSP_USER` - MSP_USER\n* `BUSI_FINANCIALLY` - BUSI_FINANCIALLY\n* `EZ_DFPP_RW` - EZ_DFPP_RW\n* `NOMINATED_NONE` - NOMINATED_NONE\n* `ADMIN` - ADMIN\n* `RECEIVES_SALES` - RECEIVES_SALES\n* `EZ_ADMIN` - EZ_ADMIN\n* `LIFE_SUPPORT_CONTACT` - LIFE_SUPPORT_CONTACT\n* `RECEIVES_DUNNING` - RECEIVES_DUNNING\n* `FLAGGED_LS` - FLAGGED_LS\n* `RECEIVES_SERVICE` - RECEIVES_SERVICE\n* `NO_EMAIL` - NO_EMAIL\n* `MSBG_COMMS` - MSBG_COMMS\n* `EZ_DFPP_RO` - EZ_DFPP_RO\n* `TRUSTEE_BILL` - TRUSTEE_BILL\n* `RECEIVES_INVOICES` - RECEIVES_INVOICES\n* `TRUSTEE_NONE` - TRUSTEE_NONE\n* `RESI_SECONDARY` - RESI_SECONDARY\n* `BUSINESS_NO_COMMS` - BUSINESS_NO_COMMS\n* `NOMINATED_MAND` - NOMINATED_MAND\n* `MSBG_NO_COMMS` - MSBG_NO_COMMS\n* `BSP_USER` - BSP_USER\n* `OUTAGE_CONTACT` - OUTAGE_CONTACT\n* `NOMINATED_BILL` - NOMINATED_BILL\n* `EZ_BROKER` - EZ_BROKER\n* `TRUSTEE` - TRUSTEE\n* `PRIMARY_NO_COMMS` - PRIMARY_NO_COMMS\n* `CDR_REPRESENTATIVE` - CDR_REPRESENTATIVE\n* `BUSINESS_COMMS` - BUSINESS_COMMS",
            "x-spec-enum-id": "a9dfece01fff4a96",
            "x-enum-descriptions": {
              "EZ_CUSTOMER": "EZ_CUSTOMER",
              "TRUSTEE_MAND": "TRUSTEE_MAND",
              "MSP_USER": "MSP_USER",
              "BUSI_FINANCIALLY": "BUSI_FINANCIALLY",
              "EZ_DFPP_RW": "EZ_DFPP_RW",
              "NOMINATED_NONE": "NOMINATED_NONE",
              "ADMIN": "ADMIN",
              "RECEIVES_SALES": "RECEIVES_SALES",
              "EZ_ADMIN": "EZ_ADMIN",
              "LIFE_SUPPORT_CONTACT": "LIFE_SUPPORT_CONTACT",
              "RECEIVES_DUNNING": "RECEIVES_DUNNING",
              "FLAGGED_LS": "FLAGGED_LS",
              "RECEIVES_SERVICE": "RECEIVES_SERVICE",
              "NO_EMAIL": "NO_EMAIL",
              "MSBG_COMMS": "MSBG_COMMS",
              "EZ_DFPP_RO": "EZ_DFPP_RO",
              "TRUSTEE_BILL": "TRUSTEE_BILL",
              "RECEIVES_INVOICES": "RECEIVES_INVOICES",
              "TRUSTEE_NONE": "TRUSTEE_NONE",
              "RESI_SECONDARY": "RESI_SECONDARY",
              "BUSINESS_NO_COMMS": "BUSINESS_NO_COMMS",
              "NOMINATED_MAND": "NOMINATED_MAND",
              "MSBG_NO_COMMS": "MSBG_NO_COMMS",
              "BSP_USER": "BSP_USER",
              "OUTAGE_CONTACT": "OUTAGE_CONTACT",
              "NOMINATED_BILL": "NOMINATED_BILL",
              "EZ_BROKER": "EZ_BROKER",
              "TRUSTEE": "TRUSTEE",
              "PRIMARY_NO_COMMS": "PRIMARY_NO_COMMS",
              "CDR_REPRESENTATIVE": "CDR_REPRESENTATIVE",
              "BUSINESS_COMMS": "BUSINESS_COMMS"
            }
          },
          "description": "<p>A list of account roles to be assigned to the customer on account creation. Unlike Portfolio Roles, these will only apply to this customer for this single account.</p>"
        },
        "address": {
          "allOf": [
            {
              "$ref": "#/$defs/AusPropertyRichAddress"
            }
          ],
          "description": "<p>The customer's address. If provided, this will be stored on the account user record.</p>"
        },
        "alternative_phone_numbers": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/AusCustomerAlternativeNumber"
          },
          "description": "<p>A list of the customer's alternative phone numbers.</p>"
        },
        "concession_cards": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/AusConcessionCard"
          },
          "description": "<p>List of customer concession cards.</p>",
          "x-validators": [
            {
              "name": "Validate number of current concession card",
              "description": "Validates that each customer can have a maximum of one current concession card.",
              "possible_errors": [
                "too_many_current_concession_cards"
              ]
            }
          ]
        },
        "concession_credits_paid_current_year": {
          "type": [
            "string",
            "null"
          ],
          "format": "decimal",
          "pattern": "^-?\\d{0,8}(?:\\.\\d{0,2})?$",
          "description": "<p>Amount received by the customer for the Excess electricity concession since 1st December of the year before, inclusive of GST. This will be linked to the primary residence; an error will be raised if: - this is set but no primary residence has been defined in the <code>supply_addresses</code> section, or - there is more than one user in the payload with concession credits paid, or having concession cards.</p>"
        },
        "consents": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/CustomerConsent"
          },
          "description": "<p>A list of what this individual customer has and has not consented to.</p>",
          "x-validators": [
            {
              "name": "Validate consents are only provided if enabled",
              "description": "Validate consents are only provided if enabled within this Kraken.",
              "possible_errors": [
                "field_not_enabled"
              ]
            },
            {
              "name": "Validate that each child has unique values for the <code>⁨type⁩</code> field",
              "description": "Validate that each child has unique values for the <code>⁨type⁩</code> field.",
              "possible_errors": [
                "children_with_duplicate_values"
              ]
            }
          ]
        },
        "contact_emails": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "email"
          },
          "description": "<p>A list of additional email addresses to associate with the customer account. These can be used for sending communications to the customer. Each email must be a valid email address.</p>"
        },
        "credit_assessment_id": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p>Customers credit assessment id.</p>"
        },
        "credit_result": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p>The credit result from the provider.</p>"
        },
        "credit_risk_bracket": {
          "enum": [
            "LOW",
            "MID",
            "HIGH",
            "UNKNOWN",
            "",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "e6b98b6c312ff7bf",
          "description": "<p>The deemed credit risk bracket for this customer.</p>",
          "x-enum-descriptions": {
            "LOW": "Low",
            "MID": "Medium",
            "HIGH": "High",
            "UNKNOWN": "Unknown",
            "": "",
            "None": "None"
          }
        },
        "credit_score": {
          "type": [
            "integer",
            "null"
          ],
          "maximum": 9999,
          "minimum": 0,
          "description": "<p>Customers credit score.</p>"
        },
        "customer_preferences": {
          "allOf": [
            {
              "$ref": "#/$defs/CustomerPreferences"
            }
          ],
          "description": "<p>The communication preferences of the customer. NOTE that this is deprecated and consents should be used to achieve these preferences instead.</p>",
          "deprecated": true,
          "x-use-instead": "consents"
        },
        "date_of_birth": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>The customer's date of birth.</p>"
        },
        "deceased": {
          "enum": [
            "Reported",
            "Confirmed",
            ""
          ],
          "type": "string",
          "x-spec-enum-id": "f90e7d899a971044",
          "default": "",
          "description": "<p>Whether the customer is deceased or not. Defaults to an empty string if not provided.</p>",
          "x-enum-descriptions": {
            "Reported": "Reported",
            "Confirmed": "Confirmed",
            "": ""
          }
        },
        "details": {
          "description": "<p>Generic solution for storing additional customer data that is not covered by the other fields in the payload. This is often in the form of market or territory specific information. For example, in much of Europe it is a requirement to store the user's fiscal code. Namespaces (the keys in the object) need to be registered before import. If a value is provided for a namespace that is not registered then an error will be raised.</p>",
          "deprecated": true,
          "x-use-instead": "user_details",
          "x-validators": [
            {
              "name": "Validate user details",
              "description": "Validates that the user detail namespace and value are allowed for the customer. The user detail namespace (the key in the JSON object) must already have been set up in Kraken. The value (the value in the JSON object) must be the correct data type.",
              "possible_errors": [
                "customer_detail_failed_validation",
                "customer_detail_incorrect_value_type",
                "customer_detail_not_registered"
              ]
            }
          ]
        },
        "email": {
          "type": [
            "string",
            "null"
          ],
          "format": "email",
          "description": "<p>The customer's email address. This is the email address they will use to log into their online portal. Defaults to an empty string if not provided. Cannot be longer that 254 characters.</p>",
          "maxLength": 254,
          "x-validators": [
            {
              "name": "Validate email address is not test address",
              "description": "Validates that a customer email address is not a test email address. An email address is considered a test address if it starts with \"test@\"\" or \"xxx@\"\" or ends with \"@test.com\", \"@test.co.uk\", \".xxx\" or \".xx\".",
              "possible_errors": [
                "possible_test_email_address"
              ]
            },
            {
              "name": "Validate email is not internal",
              "description": "Validates that a customer email address does not use an internal Kraken handler. For example, if an instance of Kraken has registered <code>info@kraken.info</code> as an internal email address, then the customer email address must not match this.",
              "possible_errors": [
                "internal_email_address"
              ]
            }
          ]
        },
        "family_issues_details": {
          "type": [
            "string",
            "null"
          ],
          "default": "",
          "description": "<p>Details for the account user when the customer is flagged for domestic violence issues.</p>"
        },
        "family_issues_password": {
          "type": [
            "string",
            "null"
          ],
          "default": "",
          "description": "<p>A password for the account user in case the customer is flagged for domestic violence issues. Cannot be more than 255 characters.</p>",
          "maxLength": 255
        },
        "family_name": {
          "type": "string",
          "default": "",
          "description": "<p>The customer's family name.</p>",
          "maxLength": 255
        },
        "given_name": {
          "type": "string",
          "default": "",
          "description": "<p>The customer's given name.</p>",
          "maxLength": 255
        },
        "has_family_issues": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "<p>If the customer (account user) has family issues, e.g. is flagged for domestic violence issues so needs special handling in some cases. Defaults to None.</p>"
        },
        "label": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p>A free text field to help identify the user (e.g. a job title).</p>"
        },
        "landline": {
          "type": [
            "string",
            "null"
          ],
          "default": "",
          "description": "<p>The customer's landline phone number.</p>",
          "x-validators": [
            {
              "name": "Validate phone number",
              "description": "Validates that a phone number conforms to the norms of the region from which the migration is taking place.",
              "possible_errors": [
                "invalid_phone_number"
              ]
            },
            {
              "name": "Validate Australian landline number",
              "description": "Validates that the value is a valid Australian landline number.",
              "possible_errors": [
                "invalid_phone_number"
              ]
            }
          ]
        },
        "loyalty_cards": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/AusLoyaltyCard"
          },
          "description": "<p>List of customer loyalty cards.</p>",
          "x-validators": [
            {
              "name": "Validate number of loyalty card per scheme",
              "description": "Validates that each customer can have a maximum of one card per loyalty scheme.",
              "possible_errors": [
                "duplicate_loyalty_card_scheme"
              ]
            }
          ]
        },
        "manually_defined_eligibility_periods": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/AusManuallyDefinedEligibilityPeriods"
          },
          "description": "<p>Manually defined Life support and medical rebates. All dates are format yyyy-mm-dd. E.g. 2022-01-15</p>"
        },
        "metadata": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Metadata"
          },
          "description": "<p>An array of key value pairs for storing generic metadata relating to a customer. Metadata is externally focused and is not used for any logic within Kraken. Its main motivation is to provide a simple persistence mechanism for clients building their own integrations with Kraken. If a customer already exists in Kraken with existing metadata for the provided key, the value associated with this key will be overwritten.</p>"
        },
        "mobile": {
          "type": [
            "string",
            "null"
          ],
          "default": "",
          "description": "<p>The customer's personal mobile number.</p>",
          "x-validators": [
            {
              "name": "Validate phone number",
              "description": "Validates that a phone number conforms to the norms of the region from which the migration is taking place.",
              "possible_errors": [
                "invalid_phone_number"
              ]
            },
            {
              "name": "Validate Australian mobile number",
              "description": "Validates that the value is a valid Australian mobile number.",
              "possible_errors": [
                "invalid_phone_number"
              ]
            }
          ]
        },
        "mpxns_for_outage_contact": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "<p>The mpxn of the meter points that this user has assigned outage contact for.</p>"
        },
        "portfolio_roles": {
          "type": "array",
          "items": {
            "enum": [
              "EZ_CUSTOMER",
              "TRUSTEE_MAND",
              "MSP_USER",
              "BUSI_FINANCIALLY",
              "EZ_DFPP_RW",
              "NOMINATED_NONE",
              "ADMIN",
              "RECEIVES_SALES",
              "EZ_ADMIN",
              "LIFE_SUPPORT_CONTACT",
              "RECEIVES_DUNNING",
              "FLAGGED_LS",
              "RECEIVES_SERVICE",
              "NO_EMAIL",
              "MSBG_COMMS",
              "EZ_DFPP_RO",
              "TRUSTEE_BILL",
              "RECEIVES_INVOICES",
              "TRUSTEE_NONE",
              "RESI_SECONDARY",
              "BUSINESS_NO_COMMS",
              "NOMINATED_MAND",
              "MSBG_NO_COMMS",
              "BSP_USER",
              "OUTAGE_CONTACT",
              "NOMINATED_BILL",
              "EZ_BROKER",
              "TRUSTEE",
              "PRIMARY_NO_COMMS",
              "CDR_REPRESENTATIVE",
              "BUSINESS_COMMS"
            ],
            "type": "string",
            "description": "* `EZ_CUSTOMER` - EZ_CUSTOMER\n* `TRUSTEE_MAND` - TRUSTEE_MAND\n* `MSP_USER` - MSP_USER\n* `BUSI_FINANCIALLY` - BUSI_FINANCIALLY\n* `EZ_DFPP_RW` - EZ_DFPP_RW\n* `NOMINATED_NONE` - NOMINATED_NONE\n* `ADMIN` - ADMIN\n* `RECEIVES_SALES` - RECEIVES_SALES\n* `EZ_ADMIN` - EZ_ADMIN\n* `LIFE_SUPPORT_CONTACT` - LIFE_SUPPORT_CONTACT\n* `RECEIVES_DUNNING` - RECEIVES_DUNNING\n* `FLAGGED_LS` - FLAGGED_LS\n* `RECEIVES_SERVICE` - RECEIVES_SERVICE\n* `NO_EMAIL` - NO_EMAIL\n* `MSBG_COMMS` - MSBG_COMMS\n* `EZ_DFPP_RO` - EZ_DFPP_RO\n* `TRUSTEE_BILL` - TRUSTEE_BILL\n* `RECEIVES_INVOICES` - RECEIVES_INVOICES\n* `TRUSTEE_NONE` - TRUSTEE_NONE\n* `RESI_SECONDARY` - RESI_SECONDARY\n* `BUSINESS_NO_COMMS` - BUSINESS_NO_COMMS\n* `NOMINATED_MAND` - NOMINATED_MAND\n* `MSBG_NO_COMMS` - MSBG_NO_COMMS\n* `BSP_USER` - BSP_USER\n* `OUTAGE_CONTACT` - OUTAGE_CONTACT\n* `NOMINATED_BILL` - NOMINATED_BILL\n* `EZ_BROKER` - EZ_BROKER\n* `TRUSTEE` - TRUSTEE\n* `PRIMARY_NO_COMMS` - PRIMARY_NO_COMMS\n* `CDR_REPRESENTATIVE` - CDR_REPRESENTATIVE\n* `BUSINESS_COMMS` - BUSINESS_COMMS",
            "x-spec-enum-id": "a9dfece01fff4a96",
            "x-enum-descriptions": {
              "EZ_CUSTOMER": "EZ_CUSTOMER",
              "TRUSTEE_MAND": "TRUSTEE_MAND",
              "MSP_USER": "MSP_USER",
              "BUSI_FINANCIALLY": "BUSI_FINANCIALLY",
              "EZ_DFPP_RW": "EZ_DFPP_RW",
              "NOMINATED_NONE": "NOMINATED_NONE",
              "ADMIN": "ADMIN",
              "RECEIVES_SALES": "RECEIVES_SALES",
              "EZ_ADMIN": "EZ_ADMIN",
              "LIFE_SUPPORT_CONTACT": "LIFE_SUPPORT_CONTACT",
              "RECEIVES_DUNNING": "RECEIVES_DUNNING",
              "FLAGGED_LS": "FLAGGED_LS",
              "RECEIVES_SERVICE": "RECEIVES_SERVICE",
              "NO_EMAIL": "NO_EMAIL",
              "MSBG_COMMS": "MSBG_COMMS",
              "EZ_DFPP_RO": "EZ_DFPP_RO",
              "TRUSTEE_BILL": "TRUSTEE_BILL",
              "RECEIVES_INVOICES": "RECEIVES_INVOICES",
              "TRUSTEE_NONE": "TRUSTEE_NONE",
              "RESI_SECONDARY": "RESI_SECONDARY",
              "BUSINESS_NO_COMMS": "BUSINESS_NO_COMMS",
              "NOMINATED_MAND": "NOMINATED_MAND",
              "MSBG_NO_COMMS": "MSBG_NO_COMMS",
              "BSP_USER": "BSP_USER",
              "OUTAGE_CONTACT": "OUTAGE_CONTACT",
              "NOMINATED_BILL": "NOMINATED_BILL",
              "EZ_BROKER": "EZ_BROKER",
              "TRUSTEE": "TRUSTEE",
              "PRIMARY_NO_COMMS": "PRIMARY_NO_COMMS",
              "CDR_REPRESENTATIVE": "CDR_REPRESENTATIVE",
              "BUSINESS_COMMS": "BUSINESS_COMMS"
            }
          },
          "description": "<p>A list of portfolio roles to be assigned to the customer on account creation. If not provided, this falls back to the currently configured default.</p>"
        },
        "pronouns": {
          "enum": [
            "OTHER",
            "E_EM_EIR",
            "EY_EM_EIR",
            "FAE_FAER_FAERS",
            "HE_HIM_HIS",
            "PER_PER_PERS",
            "SHE_HER_HERS",
            "THEY_THEM_THEIRS",
            "VE_VER_VIS",
            "XE_XEM_XYR",
            "ZE_HIR_HIRS",
            "ZE_ZIR_ZIRS",
            "ZIE_HIR_HIRS",
            "ZIE_ZIR_ZIRS",
            "",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "97953066f4a8c7fa",
          "default": "",
          "description": "<p>How this person wants to be referred to in the third person.</p>",
          "x-enum-descriptions": {
            "OTHER": "Other",
            "E_EM_EIR": "E/Em/Eir",
            "EY_EM_EIR": "Ey/Em/Eir",
            "FAE_FAER_FAERS": "Fae/Faer/Faers",
            "HE_HIM_HIS": "He/Him/His",
            "PER_PER_PERS": "Per/Per/Pers",
            "SHE_HER_HERS": "She/Her/Hers",
            "THEY_THEM_THEIRS": "They/Them/Theirs",
            "VE_VER_VIS": "Ve/Ver/Vis",
            "XE_XEM_XYR": "Xe/Xem/Xyr",
            "ZE_HIR_HIRS": "Ze/Hir/Hirs",
            "ZE_ZIR_ZIRS": "Ze/Zir/Zirs",
            "ZIE_HIR_HIRS": "Zie/Hir/Hirs",
            "ZIE_ZIR_ZIRS": "Zie/Zir/Zirs",
            "": "",
            "None": "None"
          }
        },
        "role": {
          "enum": [
            "EZ_CUSTOMER",
            "TRUSTEE_MAND",
            "MSP_USER",
            "BUSI_FINANCIALLY",
            "EZ_DFPP_RW",
            "NOMINATED_NONE",
            "ADMIN",
            "RECEIVES_SALES",
            "EZ_ADMIN",
            "LIFE_SUPPORT_CONTACT",
            "RECEIVES_DUNNING",
            "FLAGGED_LS",
            "RECEIVES_SERVICE",
            "NO_EMAIL",
            "MSBG_COMMS",
            "EZ_DFPP_RO",
            "TRUSTEE_BILL",
            "RECEIVES_INVOICES",
            "TRUSTEE_NONE",
            "RESI_SECONDARY",
            "BUSINESS_NO_COMMS",
            "NOMINATED_MAND",
            "MSBG_NO_COMMS",
            "BSP_USER",
            "OUTAGE_CONTACT",
            "NOMINATED_BILL",
            "EZ_BROKER",
            "TRUSTEE",
            "PRIMARY_NO_COMMS",
            "CDR_REPRESENTATIVE",
            "BUSINESS_COMMS",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "a9dfece01fff4a96",
          "description": "<p>The portfolio role to be assigned to the customer on account creation. If not provided, this falls back to the currently configured default.</p>",
          "x-enum-descriptions": {
            "EZ_CUSTOMER": "EZ_CUSTOMER",
            "TRUSTEE_MAND": "TRUSTEE_MAND",
            "MSP_USER": "MSP_USER",
            "BUSI_FINANCIALLY": "BUSI_FINANCIALLY",
            "EZ_DFPP_RW": "EZ_DFPP_RW",
            "NOMINATED_NONE": "NOMINATED_NONE",
            "ADMIN": "ADMIN",
            "RECEIVES_SALES": "RECEIVES_SALES",
            "EZ_ADMIN": "EZ_ADMIN",
            "LIFE_SUPPORT_CONTACT": "LIFE_SUPPORT_CONTACT",
            "RECEIVES_DUNNING": "RECEIVES_DUNNING",
            "FLAGGED_LS": "FLAGGED_LS",
            "RECEIVES_SERVICE": "RECEIVES_SERVICE",
            "NO_EMAIL": "NO_EMAIL",
            "MSBG_COMMS": "MSBG_COMMS",
            "EZ_DFPP_RO": "EZ_DFPP_RO",
            "TRUSTEE_BILL": "TRUSTEE_BILL",
            "RECEIVES_INVOICES": "RECEIVES_INVOICES",
            "TRUSTEE_NONE": "TRUSTEE_NONE",
            "RESI_SECONDARY": "RESI_SECONDARY",
            "BUSINESS_NO_COMMS": "BUSINESS_NO_COMMS",
            "NOMINATED_MAND": "NOMINATED_MAND",
            "MSBG_NO_COMMS": "MSBG_NO_COMMS",
            "BSP_USER": "BSP_USER",
            "OUTAGE_CONTACT": "OUTAGE_CONTACT",
            "NOMINATED_BILL": "NOMINATED_BILL",
            "EZ_BROKER": "EZ_BROKER",
            "TRUSTEE": "TRUSTEE",
            "PRIMARY_NO_COMMS": "PRIMARY_NO_COMMS",
            "CDR_REPRESENTATIVE": "CDR_REPRESENTATIVE",
            "BUSINESS_COMMS": "BUSINESS_COMMS",
            "None": "None"
          },
          "deprecated": true,
          "x-use-instead": "portfolio_roles"
        },
        "salutation": {
          "type": [
            "string",
            "null"
          ],
          "default": "",
          "description": "<p>The customer's preferred salutation.</p>",
          "maxLength": 128
        },
        "title": {
          "enum": [
            "Dr",
            "Fr",
            "Lady",
            "Miss",
            "Mr",
            "Mrs",
            "Ms",
            "Mx",
            "Prof",
            "Rabbi",
            "Rev",
            "Sir",
            "Sr",
            "",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "4cdddd72acb4b4e0",
          "default": "",
          "description": "<p>Preferred title by the customer.</p>",
          "x-enum-descriptions": {
            "Dr": "Doctor",
            "Fr": "Father",
            "Lady": "Lady",
            "Miss": "Miss",
            "Mr": "Mr",
            "Mrs": "Mrs",
            "Ms": "Ms",
            "Mx": "Mx",
            "Prof": "Professor",
            "Rabbi": "Rabbi",
            "Rev": "Reverend",
            "Sir": "Sir",
            "Sr": "Sister",
            "": "",
            "None": "None"
          }
        },
        "unable_to_read_meters": {
          "type": "boolean",
          "default": false,
          "description": "<p>Whether the customer is unable to read their meters themselves. Defaults to False.</p>"
        },
        "user_details": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/CustomerUserDetail"
          },
          "description": "<p>Generic solution for storing additional customer data that is not covered by the other fields in the payload. This is often in the form of market or territory specific information. For example, in much of Europe it is a requirement to store the user's fiscal code. Namespaces (the keys in the object) need to be registered before import. If a value is provided for a namespace that is not registered then an error will be raised.</p>",
          "x-validators": [
            {
              "name": "Validate required customer details namespaces provided",
              "description": "No required namespaces configured. Validation skipped.",
              "possible_errors": [
                "required_customer_details_namespace_missing"
              ]
            }
          ]
        },
        "user_identifier": {
          "type": "string",
          "description": "<p>Unique identifier for the customer. Used for cross referencing the customer within other parts of the payload.</p>"
        }
      },
      "x-validators": [
        {
          "name": "Ensures only <code>user_details</code> or <code>details</code> are provided",
          "description": "Ensures that only <code>user_details</code> or <code>details</code> are provided, not both.",
          "possible_errors": [
            "customer_details_and_user_details_both_provided"
          ]
        },
        {
          "name": "Validate no contact details for occupier",
          "description": "Validates that a customer identified as \"The Occupier\" does not have contact details. If contact details are provided it implies that the identity of the customer is known, and it therefore not an unknown occupier.",
          "possible_errors": [
            "contact_details_for_occupier"
          ]
        },
        {
          "name": "Validate that the customer's name is not \"The Occupier\"",
          "description": "Validate that the customer's name is not \"The Occupier\". To indicate an occupier account, use the <code>unknown_occupier</code> flag at the account-level.",
          "possible_errors": [
            "customer_may_not_be_named_the_occupier"
          ]
        },
        {
          "name": "Validate metadata",
          "description": "Validate that metadata, which is a list of key value pairs, does not contain duplicate keys.",
          "possible_errors": [
            "metadata_has_duplicate_keys"
          ]
        },
        {
          "name": "Validate user role",
          "description": "Validates that at least one user role is provided through <code>portfolio_roles</code> or <code>account_roles</code>.",
          "possible_errors": [
            "required_user_role"
          ]
        },
        {
          "name": "Validate exclusive role assignment",
          "description": "Validates that an exclusively-assignable role is not assigned to a user alongside any other role, whether in the same payload or already held by the user.",
          "possible_errors": [
            "customer_has_exclusive_role_conflict"
          ]
        },
        {
          "name": "Validate that <code>⁨customer_preferences⁩</code> and <code>⁨consents⁩</code> are not both provided",
          "description": "Validate that ⁨customer_preferences⁩ and ⁨consents⁩ are not both provided.",
          "possible_errors": [
            "fields_are_mutually_exclusive"
          ]
        }
      ]
    },
    "AusCustomerAlternativeNumber": {
      "type": "object",
      "properties": {
        "phone_number": {
          "type": [
            "string",
            "null"
          ],
          "default": "",
          "description": "<p>A customer's alternative phone number.</p>",
          "x-validators": [
            {
              "name": "Validate phone number",
              "description": "Validates that a phone number conforms to the norms of the region from which the migration is taking place.",
              "possible_errors": [
                "invalid_phone_number"
              ]
            },
            {
              "name": "Validate Australian phone number",
              "description": "Validates that the value is a valid Australian landline or mobile number.",
              "possible_errors": [
                "invalid_phone_number"
              ]
            }
          ]
        }
      }
    },
    "AusEEPAExportContractedVolumeConfiguration": {
      "type": "object",
      "properties": {
        "term_type": {
          "type": "string",
          "description": "<p>The type of the contract term.</p>"
        },
        "is_variable": {
          "type": "boolean",
          "default": true,
          "description": "<p>Whether the contract term is variable in Kraken or not. If not, it must be amended by a new contract.</p>"
        },
        "periods": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/AusEEPAExportContractedVolumePeriod"
          },
          "description": "<p>A list of EEPA export contracted volume periods.</p>",
          "minItems": 1,
          "x-validators": [
            {
              "name": "Validate EEPA export contracted volume periods",
              "description": "Validate that the EEPA export contracted volume periods form a valid term: no overlapping general periods, and no supply point repeated across overlapping periods.",
              "possible_errors": [
                "invalid_eepa_export_contracted_volume"
              ]
            }
          ]
        }
      },
      "required": [
        "periods",
        "term_type"
      ]
    },
    "AusEEPAExportContractedVolumePeriod": {
      "type": "object",
      "properties": {
        "supply_point_external_identifiers": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "string"
          },
          "description": "<p>The external identifiers (NMIs) of the supply points this period applies to. Leave null to apply to all supply points not covered by a more specific period; when provided the list must not be empty.</p>",
          "minItems": 1
        },
        "unit": {
          "type": "string",
          "description": "<p>The unit for the contracted export volume (e.g. kWh).</p>"
        },
        "valid_from_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The date the period is valid from (inclusive).</p>"
        },
        "valid_to_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The date the period is valid to (exclusive; the period ends before this date).</p>"
        },
        "value": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,7}(?:\\.\\d{0,4})?$",
          "description": "<p>The contracted export volume cap for the period.</p>"
        }
      },
      "required": [
        "supply_point_external_identifiers",
        "unit",
        "valid_from_date",
        "valid_to_date",
        "value"
      ],
      "x-validators": [
        {
          "name": "Convert supply point external identifiers to IDs",
          "description": "Convert each supply point external identifier (NMI) to the internal supply point ID by looking up the supply point in the database. A null value is left unchanged and applies the period to all supply points.",
          "possible_errors": [
            "supply_point_not_found"
          ]
        },
        {
          "name": "Validate <code>⁨valid_to⁩</code> not before <code>⁨valid_from⁩</code>",
          "description": "Validates that <code>⁨valid_to⁩</code>, if given, is on or later than <code>⁨valid_from⁩</code>.",
          "possible_errors": [
            "start_date_later_than_end_date"
          ]
        }
      ]
    },
    "AusLifeSupport": {
      "type": "object",
      "properties": {
        "contact_user_email": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p>Email address of contact user (must be email of a account user already in the payload or in kraken) Otherwise the first customer in the payload will be set as the contact.</p>"
        },
        "details": {
          "type": "string",
          "description": "<p>Life support details. Required when <code>life_support_equipment</code> is <code>OTHER</code>.</p>",
          "maxLength": 240
        },
        "life_support_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Date that life support started on.</p>"
        },
        "life_support_equipment": {
          "enum": [
            "OXYGEN_CONCENTRATOR",
            "INTERMITTENT_PERITONEAL_DIALYSIS_MACHINE",
            "KIDNEY_DIALYSIS_MACHINE",
            "CHRONIC_POSITIVE_AIRWAYS_PRESSURE_RESPIRATOR",
            "CRIGLER_NAJJAR_SYNDROME_PHOTOTHERAPY_EQUIPMENT",
            "VENTILATOR_FOR_LIFE_SUPPORT",
            "OTHER"
          ],
          "type": "string",
          "x-spec-enum-id": "e51dca152ead8f36",
          "description": "<p>Life support equipment. Only allow OTHER for gas and embedded water.</p>",
          "x-enum-descriptions": {
            "OXYGEN_CONCENTRATOR": "Oxygen Concentrator",
            "INTERMITTENT_PERITONEAL_DIALYSIS_MACHINE": "Intermittent Peritoneal Dialysis Machine",
            "KIDNEY_DIALYSIS_MACHINE": "Kidney Dialysis Machine",
            "CHRONIC_POSITIVE_AIRWAYS_PRESSURE_RESPIRATOR": "Chronic Positive Airways Pressure Respirator",
            "CRIGLER_NAJJAR_SYNDROME_PHOTOTHERAPY_EQUIPMENT": "Crigler Najjar Syndrome Phototherapy Equipment",
            "VENTILATOR_FOR_LIFE_SUPPORT": "Ventilator For Life Support",
            "OTHER": "Other"
          }
        },
        "life_support_status": {
          "enum": [
            "REGISTERED_MEDICAL_CONFIRMATION",
            "REGISTERED_NO_MEDICAL_CONFIRMATION"
          ],
          "type": "string",
          "x-spec-enum-id": "ae0de19081af0da8",
          "description": "<p>Status of life support.</p>",
          "x-enum-descriptions": {
            "REGISTERED_MEDICAL_CONFIRMATION": "Registered - Medical Confirmation",
            "REGISTERED_NO_MEDICAL_CONFIRMATION": "Registered - No Medical Confirmation"
          }
        },
        "preferred_contact_method": {
          "enum": [
            "POSTAL_ADDRESS",
            "SITE_ADDRESS",
            "EMAIL_ADDRESS",
            "PHONE",
            "",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "93c143dbffa8f5da",
          "description": "<p>Preferred contact method by the customer.</p>",
          "x-enum-descriptions": {
            "POSTAL_ADDRESS": "Postal Address",
            "SITE_ADDRESS": "Site Address",
            "EMAIL_ADDRESS": "Email Address",
            "PHONE": "Phone",
            "": "",
            "None": "None"
          }
        },
        "registration_owner": {
          "type": "string",
          "description": "<p>Required for Mass market elec and gas.  Should be blank for CES Child accounts. Retailer Registered Owner. The industry ID of the life support owner.\n<details><summary>Current Options for gas will be one of</summary>\n<p>\n    <li>ORIGIN</li>\n    <li>ORIGINUSR</li>\n    <li>COUNTRYUSR</li>\n</p>\n</details>\n<details><summary>Current Options for electricity will be one of</summary>\n<p>\n    <li>BORAL</li>\n    <li>CITIP</li>\n    <li>CNRGY</li>\n    <li>ENERGEX</li>\n    <li>IEQLD</li>\n    <li>INTLENGY</li>\n    <li>ORIGNENM</li>\n    <li>POWERCOR</li>\n</p>\n</details>\n<details><summary>DRO Registration Owner - Elec</summary>\n<p>\n    <li>ACTEWP</li>\n    <li>CITIPP</li>\n    <li>CNRGYP</li>\n    <li>EASTERN</li>\n    <li>ENERGYAP</li>\n    <li>ENERGEXP</li>\n    <li>INTEGP</li>\n    <li>POWCP</li>\n    <li>SOLARISP</li>\n    <li>UMPLP</li>\n    <li>UNITED</li>\n</p>\n</details>\n<details><summary>DRO Registration Owner - Gas</summary>\n<p>\n    <li>ACTEWNWO</li>\n    <li>AGLGNNWO</li>\n    <li>APTALLGAS</li>\n    <li>COUNTRYNWO</li>\n    <li>CRPNWO</li>\n    <li>ENVESTRA</li>\n    <li>ENVQLD</li>\n    <li>ENVSA</li>\n    <li>MULTINET</li>\n    <li>TXUN</li>\n</p>\n</details>\n</p>"
        },
        "registration_state": {
          "enum": [
            "INITIAL_COMM_SENT",
            "SUCESSFULLY_REGISTERED"
          ],
          "type": "string",
          "x-spec-enum-id": "e0d9859a3b0d6a61",
          "description": "<p>Life support registration state.</p>",
          "x-enum-descriptions": {
            "INITIAL_COMM_SENT": "Initial Comm Sent",
            "SUCESSFULLY_REGISTERED": "Sucessfully Registered"
          }
        }
      },
      "required": [
        "life_support_date",
        "life_support_equipment",
        "life_support_status",
        "registration_state"
      ],
      "x-validators": [
        {
          "name": "Validate life support registration state and life support status combination",
          "description": "Validates to ensure life support registration state and life support status combination is valid.",
          "possible_errors": [
            "invalid_life_support_registration_state_and_status_combination"
          ]
        },
        {
          "name": "Validate life support details",
          "description": "Validates to ensure details is provided when life support equipment is other.",
          "possible_errors": [
            "details_required_for_other_life_support_equipment"
          ]
        }
      ]
    },
    "AusLineItem": {
      "type": "object",
      "properties": {
        "end_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The end date for the billing period, inclusive.</p>"
        },
        "external_rate_identifier": {
          "type": "string",
          "description": "<p>The external identifier of the rate used to generate the charge for this line item. Only required if Kraken is configured to use placeholder rates when creating supply charge line items.</p>"
        },
        "net_amount": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,10}(?:\\.\\d{0,10})?$",
          "description": "<p>Charge amount for the line item. Provide this amount in the currency's major unit rather than its minor unit (for example euros rather than cents, or pounds rather than pence). These examples are illustrative only; the same applies to any currency that has a major and minor unit. For currencies without a minor unit, such as the Japanese yen, pass the value as-is.</p>"
        },
        "number_of_units": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,12}(?:\\.\\d{0,4})?$",
          "description": "<p>E.g. cubic meters consumed for the period, days on supply for fixed charges or RV proportion for period for unmetered RV charges.</p>"
        },
        "params": {
          "type": "object",
          "description": "<p>Additional parameters for the line item.</p>\n<p>Specify the following keys to control line item charge targets:</p>\n<p>\n    <ul>\n        <li>\n            Supply point charge target:\n            <ul>\n                <li><code>charge_target_type</code>: <code>SUPPLY_POINT</code></li>\n            </ul>\n        </li>\n        <li>\n            Register charge target:\n            <ul>\n                <li><code>charge_target_type</code>: <code>REGISTER</code></li>\n                <li><code>charge_target_meter_serial</code>: Serial number for the register's meter</li>\n                <li><code>charge_target_identifier</code>: Register identifier</li>\n            </ul>\n        </li>\n    </ul>\n</p>",
          "x-validators": [
            {
              "name": "Validate supply charge target",
              "description": "Validate that the supply charge target are supplied correctly in params.",
              "possible_errors": [
                "invalid_charge_target_type"
              ]
            }
          ]
        },
        "price_per_unit": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,8}(?:\\.\\d{0,7})?$",
          "description": "<p>Price per unit for the line item. If this is not provided, then the price per unit from the relevant product rate will be used instead. Provide this amount in the currency's major unit rather than its minor unit (for example euros rather than cents, or pounds rather than pence). These examples are illustrative only; the same applies to any currency that has a major and minor unit. For currencies without a minor unit, such as the Japanese yen, pass the value as-is.</p>"
        },
        "rate_band": {
          "type": "string",
          "description": "<p>Rate of the product this charge is for. Must match an existing rate of a product <code>product_code</code>. Rate must be active from <code>start_date</code> to <code>end_date</code>.</p>"
        },
        "rate_specification_code": {
          "type": "string",
          "description": "<p>Rate specification code of the product this charge is for. This code must refer to an existing rate specification within the product.</p>"
        },
        "start_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The start date for the billing period, inclusive.</p>"
        },
        "time_series_specification_code": {
          "type": "string",
          "description": "<p>Time series specification code.</p>"
        },
        "units": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "decimal",
            "pattern": "^-?\\d{0,12}(?:\\.\\d{0,4})?$"
          },
          "description": "<p>For metered accounts only. List of decimal numbers representing the meter readings for the billing period.</p>",
          "x-validators": [
            {
              "name": "Validate line item units",
              "description": "Validates that the line item units provided in the payload is a list of two items only.",
              "possible_errors": [
                "line_item_units_must_be_two_values"
              ]
            }
          ]
        }
      },
      "required": [
        "end_date",
        "net_amount",
        "number_of_units",
        "params",
        "start_date"
      ],
      "x-validators": [
        {
          "name": "Validate <code>⁨end_date⁩</code> not before <code>⁨start_date⁩</code>",
          "description": "Validates that <code>⁨end_date⁩</code>, if given, is on or later than <code>⁨start_date⁩</code>.",
          "possible_errors": [
            "start_date_later_than_end_date"
          ]
        },
        {
          "name": "Validate the line item net amount",
          "description": "Validate that the line item net amount is equal to the price per unit multiplied by the number of units.",
          "possible_errors": [
            "incorrect_line_item_net_amount"
          ]
        },
        {
          "name": "Ensure that the band or rate specification or time series specification for a line item is specified.",
          "description": "Validate line items include exactly one of <code>rate_band</code>, <code>rate_specification_code</code>, or <code>time_series_specification_code</code>.",
          "possible_errors": [
            "conflicting_rate_band_specification"
          ]
        }
      ]
    },
    "AusLoyaltyCard": {
      "type": "object",
      "properties": {
        "card_number": {
          "type": "string",
          "description": "<p>Would be validated based on the selected <code>card_scheme</code>.</p>"
        },
        "card_scheme": {
          "enum": [
            "WOOLWORTHS_EVERYDAY_REWARDS"
          ],
          "type": "string",
          "x-spec-enum-id": "9775af9c3e4ede57",
          "description": "<p>One of the scheme names declared in <code>LOYALTY_CARD_SCHEMES</code> settings.</p>",
          "x-enum-descriptions": {
            "WOOLWORTHS_EVERYDAY_REWARDS": "Woolworths Everyday Rewards"
          }
        }
      },
      "required": [
        "card_number",
        "card_scheme"
      ],
      "x-validators": [
        {
          "name": "Validate loyalty card number",
          "description": "Validates that whether loyalty card number is valid or not for the given loyalty card scheme.",
          "possible_errors": [
            "invalid_loyalty_card_number"
          ]
        }
      ]
    },
    "AusManuallyDefinedEligibilityPeriods": {
      "type": "object",
      "properties": {
        "eligibility_type": {
          "enum": [
            "NSW_MEDICAL_ENERGY_REBATE",
            "NSW_LIFE_SUPPORT_PAP_DEVICE",
            "NSW_LIFE_SUPPORT_PAP_DEVICE_2",
            "NSW_LIFE_SUPPORT_PAP_DEVICE_3",
            "NSW_LIFE_SUPPORT_PAP_DEVICE_4",
            "NSW_LIFE_SUPPORT_PAP_DEVICE_ALLDAY",
            "NSW_LIFE_SUPPORT_PAP_DEVICE_ALLDAY_2",
            "NSW_LIFE_SUPPORT_PAP_DEVICE_ALLDAY_3",
            "NSW_LIFE_SUPPORT_PAP_DEVICE_ALLDAY_4",
            "NSW_LIFE_SUPPORT_ENTERAL_PUMP",
            "NSW_LIFE_SUPPORT_PHOTOTHERAPY",
            "NSW_LIFE_SUPPORT_HOME_DIALYSIS",
            "NSW_LIFE_SUPPORT_IRON_LUNG",
            "NSW_LIFE_SUPPORT_TPN_PUMP",
            "NSW_LIFE_SUPPORT_LEFT_VENTRICULAR_ASSIST",
            "NSW_LIFE_SUPPORT_ELECTRIC_MOBILITY_DEVICE",
            "NSW_LIFE_SUPPORT_ELECTRIC_MOBILITY_DEVICE_2",
            "NSW_LIFE_SUPPORT_ELECTRIC_MOBILITY_DEVICE_3",
            "NSW_LIFE_SUPPORT_ELECTRIC_MOBILITY_DEVICE_4",
            "NSW_LIFE_SUPPORT_OXYGEN_CONCENTRATOR",
            "NSW_LIFE_SUPPORT_OXYGEN_CONCENTRATOR_2",
            "NSW_LIFE_SUPPORT_OXYGEN_CONCENTRATOR_3",
            "NSW_LIFE_SUPPORT_OXYGEN_CONCENTRATOR_4",
            "NSW_LIFE_SUPPORT_OXYGEN_CONCENTRATOR_ALLDAY",
            "NSW_LIFE_SUPPORT_OXYGEN_CONCENTRATOR_ALLDAY_2",
            "NSW_LIFE_SUPPORT_OXYGEN_CONCENTRATOR_ALLDAY_3",
            "NSW_LIFE_SUPPORT_OXYGEN_CONCENTRATOR_ALLDAY_4",
            "NSW_LIFE_SUPPORT_OTHER",
            "ACT_LIFE_SUPPORT_KIDNEY_DIALYSIS_MACHINE",
            "ACT_LIFE_SUPPORT_OXYGEN_CONCENTRATOR",
            "ACT_LIFE_SUPPORT_RESPIRATOR",
            "ACT_LIFE_SUPPORT_CPAP_REGULATOR",
            "ACT_LIFE_SUPPORT_LONGSTAY",
            "ACT_LIFE_SUPPORT_NEBULISER",
            "ACT_LIFE_SUPPORT_LS_REFERENCE",
            "ACT_LIFE_SUPPORT_TPN_DEVICE",
            "ACT_LIFE_SUPPORT_OTHER_APPARATUS",
            "VIC_EXCESS_ELECTRICITY_CONCESSION",
            "VIC_EXCESS_GAS_CONCESSION",
            "VIC_GOVERNMENT_MEDICAL_COOLING_CONCESSION",
            "VIC_LIFE_SUPPORT_INTERMITTENT_PERITONEAL_DIALYSIS_MACHINES",
            "VIC_LIFE_SUPPORT_OXYGEN_CONCENTRATOR",
            "VIC_LIFE_SUPPORT_HAEMODIALYSIS_MACHINES",
            "VIC_LIFE_SUPPORT_OTHER"
          ],
          "type": "string",
          "x-spec-enum-id": "30c5c3fbfe7b591e",
          "description": "<p>Manually defined eligibility type.</p>",
          "x-enum-descriptions": {
            "NSW_MEDICAL_ENERGY_REBATE": "NSW Medical Energy Rebate",
            "NSW_LIFE_SUPPORT_PAP_DEVICE": "NSW Life Support PAP - Part Time",
            "NSW_LIFE_SUPPORT_PAP_DEVICE_2": "NSW Life Support PAP - Part Time 2",
            "NSW_LIFE_SUPPORT_PAP_DEVICE_3": "NSW Life Support PAP - Part Time 3",
            "NSW_LIFE_SUPPORT_PAP_DEVICE_4": "NSW Life Support PAP - Part Time 4",
            "NSW_LIFE_SUPPORT_PAP_DEVICE_ALLDAY": "NSW Life Support PAP - 24hr",
            "NSW_LIFE_SUPPORT_PAP_DEVICE_ALLDAY_2": "NSW Life Support PAP - 24hr 2",
            "NSW_LIFE_SUPPORT_PAP_DEVICE_ALLDAY_3": "NSW Life Support PAP - 24hr 3",
            "NSW_LIFE_SUPPORT_PAP_DEVICE_ALLDAY_4": "NSW Life Support PAP - 24hr 4",
            "NSW_LIFE_SUPPORT_ENTERAL_PUMP": "NSW Life Support Enteral feeding pump",
            "NSW_LIFE_SUPPORT_PHOTOTHERAPY": "NSW Life Support Phototherapy equipment",
            "NSW_LIFE_SUPPORT_HOME_DIALYSIS": "NSW Life Support Home Dialysis",
            "NSW_LIFE_SUPPORT_IRON_LUNG": "NSW Life Support Ventilator",
            "NSW_LIFE_SUPPORT_TPN_PUMP": "NSW Life Support Total Parenteral Nutrition (TPN) pump",
            "NSW_LIFE_SUPPORT_LEFT_VENTRICULAR_ASSIST": "NSW Life Support External Heart Pump",
            "NSW_LIFE_SUPPORT_ELECTRIC_MOBILITY_DEVICE": "NSW Life Support Power Wheelchair",
            "NSW_LIFE_SUPPORT_ELECTRIC_MOBILITY_DEVICE_2": "NSW Life Support Power Wheelchair 2",
            "NSW_LIFE_SUPPORT_ELECTRIC_MOBILITY_DEVICE_3": "NSW Life Support Power Wheelchair 3",
            "NSW_LIFE_SUPPORT_ELECTRIC_MOBILITY_DEVICE_4": "NSW Life Support Power Wheelchair 4",
            "NSW_LIFE_SUPPORT_OXYGEN_CONCENTRATOR": "NSW Life Support Oxygen concentrator - Part Time",
            "NSW_LIFE_SUPPORT_OXYGEN_CONCENTRATOR_2": "NSW Life Support Oxygen concentrator - Part Time 2",
            "NSW_LIFE_SUPPORT_OXYGEN_CONCENTRATOR_3": "NSW Life Support Oxygen concentrator - Part Time 3",
            "NSW_LIFE_SUPPORT_OXYGEN_CONCENTRATOR_4": "NSW Life Support Oxygen concentrator - Part Time 4",
            "NSW_LIFE_SUPPORT_OXYGEN_CONCENTRATOR_ALLDAY": "NSW Life Support Oxygen concentrator - 24 HR",
            "NSW_LIFE_SUPPORT_OXYGEN_CONCENTRATOR_ALLDAY_2": "NSW Life Support Oxygen concentrator - 24 HR 2",
            "NSW_LIFE_SUPPORT_OXYGEN_CONCENTRATOR_ALLDAY_3": "NSW Life Support Oxygen concentrator - 24 HR 3",
            "NSW_LIFE_SUPPORT_OXYGEN_CONCENTRATOR_ALLDAY_4": "NSW Life Support Oxygen concentrator - 24 HR 4",
            "NSW_LIFE_SUPPORT_OTHER": "NSW Life Support - Other",
            "ACT_LIFE_SUPPORT_KIDNEY_DIALYSIS_MACHINE": "ACT Life Support - Kidney Dialysis Machine",
            "ACT_LIFE_SUPPORT_OXYGEN_CONCENTRATOR": "ACT Life Support - Oxygen Concentrator",
            "ACT_LIFE_SUPPORT_RESPIRATOR": "ACT Life Support - Respirator",
            "ACT_LIFE_SUPPORT_CPAP_REGULATOR": "ACT Life Support - CPAP Regulator",
            "ACT_LIFE_SUPPORT_LONGSTAY": "ACT Life Support - Longstay",
            "ACT_LIFE_SUPPORT_NEBULISER": "ACT Life Support - Nebuliser",
            "ACT_LIFE_SUPPORT_LS_REFERENCE": "ACT Life Support - LS Reference",
            "ACT_LIFE_SUPPORT_TPN_DEVICE": "ACT Life Support - TPN Device",
            "ACT_LIFE_SUPPORT_OTHER_APPARATUS": "ACT Life Support - Other Apparatus",
            "VIC_EXCESS_ELECTRICITY_CONCESSION": "Victoria Excess Electricity Concession",
            "VIC_EXCESS_GAS_CONCESSION": "Victoria Excess Gas Concession",
            "VIC_GOVERNMENT_MEDICAL_COOLING_CONCESSION": "VIC government medical cooling concession",
            "VIC_LIFE_SUPPORT_INTERMITTENT_PERITONEAL_DIALYSIS_MACHINES": "VIC Life Support - Intermittent Peritoneal Dialysis Machines",
            "VIC_LIFE_SUPPORT_OXYGEN_CONCENTRATOR": "VIC Life Support - Oxygen Concentrator",
            "VIC_LIFE_SUPPORT_HAEMODIALYSIS_MACHINES": "VIC Life Support - Haemodialysis Machines",
            "VIC_LIFE_SUPPORT_OTHER": "VIC Life Support - Other"
          }
        },
        "end_at": {
          "type": "string",
          "format": "date",
          "description": "<p>End date of the rebate. This is a mandatory field for NSW, which is 2 years after start date. If no end date for other states, value of 2099-12-31 can be used.</p>"
        },
        "start_at": {
          "type": "string",
          "format": "date",
          "description": "<p>Start date of the rebate.</p>"
        }
      },
      "required": [
        "eligibility_type",
        "end_at",
        "start_at"
      ],
      "x-validators": [
        {
          "name": "Validate <code>⁨end_at⁩</code> not before <code>⁨start_at⁩</code>",
          "description": "Validates that <code>⁨end_at⁩</code>, if given, is on or later than <code>⁨start_at⁩</code>.",
          "possible_errors": [
            "start_date_later_than_end_date"
          ]
        }
      ]
    },
    "AusNetEmissions": {
      "type": "object",
      "properties": {
        "from_time": {
          "type": "string",
          "format": "date-time",
          "description": "<p>Net emission from time.</p>"
        },
        "kg_co2_net_emissions": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,10}(?:\\.\\d{0,10})?$",
          "description": "<p>CO2 net emission in kg.</p>"
        },
        "to_time": {
          "type": "string",
          "format": "date-time",
          "description": "<p>Net emission to time.</p>"
        }
      },
      "required": [
        "from_time",
        "kg_co2_net_emissions",
        "to_time"
      ],
      "x-validators": [
        {
          "name": "Validate from time not after to time",
          "description": "Validate that from time is not after to time.",
          "possible_errors": [
            "from_time_not_after_to_time"
          ]
        }
      ]
    },
    "AusPaymentInstruction": {
      "type": "object",
      "properties": {
        "bank_account": {
          "allOf": [
            {
              "$ref": "#/$defs/AusPaymentInstructionBankAccount"
            }
          ],
          "description": "<p>Bank account payment instruction details.</p>"
        },
        "card": {
          "allOf": [
            {
              "$ref": "#/$defs/PaymentInstructionCard"
            }
          ],
          "description": "<p>Card payment instruction details.</p>"
        },
        "customer_reference": {
          "type": "string",
          "description": "<p>The customer reference of the payment instruction.</p><p>Although not required for payment instructions to take payments, if provided it keeps Kraken's data in sync with the customer's account in the payment vendor's systems.</p>",
          "maxLength": 512
        },
        "instruction_identifier": {
          "type": "string",
          "description": "<p>Unique identifier for the payment instruction. Used for cross referencing the payment instruction within other parts of the payload.</p>"
        },
        "ledger_code": {
          "type": "string",
          "description": "<p>The code of the relevant Kraken ledger type for the payment instruction. This code must exist in Kraken.</p>",
          "x-validators": [
            {
              "name": "Validate ledger code",
              "description": "Validates that the ledger code provided in the payload matches an available ledger type in Kraken.",
              "possible_errors": [
                "ledger_code_does_not_exist"
              ]
            }
          ]
        },
        "reference": {
          "type": "string",
          "description": "<p>The reference of the mandate as known by the vendor.</p>",
          "maxLength": 512
        },
        "type": {
          "enum": [
            "BPAY",
            "CARD",
            "CUSTOM",
            "DIRECT_DEBIT",
            "GMO_REFUND",
            "PAYMENT_SLIP"
          ],
          "type": "string",
          "x-spec-enum-id": "601d0b035869d4dd",
          "description": "<p>The payment type of the payment instruction.</p>",
          "x-enum-descriptions": {
            "BPAY": "BPAY",
            "CARD": "Card",
            "CUSTOM": "Custom",
            "DIRECT_DEBIT": "Direct Debit",
            "GMO_REFUND": "GMO Refund",
            "PAYMENT_SLIP": "Payment slip"
          }
        },
        "use_for_scheduled_payments": {
          "type": "boolean",
          "description": "<p>Whether this payment instruction should be used for scheduled payments on a given ledger. If true, this instruction will be set as the payment method for the account's payment schedule.</p>"
        },
        "valid_from": {
          "type": "string",
          "format": "date",
          "description": "<p>The date from which the payment instruction is valid.</p>"
        },
        "valid_to": {
          "type": "string",
          "format": "date",
          "description": "<p>Exclusive date until when the payment instruction is valid.</p>"
        },
        "vendor": {
          "enum": [
            "WESTPAC"
          ],
          "type": "string",
          "x-spec-enum-id": "19baa89b6ef9d00c",
          "description": "<p>The vendor for the payment instruction.</p>",
          "x-enum-descriptions": {
            "WESTPAC": "Westpac"
          }
        }
      },
      "required": [
        "reference",
        "type",
        "valid_from",
        "vendor"
      ],
      "x-validators": [
        {
          "name": null,
          "description": null,
          "possible_errors": [
            "incomplete_payments_not_enabled"
          ]
        },
        {
          "name": "Validate card details are provided for card payment instruction",
          "description": "Validate that if the payment instruction is of type CARD then card payment details are provided in the payload. This may not be enforced if client is using cashflow instructions as card details are obtained from the vendor in this case.",
          "possible_errors": [
            "card_details_not_provided_for_card_payment_instruction"
          ]
        },
        {
          "name": "Validate <code>⁨valid_to⁩</code> not before <code>⁨valid_from⁩</code>",
          "description": "Validates that <code>⁨valid_to⁩</code>, if given, is on or later than <code>⁨valid_from⁩</code>.",
          "possible_errors": [
            "start_date_later_than_end_date"
          ]
        },
        {
          "name": "Validate vendor is a default vendor",
          "description": "Validate that provided card vendor is a default card vendor or provided bank account vendor is a default bank account vendor.",
          "possible_errors": [
            "invalid_vendor"
          ]
        }
      ]
    },
    "AusPaymentInstructionBankAccount": {
      "type": "object",
      "properties": {
        "account_holder": {
          "type": "string",
          "description": "<p>The name of the account holder on the bank account.</p>",
          "maxLength": 255
        },
        "account_number": {
          "type": "string",
          "description": "<p>The account number for the bank account.</p>"
        },
        "bsb": {
          "type": "string",
          "description": "<p>The ‘bank, state, branch’ number for the bank account.</p>",
          "x-validators": [
            {
              "name": "Validate sort code",
              "description": "Validates that a sort code conforms to the norms of the region from which the migration is taking place.",
              "possible_errors": [
                "invalid_sort_code"
              ]
            }
          ]
        },
        "iban": {
          "type": "string",
          "description": "<p>The iban code for the bank account.</p>"
        },
        "sort_code": {
          "type": "string",
          "description": "<p>The sort code for the bank account.</p>"
        }
      },
      "required": [
        "account_holder",
        "account_number",
        "bsb"
      ]
    },
    "AusPaymentPlan": {
      "type": "object",
      "properties": {
        "additional_information": {
          "allOf": [
            {
              "$ref": "#/$defs/AusPaymentPlanAdditionalInformation"
            }
          ],
          "description": "<p>Additional details from the source system that may be used by Kraken to create Hardship Agreements in line with the Payment Plans, or display useful information to Energy Specialists in the future. This structure is required if is_hardship is True.</p>"
        },
        "debt_amount": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,8}(?:\\.\\d{0,2})?$",
          "description": "<p>The amount of debt to be paid in each instalment of this Payment Plan.</p>"
        },
        "initial_schedule_type": {
          "enum": [
            "BACS_TRANSFER",
            "CARD_PAYMENT",
            "DIRECT_DEBIT",
            "PAYMENT_SLIP"
          ],
          "type": "string",
          "x-spec-enum-id": "f0dffe36af9c61e3",
          "description": "<p>Initial schedule type.</p>",
          "x-enum-descriptions": {
            "BACS_TRANSFER": "BACS_TRANSFER",
            "CARD_PAYMENT": "CARD_PAYMENT",
            "DIRECT_DEBIT": "DIRECT_DEBIT",
            "PAYMENT_SLIP": "PAYMENT_SLIP"
          }
        },
        "is_hardship": {
          "type": "boolean",
          "description": "<p>True if this plan was established due to the customer facing financial hardship. False if not. Kraken will create a Hardship Agreement in line with the Payment Plan if the value is True.</p>"
        },
        "last_payment_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Date when the last payment is expected to be made.</p>"
        },
        "next_payment_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Date when the next payment would be taken in the legacy system. It will be the first payment date in Kraken.</p>"
        },
        "number_of_remaining_instalments": {
          "type": "integer",
          "minimum": 1,
          "description": "<p>Number of instalments yet to be paid by the customer in this Payment Plan in the legacy system. It will be the total number of instalments for the Payment Plan in Kraken.</p>"
        },
        "ongoing_amount": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,8}(?:\\.\\d{0,2})?$",
          "description": "<p>The amount of expected ongoing consumption to be paid in each instalment of this Payment Plan.</p>"
        },
        "payment_frequency": {
          "enum": [
            "WEEKLY",
            "MONTHLY"
          ],
          "type": "string",
          "x-spec-enum-id": "01aca7e06ce12bfc",
          "description": "<p>Payment plan frequency.</p>",
          "x-enum-descriptions": {
            "WEEKLY": "WEEKLY",
            "MONTHLY": "MONTHLY"
          }
        },
        "payment_frequency_multiplier": {
          "type": "integer",
          "minimum": 1,
          "description": "<p>\n    Multiplier for the corresponding payment frequency. Examples:\n    <ul>\n        <li>A multiplier of 1 for a WEEKLY frequency means the customer will pay every week.</li>\n        <li>A multiplier of 1 for a MONTHLY frequency means the customer will pay every month.</li>\n        <li>A multiplier of 2 for a WEEKLY frequency means the customer will pay every 2 weeks, or, in other words, fortnightly.</li>\n    </ul>\n</p>"
        },
        "plan_type": {
          "enum": [
            "MIGRATION_DEBT_PLAN",
            "MIGRATION_UNDERPAY_PLAN",
            "MIGRATION_DEBT_AND_ONGOING",
            "MIGRATION_DEBT_INCENTIVE_PLAN",
            "MIGRATION_DEBT_ONGOING_INCENTIVE_PLAN"
          ],
          "type": "string",
          "x-spec-enum-id": "afadd18ff147b851",
          "description": "<p>Payment plan type.</p>",
          "x-enum-descriptions": {
            "MIGRATION_DEBT_PLAN": "MIGRATION_DEBT_PLAN",
            "MIGRATION_UNDERPAY_PLAN": "MIGRATION_UNDERPAY_PLAN",
            "MIGRATION_DEBT_AND_ONGOING": "MIGRATION_DEBT_AND_ONGOING",
            "MIGRATION_DEBT_INCENTIVE_PLAN": "MIGRATION_DEBT_INCENTIVE_PLAN",
            "MIGRATION_DEBT_ONGOING_INCENTIVE_PLAN": "MIGRATION_DEBT_ONGOING_INCENTIVE_PLAN"
          }
        }
      },
      "required": [
        "debt_amount",
        "initial_schedule_type",
        "is_hardship",
        "next_payment_date",
        "number_of_remaining_instalments",
        "ongoing_amount",
        "payment_frequency",
        "payment_frequency_multiplier",
        "plan_type"
      ],
      "x-validators": [
        {
          "name": "Validate required fields when <code>is_hardship</code> is true",
          "description": "Validates that <code>additional_information</code>, <code>first_payment_date</code>, <code>plan_start_date</code>, <code>plan_requested_by</code> and <code>hardship_circumstance</code> are required when <code>is_hardship</code> is true.",
          "possible_errors": [
            "field_required_for_hardship",
            "missing_additional_info"
          ]
        },
        {
          "name": "Validate payment frequency multiplier",
          "description": "Validates that max value for payment frequency multiplier when monthly payment is 52 and 12 when yearly.",
          "possible_errors": [
            "invalid_payment_frequency_multiplier"
          ]
        },
        {
          "name": "Validate payment dates",
          "description": "Validates that last payment date must be after first payment date, last payment date must be on or after next payment date, and first payment date must be the same or after plan start date.",
          "possible_errors": [
            "invalid_dates",
            "invalid_first_payment_date",
            "invalid_next_payment_date"
          ]
        }
      ]
    },
    "AusPaymentPlanAdditionalInformation": {
      "type": "object",
      "properties": {
        "first_payment_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Date when the first payment was made in the legacy system. This value will be required if is_hardship is True. A Hardship Agreement aligned to this date will also be created in Kraken.</p>"
        },
        "hardship_circumstance": {
          "enum": [
            "DEATH_IN_FAMILY",
            "HOUSEHOLD_ILLNESS",
            "FAMILY_VIOLENCE",
            "UNEMPLOYMENT",
            "REDUCED_INCOME",
            "OTHER"
          ],
          "type": "string",
          "x-spec-enum-id": "51c85b8f460f5123",
          "description": "<p>This value will be required if <code>payment_plans.is_hardship</code> is True. The reason that led the customer to a hardship situation.</p>",
          "x-enum-descriptions": {
            "DEATH_IN_FAMILY": "DEATH_IN_FAMILY",
            "HOUSEHOLD_ILLNESS": "HOUSEHOLD_ILLNESS",
            "FAMILY_VIOLENCE": "FAMILY_VIOLENCE",
            "UNEMPLOYMENT": "UNEMPLOYMENT",
            "REDUCED_INCOME": "REDUCED_INCOME",
            "OTHER": "OTHER"
          }
        },
        "next_assessment_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The date when the next assessment of this payment occurs in the source system.</p>"
        },
        "plan_category": {
          "type": "string",
          "description": "<p>The category of the Payment Plan in the source system.</p>"
        },
        "plan_number": {
          "type": "string",
          "description": "<p>The identifier of the Payment Plan in the source system.</p>"
        },
        "plan_requested_by": {
          "enum": [
            "SELF_IDENTIFIED",
            "EXTERNAL_REFERENCE",
            "RETAILER_REFERRAL"
          ],
          "type": "string",
          "x-spec-enum-id": "98d6c47ed00e6b6f",
          "description": "<p>This value will be required if <code>payment_plans.is_hardship</code> is True. Harship entry reason.</p>",
          "x-enum-descriptions": {
            "SELF_IDENTIFIED": "SELF_IDENTIFIED",
            "EXTERNAL_REFERENCE": "EXTERNAL_REFERENCE",
            "RETAILER_REFERRAL": "RETAILER_REFERRAL"
          }
        },
        "plan_start_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Date when the payment plan started in the legacy system. This date must be earlier or equal to the first_payment_date. This value will be required if is_hardship is True.</p>"
        },
        "total_debt_amount": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,8}(?:\\.\\d{0,2})?$",
          "description": "<p>The total amount of debt to be paid off in this Payment Plan.</p>"
        },
        "total_ongoing_amount": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,8}(?:\\.\\d{0,2})?$",
          "description": "<p>The amount of expected ongoing consumption to be paid off in the course of this Payment Plan.</p>"
        }
      }
    },
    "AusPaymentTerms": {
      "type": "object",
      "properties": {
        "apply_to_portfolio": {
          "type": "boolean",
          "default": false,
          "description": "<p>Whether to apply terms to entire portfolio. Can only be set if the migration payload is for a lead account.</p>"
        },
        "is_term_in_working_days": {
          "type": "boolean",
          "default": false,
          "description": "<p>Whether the term is calculated on working days or calendar days. Defaults to false.</p>"
        },
        "number_of_days_to_pay": {
          "type": "integer",
          "maximum": 90,
          "minimum": 10,
          "description": "<p>Number of days timespan before going into dunning paths.</p>"
        },
        "valid_from": {
          "type": "string",
          "format": "date",
          "description": "<p>When the payment term configuration should start.</p>"
        },
        "valid_to": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>When the payment term configuration should end. If null, it never ends.</p>"
        }
      },
      "required": [
        "number_of_days_to_pay",
        "valid_from"
      ],
      "x-validators": [
        {
          "name": "Validate <code>⁨valid_to⁩</code> not before <code>⁨valid_from⁩</code>",
          "description": "Validates that <code>⁨valid_to⁩</code>, if given, is on or later than <code>⁨valid_from⁩</code>.",
          "possible_errors": [
            "start_date_later_than_end_date"
          ]
        }
      ]
    },
    "AusPropertyRichAddress": {
      "type": "object",
      "properties": {
        "administrative_area": {
          "enum": [
            "ACT",
            "NSW",
            "NT",
            "QLD",
            "SA",
            "TAS",
            "VIC",
            "WA"
          ],
          "type": "string",
          "x-spec-enum-id": "0083aa6c13849f88",
          "description": "<p>Australian state.</p>",
          "x-enum-descriptions": {
            "ACT": "ACT",
            "NSW": "NSW",
            "NT": "NT",
            "QLD": "QLD",
            "SA": "SA",
            "TAS": "TAS",
            "VIC": "VIC",
            "WA": "WA"
          }
        },
        "country": {
          "type": "string",
          "description": "<p>The ISO 3166-1-alpha-2 code of the country that this address belongs to, for example AU (Australia) or GB (Great Britain).</p>",
          "maxLength": 2
        },
        "delivery_point_identifier": {
          "type": "string",
          "description": "<p>The unique country specific identifier for an address. For example the UPRN in the UK or G-NAF ID in Australia.</p>",
          "maxLength": 11,
          "x-validators": [
            {
              "name": "Validate delivery point identifier",
              "description": "Validate that the delivery point identifier contains only capital letters and numbers.",
              "possible_errors": [
                "invalid_delivery_point_identifier"
              ]
            }
          ]
        },
        "dependent_locality": {
          "type": "string",
          "default": "",
          "description": "<p>Dependent localities, neighbourhoods or boroughs. These are sometimes included in an address when the delivery point is outside the boundary of the main postal town that serves it.</p>",
          "maxLength": 512
        },
        "locality": {
          "type": "string",
          "description": "<p>Australian suburb or town.</p>",
          "maxLength": 46
        },
        "name": {
          "type": "string",
          "default": "",
          "description": "<p>The recipient's name.</p>",
          "deprecated": true
        },
        "organization": {
          "type": "string",
          "default": "",
          "description": "<p>The company or organization to which the address belongs.</p>",
          "deprecated": true
        },
        "postal_code": {
          "type": "string",
          "description": "<p>Australian postal code.</p>",
          "maxLength": 4,
          "x-validators": [
            {
              "name": "Validate and normalize postcode",
              "description": "Validate the postal code and normalize it to a standard format.",
              "possible_errors": [
                "invalid_postcode"
              ]
            }
          ]
        },
        "sorting_code": {
          "type": "string",
          "default": "",
          "description": "<p>This is a non-geographic code used for recipients of large quantities of post, such as companies or government departments. An example is the French CEDEX code.</p>",
          "maxLength": 512
        },
        "street_address": {
          "type": "string",
          "default": "",
          "description": "<p>Free text field for the address. Either this field or the <code>structured_address</code> field should be provided, not both.</p>"
        },
        "structured_street_address": {
          "allOf": [
            {
              "$ref": "#/$defs/AusStructuredStreetAddress"
            }
          ],
          "description": "<p>Structured address object. Fields for this object are territory dependent. Please speak to the tech team about uses of this field. Either this field or the <code>street_address</code> should be provided, not both.</p>"
        }
      },
      "required": [
        "administrative_area",
        "country",
        "locality",
        "postal_code",
        "structured_street_address"
      ],
      "x-validators": [
        {
          "name": "Validate and normalize postcode",
          "description": "Validate the postal code and normalize it to a standard format.",
          "possible_errors": [
            "invalid_postcode"
          ]
        },
        {
          "name": "Validate address",
          "description": "Validate that the address is in the correct format.",
          "possible_errors": [
            "invalid_address"
          ]
        }
      ]
    },
    "AusRichSupplyAddress": {
      "type": "object",
      "properties": {
        "customer_at_supply_address_from_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The date when the customer started being on supply at the given address.</p>"
        },
        "customer_at_supply_address_to_date": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>The date when the customer stopped being on supply at the given address, e.g. when they moved out.</p>"
        },
        "embedded_network_code": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p>For CES (centralised/community energy services) - the network code (name) of the embedded network to which the supply address belongs. Must be pre-defined in Kraken. Case sensitive, and allows spaces: \"The Island\", \"THE ISLAND\" and \"THE_ISLAND\" are all different.</p>",
          "maxLength": 512
        },
        "is_landlord": {
          "type": "boolean",
          "default": false,
          "description": "<p>Whether this account holder is the landlord of the property.</p>"
        },
        "label": {
          "type": "string",
          "description": "<p>Label to identify the supply address.</p>",
          "maxLength": 255
        },
        "life_support": {
          "allOf": [
            {
              "$ref": "#/$defs/AusLifeSupport"
            }
          ],
          "description": "<p>Life Support details to be associated with this account. All dates are format yyyy-mm-dd. E.g. 2022-01-15</p>"
        },
        "metadata": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Metadata"
          },
          "description": "data-import--field-definition--property-hierarchy-details--metadata--html"
        },
        "meter_points": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/MeterPoint"
          },
          "description": "<p>List of meter points linked to the property.</p>"
        },
        "primary_place_of_residence_since": {
          "type": "string",
          "format": "date",
          "description": "<p>This field is used to determine if this address is the customer's primary place of residence.</p>"
        },
        "property_administrators": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/PropertyAdministrator"
          },
          "description": "<p>Details of any persons who are considered administrators of the supply address. Only one entry is currently permitted - additional administrators need to be added via the support site. This user will be granted admin access to all accounts within the same portfolio.</p>"
        },
        "property_external_identifier": {
          "type": "string",
          "description": "<p>The extrernal identifier for the property<\\p>",
          "maxLength": 255
        },
        "supply_address": {
          "allOf": [
            {
              "$ref": "#/$defs/AusPropertyRichAddress"
            }
          ],
          "description": "<p>Supply address object.</p>"
        }
      },
      "required": [
        "customer_at_supply_address_from_date",
        "meter_points",
        "supply_address"
      ],
      "x-validators": [
        {
          "name": "Validate landlord details and property administrators aren't both provided",
          "description": "Validate that landlord details and property administrators aren't both provided. If landlord details are provided, copy them to the property administrators field.",
          "possible_errors": [
            "both_landlord_details_and_property_administrators_provided"
          ]
        },
        {
          "name": "Validate no more than one property administrator is provided",
          "description": "Validate no more than one property administrator is provided.",
          "possible_errors": [
            "multiple_property_administrators"
          ]
        },
        {
          "name": "Validate life support registration owner and life support equipment",
          "description": "Validates that registration owner, life support equipment is valid and only electricity, gas, embedded hot water and embedded electricity LS are currently supported life support.",
          "possible_errors": [
            "invalid_life_support_equipment",
            "life_support_not_supported",
            "life_support_with_invalid_registration_owner"
          ]
        }
      ]
    },
    "AusStatement": {
      "type": "object",
      "properties": {
        "average_daily_usage": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,10}(?:\\.\\d{0,10})?$",
          "description": "<p>The average daily usage of the statement.</p>"
        },
        "bill_period_from_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The statement start date (inclusive).</p>"
        },
        "bill_period_to_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The statement end date (inclusive).</p>"
        },
        "gross_amount": {
          "type": [
            "integer",
            "null"
          ],
          "description": "<p>The gross amount of the statement, in the lowest denomination for the currency.</p>"
        },
        "is_reversed": {
          "type": "boolean",
          "description": "<p>Whether or not is reversed.</p>"
        },
        "issued_date": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>The date the statement was issued.</p>"
        },
        "net_emissions": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "$ref": "#/$defs/AusNetEmissions"
          },
          "description": "<p>List of net emissions.</p>"
        },
        "number": {
          "type": "string",
          "description": "<p>The external customer-facing statement number.</p>"
        },
        "statement_id": {
          "type": "string",
          "description": "<p>The ID of the statement.</p>"
        },
        "statement_path": {
          "type": "string",
          "description": "<p>The relative path in S3 of the statement PDF file.</p>",
          "x-validators": [
            {
              "name": "Validate path exists in file store",
              "description": "Validate that the given path corresponds to a file that has previously been uploaded to the migration file store. Note that this validation is disabled by default and can be enabled using the relevant feature flag.",
              "possible_errors": [
                "path_does_not_exist_in_file_store"
              ]
            }
          ]
        },
        "total_consumption": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,10}(?:\\.\\d{0,10})?$",
          "description": "<p>The total consumption of the statement.</p>"
        },
        "total_consumption_cost": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,10}(?:\\.\\d{0,10})?$",
          "description": "<p>The total consunption cost of the statement.</p>"
        },
        "total_feed_in_cost": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,10}(?:\\.\\d{0,10})?$",
          "description": "<p>The total feed in cost of the statement.</p>"
        },
        "total_feed_in_energy": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,10}(?:\\.\\d{0,10})?$",
          "description": "<p>The total feed in energy of the statement.</p>"
        },
        "total_supply_cost": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,10}(?:\\.\\d{0,10})?$",
          "description": "<p>The total supply cost of the statement.</p>"
        }
      },
      "required": [
        "bill_period_from_date",
        "bill_period_to_date",
        "statement_id"
      ],
      "x-validators": [
        {
          "name": null,
          "description": null,
          "possible_errors": [
            "missing_statement_path_or_pdf_context",
            "received_statement_path_and_pdf_context"
          ]
        }
      ]
    },
    "AusStructuredStreetAddress": {
      "type": "object",
      "properties": {
        "building_or_property_name": {
          "type": "string",
          "description": "<p>Building or property name. No longer than 60 chars as two lines of 30 chars each. If more than 30 chars, there must be a <code>\\n</code> after 30 chars.</p>",
          "maxLength": 60,
          "x-validators": [
            {
              "name": "Validate multiline max length",
              "description": "Validates that the value has at most 2 lines and max 30 characters per line.",
              "possible_errors": [
                "multiline_max_length_exceeded"
              ]
            }
          ]
        },
        "flat_or_unit_number": {
          "type": "string",
          "description": "<p>if supplied, <code>flat_or_unit_type</code> must be as well. limit of 7 characters, numbers and <code>.</code> with optional alphabetical prefix and suffix.</p>"
        },
        "flat_or_unit_type": {
          "enum": [
            "ANT",
            "APT",
            "ATM",
            "BBQ",
            "BLCK",
            "BTSD",
            "BLDG",
            "BNGW",
            "CAGE",
            "CARP",
            "CARS",
            "CLUB",
            "COOL",
            "CTGE",
            "DUP",
            "FY",
            "F",
            "GRGE",
            "HALL",
            "HSE",
            "KSK",
            "LSE",
            "LBBY",
            "LOFT",
            "LOT",
            "MSNT",
            "MB",
            "OFF",
            "PTHS",
            "REAR",
            "RESV",
            "RM",
            "SEC",
            "SHED",
            "SHOP",
            "SHRM",
            "SIGN",
            "SITE",
            "SL",
            "STOR",
            "STR",
            "STU",
            "SUBS",
            "SE",
            "TNCY",
            "TWR",
            "TNHS",
            "U",
            "VLT",
            "VLLA",
            "WARD",
            "WE",
            "WKSH"
          ],
          "type": "string",
          "x-spec-enum-id": "9306e5734ae7a103",
          "description": "<p>Flat or unit type.</p>",
          "x-enum-descriptions": {
            "ANT": "Antenna",
            "APT": "Apartment",
            "ATM": "ATM",
            "BBQ": "Barbeque",
            "BLCK": "Block",
            "BTSD": "Boatshed",
            "BLDG": "Building",
            "BNGW": "Bungalow",
            "CAGE": "Cage",
            "CARP": "Carpark",
            "CARS": "Carspace",
            "CLUB": "Club",
            "COOL": "Coolroom",
            "CTGE": "Cottage",
            "DUP": "Duplex",
            "FY": "Factory",
            "F": "Flat",
            "GRGE": "Garage",
            "HALL": "Hall",
            "HSE": "House",
            "KSK": "Kiosk",
            "LSE": "Lease",
            "LBBY": "Lobby",
            "LOFT": "Loft",
            "LOT": "Lot",
            "MSNT": "Maisonette",
            "MB": "Marine Berth",
            "OFF": "Office",
            "PTHS": "Penthouse",
            "REAR": "Rear",
            "RESV": "Reserve",
            "RM": "Room",
            "SEC": "Section",
            "SHED": "Shed",
            "SHOP": "Shop",
            "SHRM": "Showroom",
            "SIGN": "Sign",
            "SITE": "Site",
            "SL": "Stall",
            "STOR": "Store",
            "STR": "Strata Unit",
            "STU": "Studio",
            "SUBS": "Substation",
            "SE": "Suite",
            "TNCY": "Tenancy",
            "TWR": "Tower",
            "TNHS": "Townhouse",
            "U": "Unit",
            "VLT": "Vault",
            "VLLA": "Villa",
            "WARD": "Ward",
            "WE": "Warehouse",
            "WKSH": "Workshop"
          }
        },
        "floor_or_level_number": {
          "type": "string",
          "description": "<p>if supplied, <code>floor_or_level_type</code> must be as well. limit of 5 characters, numbers and <code>.</code> with optional alphabetical prefix and suffix</p>",
          "maxLength": 7
        },
        "floor_or_level_type": {
          "enum": [
            "B",
            "FL",
            "G",
            "L",
            "LG",
            "M",
            "LL",
            "OD",
            "P",
            "PTHS",
            "PLF",
            "PDM",
            "RT",
            "SB",
            "UG",
            "LB"
          ],
          "type": "string",
          "x-spec-enum-id": "9810b2a79eb3d5cf",
          "description": "<p>Floor or level type.</p>",
          "x-enum-descriptions": {
            "B": "Basement",
            "FL": "Floor",
            "G": "Ground",
            "L": "Level",
            "LG": "Lower Ground",
            "M": "Mezzanine",
            "LL": "Lower Level",
            "OD": "Observation Deck",
            "P": "Parking",
            "PTHS": "Penthouse",
            "PLF": "Platform",
            "PDM": "Podium",
            "RT": "Rooftop",
            "SB": "Sub-Basement",
            "UG": "Upper Ground",
            "LB": "Lobby"
          }
        },
        "house_number_1": {
          "type": "integer",
          "description": "<p>House number 1. If provided, <code>street_name</code> must be as well.</p>"
        },
        "house_number_2": {
          "type": "integer",
          "description": "<p>House number 2. If provided, <code>house_number_1</code> must be as well.</p>"
        },
        "house_number_suffix_1": {
          "type": "string",
          "description": "<p>House number suffix 1. If provided, <code>house_number_1</code> must be as well.</p>",
          "maxLength": 1
        },
        "house_number_suffix_2": {
          "type": "string",
          "description": "<p>House number suffix 2. If provided, <code>house_number_2</code> must be as well.</p>",
          "maxLength": 1
        },
        "location_descriptor": {
          "type": "string",
          "description": "<p>A description of the location.</p>"
        },
        "lot_number": {
          "type": "string",
          "description": "<p>Letters, numbers and <code>.</code>.</p>",
          "maxLength": 6
        },
        "postal_delivery_number_prefix": {
          "type": "string",
          "description": "<p>Postal delivery number prefix. Alphabetical (Uppercase). If provided, <code>postal_delivery_number_value</code> must be as well.</p>",
          "maxLength": 3,
          "x-validators": [
            {
              "name": "Validate value contains only alphabetic capitals",
              "description": "Validate the value contains only capital letters A-Z.",
              "possible_errors": [
                "value_must_be_alphabetic_caps"
              ]
            }
          ]
        },
        "postal_delivery_number_suffix": {
          "type": "string",
          "description": "<p>Postal delivery number suffix. Alphabetical (Uppercase). If provided, <code>postal_delivery_number_value</code> must be as well.</p>",
          "maxLength": 3,
          "x-validators": [
            {
              "name": "Validate value contains only alphabetic capitals",
              "description": "Validate the value contains only capital letters A-Z.",
              "possible_errors": [
                "value_must_be_alphabetic_caps"
              ]
            }
          ]
        },
        "postal_delivery_number_value": {
          "type": "integer",
          "description": "<p>Postal delivery number value. If provided, <code>postal_delivery_typ</code> must be as well.</p>"
        },
        "postal_delivery_type": {
          "enum": [
            "CARE PO",
            "CMA",
            "CMB",
            "CPA",
            "GPO BOX",
            "LOCKED BAG",
            "MS",
            "PO BOX",
            "PRIVATE BAG",
            "RSD",
            "RMB",
            "RMS"
          ],
          "type": "string",
          "x-spec-enum-id": "4faa648b6a55c770",
          "description": "<p>Postal delivery type.</p>",
          "x-enum-descriptions": {
            "CARE PO": "CARE PO",
            "CMA": "CMA",
            "CMB": "CMB",
            "CPA": "CPA",
            "GPO BOX": "GPO BOX",
            "LOCKED BAG": "LOCKED BAG",
            "MS": "MS",
            "PO BOX": "PO BOX",
            "PRIVATE BAG": "PRIVATE BAG",
            "RSD": "RSD",
            "RMB": "RMB",
            "RMS": "RMS"
          }
        },
        "street_name": {
          "type": "string",
          "description": "<p>Street name.</p>",
          "maxLength": 45
        },
        "street_suffix": {
          "enum": [
            "CN",
            "DE",
            "E",
            "EX",
            "IN",
            "LR",
            "ML",
            "N",
            "NE",
            "NW",
            "OF",
            "ON",
            "OT",
            "OP",
            "S",
            "SE",
            "SW",
            "UP",
            "W"
          ],
          "type": "string",
          "x-spec-enum-id": "f105f3c67a4f2af4",
          "description": "<p>Street suffix. If provided, <code>street_name</code> must be as well.</p>",
          "x-enum-descriptions": {
            "CN": "Central",
            "DE": "Deviation",
            "E": "East",
            "EX": "Extension",
            "IN": "Inner",
            "LR": "Lower",
            "ML": "Mall",
            "N": "North",
            "NE": "North East",
            "NW": "North West",
            "OF": "Off",
            "ON": "On",
            "OT": "Outer",
            "OP": "Overpass",
            "S": "South",
            "SE": "South East",
            "SW": "South West",
            "UP": "Upper",
            "W": "West"
          }
        },
        "street_type": {
          "enum": [
            "ACCS",
            "ACRE",
            "ALLY",
            "ALWY",
            "AMBL",
            "ANCG",
            "ANX",
            "APP",
            "ARC",
            "ARTL",
            "ART",
            "AVE",
            "BA",
            "BANK",
            "BASN",
            "BAY",
            "BCH",
            "BEND",
            "BLK",
            "BWLK",
            "BVD",
            "BVDE",
            "BOWL",
            "BRCE",
            "BRAE",
            "BRAN",
            "BRK",
            "BRET",
            "BDGE",
            "BDWY",
            "BROW",
            "BYPA",
            "BYWY",
            "CAUS",
            "CTR",
            "CNWY",
            "CH",
            "CIR",
            "CLT",
            "CCT",
            "CRCS",
            "CL",
            "CLR",
            "CLDE",
            "CMMN",
            "CNCD",
            "CON",
            "CNN",
            "CPS",
            "CNR",
            "CSO",
            "CRSE",
            "CT",
            "CTYD",
            "COVE",
            "CRES",
            "CRST",
            "CRF",
            "CRK",
            "CRSS",
            "CRSG",
            "CRD",
            "COWY",
            "CUWY",
            "CDS",
            "CUT",
            "CTTG",
            "DALE",
            "DASH",
            "DELL",
            "DENE",
            "DEVN",
            "DIP",
            "DSTR",
            "DIV",
            "DOCK",
            "DOM",
            "DOWN",
            "DWNS",
            "DR",
            "DRWY",
            "ESMT",
            "EDGE",
            "ELB",
            "END",
            "ENT",
            "ESP",
            "EST",
            "EXP",
            "EXTN",
            "FAWY",
            "FTRK",
            "FBRK",
            "FLNE",
            "FITR",
            "FLAT",
            "FLTS",
            "FOLW",
            "FTWY",
            "FORD",
            "FSHR",
            "FK",
            "FORM",
            "FWY",
            "FRNT",
            "FRTG",
            "GAP",
            "GDN",
            "GDNS",
            "GTE",
            "GTES",
            "GTWY",
            "GLD",
            "GLEN",
            "GRA",
            "GRN",
            "GRND",
            "GR",
            "GLY",
            "HRBR",
            "HVN",
            "HETH",
            "HTS",
            "HRD",
            "HWY",
            "HILL",
            "HLLW",
            "HUB",
            "INLT",
            "INTG",
            "INTN",
            "ISLD",
            "JNC",
            "KEY",
            "KEYS",
            "KNOL",
            "LADR",
            "LDG",
            "LANE",
            "LNWY",
            "LEAD",
            "LEDR",
            "LEES",
            "LINE",
            "LINK",
            "LT",
            "LKT",
            "LOOP",
            "LWR",
            "LYNN",
            "MALL",
            "MANR",
            "MART",
            "MEAD",
            "MNDR",
            "MEW",
            "MEWS",
            "MILE",
            "MWY",
            "MT",
            "NOOK",
            "NTH",
            "NULL",
            "OTLT",
            "OTLK",
            "OVAL",
            "PLMS",
            "PDE",
            "PRDS",
            "PARK",
            "PKLD",
            "PKWY",
            "PART",
            "PASS",
            "PSGE",
            "PATH",
            "PHWY",
            "PSLA",
            "PIAZ",
            "PL",
            "PLAT",
            "PLZA",
            "PKT",
            "PNT",
            "PORT",
            "PREC",
            "PROM",
            "PRST",
            "QUAD",
            "QDGL",
            "QDRT",
            "QY",
            "QYS",
            "RMBL",
            "RAMP",
            "RNGE",
            "RCH",
            "REEF",
            "RES",
            "REST",
            "RTT",
            "RTRN",
            "RIDE",
            "RDGE",
            "RGWY",
            "ROWY",
            "RING",
            "RISE",
            "RSNG",
            "RVR",
            "RVWY",
            "RVRA",
            "RD",
            "RDS",
            "RDSD",
            "RDWY",
            "RNDE",
            "RSBL",
            "RTY",
            "RND",
            "RTE",
            "ROW",
            "ROWE",
            "RUE",
            "RUN",
            "SWY",
            "SHUN",
            "SDNG",
            "SKLN",
            "SLPE",
            "SND",
            "STH",
            "SPUR",
            "SQ",
            "STRS",
            "SHWY",
            "STPS",
            "STRT",
            "STAI",
            "STRA",
            "ST",
            "STRP",
            "SBWY",
            "TARN",
            "TCE",
            "THOR",
            "THRU",
            "TLWY",
            "TOP",
            "TOR",
            "TWRS",
            "TRK",
            "TRL",
            "TRLR",
            "TMWY",
            "TVSE",
            "TRI",
            "TKWY",
            "TUNL",
            "TURN",
            "UPAS",
            "UPR",
            "VALE",
            "VLLY",
            "VDCT",
            "VIEW",
            "VWS",
            "VLL",
            "VLGE",
            "VLLS",
            "VSTA",
            "VUE",
            "WADE",
            "WALK",
            "WKWY",
            "WTRS",
            "WTWY",
            "WAY",
            "WHRF",
            "WOOD",
            "WDS",
            "WYND",
            "YARD"
          ],
          "type": "string",
          "x-spec-enum-id": "472734f6bfeb60b6",
          "description": "<p>Street type. If provided, <code>street_name</code> must be as well.</p>",
          "x-enum-descriptions": {
            "ACCS": "Access",
            "ACRE": "Acre",
            "ALLY": "Alley",
            "ALWY": "Alleyway",
            "AMBL": "Amble",
            "ANCG": "Anchorage",
            "ANX": "Annex",
            "APP": "Approach",
            "ARC": "Arcade",
            "ARTL": "Arterial",
            "ART": "Artery",
            "AVE": "Avenue",
            "BA": "Banan",
            "BANK": "Bank",
            "BASN": "Basin",
            "BAY": "Bay",
            "BCH": "Beach",
            "BEND": "Bend",
            "BLK": "Block",
            "BWLK": "Boardwalk",
            "BVD": "Boulevard",
            "BVDE": "Boulevarde",
            "BOWL": "Bowl",
            "BRCE": "Brace",
            "BRAE": "Brae",
            "BRAN": "Branch",
            "BRK": "Break",
            "BRET": "Brett",
            "BDGE": "Bridge",
            "BDWY": "Broadway",
            "BROW": "Brow",
            "BYPA": "Bypass",
            "BYWY": "Byway",
            "CAUS": "Causeway",
            "CTR": "Centre",
            "CNWY": "Centreway",
            "CH": "Chase",
            "CIR": "Circle",
            "CLT": "Circlet",
            "CCT": "Circuit",
            "CRCS": "Circus",
            "CL": "Close",
            "CLR": "Cluster",
            "CLDE": "Colonnade",
            "CMMN": "Common",
            "CNCD": "Concord",
            "CON": "Concourse",
            "CNN": "Connection",
            "CPS": "Copse",
            "CNR": "Corner",
            "CSO": "Corso",
            "CRSE": "Course",
            "CT": "Court",
            "CTYD": "Courtyard",
            "COVE": "Cove",
            "CRES": "Crescent",
            "CRST": "Crest",
            "CRF": "Crief",
            "CRK": "Crook",
            "CRSS": "Cross",
            "CRSG": "Crossing",
            "CRD": "Crossroad",
            "COWY": "Crossway",
            "CUWY": "Cruiseway",
            "CDS": "Cul-de-sac",
            "CUT": "Cut",
            "CTTG": "Cutting",
            "DALE": "Dale",
            "DASH": "Dash",
            "DELL": "Dell",
            "DENE": "Dene",
            "DEVN": "Deviation",
            "DIP": "Dip",
            "DSTR": "Distributor",
            "DIV": "Divide",
            "DOCK": "Dock",
            "DOM": "Domain",
            "DOWN": "Down",
            "DWNS": "Downs",
            "DR": "Drive",
            "DRWY": "Driveway",
            "ESMT": "Easement",
            "EDGE": "Edge",
            "ELB": "Elbow",
            "END": "End",
            "ENT": "Entrance",
            "ESP": "Esplanade",
            "EST": "Estate",
            "EXP": "Expressway",
            "EXTN": "Extension",
            "FAWY": "Fairway",
            "FTRK": "Fire Track",
            "FBRK": "Firebreak",
            "FLNE": "Fireline",
            "FITR": "Firetrail",
            "FLAT": "Flat",
            "FLTS": "Flats",
            "FOLW": "Follow",
            "FTWY": "Footway",
            "FORD": "Ford",
            "FSHR": "Foreshore",
            "FK": "Fork",
            "FORM": "Formation",
            "FWY": "Freeway",
            "FRNT": "Front",
            "FRTG": "Frontage",
            "GAP": "Gap",
            "GDN": "Garden",
            "GDNS": "Gardens",
            "GTE": "Gate",
            "GTES": "Gates",
            "GTWY": "Gateway",
            "GLD": "Glade",
            "GLEN": "Glen",
            "GRA": "Grange",
            "GRN": "Green",
            "GRND": "Ground",
            "GR": "Grove",
            "GLY": "Gully",
            "HRBR": "Harbour",
            "HVN": "Haven",
            "HETH": "Heath",
            "HTS": "Heights",
            "HRD": "Highroad",
            "HWY": "Highway",
            "HILL": "Hill",
            "HLLW": "Hollow",
            "HUB": "Hub",
            "INLT": "Inlet",
            "INTG": "Interchange",
            "INTN": "Intersection",
            "ISLD": "Island",
            "JNC": "Junction",
            "KEY": "Key",
            "KEYS": "Keys",
            "KNOL": "Knoll",
            "LADR": "Ladder",
            "LDG": "Landing",
            "LANE": "Lane",
            "LNWY": "Laneway",
            "LEAD": "Lead",
            "LEDR": "Leader",
            "LEES": "Lees",
            "LINE": "Line",
            "LINK": "Link",
            "LT": "Little",
            "LKT": "Lookout",
            "LOOP": "Loop",
            "LWR": "Lower",
            "LYNN": "Lynne",
            "MALL": "Mall",
            "MANR": "Manor",
            "MART": "Mart",
            "MEAD": "Mead",
            "MNDR": "Meander",
            "MEW": "Mew",
            "MEWS": "Mews",
            "MILE": "Mile",
            "MWY": "Motorway",
            "MT": "Mount",
            "NOOK": "Nook",
            "NTH": "North",
            "NULL": "Null",
            "OTLT": "Outlet",
            "OTLK": "Outlook",
            "OVAL": "Oval",
            "PLMS": "Palms",
            "PDE": "Parade",
            "PRDS": "Paradise",
            "PARK": "Park",
            "PKLD": "Parklands",
            "PKWY": "Parkway",
            "PART": "Part",
            "PASS": "Pass",
            "PSGE": "Passage",
            "PATH": "Path",
            "PHWY": "Pathway",
            "PSLA": "Peninsula",
            "PIAZ": "Piazza",
            "PL": "Place",
            "PLAT": "Plateau",
            "PLZA": "Plaza",
            "PKT": "Pocket",
            "PNT": "Point",
            "PORT": "Port",
            "PREC": "Precinct",
            "PROM": "Promenade",
            "PRST": "Pursuit",
            "QUAD": "Quad",
            "QDGL": "Quadrangle",
            "QDRT": "Quadrant",
            "QY": "Quay",
            "QYS": "Quays",
            "RMBL": "Ramble",
            "RAMP": "Ramp",
            "RNGE": "Range",
            "RCH": "Reach",
            "REEF": "Reef",
            "RES": "Reserve",
            "REST": "Rest",
            "RTT": "Retreat",
            "RTRN": "Return",
            "RIDE": "Ride",
            "RDGE": "Ridge",
            "RGWY": "Ridgeway",
            "ROWY": "Right of Way",
            "RING": "Ring",
            "RISE": "Rise",
            "RSNG": "Rising",
            "RVR": "River",
            "RVWY": "Riverway",
            "RVRA": "Riviera",
            "RD": "Road",
            "RDS": "Roads",
            "RDSD": "Roadside",
            "RDWY": "Roadway",
            "RNDE": "Ronde",
            "RSBL": "Rosebowl",
            "RTY": "Rotary",
            "RND": "Round",
            "RTE": "Route",
            "ROW": "Row",
            "ROWE": "Rowe",
            "RUE": "Rue",
            "RUN": "Run",
            "SWY": "Service Way",
            "SHUN": "Shun",
            "SDNG": "Siding",
            "SKLN": "Skyline",
            "SLPE": "Slope",
            "SND": "Sound",
            "STH": "South",
            "SPUR": "Spur",
            "SQ": "Square",
            "STRS": "Stairs",
            "SHWY": "State Highway",
            "STPS": "Steps",
            "STRT": "Straight",
            "STAI": "Strait",
            "STRA": "Strand",
            "ST": "Street",
            "STRP": "Strip",
            "SBWY": "Subway",
            "TARN": "Tarn",
            "TCE": "Terrace",
            "THOR": "Thoroughfare",
            "THRU": "Throughway",
            "TLWY": "Tollway",
            "TOP": "Top",
            "TOR": "Tor",
            "TWRS": "Towers",
            "TRK": "Track",
            "TRL": "Trail",
            "TRLR": "Trailer",
            "TMWY": "Tramway",
            "TVSE": "Traverse",
            "TRI": "Triangle",
            "TKWY": "Trunkway",
            "TUNL": "Tunnel",
            "TURN": "Turn",
            "UPAS": "Underpass",
            "UPR": "Upper",
            "VALE": "Vale",
            "VLLY": "Valley",
            "VDCT": "Viaduct",
            "VIEW": "View",
            "VWS": "Views",
            "VLL": "Villa",
            "VLGE": "Village",
            "VLLS": "Villas",
            "VSTA": "Vista",
            "VUE": "Vue",
            "WADE": "Wade",
            "WALK": "Walk",
            "WKWY": "Walkway",
            "WTRS": "Waters",
            "WTWY": "Waterway",
            "WAY": "Way",
            "WHRF": "Wharf",
            "WOOD": "Wood",
            "WDS": "Woods",
            "WYND": "Wynd",
            "YARD": "Yard"
          }
        }
      }
    },
    "AusSupplyCharge": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "CHARGE",
            "PAYMENT",
            "REPAYMENT",
            "CREDIT",
            "SUPPLY_CHARGE"
          ],
          "type": "string",
          "x-spec-enum-id": "06d6aba5cee32f9a",
          "description": "<p>The type of the transaction.</p>",
          "x-enum-descriptions": {
            "CHARGE": "Charge",
            "PAYMENT": "Payment",
            "REPAYMENT": "Repayment",
            "CREDIT": "Credit",
            "SUPPLY_CHARGE": "Supply Charge"
          }
        },
        "amount": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,10}(?:\\.\\d{0,10})?$",
          "description": "<p>The amount of the transaction. e.g. if the customer has a consumption charge worth 23.43, this equates to a transaction of type <code>CHARGE</code> of 23.43. Payments and repayments must be positive numbers. Generally charges and credits are also positive, but may be negative to represent reversed charges or credits, or if an incorrect estimated reading has resulted in a negative consumption charge. Provide this amount in the currency's major unit rather than its minor unit (for example euros rather than cents, or pounds rather than pence). These examples are illustrative only; the same applies to any currency that has a major and minor unit. For currencies without a minor unit, such as the Japanese yen, pass the value as-is.</p>"
        },
        "billing_document_identifier": {
          "type": "string",
          "description": "<p>The identifier from the source system that groups a set of transactions together. This will be used in Kraken during the migration of historical statement transactions to create an archived billing document. For now this field is only required if <code>HISTORICAL_STATEMENT_REQUIRE_SINGLE_BILLING_DOCUMENT_IDENTIFIER</code> settings is ON and is meant for only <code>historical_statements_transactions</code>. Passing this to other transactions like <code>current_statement_transactions</code> or <code>transactions_in_open_settlement_period</code> will raise validation error.</p>"
        },
        "display_note": {
          "type": "string",
          "description": "<p>The customer-facing note that can be displayed in a statement or email to the customer.</p>"
        },
        "line_items": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/AusLineItem"
          },
          "description": "<p>For <code>SUPPLY_CHARGE</code> transactions only, line items contain details about the charge, e.g. standing/consumption charge, billing period, number of units etc.</p>"
        },
        "note": {
          "type": "string",
          "description": "<p>Any additional notes about the transaction.</p>"
        },
        "product_code": {
          "type": "string",
          "description": "<p>The product code for the product that the transaction is associated with.</p>",
          "x-validators": [
            {
              "name": "Validate product code exists",
              "description": "Validate that the product code exists in Kraken.",
              "possible_errors": [
                "product_code_does_not_exist"
              ]
            }
          ]
        },
        "supply_point_identifier": {
          "type": "string",
          "description": "<p>Supply point identifier associated with the supply point this charge applies to.</p>"
        },
        "tax_items": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/TaxItem"
          },
          "description": "<p>For <code>SUPPLY_CHARGE</code> and <code>CHARGE</code> transactions only, tax items contain details about the tax. If not provided will be set to default zero tax.</p>"
        },
        "transaction_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The date of the transaction.</p>",
          "x-validators": [
            {
              "name": "Validate transaction date",
              "description": "Validates that the transaction date provided in the payload is not in the future.",
              "possible_errors": [
                "transaction_in_future"
              ]
            }
          ]
        },
        "transaction_id": {
          "type": "string",
          "description": "<p>The unique internal identifier for the transaction.</p>"
        }
      },
      "required": [
        "amount",
        "line_items",
        "product_code",
        "transaction_date",
        "transaction_id",
        "type"
      ],
      "x-validators": [
        {
          "name": "Validates supply charge line item rate",
          "description": "This validation only applies to transactions of type supply charge. Validates that product code is provided and a product exists with that code. Validates that line items are provided and each line item rate band exists for the product.",
          "possible_errors": []
        },
        {
          "name": "Validate that the given price per unit matches an existing rate price per unit",
          "description": "Validate that the given price per unit matches an existing rate price per unit. If the existing rate is a dynamic rate (i.e. it has a <code>NaN</code> price per unit), then there must be a price per unit in the payload.",
          "possible_errors": []
        },
        {
          "name": "Validate line item number of units",
          "description": "Validate that the line item number of units matches the number of days in the period provided for standing charges.",
          "possible_errors": []
        },
        {
          "name": "Validate that the total transaction amount is correct",
          "description": "Ensure that the total line items amount matches transaction amount.",
          "possible_errors": [
            "ledger_transaction_amount_does_not_match_with_line_item_net_amount_and_tax_amount"
          ]
        },
        {
          "name": "Ensure supply point identifier is provided when line items use rate_specification_code",
          "description": "Validate that <code>supply_point_identifier</code> is provided when any line item contains a <code>rate_specification_code</code>, as the supply point is required for rate resolution.",
          "possible_errors": [
            "supply_point_identifier_required_for_rate_specification_code"
          ]
        },
        {
          "name": "Validate that the line items do not overlap with any already charged periods",
          "description": "Validate that the line item periods do not overlap with any already charged periods for a supply point.",
          "possible_errors": [
            "line_items_overlap_already_charged_period"
          ]
        }
      ]
    },
    "AusTransaction": {
      "oneOf": [
        {
          "$ref": "#/$defs/Credit"
        },
        {
          "$ref": "#/$defs/AusCharge"
        },
        {
          "$ref": "#/$defs/Payment"
        },
        {
          "$ref": "#/$defs/Repayment"
        },
        {
          "$ref": "#/$defs/AusSupplyCharge"
        }
      ]
    },
    "BaseBusiness": {
      "type": "object",
      "properties": {
        "business_type": {
          "enum": [
            "SOLE_TRADER",
            "LTD",
            "PTY_LTD",
            "PARTNERSHIP",
            "CHARITY",
            "PLC",
            "LLP",
            "TRUST",
            "TRADING_AS",
            "GOVERNMENT",
            "NON_PROFIT",
            "CHURCH",
            "HOMEOWNER_ASSOCIATION",
            "TBD"
          ],
          "type": "string",
          "x-spec-enum-id": "8cd3a9d2ed8d5378",
          "description": "<p>The type of business this account related to. The business type can only be provided for business accounts.</p>",
          "x-enum-descriptions": {
            "SOLE_TRADER": "Sole trader",
            "LTD": "Limited",
            "PTY_LTD": "Proprietary Limited Company",
            "PARTNERSHIP": "Partnership",
            "CHARITY": "Charity",
            "PLC": "Public limited company",
            "LLP": "Limited liability partnership",
            "TRUST": "Trust",
            "TRADING_AS": "Trading as",
            "GOVERNMENT": "Government",
            "NON_PROFIT": "Non profit",
            "CHURCH": "Church",
            "HOMEOWNER_ASSOCIATION": "Homeowner association",
            "TBD": "To be determined"
          }
        },
        "company_name": {
          "type": "string",
          "description": "<p>The company name for a business account.</p>",
          "maxLength": 255
        },
        "company_number": {
          "type": "string",
          "description": "<p>The company number for a business account.</p>",
          "maxLength": 100,
          "x-validators": [
            {
              "name": "Validate company number",
              "description": "Validate the company number and standardize its format.",
              "possible_errors": [
                "invalid_company_number"
              ]
            }
          ]
        },
        "details": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/BusinessDetail"
          },
          "description": "<p>Generic solution for storing additional business data that is not covered by the other fields in the payload. This is often in the form of market or territory specific information. Keys must be registered in Kraken and will have a value type the value for the key must confirm to.</p>",
          "x-validators": [
            {
              "name": "Validate that each child has unique values for the <code>⁨key⁩</code> field",
              "description": "Validate that each child has unique values for the <code>⁨key⁩</code> field.",
              "possible_errors": [
                "children_with_duplicate_values"
              ]
            }
          ]
        },
        "portfolios": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/BusinessPortfolio"
          },
          "description": "<p>Information about the portfolios associated with this business.</p>"
        },
        "segment_name": {
          "x-spec-enum-id": "4f53cda18c2baa0c",
          "description": "<p>The segment to which the business belongs.</p>",
          "x-comment": "Choices for this field are dynamic, once appropriate values have been configured they will be rendered here."
        },
        "users": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/BusinessUser"
          },
          "description": "<p>List of the business users associated with the business.</p>"
        }
      }
    },
    "BasePaymentPreference": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "ACTIVE_EXISTING",
            "ACTIVE_NEW",
            "PASSIVE"
          ],
          "type": "string",
          "x-spec-enum-id": "4cc9502ba974f87d",
          "description": "<p>Indicates whether this payment preference refers to an existing payment instruction already present in Kraken, or to a new one being created in the import.</p>",
          "x-enum-descriptions": {
            "ACTIVE_EXISTING": "Existing Payment Instruction",
            "ACTIVE_NEW": "New Payment Instruction",
            "PASSIVE": "No Payment Instruction Preference"
          }
        },
        "ledger_identifier": {
          "type": "string",
          "description": "<p>Identifier for the ledger from the <code>ledgers</code>. This will be used to link the payment instruction to a specific ledger being imported using payment preference.</p>"
        }
      },
      "required": [
        "ledger_identifier",
        "type"
      ]
    },
    "BespokeRateConfiguration": {
      "type": "object",
      "properties": {
        "term_type": {
          "type": "string",
          "description": "<p>The type of the contract term.</p>"
        },
        "is_variable": {
          "type": "boolean",
          "default": true,
          "description": "<p>Whether the contract term is variable in Kraken or not. If not, it must be amended by a new contract.</p>"
        },
        "schedules": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/BespokeRateSchedule"
          },
          "description": "<p>The schedules of bespoke rates.</p>",
          "minItems": 1,
          "x-validators": [
            {
              "name": "Validate bespoke rates do not conflict",
              "description": "Validate bespoke rates for the same target and rate do not conflict during the same period. The target of a bespoke rate is determined by the supply point identifier and product code.",
              "possible_errors": [
                "overlapping_bespoke_rate_schedules"
              ]
            },
            {
              "name": "Validate bespoke rate schedules target consistently",
              "description": "Validate that bespoke rate schedules either all target supply points via the supply_point_identifier field or none do.",
              "possible_errors": [
                "inconsistent_bespoke_rate_schedule_targeting"
              ]
            }
          ]
        }
      },
      "required": [
        "schedules",
        "term_type"
      ]
    },
    "BespokeRateItem": {
      "type": "object",
      "properties": {
        "identifier": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p>A unique identifier for the bespoke rate item.</p>"
        },
        "price_per_unit": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,11}(?:\\.\\d{0,8})?$",
          "description": "<p>The price per unit of the bespoke rate.</p>"
        },
        "rate_specification_code": {
          "type": "string",
          "description": "<p>The rate specification code for the bespoke rate.</p>"
        },
        "rate_specification_type": {
          "enum": [
            "PRODUCT_RATE",
            "SHARED_RATE",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "94c4191a865cda34",
          "default": "PRODUCT_RATE",
          "description": "<p>The rate specification type for the bespoke rate.</p>",
          "x-enum-descriptions": {
            "PRODUCT_RATE": "Product rate",
            "SHARED_RATE": "Shared rate",
            "None": "None"
          }
        },
        "variant_profile": {
          "allOf": [
            {
              "$ref": "#/$defs/VariantProfile"
            }
          ],
          "description": "<p>The variant profile which the rate applies to.</p>"
        }
      },
      "required": [
        "price_per_unit",
        "rate_specification_code",
        "variant_profile"
      ]
    },
    "BespokeRateSchedule": {
      "type": "object",
      "properties": {
        "identifier": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p>A unique identifier for the bespoke rate schedule.</p>"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/BespokeRateItem"
          },
          "description": "<p>A list of bespoke rates.</p>",
          "minItems": 1,
          "x-validators": [
            {
              "name": "Validate bespoke rate items are unique",
              "description": "Validate that no two bespoke rate items in a schedule share the same rate specification code, rate specification type, and variant profile.",
              "possible_errors": [
                "duplicate_bespoke_rate_items"
              ]
            }
          ]
        },
        "product_code": {
          "type": "string",
          "description": "<p>A product code for the schedule of bespoke rate.</p>",
          "x-validators": [
            {
              "name": "Validate product code exists",
              "description": "Validate that the product code exists in Kraken.",
              "possible_errors": [
                "product_code_does_not_exist"
              ]
            }
          ]
        },
        "supply_point_identifier": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p>The external identifier of the supply point that this bespoke rate schedule targets.</p>",
          "minLength": 1
        },
        "valid_from": {
          "type": "string",
          "format": "date-time",
          "description": "<p>The date the schedule of bespoke rates is valid from (inclusive).</p>"
        },
        "valid_to": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time",
          "description": "<p>The date the schedule of bespoke rates is valid to (exclusive).</p>"
        }
      },
      "required": [
        "items",
        "product_code",
        "valid_from"
      ],
      "x-validators": [
        {
          "name": "Validate <code>⁨valid_to⁩</code> not before or equal to <code>⁨valid_from⁩</code>",
          "description": "Validates that <code>⁨valid_to⁩</code>, if given, is strictly later than ⁨valid_from⁩.",
          "possible_errors": [
            "start_date_same_as_end_date"
          ]
        },
        {
          "name": "Validate each item represents a possible rate for the product",
          "description": "Validate each item's rate specification, characteristic values, and scheme labels represent a rate defned on the product.",
          "possible_errors": [
            "characteristic_code_not_found",
            "invalid_characteristic_value",
            "invalid_profile_variant_for_specification",
            "product_specification_not_found_for_product",
            "rate_specification_not_found_for_product",
            "shared_rate_not_found",
            "shared_rate_not_found_for_product"
          ]
        },
        {
          "name": "Validate that all required bespoke rates are present and no non-overridable rates are supplied",
          "description": "Validates that bespoke rate schedules include all rate specifications marked as must-be-overridden and mandatory, and do not include any rate specifications marked as cannot-be-overridden.",
          "possible_errors": [
            "bespoke_rate_cannot_be_overridden",
            "missing_required_bespoke_rate"
          ]
        }
      ]
    },
    "BillDueDate": {
      "type": "object",
      "properties": {
        "term_type": {
          "type": "string",
          "description": "<p>The type of the contract term.</p>"
        },
        "is_variable": {
          "type": "boolean",
          "default": true,
          "description": "<p>Whether the contract term is variable in Kraken or not. If not, it must be amended by a new contract.</p>"
        },
        "number_of_days": {
          "type": "integer",
          "minimum": 0,
          "description": "<p>The number of days added to the issuance date to determine the due date.</p>"
        },
        "type_of_days": {
          "enum": [
            "WORKING",
            "CALENDAR"
          ],
          "type": "string",
          "x-spec-enum-id": "ca64884b18199022",
          "description": "data-import--field-definition--bill-due-date--type-of-days--html",
          "x-enum-descriptions": {
            "WORKING": "Working days",
            "CALENDAR": "Calendar days"
          }
        }
      },
      "required": [
        "number_of_days",
        "term_type",
        "type_of_days"
      ]
    },
    "BillingDocumentIssuanceFrequencyTerm": {
      "type": "object",
      "properties": {
        "term_type": {
          "type": "string",
          "description": "<p>The type of the contract term.</p>"
        },
        "frequency": {
          "enum": [
            "DAILY",
            "MONTHLY"
          ],
          "type": "string",
          "x-spec-enum-id": "74dcc34556834abd",
          "description": "<p>The rate at which a billing document is issued. For example, this can be daily or monthly.</p>",
          "x-enum-descriptions": {
            "DAILY": "Daily",
            "MONTHLY": "Monthly"
          }
        },
        "is_variable": {
          "type": "boolean",
          "default": true,
          "description": "<p>Whether the contract term is variable in Kraken or not. If not, it must be amended by a new contract.</p>"
        },
        "multiplier": {
          "type": "integer",
          "description": "<p>The multiplier for the issuance frequency. For example, for a frequency of monthly and a multiplier of 2, a billing document should be issued every 2 months.</p>"
        },
        "period_start_day": {
          "type": "integer",
          "description": "<p>The day of the month on which the billing period starts in Kraken.</p>"
        },
        "period_start_month": {
          "type": "integer",
          "description": "<p>The month of the year on which the billing period starts in Kraken.</p>"
        }
      },
      "required": [
        "frequency",
        "multiplier",
        "period_start_day",
        "period_start_month",
        "term_type"
      ]
    },
    "Business": {
      "oneOf": [
        {
          "$ref": "#/$defs/BaseBusiness"
        },
        {
          "$ref": "#/$defs/BusinessWithExistingContracts"
        }
      ]
    },
    "BusinessDetail": {
      "type": "object",
      "properties": {
        "key": {
          "enum": [
            "abn",
            "acn",
            "frmp",
            "anzsic"
          ],
          "type": "string",
          "x-spec-enum-id": "cf8b0ced1c78b621",
          "description": "<p>The key for the business detail. Keys need to be registered before import. If a value is provided for a key that is not registered then an error will be raised.</p>",
          "x-enum-descriptions": {
            "abn": "abn",
            "acn": "acn",
            "frmp": "frmp",
            "anzsic": "anzsic"
          }
        },
        "value": {
          "description": "<p>The value for the business detail. This must match the type the registered key is expecting.</p>"
        }
      },
      "required": [
        "key",
        "value"
      ],
      "x-validators": [
        {
          "name": "Validate that the value for the business details key has the correct type",
          "description": "Validate that the value given has the type that matches the type configured for the registered business detail key.",
          "possible_errors": [
            "business_detail_incorrect_value_type"
          ]
        },
        {
          "name": "Validate the business details value",
          "description": "Validate that business detail value complies with any validation required by their corresponding detail key.",
          "possible_errors": [
            "business_detail_failed_validation"
          ]
        }
      ]
    },
    "BusinessPortfolio": {
      "type": "object",
      "properties": {
        "billing_name": {
          "type": "string",
          "description": "<p>Optional billing name to be used on the account. If provided, it will be used for producing statements. If not, the customer names will be used.</p>",
          "maxLength": 510
        },
        "notes": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Note"
          },
          "description": "<p>List of notes that should be applied at the portfolio level instead of the individual account.</p>"
        },
        "portfolio_references": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/PortfolioReference"
          },
          "description": "<p>List of references to the portfolio that this account belongs to.</p>",
          "minItems": 1
        },
        "portfolio_settings": {
          "allOf": [
            {
              "$ref": "#/$defs/PortfolioSettings"
            }
          ],
          "description": "<p>This object allows for setting portfolio settings during data migration. This object is only available where the <code>is_portfolio_lead</code> flag is true. Any other account type will fail validation.</p>"
        }
      },
      "required": [
        "portfolio_references"
      ],
      "x-validators": [
        {
          "name": "Validate portfolio reference provided correctly",
          "description": "Validate that a portfolio reference is provided if portfolio settings have been provided and that a portfolio reference is not provided if the import supplier is set to create new portfolios.",
          "possible_errors": [
            "portfolio_references_missing",
            "portfolio_references_provided"
          ]
        },
        {
          "name": "Validate no duplicate portfolio reference namespaces",
          "description": "Validate that there are no duplicate portfolio reference namespaces in the payload.",
          "possible_errors": [
            "duplicate_portfolio_references"
          ]
        }
      ]
    },
    "BusinessUser": {
      "type": "object",
      "properties": {
        "address": {
          "allOf": [
            {
              "$ref": "#/$defs/AusPropertyRichAddress"
            }
          ],
          "description": "<p>The customer's address. If provided, this will be stored on the account user record.</p>"
        },
        "alternative_phone_numbers": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/CustomerAlternativeNumber"
          },
          "description": "<p>A list of the customer's alternative phone numbers.</p>"
        },
        "business_roles": {
          "type": "array",
          "items": {
            "enum": [
              "EZ_CUSTOMER",
              "TRUSTEE_MAND",
              "MSP_USER",
              "BUSI_FINANCIALLY",
              "EZ_DFPP_RW",
              "NOMINATED_NONE",
              "ADMIN",
              "RECEIVES_SALES",
              "EZ_ADMIN",
              "LIFE_SUPPORT_CONTACT",
              "RECEIVES_DUNNING",
              "FLAGGED_LS",
              "RECEIVES_SERVICE",
              "NO_EMAIL",
              "MSBG_COMMS",
              "EZ_DFPP_RO",
              "TRUSTEE_BILL",
              "RECEIVES_INVOICES",
              "TRUSTEE_NONE",
              "RESI_SECONDARY",
              "BUSINESS_NO_COMMS",
              "NOMINATED_MAND",
              "MSBG_NO_COMMS",
              "BSP_USER",
              "OUTAGE_CONTACT",
              "NOMINATED_BILL",
              "EZ_BROKER",
              "TRUSTEE",
              "PRIMARY_NO_COMMS",
              "CDR_REPRESENTATIVE",
              "BUSINESS_COMMS"
            ],
            "type": "string",
            "description": "* `EZ_CUSTOMER` - EZ_CUSTOMER\n* `TRUSTEE_MAND` - TRUSTEE_MAND\n* `MSP_USER` - MSP_USER\n* `BUSI_FINANCIALLY` - BUSI_FINANCIALLY\n* `EZ_DFPP_RW` - EZ_DFPP_RW\n* `NOMINATED_NONE` - NOMINATED_NONE\n* `ADMIN` - ADMIN\n* `RECEIVES_SALES` - RECEIVES_SALES\n* `EZ_ADMIN` - EZ_ADMIN\n* `LIFE_SUPPORT_CONTACT` - LIFE_SUPPORT_CONTACT\n* `RECEIVES_DUNNING` - RECEIVES_DUNNING\n* `FLAGGED_LS` - FLAGGED_LS\n* `RECEIVES_SERVICE` - RECEIVES_SERVICE\n* `NO_EMAIL` - NO_EMAIL\n* `MSBG_COMMS` - MSBG_COMMS\n* `EZ_DFPP_RO` - EZ_DFPP_RO\n* `TRUSTEE_BILL` - TRUSTEE_BILL\n* `RECEIVES_INVOICES` - RECEIVES_INVOICES\n* `TRUSTEE_NONE` - TRUSTEE_NONE\n* `RESI_SECONDARY` - RESI_SECONDARY\n* `BUSINESS_NO_COMMS` - BUSINESS_NO_COMMS\n* `NOMINATED_MAND` - NOMINATED_MAND\n* `MSBG_NO_COMMS` - MSBG_NO_COMMS\n* `BSP_USER` - BSP_USER\n* `OUTAGE_CONTACT` - OUTAGE_CONTACT\n* `NOMINATED_BILL` - NOMINATED_BILL\n* `EZ_BROKER` - EZ_BROKER\n* `TRUSTEE` - TRUSTEE\n* `PRIMARY_NO_COMMS` - PRIMARY_NO_COMMS\n* `CDR_REPRESENTATIVE` - CDR_REPRESENTATIVE\n* `BUSINESS_COMMS` - BUSINESS_COMMS",
            "x-spec-enum-id": "a9dfece01fff4a96",
            "x-enum-descriptions": {
              "EZ_CUSTOMER": "EZ_CUSTOMER",
              "TRUSTEE_MAND": "TRUSTEE_MAND",
              "MSP_USER": "MSP_USER",
              "BUSI_FINANCIALLY": "BUSI_FINANCIALLY",
              "EZ_DFPP_RW": "EZ_DFPP_RW",
              "NOMINATED_NONE": "NOMINATED_NONE",
              "ADMIN": "ADMIN",
              "RECEIVES_SALES": "RECEIVES_SALES",
              "EZ_ADMIN": "EZ_ADMIN",
              "LIFE_SUPPORT_CONTACT": "LIFE_SUPPORT_CONTACT",
              "RECEIVES_DUNNING": "RECEIVES_DUNNING",
              "FLAGGED_LS": "FLAGGED_LS",
              "RECEIVES_SERVICE": "RECEIVES_SERVICE",
              "NO_EMAIL": "NO_EMAIL",
              "MSBG_COMMS": "MSBG_COMMS",
              "EZ_DFPP_RO": "EZ_DFPP_RO",
              "TRUSTEE_BILL": "TRUSTEE_BILL",
              "RECEIVES_INVOICES": "RECEIVES_INVOICES",
              "TRUSTEE_NONE": "TRUSTEE_NONE",
              "RESI_SECONDARY": "RESI_SECONDARY",
              "BUSINESS_NO_COMMS": "BUSINESS_NO_COMMS",
              "NOMINATED_MAND": "NOMINATED_MAND",
              "MSBG_NO_COMMS": "MSBG_NO_COMMS",
              "BSP_USER": "BSP_USER",
              "OUTAGE_CONTACT": "OUTAGE_CONTACT",
              "NOMINATED_BILL": "NOMINATED_BILL",
              "EZ_BROKER": "EZ_BROKER",
              "TRUSTEE": "TRUSTEE",
              "PRIMARY_NO_COMMS": "PRIMARY_NO_COMMS",
              "CDR_REPRESENTATIVE": "CDR_REPRESENTATIVE",
              "BUSINESS_COMMS": "BUSINESS_COMMS"
            }
          },
          "description": "<p>A list of business roles to be assigned to the customer. These apply to all accounts the business has access to.</p>"
        },
        "contact_emails": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "email"
          },
          "description": "<p>A list of additional email addresses to associate with the customer account. These can be used for sending communications to the customer. Each email must be a valid email address.</p>"
        },
        "credit_assessment_id": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p>Customers credit assessment id.</p>"
        },
        "credit_result": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p>The credit result from the provider.</p>"
        },
        "credit_risk_bracket": {
          "enum": [
            "LOW",
            "MID",
            "HIGH",
            "UNKNOWN",
            "",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "e6b98b6c312ff7bf",
          "description": "<p>The deemed credit risk bracket for this customer.</p>",
          "x-enum-descriptions": {
            "LOW": "Low",
            "MID": "Medium",
            "HIGH": "High",
            "UNKNOWN": "Unknown",
            "": "",
            "None": "None"
          }
        },
        "credit_score": {
          "type": [
            "integer",
            "null"
          ],
          "maximum": 9999,
          "minimum": 0,
          "description": "<p>Customers credit score.</p>"
        },
        "date_of_birth": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>The customer's date of birth.</p>"
        },
        "deceased": {
          "enum": [
            "Reported",
            "Confirmed",
            ""
          ],
          "type": "string",
          "x-spec-enum-id": "f90e7d899a971044",
          "default": "",
          "description": "<p>Whether the customer is deceased or not. Defaults to an empty string if not provided.</p>",
          "x-enum-descriptions": {
            "Reported": "Reported",
            "Confirmed": "Confirmed",
            "": ""
          }
        },
        "details": {
          "description": "<p>Generic solution for storing additional customer data that is not covered by the other fields in the payload. This is often in the form of market or territory specific information. For example, in much of Europe it is a requirement to store the user's fiscal code. Namespaces (the keys in the object) need to be registered before import. If a value is provided for a namespace that is not registered then an error will be raised.</p>",
          "deprecated": true,
          "x-use-instead": "user_details",
          "x-validators": [
            {
              "name": "Validate user details",
              "description": "Validates that the user detail namespace and value are allowed for the customer. The user detail namespace (the key in the JSON object) must already have been set up in Kraken. The value (the value in the JSON object) must be the correct data type.",
              "possible_errors": [
                "customer_detail_failed_validation",
                "customer_detail_incorrect_value_type",
                "customer_detail_not_registered"
              ]
            }
          ]
        },
        "email": {
          "type": [
            "string",
            "null"
          ],
          "format": "email",
          "description": "<p>The customer's email address. This is the email address they will use to log into their online portal. Defaults to an empty string if not provided. Cannot be longer that 254 characters.</p>",
          "maxLength": 254,
          "x-validators": [
            {
              "name": "Validate email address is not test address",
              "description": "Validates that a customer email address is not a test email address. An email address is considered a test address if it starts with \"test@\"\" or \"xxx@\"\" or ends with \"@test.com\", \"@test.co.uk\", \".xxx\" or \".xx\".",
              "possible_errors": [
                "possible_test_email_address"
              ]
            },
            {
              "name": "Validate email is not internal",
              "description": "Validates that a customer email address does not use an internal Kraken handler. For example, if an instance of Kraken has registered <code>info@kraken.info</code> as an internal email address, then the customer email address must not match this.",
              "possible_errors": [
                "internal_email_address"
              ]
            }
          ]
        },
        "family_name": {
          "type": "string",
          "default": "",
          "description": "<p>The customer's family name.</p>",
          "maxLength": 255
        },
        "given_name": {
          "type": "string",
          "default": "",
          "description": "<p>The customer's given name.</p>",
          "maxLength": 255
        },
        "label": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p>A free text field to help identify the user (e.g. a job title).</p>"
        },
        "landline": {
          "type": [
            "string",
            "null"
          ],
          "default": "",
          "description": "<p>The customer's landline phone number.</p>",
          "maxLength": 32,
          "x-validators": [
            {
              "name": "Validate phone number",
              "description": "Validates that a phone number conforms to the norms of the region from which the migration is taking place.",
              "possible_errors": [
                "invalid_phone_number"
              ]
            }
          ]
        },
        "mobile": {
          "type": [
            "string",
            "null"
          ],
          "default": "",
          "description": "<p>The customer's personal mobile number.</p>",
          "maxLength": 32,
          "x-validators": [
            {
              "name": "Validate phone number",
              "description": "Validates that a phone number conforms to the norms of the region from which the migration is taking place.",
              "possible_errors": [
                "invalid_phone_number"
              ]
            }
          ]
        },
        "salutation": {
          "type": [
            "string",
            "null"
          ],
          "default": "",
          "description": "<p>The customer's preferred salutation.</p>",
          "maxLength": 128
        },
        "title": {
          "type": [
            "string",
            "null"
          ],
          "default": "",
          "description": "<p>The customer's preferred title.</p>",
          "maxLength": 20
        },
        "unable_to_read_meters": {
          "type": "boolean",
          "default": false,
          "description": "<p>Whether the customer is unable to read their meters themselves. Defaults to False.</p>"
        },
        "user_details": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/CustomerUserDetail"
          },
          "description": "<p>Generic solution for storing additional customer data that is not covered by the other fields in the payload. This is often in the form of market or territory specific information. For example, in much of Europe it is a requirement to store the user's fiscal code. Namespaces (the keys in the object) need to be registered before import. If a value is provided for a namespace that is not registered then an error will be raised.</p>",
          "x-validators": [
            {
              "name": "Validate required customer details namespaces provided",
              "description": "No required namespaces configured. Validation skipped.",
              "possible_errors": [
                "required_customer_details_namespace_missing"
              ]
            }
          ]
        }
      },
      "required": [
        "business_roles"
      ],
      "x-validators": [
        {
          "name": "Ensures only <code>user_details</code> or <code>details</code> are provided",
          "description": "Ensures that only <code>user_details</code> or <code>details</code> are provided, not both.",
          "possible_errors": [
            "customer_details_and_user_details_both_provided"
          ]
        },
        {
          "name": "Validate no contact details for occupier",
          "description": "Validates that a customer identified as \"The Occupier\" does not have contact details. If contact details are provided it implies that the identity of the customer is known, and it therefore not an unknown occupier.",
          "possible_errors": [
            "contact_details_for_occupier"
          ]
        },
        {
          "name": "Validate that the customer's name is not \"The Occupier\"",
          "description": "Validate that the customer's name is not \"The Occupier\". To indicate an occupier account, use the <code>unknown_occupier</code> flag at the account-level.",
          "possible_errors": [
            "customer_may_not_be_named_the_occupier"
          ]
        }
      ]
    },
    "BusinessWithExistingContracts": {
      "type": "object",
      "properties": {
        "business_contract_identifier": {
          "type": "string",
          "description": "<p>The business contract's unique identifier.</p>",
          "deprecated": true,
          "x-use-instead": "business_contract_identifiers"
        },
        "business_contract_identifiers": {
          "type": "array",
          "items": {
            "type": "string",
            "description": "<p>The business contract's unique identifier.</p>"
          },
          "description": "<p>List of business unique contract identifiers</p>"
        },
        "business_type": {
          "enum": [
            "SOLE_TRADER",
            "LTD",
            "PTY_LTD",
            "PARTNERSHIP",
            "CHARITY",
            "PLC",
            "LLP",
            "TRUST",
            "TRADING_AS",
            "GOVERNMENT",
            "NON_PROFIT",
            "CHURCH",
            "HOMEOWNER_ASSOCIATION",
            "TBD"
          ],
          "type": "string",
          "x-spec-enum-id": "8cd3a9d2ed8d5378",
          "description": "<p>The type of business this account related to. The business type can only be provided for business accounts.</p>",
          "x-enum-descriptions": {
            "SOLE_TRADER": "Sole trader",
            "LTD": "Limited",
            "PTY_LTD": "Proprietary Limited Company",
            "PARTNERSHIP": "Partnership",
            "CHARITY": "Charity",
            "PLC": "Public limited company",
            "LLP": "Limited liability partnership",
            "TRUST": "Trust",
            "TRADING_AS": "Trading as",
            "GOVERNMENT": "Government",
            "NON_PROFIT": "Non profit",
            "CHURCH": "Church",
            "HOMEOWNER_ASSOCIATION": "Homeowner association",
            "TBD": "To be determined"
          }
        },
        "company_name": {
          "type": "string",
          "description": "<p>The company name for a business account.</p>",
          "maxLength": 255
        },
        "company_number": {
          "type": "string",
          "description": "<p>The company number for a business account.</p>",
          "maxLength": 100,
          "x-validators": [
            {
              "name": "Validate company number",
              "description": "Validate the company number and standardize its format.",
              "possible_errors": [
                "invalid_company_number"
              ]
            }
          ]
        },
        "details": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/BusinessDetail"
          },
          "description": "<p>Generic solution for storing additional business data that is not covered by the other fields in the payload. This is often in the form of market or territory specific information. Keys must be registered in Kraken and will have a value type the value for the key must confirm to.</p>",
          "x-validators": [
            {
              "name": "Validate that each child has unique values for the <code>⁨key⁩</code> field",
              "description": "Validate that each child has unique values for the <code>⁨key⁩</code> field.",
              "possible_errors": [
                "children_with_duplicate_values"
              ]
            }
          ]
        },
        "portfolios": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/BusinessPortfolio"
          },
          "description": "<p>Information about the portfolios associated with this business.</p>"
        },
        "segment_name": {
          "x-spec-enum-id": "4f53cda18c2baa0c",
          "description": "<p>The segment to which the business belongs.</p>",
          "x-comment": "Choices for this field are dynamic, once appropriate values have been configured they will be rendered here."
        },
        "users": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/BusinessUser"
          },
          "description": "<p>List of the business users associated with the business.</p>"
        }
      },
      "x-validators": [
        {
          "name": "Validate that business information is provided if not linking account to business with contract",
          "description": "Validate that business information is provided for the business to link the account to if <code>link_account_to_business_with_contract</code> is false for the given import supplier.",
          "possible_errors": [
            "business_information_required_if_not_linking_via_contract"
          ]
        },
        {
          "name": "Validate that business information is not provided if linking an account to the business of the business contract.",
          "description": "Validate that business information is not provided for the business to link the account to if <code>link_account_to_business_with_contract</code> is true for the given import supplier.",
          "possible_errors": [
            "business_information_not_required_if_linking_via_contract"
          ]
        },
        {
          "name": "Validate that at least one contract identifier is provided for import",
          "description": "Validate that at least one of <code>business_contract_identifiers</code> or <code>business_contract_identifier</code> is provided in the payload.",
          "possible_errors": [
            "missing_contract_identifier"
          ]
        }
      ]
    },
    "CharacteristicOverride": {
      "type": "object",
      "properties": {
        "characteristic_code": {
          "type": "string",
          "description": "<p>The code for the characteristic.</p>"
        },
        "override_value": {
          "description": "<p>The override value for the characteristic.</p>"
        },
        "product_code": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p>Optional product code. If specified, the override applies only to this product.</p>",
          "x-validators": [
            {
              "name": "Validate product code exists",
              "description": "Validate that the product code exists in Kraken.",
              "possible_errors": [
                "product_code_does_not_exist"
              ]
            }
          ]
        }
      },
      "required": [
        "characteristic_code",
        "override_value"
      ],
      "x-validators": [
        {
          "name": "Validate characterisctic code exist",
          "description": "Validate that the characterisctic code exists in Kraken.",
          "possible_errors": [
            "characteristic_code_not_found"
          ]
        },
        {
          "name": null,
          "description": null,
          "possible_errors": [
            "invalid_characteristic_for_product"
          ]
        }
      ]
    },
    "CharacteristicOverrideConfiguration": {
      "type": "object",
      "properties": {
        "term_type": {
          "type": "string",
          "description": "<p>The type of the contract term.</p>"
        },
        "is_variable": {
          "type": "boolean",
          "default": true,
          "description": "<p>Whether the contract term is variable in Kraken or not. If not, it must be amended by a new contract.</p>"
        },
        "overrides": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/CharacteristicOverride"
          },
          "description": "<p>The characterisctics associated with the characterisctic override.</p>"
        }
      },
      "required": [
        "overrides",
        "term_type"
      ]
    },
    "CollateralRequired": {
      "type": "object",
      "properties": {
        "term_type": {
          "type": "string",
          "description": "<p>The type of the contract term.</p>"
        },
        "amount": {
          "type": "integer",
          "minimum": 0,
          "description": "<p>The amount set up as collateral as condition for account creation.</p>"
        },
        "interest_policy": {
          "type": "string",
          "description": "<p>The type of interest policy of required collateral.</p>"
        },
        "is_variable": {
          "type": "boolean",
          "default": true,
          "description": "<p>Whether the contract term is variable in Kraken or not. If not, it must be amended by a new contract.</p>"
        },
        "reason": {
          "type": "string",
          "description": "<p>The reason for setting up required collateral.</p>"
        }
      },
      "required": [
        "amount",
        "reason",
        "term_type"
      ]
    },
    "CommonHouse": {
      "type": "object",
      "properties": {
        "house_number": {
          "type": "integer",
          "description": "<p>House number.</p>"
        },
        "house_number_suffix": {
          "type": "string",
          "description": "<p>No longer than 1 char. Alphabetical.</p>"
        }
      }
    },
    "CommonStreet": {
      "type": "object",
      "properties": {
        "street_name": {
          "type": "string",
          "description": "<p>Street name.</p>"
        },
        "street_suffix": {
          "enum": [
            "CN",
            "DE",
            "E",
            "EX",
            "IN",
            "LR",
            "ML",
            "N",
            "NE",
            "NW",
            "OF",
            "ON",
            "OT",
            "OP",
            "S",
            "SE",
            "SW",
            "UP",
            "W",
            ""
          ],
          "type": "string",
          "x-spec-enum-id": "f105f3c67a4f2af4",
          "description": "<p>Street suffix. If provided, <code>street_name</code> must be as well.</p>",
          "x-enum-descriptions": {
            "CN": "Central",
            "DE": "Deviation",
            "E": "East",
            "EX": "Extension",
            "IN": "Inner",
            "LR": "Lower",
            "ML": "Mall",
            "N": "North",
            "NE": "North East",
            "NW": "North West",
            "OF": "Off",
            "ON": "On",
            "OT": "Outer",
            "OP": "Overpass",
            "S": "South",
            "SE": "South East",
            "SW": "South West",
            "UP": "Upper",
            "W": "West",
            "": ""
          }
        },
        "street_type": {
          "enum": [
            "ACCS",
            "ACRE",
            "ALLY",
            "ALWY",
            "AMBL",
            "ANCG",
            "ANX",
            "APP",
            "ARC",
            "ARTL",
            "ART",
            "AVE",
            "BA",
            "BANK",
            "BASN",
            "BAY",
            "BCH",
            "BEND",
            "BLK",
            "BWLK",
            "BVD",
            "BVDE",
            "BOWL",
            "BRCE",
            "BRAE",
            "BRAN",
            "BRK",
            "BRET",
            "BDGE",
            "BDWY",
            "BROW",
            "BYPA",
            "BYWY",
            "CAUS",
            "CTR",
            "CNWY",
            "CH",
            "CIR",
            "CLT",
            "CCT",
            "CRCS",
            "CL",
            "CLR",
            "CLDE",
            "CMMN",
            "CNCD",
            "CON",
            "CNN",
            "CPS",
            "CNR",
            "CSO",
            "CRSE",
            "CT",
            "CTYD",
            "COVE",
            "CRES",
            "CRST",
            "CRF",
            "CRK",
            "CRSS",
            "CRSG",
            "CRD",
            "COWY",
            "CUWY",
            "CDS",
            "CUT",
            "CTTG",
            "DALE",
            "DASH",
            "DELL",
            "DENE",
            "DEVN",
            "DIP",
            "DSTR",
            "DIV",
            "DOCK",
            "DOM",
            "DOWN",
            "DWNS",
            "DR",
            "DRWY",
            "ESMT",
            "EDGE",
            "ELB",
            "END",
            "ENT",
            "ESP",
            "EST",
            "EXP",
            "EXTN",
            "FAWY",
            "FTRK",
            "FBRK",
            "FLNE",
            "FITR",
            "FLAT",
            "FLTS",
            "FOLW",
            "FTWY",
            "FORD",
            "FSHR",
            "FK",
            "FORM",
            "FWY",
            "FRNT",
            "FRTG",
            "GAP",
            "GDN",
            "GDNS",
            "GTE",
            "GTES",
            "GTWY",
            "GLD",
            "GLEN",
            "GRA",
            "GRN",
            "GRND",
            "GR",
            "GLY",
            "HRBR",
            "HVN",
            "HETH",
            "HTS",
            "HRD",
            "HWY",
            "HILL",
            "HLLW",
            "HUB",
            "INLT",
            "INTG",
            "INTN",
            "ISLD",
            "JNC",
            "KEY",
            "KEYS",
            "KNOL",
            "LADR",
            "LDG",
            "LANE",
            "LNWY",
            "LEAD",
            "LEDR",
            "LEES",
            "LINE",
            "LINK",
            "LT",
            "LKT",
            "LOOP",
            "LWR",
            "LYNN",
            "MALL",
            "MANR",
            "MART",
            "MEAD",
            "MNDR",
            "MEW",
            "MEWS",
            "MILE",
            "MWY",
            "MT",
            "NOOK",
            "NTH",
            "NULL",
            "OTLT",
            "OTLK",
            "OVAL",
            "PLMS",
            "PDE",
            "PRDS",
            "PARK",
            "PKLD",
            "PKWY",
            "PART",
            "PASS",
            "PSGE",
            "PATH",
            "PHWY",
            "PSLA",
            "PIAZ",
            "PL",
            "PLAT",
            "PLZA",
            "PKT",
            "PNT",
            "PORT",
            "PREC",
            "PROM",
            "PRST",
            "QUAD",
            "QDGL",
            "QDRT",
            "QY",
            "QYS",
            "RMBL",
            "RAMP",
            "RNGE",
            "RCH",
            "REEF",
            "RES",
            "REST",
            "RTT",
            "RTRN",
            "RIDE",
            "RDGE",
            "RGWY",
            "ROWY",
            "RING",
            "RISE",
            "RSNG",
            "RVR",
            "RVWY",
            "RVRA",
            "RD",
            "RDS",
            "RDSD",
            "RDWY",
            "RNDE",
            "RSBL",
            "RTY",
            "RND",
            "RTE",
            "ROW",
            "ROWE",
            "RUE",
            "RUN",
            "SWY",
            "SHUN",
            "SDNG",
            "SKLN",
            "SLPE",
            "SND",
            "STH",
            "SPUR",
            "SQ",
            "STRS",
            "SHWY",
            "STPS",
            "STRT",
            "STAI",
            "STRA",
            "ST",
            "STRP",
            "SBWY",
            "TARN",
            "TCE",
            "THOR",
            "THRU",
            "TLWY",
            "TOP",
            "TOR",
            "TWRS",
            "TRK",
            "TRL",
            "TRLR",
            "TMWY",
            "TVSE",
            "TRI",
            "TKWY",
            "TUNL",
            "TURN",
            "UPAS",
            "UPR",
            "VALE",
            "VLLY",
            "VDCT",
            "VIEW",
            "VWS",
            "VLL",
            "VLGE",
            "VLLS",
            "VSTA",
            "VUE",
            "WADE",
            "WALK",
            "WKWY",
            "WTRS",
            "WTWY",
            "WAY",
            "WHRF",
            "WOOD",
            "WDS",
            "WYND",
            "YARD"
          ],
          "type": "string",
          "x-spec-enum-id": "472734f6bfeb60b6",
          "description": "<p>Street type. If provided, <code>street_name</code> must be as well.</p>",
          "x-enum-descriptions": {
            "ACCS": "Access",
            "ACRE": "Acre",
            "ALLY": "Alley",
            "ALWY": "Alleyway",
            "AMBL": "Amble",
            "ANCG": "Anchorage",
            "ANX": "Annex",
            "APP": "Approach",
            "ARC": "Arcade",
            "ARTL": "Arterial",
            "ART": "Artery",
            "AVE": "Avenue",
            "BA": "Banan",
            "BANK": "Bank",
            "BASN": "Basin",
            "BAY": "Bay",
            "BCH": "Beach",
            "BEND": "Bend",
            "BLK": "Block",
            "BWLK": "Boardwalk",
            "BVD": "Boulevard",
            "BVDE": "Boulevarde",
            "BOWL": "Bowl",
            "BRCE": "Brace",
            "BRAE": "Brae",
            "BRAN": "Branch",
            "BRK": "Break",
            "BRET": "Brett",
            "BDGE": "Bridge",
            "BDWY": "Broadway",
            "BROW": "Brow",
            "BYPA": "Bypass",
            "BYWY": "Byway",
            "CAUS": "Causeway",
            "CTR": "Centre",
            "CNWY": "Centreway",
            "CH": "Chase",
            "CIR": "Circle",
            "CLT": "Circlet",
            "CCT": "Circuit",
            "CRCS": "Circus",
            "CL": "Close",
            "CLR": "Cluster",
            "CLDE": "Colonnade",
            "CMMN": "Common",
            "CNCD": "Concord",
            "CON": "Concourse",
            "CNN": "Connection",
            "CPS": "Copse",
            "CNR": "Corner",
            "CSO": "Corso",
            "CRSE": "Course",
            "CT": "Court",
            "CTYD": "Courtyard",
            "COVE": "Cove",
            "CRES": "Crescent",
            "CRST": "Crest",
            "CRF": "Crief",
            "CRK": "Crook",
            "CRSS": "Cross",
            "CRSG": "Crossing",
            "CRD": "Crossroad",
            "COWY": "Crossway",
            "CUWY": "Cruiseway",
            "CDS": "Cul-de-sac",
            "CUT": "Cut",
            "CTTG": "Cutting",
            "DALE": "Dale",
            "DASH": "Dash",
            "DELL": "Dell",
            "DENE": "Dene",
            "DEVN": "Deviation",
            "DIP": "Dip",
            "DSTR": "Distributor",
            "DIV": "Divide",
            "DOCK": "Dock",
            "DOM": "Domain",
            "DOWN": "Down",
            "DWNS": "Downs",
            "DR": "Drive",
            "DRWY": "Driveway",
            "ESMT": "Easement",
            "EDGE": "Edge",
            "ELB": "Elbow",
            "END": "End",
            "ENT": "Entrance",
            "ESP": "Esplanade",
            "EST": "Estate",
            "EXP": "Expressway",
            "EXTN": "Extension",
            "FAWY": "Fairway",
            "FTRK": "Fire Track",
            "FBRK": "Firebreak",
            "FLNE": "Fireline",
            "FITR": "Firetrail",
            "FLAT": "Flat",
            "FLTS": "Flats",
            "FOLW": "Follow",
            "FTWY": "Footway",
            "FORD": "Ford",
            "FSHR": "Foreshore",
            "FK": "Fork",
            "FORM": "Formation",
            "FWY": "Freeway",
            "FRNT": "Front",
            "FRTG": "Frontage",
            "GAP": "Gap",
            "GDN": "Garden",
            "GDNS": "Gardens",
            "GTE": "Gate",
            "GTES": "Gates",
            "GTWY": "Gateway",
            "GLD": "Glade",
            "GLEN": "Glen",
            "GRA": "Grange",
            "GRN": "Green",
            "GRND": "Ground",
            "GR": "Grove",
            "GLY": "Gully",
            "HRBR": "Harbour",
            "HVN": "Haven",
            "HETH": "Heath",
            "HTS": "Heights",
            "HRD": "Highroad",
            "HWY": "Highway",
            "HILL": "Hill",
            "HLLW": "Hollow",
            "HUB": "Hub",
            "INLT": "Inlet",
            "INTG": "Interchange",
            "INTN": "Intersection",
            "ISLD": "Island",
            "JNC": "Junction",
            "KEY": "Key",
            "KEYS": "Keys",
            "KNOL": "Knoll",
            "LADR": "Ladder",
            "LDG": "Landing",
            "LANE": "Lane",
            "LNWY": "Laneway",
            "LEAD": "Lead",
            "LEDR": "Leader",
            "LEES": "Lees",
            "LINE": "Line",
            "LINK": "Link",
            "LT": "Little",
            "LKT": "Lookout",
            "LOOP": "Loop",
            "LWR": "Lower",
            "LYNN": "Lynne",
            "MALL": "Mall",
            "MANR": "Manor",
            "MART": "Mart",
            "MEAD": "Mead",
            "MNDR": "Meander",
            "MEW": "Mew",
            "MEWS": "Mews",
            "MILE": "Mile",
            "MWY": "Motorway",
            "MT": "Mount",
            "NOOK": "Nook",
            "NTH": "North",
            "NULL": "Null",
            "OTLT": "Outlet",
            "OTLK": "Outlook",
            "OVAL": "Oval",
            "PLMS": "Palms",
            "PDE": "Parade",
            "PRDS": "Paradise",
            "PARK": "Park",
            "PKLD": "Parklands",
            "PKWY": "Parkway",
            "PART": "Part",
            "PASS": "Pass",
            "PSGE": "Passage",
            "PATH": "Path",
            "PHWY": "Pathway",
            "PSLA": "Peninsula",
            "PIAZ": "Piazza",
            "PL": "Place",
            "PLAT": "Plateau",
            "PLZA": "Plaza",
            "PKT": "Pocket",
            "PNT": "Point",
            "PORT": "Port",
            "PREC": "Precinct",
            "PROM": "Promenade",
            "PRST": "Pursuit",
            "QUAD": "Quad",
            "QDGL": "Quadrangle",
            "QDRT": "Quadrant",
            "QY": "Quay",
            "QYS": "Quays",
            "RMBL": "Ramble",
            "RAMP": "Ramp",
            "RNGE": "Range",
            "RCH": "Reach",
            "REEF": "Reef",
            "RES": "Reserve",
            "REST": "Rest",
            "RTT": "Retreat",
            "RTRN": "Return",
            "RIDE": "Ride",
            "RDGE": "Ridge",
            "RGWY": "Ridgeway",
            "ROWY": "Right of Way",
            "RING": "Ring",
            "RISE": "Rise",
            "RSNG": "Rising",
            "RVR": "River",
            "RVWY": "Riverway",
            "RVRA": "Riviera",
            "RD": "Road",
            "RDS": "Roads",
            "RDSD": "Roadside",
            "RDWY": "Roadway",
            "RNDE": "Ronde",
            "RSBL": "Rosebowl",
            "RTY": "Rotary",
            "RND": "Round",
            "RTE": "Route",
            "ROW": "Row",
            "ROWE": "Rowe",
            "RUE": "Rue",
            "RUN": "Run",
            "SWY": "Service Way",
            "SHUN": "Shun",
            "SDNG": "Siding",
            "SKLN": "Skyline",
            "SLPE": "Slope",
            "SND": "Sound",
            "STH": "South",
            "SPUR": "Spur",
            "SQ": "Square",
            "STRS": "Stairs",
            "SHWY": "State Highway",
            "STPS": "Steps",
            "STRT": "Straight",
            "STAI": "Strait",
            "STRA": "Strand",
            "ST": "Street",
            "STRP": "Strip",
            "SBWY": "Subway",
            "TARN": "Tarn",
            "TCE": "Terrace",
            "THOR": "Thoroughfare",
            "THRU": "Throughway",
            "TLWY": "Tollway",
            "TOP": "Top",
            "TOR": "Tor",
            "TWRS": "Towers",
            "TRK": "Track",
            "TRL": "Trail",
            "TRLR": "Trailer",
            "TMWY": "Tramway",
            "TVSE": "Traverse",
            "TRI": "Triangle",
            "TKWY": "Trunkway",
            "TUNL": "Tunnel",
            "TURN": "Turn",
            "UPAS": "Underpass",
            "UPR": "Upper",
            "VALE": "Vale",
            "VLLY": "Valley",
            "VDCT": "Viaduct",
            "VIEW": "View",
            "VWS": "Views",
            "VLL": "Villa",
            "VLGE": "Village",
            "VLLS": "Villas",
            "VSTA": "Vista",
            "VUE": "Vue",
            "WADE": "Wade",
            "WALK": "Walk",
            "WKWY": "Walkway",
            "WTRS": "Waters",
            "WTWY": "Waterway",
            "WAY": "Way",
            "WHRF": "Wharf",
            "WOOD": "Wood",
            "WDS": "Woods",
            "WYND": "Wynd",
            "YARD": "Yard"
          }
        }
      }
    },
    "CommonStructuredAddress": {
      "type": "object",
      "properties": {
        "building_or_property_name": {
          "type": "string",
          "description": "<p>Building or property name. No longer than 60 chars as two lines of 30 chars each. If more than 30 chars, there must be a <code>\\n</code> after 30 chars.</p>",
          "maxLength": 60
        },
        "delivery_point_identifier": {
          "type": "string",
          "description": "<p>Delivery point identifier.</p>"
        },
        "flat_or_unit_number": {
          "type": "string",
          "description": "<p>if supplied, <code>flat_or_unit_type</code> must be as well. limit of 7 characters, numbers and <code>.</code> with optional alphabetical prefix and suffix.</p>"
        },
        "flat_or_unit_type": {
          "enum": [
            "ANT",
            "APT",
            "ATM",
            "BBQ",
            "BLCK",
            "BTSD",
            "BLDG",
            "BNGW",
            "CAGE",
            "CARP",
            "CARS",
            "CLUB",
            "COOL",
            "CTGE",
            "DUP",
            "FY",
            "F",
            "GRGE",
            "HALL",
            "HSE",
            "KSK",
            "LSE",
            "LBBY",
            "LOFT",
            "LOT",
            "MSNT",
            "MB",
            "OFF",
            "PTHS",
            "REAR",
            "RESV",
            "RM",
            "SEC",
            "SHED",
            "SHOP",
            "SHRM",
            "SIGN",
            "SITE",
            "SL",
            "STOR",
            "STR",
            "STU",
            "SUBS",
            "SE",
            "TNCY",
            "TWR",
            "TNHS",
            "U",
            "VLT",
            "VLLA",
            "WARD",
            "WE",
            "WKSH",
            ""
          ],
          "type": "string",
          "x-spec-enum-id": "9306e5734ae7a103",
          "description": "<p>Flat or unit type.</p>",
          "x-enum-descriptions": {
            "ANT": "Antenna",
            "APT": "Apartment",
            "ATM": "ATM",
            "BBQ": "Barbeque",
            "BLCK": "Block",
            "BTSD": "Boatshed",
            "BLDG": "Building",
            "BNGW": "Bungalow",
            "CAGE": "Cage",
            "CARP": "Carpark",
            "CARS": "Carspace",
            "CLUB": "Club",
            "COOL": "Coolroom",
            "CTGE": "Cottage",
            "DUP": "Duplex",
            "FY": "Factory",
            "F": "Flat",
            "GRGE": "Garage",
            "HALL": "Hall",
            "HSE": "House",
            "KSK": "Kiosk",
            "LSE": "Lease",
            "LBBY": "Lobby",
            "LOFT": "Loft",
            "LOT": "Lot",
            "MSNT": "Maisonette",
            "MB": "Marine Berth",
            "OFF": "Office",
            "PTHS": "Penthouse",
            "REAR": "Rear",
            "RESV": "Reserve",
            "RM": "Room",
            "SEC": "Section",
            "SHED": "Shed",
            "SHOP": "Shop",
            "SHRM": "Showroom",
            "SIGN": "Sign",
            "SITE": "Site",
            "SL": "Stall",
            "STOR": "Store",
            "STR": "Strata Unit",
            "STU": "Studio",
            "SUBS": "Substation",
            "SE": "Suite",
            "TNCY": "Tenancy",
            "TWR": "Tower",
            "TNHS": "Townhouse",
            "U": "Unit",
            "VLT": "Vault",
            "VLLA": "Villa",
            "WARD": "Ward",
            "WE": "Warehouse",
            "WKSH": "Workshop",
            "": ""
          }
        },
        "floor_or_level_number": {
          "type": "string",
          "description": "<p>if supplied, <code>floor_or_level_type</code> must be as well. limit of 5 characters, numbers and <code>.</code> with optional alphabetical prefix and suffix</p>"
        },
        "floor_or_level_type": {
          "enum": [
            "B",
            "FL",
            "G",
            "L",
            "LG",
            "M",
            "LL",
            "OD",
            "P",
            "PTHS",
            "PLF",
            "PDM",
            "RT",
            "SB",
            "UG",
            "LB",
            ""
          ],
          "type": "string",
          "x-spec-enum-id": "9810b2a79eb3d5cf",
          "description": "<p>Floor or level type.</p>",
          "x-enum-descriptions": {
            "B": "Basement",
            "FL": "Floor",
            "G": "Ground",
            "L": "Level",
            "LG": "Lower Ground",
            "M": "Mezzanine",
            "LL": "Lower Level",
            "OD": "Observation Deck",
            "P": "Parking",
            "PTHS": "Penthouse",
            "PLF": "Platform",
            "PDM": "Podium",
            "RT": "Rooftop",
            "SB": "Sub-Basement",
            "UG": "Upper Ground",
            "LB": "Lobby",
            "": ""
          }
        },
        "house": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/CommonHouse"
          },
          "description": "<p>House object.</p>",
          "maxItems": 2
        },
        "location_descriptor": {
          "type": "string",
          "description": "<p>A description of the location.</p>"
        },
        "lot_number": {
          "type": "string",
          "description": "<p>Letters, numbers and <code>.</code>.</p>",
          "maxLength": 6
        },
        "melway_grid_reference": {
          "type": "string",
          "description": "<p>Melway grid reference.</p>",
          "maxLength": 9
        },
        "postcode": {
          "type": "string",
          "description": "<p>Postcode.</p>"
        },
        "state_or_territory": {
          "type": "string",
          "description": "<p>State or territory.</p>",
          "maxLength": 3
        },
        "street": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/CommonStreet"
          },
          "description": "<p>Street object.</p>",
          "maxItems": 2
        },
        "suburb_or_place_or_locality": {
          "type": "string",
          "description": "<p>Suburb or place or locality.</p>"
        }
      }
    },
    "Complaint": {
      "type": "object",
      "properties": {
        "complainant_email": {
          "type": "string",
          "format": "email",
          "description": "<p>The email address of the complainant. This should be the email address of a customer related to the account unless the complaint was raised from a different email address.</p>",
          "x-validators": [
            {
              "name": "Validate email address is not test address",
              "description": "Validates that a customer email address is not a test email address. An email address is considered a test address if it starts with \"test@\"\" or \"xxx@\"\" or ends with \"@test.com\", \"@test.co.uk\", \".xxx\" or \".xx\".",
              "possible_errors": [
                "possible_test_email_address"
              ]
            }
          ]
        },
        "complainant_name": {
          "type": "string",
          "description": "<p>The name of the complainant. This should be the name of a customer related to the account unless the complaint was raised by another person.</p>",
          "maxLength": 255
        },
        "complaint_contacts": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/ComplaintContact"
          },
          "description": "<p>The list of each contact with the consumer in respect of a complaint.</p>"
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "description": "<p>The datetime the complaint was created at.</p>"
        },
        "has_chsr_letter_been_sent": {
          "type": "boolean",
          "description": "<p>Whether the customer has been sent a CHSR letter for the complaint.</p>"
        },
        "has_eight_week_letter_been_sent": {
          "type": "boolean",
          "description": "<p>Whether the customer has been sent an eight week letter for the complaint.</p>"
        },
        "official_entity": {
          "type": "string",
          "description": "<p>The official organization of the complaint if it is an official complaint.</p>"
        },
        "official_reference_number": {
          "type": "string",
          "description": "<p>The official reference number of the complaint if it is an official complaint.</p>"
        },
        "official_status": {
          "type": "string",
          "description": "<p>The official status of the complaint if it is an official complaint.</p>"
        },
        "subtype_of_complaint": {
          "type": "string",
          "description": "<p>The subtype of the complaint.</p>"
        },
        "type_of_complaint": {
          "type": "string",
          "description": "<p>The type of the complaint.</p>"
        }
      },
      "required": [
        "complainant_email",
        "complainant_name",
        "complaint_contacts",
        "created_at",
        "has_chsr_letter_been_sent",
        "has_eight_week_letter_been_sent",
        "subtype_of_complaint",
        "type_of_complaint"
      ],
      "x-validators": [
        {
          "name": "Validate complaint type and subtype",
          "description": "Validates that this instance of Kraken allows the complaint type and that the complaint subtype is an allowed subtype of the complain type.",
          "possible_errors": [
            "invalid_complaint_type_or_subtype"
          ]
        },
        {
          "name": "Validate an official complaint's organization and status.",
          "description": "Validates that this instance of Kraken allows the official complaints organization and that the status is configured for the organization.",
          "possible_errors": [
            "invalid_official_organization_or_status"
          ]
        },
        {
          "name": "Validate all required official complaint fields are present",
          "description": "If the complaint is an official complaint, the official reference number, official organization, and official status must all be provided.",
          "possible_errors": [
            "official_complaint_field_missing"
          ]
        },
        {
          "name": "Validate that a CHSR letter has been sent for the complaint",
          "description": "Validates that if an eight week letter has been sent for the complaint, a CHSR letter must have also been sent.",
          "possible_errors": [
            "chsr_letter_not_sent"
          ]
        }
      ]
    },
    "ComplaintContact": {
      "type": "object",
      "properties": {
        "body": {
          "type": "string",
          "description": "<p>The body of text or a summary of the contact regarding the complaint.</p>"
        },
        "communication_method": {
          "enum": [
            "LANDLINE",
            "MOBILE",
            "EMAIL",
            "POST"
          ],
          "type": "string",
          "x-spec-enum-id": "f2b09e3acbce7139",
          "description": "<p>The method of communication used to contact regarding the complaint.</p>",
          "x-enum-descriptions": {
            "LANDLINE": "LANDLINE",
            "MOBILE": "MOBILE",
            "EMAIL": "EMAIL",
            "POST": "POST"
          }
        },
        "communication_source": {
          "type": "string",
          "description": "<p>The source of communication used to contact regarding the complaint.</p>"
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "description": "<p>The datetime the complaint contact was created at.</p>"
        },
        "status": {
          "enum": [
            "OPEN",
            "RESOLVED",
            "NO_CONTACT",
            "REOPENED",
            "DEADLOCK",
            "CANCELLED"
          ],
          "type": "string",
          "x-spec-enum-id": "89e3c5df2a7f586b",
          "description": "<p>The status of the complaint at the time the contact was made to track status changes, e.g. resolution.</p>",
          "x-enum-descriptions": {
            "OPEN": "OPEN",
            "RESOLVED": "RESOLVED",
            "NO_CONTACT": "NO_CONTACT",
            "REOPENED": "REOPENED",
            "DEADLOCK": "DEADLOCK",
            "CANCELLED": "CANCELLED"
          }
        }
      },
      "required": [
        "body",
        "communication_method",
        "communication_source",
        "created_at",
        "status"
      ],
      "x-validators": [
        {
          "name": "Validate the complaint communication source",
          "description": "Validates that the complaint communication source provided is configured.",
          "possible_errors": [
            "invalid_complaint_source"
          ]
        }
      ]
    },
    "ContractMetaData": {
      "type": "object",
      "properties": {
        "term_type": {
          "type": "string",
          "description": "<p>The type of the contract term.</p>"
        },
        "is_variable": {
          "type": "boolean",
          "default": true,
          "description": "<p>Whether the contract term is variable in Kraken or not. If not, it must be amended by a new contract.</p>"
        },
        "metadata": {
          "type": "object",
          "description": "<p> Additional metadata about the contract.</p>",
          "x-validators": [
            {
              "name": "Validate provided dictionary content types",
              "description": "Validates that provided dictionary contents are of the specified key type and value type.",
              "possible_errors": []
            }
          ]
        }
      },
      "required": [
        "metadata",
        "term_type"
      ]
    },
    "ContractSalesRecord": {
      "type": "object",
      "properties": {
        "affiliate_organisation_name": {
          "type": "string",
          "description": "<p>The affiliate organisation name associated with the contract.</p>",
          "maxLength": 128,
          "x-validators": [
            {
              "name": "Validate affiliate organisation exists",
              "description": "Validate that an affiliate organisation exists in Kraken for the given name.",
              "possible_errors": [
                "affiliate_organisation_does_not_exist"
              ]
            }
          ]
        },
        "sales_channel": {
          "enum": [
            "DIRECT",
            "PRICE_COMPARISON",
            "TELESALES",
            "DIGI_TELESALES",
            "EVENTS",
            "FIELD_SALES",
            "AGGREGATOR",
            "PARTNERSHIPS",
            "NEW_TENANT",
            "MOVE_IN",
            "WORKPLACE_POP_UP",
            "BROKER",
            "PARENT_POWER",
            "PEOPLE_POWER",
            "GIFT_OF_KIT",
            "HIGH_REFERRER",
            "SUPPLIER_OF_LAST_RESORT",
            "ACQUISITION",
            "WORKS_WITH_OCTOPUS",
            "LANDLORD",
            "DEBT_COLLECTION_AGENCY"
          ],
          "type": "string",
          "x-spec-enum-id": "f4ccf4dcda60c174",
          "description": "<p>The sales channel associated with the contract</p>",
          "x-enum-descriptions": {
            "DIRECT": "Direct",
            "PRICE_COMPARISON": "Price comparison",
            "TELESALES": "Telesales",
            "DIGI_TELESALES": "Digital telesales",
            "EVENTS": "Events",
            "FIELD_SALES": "Field sales",
            "AGGREGATOR": "Aggregator",
            "PARTNERSHIPS": "Partnerships",
            "NEW_TENANT": "New tenant",
            "MOVE_IN": "Move in",
            "WORKPLACE_POP_UP": "Workplace pop-up",
            "BROKER": "Broker",
            "PARENT_POWER": "Parent power",
            "PEOPLE_POWER": "People power",
            "GIFT_OF_KIT": "Gift of kit",
            "HIGH_REFERRER": "High referrer",
            "SUPPLIER_OF_LAST_RESORT": "Supplier of last resort",
            "ACQUISITION": "Acquisition",
            "WORKS_WITH_OCTOPUS": "Works with octopus",
            "LANDLORD": "Landlord",
            "DEBT_COLLECTION_AGENCY": "Debt collection agency"
          }
        }
      },
      "x-validators": [
        {
          "name": "Sales channel matches affiliate organisation",
          "description": "Validates that when an affiliate_organisation_name is provided, the sales_channel is in the set of channels configured for that organisation.",
          "possible_errors": [
            "sales_channel_does_not_match_affiliate_organisation"
          ]
        }
      ]
    },
    "ContractVersion": {
      "type": "object",
      "properties": {
        "applicable_at_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The date on which this contract version become applicable at.</p>"
        },
        "terms": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Terms"
          },
          "description": "<p>The terms for this version of the contract.</p>"
        }
      },
      "required": [
        "applicable_at_date",
        "terms"
      ]
    },
    "ContractedVolumeConfiguration": {
      "type": "object",
      "properties": {
        "term_type": {
          "type": "string",
          "description": "<p>The type of the contract term.</p>"
        },
        "is_variable": {
          "type": "boolean",
          "default": true,
          "description": "<p>Whether the contract term is variable in Kraken or not. If not, it must be amended by a new contract.</p>"
        },
        "periods": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/ContractedVolumePeriod"
          },
          "description": "<p>A list of contracted volume periods.</p>",
          "minItems": 1,
          "x-validators": [
            {
              "name": "Validate periods do not overlap per market",
              "description": "Validate that sequential contracted volume periods for the same market do not overlap",
              "possible_errors": [
                "overlapping_contracted_volume_periods"
              ]
            }
          ]
        }
      },
      "required": [
        "periods",
        "term_type"
      ]
    },
    "ContractedVolumePeriod": {
      "type": "object",
      "properties": {
        "market_name": {
          "enum": [
            "AUS_EMBEDDED_GAS",
            "AUS_EMBEDDED_UNMETERED_ELECTRICITY",
            "AUS_SOLAR_PPA",
            "AUS_EMBEDDED_UNMETERED_GAS",
            "AUS_EMBEDDED_ELECTRICITY",
            "SIMPLE_SERVICES",
            "AUS_ELECTRICITY",
            "AUS_EMBEDDED_WATER",
            "AUS_GAS"
          ],
          "type": "string",
          "x-spec-enum-id": "2efb600dcd89ea97",
          "description": "<p>The market name for the contracted volume.</p>",
          "x-enum-descriptions": {
            "AUS_EMBEDDED_GAS": "AUS_EMBEDDED_GAS",
            "AUS_EMBEDDED_UNMETERED_ELECTRICITY": "AUS_EMBEDDED_UNMETERED_ELECTRICITY",
            "AUS_SOLAR_PPA": "AUS_SOLAR_PPA",
            "AUS_EMBEDDED_UNMETERED_GAS": "AUS_EMBEDDED_UNMETERED_GAS",
            "AUS_EMBEDDED_ELECTRICITY": "AUS_EMBEDDED_ELECTRICITY",
            "SIMPLE_SERVICES": "SIMPLE_SERVICES",
            "AUS_ELECTRICITY": "AUS_ELECTRICITY",
            "AUS_EMBEDDED_WATER": "AUS_EMBEDDED_WATER",
            "AUS_GAS": "AUS_GAS"
          }
        },
        "unit": {
          "type": "string",
          "description": "<p>The units for the contracted volume.</p>"
        },
        "valid_from_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The datetime the contracted volume is valid from.</p>"
        },
        "valid_to_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The datetime the contracted volume is valid to.</p>"
        },
        "value": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,7}(?:\\.\\d{0,4})?$",
          "description": "<p>The value of the contracted volume.</p>"
        }
      },
      "required": [
        "market_name",
        "unit",
        "valid_from_date",
        "valid_to_date",
        "value"
      ],
      "x-validators": [
        {
          "name": "Validate <code>⁨valid_to⁩</code> not before <code>⁨valid_from⁩</code>",
          "description": "Validates that <code>⁨valid_to⁩</code>, if given, is on or later than <code>⁨valid_from⁩</code>.",
          "possible_errors": [
            "start_date_later_than_end_date"
          ]
        }
      ]
    },
    "ContributionSchemeAgreement": {
      "type": "object",
      "properties": {
        "active_period_end_date": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>The date the agreement is valid to (inclusive).</p>"
        },
        "active_period_start_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The date the agreement is valid from (inclusive).</p>"
        },
        "amount": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,10}(?:\\.\\d{0,10})?$",
          "description": "<p>The amount to contribute.</p>"
        },
        "interval": {
          "enum": [
            "MONTHLY",
            "QUARTERLY"
          ],
          "type": "string",
          "x-spec-enum-id": "32f2645408966f31",
          "description": "<p>The charge interval for the contribution scheme agreement.</p>",
          "x-enum-descriptions": {
            "MONTHLY": "monthly",
            "QUARTERLY": "quarterly"
          }
        },
        "periods": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/ContributionSchemePeriod"
          },
          "description": "<p>The previous and current contribution periods.</p>"
        },
        "scheme": {
          "type": "string",
          "description": "<p>The scheme code for the contribution scheme agreement.</p>",
          "x-validators": [
            {
              "name": "Validate contribution scheme exists",
              "description": "Validates that the contribution scheme exists in Kraken.",
              "possible_errors": [
                "invalid_contribution_scheme"
              ]
            }
          ]
        }
      },
      "required": [
        "active_period_start_date",
        "amount",
        "interval",
        "scheme"
      ],
      "x-validators": [
        {
          "name": "Validate <code>⁨active_period_end_date⁩</code> not before <code>⁨active_period_start_date⁩</code>",
          "description": "Validates that <code>⁨active_period_end_date⁩</code>, if given, is on or later than <code>⁨active_period_start_date⁩</code>.",
          "possible_errors": [
            "start_date_later_than_end_date"
          ]
        },
        {
          "name": "Validate contribution period dates",
          "description": "Validates that all contribution periods have a start date on or later than the active period start date and an end date on or before the active period end date. Also validates that no periods have overlapping dates.",
          "possible_errors": [
            "invalid_contribution_period_end_date",
            "invalid_contribution_period_start_date",
            "overlapping_contribution_periods"
          ]
        }
      ]
    },
    "ContributionSchemePeriod": {
      "type": "object",
      "properties": {
        "end_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The date the contribution scheme period is valid to (exclusive).</p>"
        },
        "fulfilled_at": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time",
          "description": "<p>The datetime that the contribution scheme period was agreed.</p>"
        },
        "start_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The date the contribution scheme period is valid from (inclusive).</p>"
        }
      },
      "required": [
        "end_date",
        "start_date"
      ],
      "x-validators": [
        {
          "name": "Validate <code>⁨end_date⁩</code> not before <code>⁨start_date⁩</code>",
          "description": "Validates that <code>⁨end_date⁩</code>, if given, is on or later than <code>⁨start_date⁩</code>.",
          "possible_errors": [
            "start_date_later_than_end_date"
          ]
        }
      ]
    },
    "CorrectivePeriod": {
      "type": "object",
      "properties": {
        "term_type": {
          "type": "string",
          "description": "<p>The type of the contract term.</p>"
        },
        "is_variable": {
          "type": "boolean",
          "default": true,
          "description": "<p>Whether the contract term is variable in Kraken or not. If not, it must be amended by a new contract.</p>"
        },
        "market_configs": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/CorrectivePeriodMarketConfig"
          },
          "description": "<p>Market configurations for corrective periods</p>",
          "minItems": 1
        }
      },
      "required": [
        "market_configs",
        "term_type"
      ]
    },
    "CorrectivePeriodMarketConfig": {
      "type": "object",
      "properties": {
        "length": {
          "type": "integer",
          "minimum": 1,
          "description": "<p>Length of the corrective period.</p>"
        },
        "length_unit": {
          "enum": [
            "DAY",
            "WEEK",
            "MONTH",
            "YEAR"
          ],
          "type": "string",
          "x-spec-enum-id": "aaeac18e78076e3b",
          "description": "<p>Unit of time for the corrective period length (DAY, WEEK, MONTH, YEAR).</p>",
          "x-enum-descriptions": {
            "DAY": "DAY",
            "WEEK": "WEEK",
            "MONTH": "MONTH",
            "YEAR": "YEAR"
          }
        },
        "market_name": {
          "enum": [
            "AUS_EMBEDDED_GAS",
            "AUS_EMBEDDED_UNMETERED_ELECTRICITY",
            "AUS_SOLAR_PPA",
            "AUS_EMBEDDED_UNMETERED_GAS",
            "AUS_EMBEDDED_ELECTRICITY",
            "SIMPLE_SERVICES",
            "AUS_ELECTRICITY",
            "AUS_EMBEDDED_WATER",
            "AUS_GAS"
          ],
          "type": "string",
          "x-spec-enum-id": "2efb600dcd89ea97",
          "description": "<p>Market name (e.g., ELECTRICITY, GAS) the corrective period applies to.</p>",
          "x-enum-descriptions": {
            "AUS_EMBEDDED_GAS": "AUS_EMBEDDED_GAS",
            "AUS_EMBEDDED_UNMETERED_ELECTRICITY": "AUS_EMBEDDED_UNMETERED_ELECTRICITY",
            "AUS_SOLAR_PPA": "AUS_SOLAR_PPA",
            "AUS_EMBEDDED_UNMETERED_GAS": "AUS_EMBEDDED_UNMETERED_GAS",
            "AUS_EMBEDDED_ELECTRICITY": "AUS_EMBEDDED_ELECTRICITY",
            "SIMPLE_SERVICES": "SIMPLE_SERVICES",
            "AUS_ELECTRICITY": "AUS_ELECTRICITY",
            "AUS_EMBEDDED_WATER": "AUS_EMBEDDED_WATER",
            "AUS_GAS": "AUS_GAS"
          }
        },
        "supply_point_ids": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": "integer",
            "minimum": 1
          },
          "description": "<p>Supply Point IDs the corrective period applies to.</p>",
          "minItems": 1
        }
      },
      "required": [
        "length",
        "length_unit",
        "market_name"
      ]
    },
    "Credit": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "CHARGE",
            "PAYMENT",
            "REPAYMENT",
            "CREDIT",
            "SUPPLY_CHARGE"
          ],
          "type": "string",
          "x-spec-enum-id": "06d6aba5cee32f9a",
          "description": "<p>The type of the transaction.</p>",
          "x-enum-descriptions": {
            "CHARGE": "Charge",
            "PAYMENT": "Payment",
            "REPAYMENT": "Repayment",
            "CREDIT": "Credit",
            "SUPPLY_CHARGE": "Supply Charge"
          }
        },
        "amount": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,10}(?:\\.\\d{0,10})?$",
          "description": "<p>The amount of the transaction. e.g. if the customer has a consumption charge worth 23.43, this equates to a transaction of type <code>CHARGE</code> of 23.43. Payments and repayments must be positive numbers. Generally charges and credits are also positive, but may be negative to represent reversed charges or credits, or if an incorrect estimated reading has resulted in a negative consumption charge. Provide this amount in the currency's major unit rather than its minor unit (for example euros rather than cents, or pounds rather than pence). These examples are illustrative only; the same applies to any currency that has a major and minor unit. For currencies without a minor unit, such as the Japanese yen, pass the value as-is.</p>"
        },
        "billing_document_identifier": {
          "type": "string",
          "description": "<p>The identifier from the source system that groups a set of transactions together. This will be used in Kraken during the migration of historical statement transactions to create an archived billing document. For now this field is only required if <code>HISTORICAL_STATEMENT_REQUIRE_SINGLE_BILLING_DOCUMENT_IDENTIFIER</code> settings is ON and is meant for only <code>historical_statements_transactions</code>. Passing this to other transactions like <code>current_statement_transactions</code> or <code>transactions_in_open_settlement_period</code> will raise validation error.</p>"
        },
        "display_note": {
          "type": "string",
          "description": "<p>The customer-facing note that can be displayed in a statement or email to the customer.</p>"
        },
        "note": {
          "type": "string",
          "description": "<p>Any additional notes about the transaction.</p>"
        },
        "reason": {
          "type": "string",
          "description": "<p>The reason for the transaction.</p>"
        },
        "transaction_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The date of the transaction.</p>",
          "x-validators": [
            {
              "name": "Validate transaction date",
              "description": "Validates that the transaction date provided in the payload is not in the future.",
              "possible_errors": [
                "transaction_in_future"
              ]
            }
          ]
        },
        "transaction_id": {
          "type": "string",
          "description": "<p>The unique internal identifier for the transaction.</p>"
        }
      },
      "required": [
        "amount",
        "transaction_date",
        "transaction_id",
        "type"
      ]
    },
    "CustomerAlternativeNumber": {
      "type": "object",
      "properties": {
        "phone_number": {
          "type": [
            "string",
            "null"
          ],
          "default": "",
          "description": "<p>A customer's alternative phone number.</p>",
          "maxLength": 32,
          "x-validators": [
            {
              "name": "Validate phone number",
              "description": "Validates that a phone number conforms to the norms of the region from which the migration is taking place.",
              "possible_errors": [
                "invalid_phone_number"
              ]
            }
          ]
        }
      }
    },
    "CustomerConsent": {
      "type": "object",
      "properties": {
        "description": {
          "type": "string",
          "description": "<p>A description of any additional details about the obtaining of this consent.</p>",
          "maxLength": 255
        },
        "signed_at": {
          "type": "string",
          "format": "date-time",
          "description": "<p>The date and time the consent was signed. Defaults to now if not provided.</p>",
          "x-validators": [
            {
              "name": "Validate <code>⁨signed_at⁩</code> not in the future",
              "description": "Validates that the given <code>⁨signed_at⁩</code> is not in the future.",
              "possible_errors": [
                "date_in_future"
              ]
            }
          ]
        },
        "type": {
          "x-spec-enum-id": "4f53cda18c2baa0c",
          "description": "<p>The consent type.</p>",
          "x-comment": "Choices for this field are dynamic, once appropriate values have been configured they will be rendered here."
        },
        "value": {
          "enum": [
            "ACCEPTED",
            "REJECTED",
            "UNKNOWN",
            "PENDING"
          ],
          "type": "string",
          "x-spec-enum-id": "f72b73bd6917b6e4",
          "description": "<p>The value for this consent type.</p>",
          "x-enum-descriptions": {
            "ACCEPTED": "ACCEPTED",
            "REJECTED": "REJECTED",
            "UNKNOWN": "UNKNOWN",
            "PENDING": "PENDING"
          }
        }
      },
      "required": [
        "type",
        "value"
      ]
    },
    "CustomerPreferences": {
      "type": "object",
      "properties": {
        "is_user_psr_consent_obtained": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "<p>Whether the customer consented to Priority Services Register (PSR) data being used.</p>"
        },
        "opted_into_associated_companies": {
          "type": "boolean",
          "default": false,
          "description": "<p>Whether the customer is opted in to messages from associated companies. It will be False by default.</p>"
        },
        "opted_into_offers": {
          "type": "boolean",
          "default": false,
          "description": "<p>Whether the customer is opted in to offers, for example marketing emails. It will be False by default.</p>"
        },
        "opted_into_recommended": {
          "type": "boolean",
          "default": true,
          "description": "<p>Whether the customer is opted into non-critical messages, such as Direct Debit messages and meter reading reminders. It will be True by default.</p>"
        },
        "opted_into_sms": {
          "type": "boolean",
          "default": false,
          "description": "<p>Whether the customer is opted in to receive SMS messages. This includes both transactional and marketing messages. It will be False by default.</p>"
        },
        "opted_into_third_parties": {
          "type": "boolean",
          "default": false,
          "description": "<p>Whether the customer is opted in to messages from third party companies. It will be False by default.</p>"
        },
        "opted_into_updates": {
          "type": "boolean",
          "default": false,
          "description": "<p>Whether the customer is opted in to receive non-critical messages such as newsletters. It will be False by default.</p>"
        },
        "opted_into_whatsapp": {
          "type": "boolean",
          "default": false,
          "description": "<p>Whether the customer is opted in to receive Whatsapp messages. This includes both transactional and marketing messages. It will be False by default.</p>"
        },
        "partner_password": {
          "type": "string",
          "default": "",
          "description": "<p>Priority Services Register (PSR) password for the customer.</p>",
          "maxLength": 255
        }
      }
    },
    "CustomerUserDetail": {
      "type": "object",
      "properties": {
        "namespace": {
          "enum": [
            "external_user_id"
          ],
          "type": "string",
          "x-spec-enum-id": "6bb07f5044ea9b8a",
          "description": "<p>The namespace of the customer user detail.</p>",
          "x-enum-descriptions": {
            "external_user_id": "external_user_id"
          }
        },
        "value": {
          "description": "<p>The value of the customer user detail.</p>"
        }
      },
      "required": [
        "namespace",
        "value"
      ],
      "x-validators": [
        {
          "name": "Validate user details",
          "description": "Validates that the user detail namespace and value are allowed for the customer. The user detail namespace (the key in the JSON object) must already have been set up in Kraken. The value (the value in the JSON object) must be the correct data type.",
          "possible_errors": [
            "customer_detail_failed_validation",
            "customer_detail_incorrect_value_type",
            "customer_detail_not_registered"
          ]
        }
      ]
    },
    "Debt": {
      "type": "object",
      "properties": {
        "aged_debt": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/AgedDebt"
          },
          "description": "<details>\n    <summary>A list of any aged debt on this account.</summary>\n    <p>\n        <p>This is essentially the debt position of the account. Typically we report this based on a\n        grouping by date. We can then report on the delinquency at 30+ or 60+ days etc. As such we\n        need to know when the debt was generated.<p>\n        <p>The data we receive will be converted into a historic record of the debt, which we will\n        continue to age within Kraken.</p>\n        <p>How you report it to Kraken is up to you, the more granular you provide it, the more\n        accurate the debt ageing will be.</p>\n        <p>For example, if debt is £150 and the customer has not paid us £50 a month then we could\n        expect the following:</p>\n        <ul>\n            <li>£50 - 2022-11-01</li>\n            <li>£50 - 2022-10-01</li>\n            <li>£50 - 2022-09-01</li>\n        </ul>\n        <p>We would aggregate in our reporting to:</p>\n        <ul>\n            <li>£50 (0-30 days)</li>\n            <li>£50 (31-60 days)</li>\n            <li>£50 (61-365 days)</li>\n            <li>£0 (365+ days)</li>\n        </ul>\n        <p>In 2 months time (assuming they continue to not pay) this would be:</p>\n        <ul>\n            <li>£50 (0-30 days)</li>\n            <li>£50 (31-60 days)</li>\n            <li>£150 (61-365 days)</li>\n            <li>£0 (365+ days)</li>\n        </ul>\n    </p>\n</details>"
        },
        "agency_name": {
          "type": "string",
          "description": "<p>The name of the debt collection agency.</p>",
          "maxLength": 256
        },
        "cais_reference": {
          "type": "string",
          "description": "<p>The CAIS reference for this account.</p>",
          "x-validators": [
            {
              "name": "Validate CAIS reference available",
              "description": "Validates that this Kraken instance is configured to support CAIS references and that this reference has not already been provided for an existing account.",
              "possible_errors": [
                "cais_reference_already_in_use_on_another_account",
                "cais_references_not_supported"
              ]
            }
          ]
        },
        "campaign": {
          "type": "string",
          "description": "<p>The campaign for the debt collection proceeding.</p>",
          "maxLength": 256
        },
        "is_insolvent": {
          "type": "boolean",
          "default": false,
          "description": "<p>Whether the account is currently insolvent or not.</p>"
        },
        "notes": {
          "type": "string",
          "description": "<p>The notes for the debt collection proceeding.</p>",
          "maxLength": 256
        },
        "start_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The start date of the debt proceeding. If an <code>agency_name</code> is provided but no <code>start_date</code>, the migration date is used.</p>"
        }
      },
      "x-validators": [
        {
          "name": "Validate debt collection agency",
          "description": "Validate that if a start date has been provided, an agency name is also provided, and that agency is supported by Kraken.",
          "possible_errors": [
            "debt_collection_agency_does_not_exist",
            "debt_collection_agency_name_required"
          ]
        }
      ]
    },
    "DelayerDays": {
      "type": "object",
      "properties": {
        "term_type": {
          "type": "string",
          "description": "<p>The type of the contract term.</p>"
        },
        "days": {
          "type": "integer",
          "minimum": 1,
          "description": "<p>The number of days between when a reactive payment is triggered and when it should be taken.</p>"
        },
        "is_variable": {
          "type": "boolean",
          "default": true,
          "description": "<p>Whether the contract term is variable in Kraken or not. If not, it must be amended by a new contract.</p>"
        },
        "strategy": {
          "enum": [
            "FIXED",
            "WORKING_DAYS"
          ],
          "type": "string",
          "x-spec-enum-id": "b62f1d43e0839f86",
          "description": "<p>The strategy used to count the delayer days.</p>",
          "x-enum-descriptions": {
            "FIXED": "Calendar days",
            "WORKING_DAYS": "Working days"
          }
        }
      },
      "required": [
        "days",
        "strategy",
        "term_type"
      ]
    },
    "DepositAgreement": {
      "type": "object",
      "properties": {
        "accepted_at": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time",
          "description": "<p>The datetime when the customer accepted to pay the deposit.</p>"
        },
        "deposit_amount": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,10}(?:\\.\\d{0,10})?$",
          "description": "<p>The amount of the deposit.</p>"
        },
        "fulfilled_at": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time",
          "description": "<p>The datetime when the customer fulfilled the deposit.</p>"
        },
        "last_interest_date": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>The date when the last interest was calculated. Only allowed when agreement is fulfilled.</p>"
        },
        "reason": {
          "type": "string",
          "description": "<p>The reason for the deposit.</p>"
        }
      },
      "required": [
        "deposit_amount",
        "reason"
      ],
      "x-validators": [
        {
          "name": "Validate deposit agreement last interest date",
          "description": "Validates that the <code>last_interest_date</code> is only provided if the deposit agreement is fulfilled. If provided then the <code>fulfilled_at</code> date cannot be later than the <code>last_interest_date</code>.",
          "possible_errors": [
            "fulfilled_at_greater_than_last_interest_date",
            "last_interest_date_not_allowed"
          ]
        }
      ]
    },
    "DunningPath": {
      "type": "object",
      "properties": {
        "path_name": {
          "type": "string",
          "description": "<p>Name of the dunning path to set this account onto. This must be agreed upon before migration and is client specific.</p>",
          "maxLength": 256
        },
        "start_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The date on which to start the dunning path. If no date is provided, the dunning path will be restarted on the migration date and delayed by the <code>number_of_days_to_delay_dunning_path_start</code> value provided in the import config.</p>",
          "x-validators": [
            {
              "name": "Validate date not in past",
              "description": "Validates that the given date is not in the past.",
              "possible_errors": [
                "date_in_past"
              ]
            }
          ]
        }
      },
      "required": [
        "path_name"
      ]
    },
    "EffectivePeriod": {
      "type": "object",
      "properties": {
        "end_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The effective period end date (exclusive).</p>"
        },
        "start_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The effective period start date (inclusive).</p>"
        }
      },
      "required": [
        "start_date"
      ]
    },
    "ElectricityHistoricalReading": {
      "type": "object",
      "properties": {
        "billed": {
          "type": "boolean",
          "description": "<p>Whether the reading has been billed.</p>"
        },
        "estimated_reason_code": {
          "enum": [
            "0",
            "1",
            "2",
            "3",
            "4",
            "5",
            "6",
            "7",
            "8",
            "9",
            "10",
            "11",
            "12",
            "13",
            "14",
            "15",
            "16",
            "17",
            "18",
            "19",
            "20",
            "21",
            "22",
            "23",
            "24",
            "25",
            "26",
            "27",
            "28",
            "29",
            "30",
            "31",
            "32",
            "33",
            "34",
            "35",
            "36",
            "37",
            "38",
            "39",
            "40",
            "41",
            "42",
            "43",
            "44",
            "45",
            "46",
            "47",
            "48",
            "49",
            "50",
            "51",
            "52",
            "53",
            "54",
            "55",
            "58",
            "60",
            "61",
            "62",
            "64",
            "65",
            "67",
            "68",
            "69",
            "70",
            "71",
            "72",
            "73",
            "74",
            "75",
            "76",
            "77",
            "78",
            "79",
            "80",
            "81",
            "82",
            "83",
            "84",
            "85",
            "86",
            "87",
            "88",
            "89",
            "90",
            "91",
            "92",
            "93",
            "94",
            "95",
            "96",
            "97",
            "98",
            "99",
            "100",
            "101",
            "102",
            "103",
            "104",
            "105",
            "106",
            "107",
            "108",
            "109"
          ],
          "type": "string",
          "x-spec-enum-id": "e41f5c5218966eb0",
          "description": "<p>One of the NEM13 reason codes defined for Australian energy market.</p>",
          "x-enum-descriptions": {
            "0": "0",
            "1": "1",
            "2": "2",
            "3": "3",
            "4": "4",
            "5": "5",
            "6": "6",
            "7": "7",
            "8": "8",
            "9": "9",
            "10": "10",
            "11": "11",
            "12": "12",
            "13": "13",
            "14": "14",
            "15": "15",
            "16": "16",
            "17": "17",
            "18": "18",
            "19": "19",
            "20": "20",
            "21": "21",
            "22": "22",
            "23": "23",
            "24": "24",
            "25": "25",
            "26": "26",
            "27": "27",
            "28": "28",
            "29": "29",
            "30": "30",
            "31": "31",
            "32": "32",
            "33": "33",
            "34": "34",
            "35": "35",
            "36": "36",
            "37": "37",
            "38": "38",
            "39": "39",
            "40": "40",
            "41": "41",
            "42": "42",
            "43": "43",
            "44": "44",
            "45": "45",
            "46": "46",
            "47": "47",
            "48": "48",
            "49": "49",
            "50": "50",
            "51": "51",
            "52": "52",
            "53": "53",
            "54": "54",
            "55": "55",
            "58": "58",
            "60": "60",
            "61": "61",
            "62": "62",
            "64": "64",
            "65": "65",
            "67": "67",
            "68": "68",
            "69": "69",
            "70": "70",
            "71": "71",
            "72": "72",
            "73": "73",
            "74": "74",
            "75": "75",
            "76": "76",
            "77": "77",
            "78": "78",
            "79": "79",
            "80": "80",
            "81": "81",
            "82": "82",
            "83": "83",
            "84": "84",
            "85": "85",
            "86": "86",
            "87": "87",
            "88": "88",
            "89": "89",
            "90": "90",
            "91": "91",
            "92": "92",
            "93": "93",
            "94": "94",
            "95": "95",
            "96": "96",
            "97": "97",
            "98": "98",
            "99": "99",
            "100": "100",
            "101": "101",
            "102": "102",
            "103": "103",
            "104": "104",
            "105": "105",
            "106": "106",
            "107": "107",
            "108": "108",
            "109": "109"
          }
        },
        "reading_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The date of the reading.</p>"
        },
        "reading_type": {
          "enum": [
            "CUSTOMER",
            "ESTIMATE",
            "ROUTINE",
            "SMART",
            "REGULAR"
          ],
          "type": "string",
          "x-spec-enum-id": "1ae88a4096677e8e",
          "description": "<p>The type of reading. See choices for more details.</p>",
          "x-enum-descriptions": {
            "CUSTOMER": "Customer",
            "ESTIMATE": "Estimate",
            "ROUTINE": "Routine",
            "SMART": "Smart",
            "REGULAR": "Regular"
          }
        },
        "reading_value": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,11}(?:\\.\\d{0,4})?$",
          "description": "<p>The reading value as a decimal.</p>"
        },
        "register_id": {
          "type": "string",
          "description": "<p>The register identifier as provided in the Meter Technical Details (MTDs), including leading zeros.</p>",
          "maxLength": 32
        },
        "validation_status": {
          "enum": [
            "VALIDATED",
            "UNVALIDATED",
            "FAILED"
          ],
          "type": "string",
          "x-spec-enum-id": "3ab1e518b1b0a9db",
          "default": "VALIDATED",
          "description": "<p>Whether the reading has been validated or not. See choices for more details.</p>",
          "x-enum-descriptions": {
            "VALIDATED": "Validated",
            "UNVALIDATED": "Unvalidated",
            "FAILED": "Failed"
          }
        }
      },
      "required": [
        "billed",
        "reading_date",
        "reading_type",
        "reading_value"
      ]
    },
    "ElectricityMeter": {
      "type": "object",
      "properties": {
        "installation_type": {
          "enum": [
            "BASIC",
            "COMMS1",
            "COMMS2",
            "COMMS3",
            "COMMS4",
            "COMMS4A",
            "COMMS4C",
            "COMMS4D",
            "COMMS8",
            "COMMS9",
            "COMMS9CM",
            "MRAM",
            "MRIM",
            "NCONUML",
            "PROF",
            "SAMPLE",
            "UMCP",
            "VICAMI"
          ],
          "type": "string",
          "x-spec-enum-id": "6ba26f28e0a944b4",
          "description": "<p>The installation type for the meter. This field is only used when market_type is <code>OFF_MARKET</code>.</p>",
          "x-enum-descriptions": {
            "BASIC": "BASIC",
            "COMMS1": "COMMS1",
            "COMMS2": "COMMS2",
            "COMMS3": "COMMS3",
            "COMMS4": "COMMS4",
            "COMMS4A": "COMMS4A",
            "COMMS4C": "COMMS4C",
            "COMMS4D": "COMMS4D",
            "COMMS8": "COMMS8",
            "COMMS9": "COMMS9",
            "COMMS9CM": "COMMS9CM",
            "MRAM": "MRAM",
            "MRIM": "MRIM",
            "NCONUML": "NCONUML",
            "PROF": "PROF",
            "SAMPLE": "SAMPLE",
            "UMCP": "UMCP",
            "VICAMI": "VICAMI"
          }
        },
        "installed_on": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>The date the meter was installed.</p>"
        },
        "last_billed_to_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Date up to which consumption has been billed to.</p>"
        },
        "market_type": {
          "enum": [
            "ON_MARKET",
            "OFF_MARKET"
          ],
          "type": "string",
          "x-spec-enum-id": "23be011f07c3b122",
          "default": "ON_MARKET",
          "description": "<p>Market type. Defaults to <code>ON_MARKET</code>.</p>",
          "x-enum-descriptions": {
            "ON_MARKET": "On Market",
            "OFF_MARKET": "Off Market"
          }
        },
        "meter_read_type": {
          "enum": [
            "ACCUMULATION",
            "INTERVAL"
          ],
          "type": "string",
          "x-spec-enum-id": "4518b1b0277e90b2",
          "default": "ACCUMULATION",
          "description": "<p>Meter read type. Defaults to <code>ACCUMULATION</code>.</p>",
          "x-enum-descriptions": {
            "ACCUMULATION": "Accumulation",
            "INTERVAL": "Interval"
          }
        },
        "meter_serial_number": {
          "type": "string",
          "description": "<p>Serial number of the meter.</p>",
          "maxLength": 32
        },
        "reading_history": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/ElectricityHistoricalReading"
          },
          "description": "<p>\n    List of historical readings. Generally these are readings prior to the one(s) provided under transfer_readings.\n</p>\n<p>\n    It is possible to provide readings in the reading_history after the transfer_reading date but these must be unbilled.\n</p>"
        },
        "registers": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/ElectricityRegister"
          },
          "description": "<p>The registers associated to this meter.</p>"
        },
        "removed_on": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>The date the meter was removed.</p>"
        },
        "transfer_readings": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/ElectricityReading"
          },
          "description": "<p>\n    Only the last reading (or readings, if the meter is ECO7 or ECO10) the account has been billed up to.\n</p>\n<p>\n    If the account has never been billed, the SSD reading(s) must be on this list.\n</p>\n<p>\n    It’s expected that a transfer reading will be given per register on an active accumulation meter in the case of electricity.\n</p>\n<p>\n    It’s expected that all transfer reading dates will match the last_billed_to_date.\n</p>"
        }
      },
      "required": [
        "meter_serial_number"
      ],
      "x-validators": [
        {
          "name": "Validate off-market meter fields",
          "description": "Validates that off-market meter fields are provided only for off-market meter and not for on-market meter.",
          "possible_errors": [
            "installation_type_not_allowed_for_on_market_meter",
            "installation_type_required_for_off_market_meter",
            "multiplier_not_allowed_for_on_market_register",
            "multiplier_required_for_off_market_register",
            "network_tariff_code_not_allowed_for_on_market_register",
            "network_tariff_code_required_for_off_market_register",
            "unit_of_measure_not_allowed_for_on_market_register",
            "unit_of_measure_required_for_off_market_register"
          ]
        },
        {
          "name": "Validate that transfer readings belong to active meter register IDs",
          "description": "Validate that all transfer readings have a register ID and that the register ID is on the list of given IDs for that meter.",
          "possible_errors": [
            "reading_register_id_not_recognised",
            "reading_without_register_id"
          ]
        },
        {
          "name": "Validate that historical readings have existing register IDs",
          "description": "Validate that the register IDs associated with historical readings exist for the meter.",
          "possible_errors": [
            "historical_reading_register_id_not_recognised",
            "no_register_id_for_reading"
          ]
        }
      ]
    },
    "ElectricityMeterPoint": {
      "type": "object",
      "properties": {
        "supply_type": {
          "enum": [
            "ELECTRICITY",
            "GAS",
            "UNMETERED_GAS",
            "UNMETERED_ELECTRICITY",
            "WATER",
            "EMBEDDED_WATER",
            "EMBEDDED_ELECTRICITY",
            "EMBEDDED_GAS",
            "SOLAR_PPA",
            "REGOS_EXPORT_CERTIFICATES",
            "ROCS_EXPORT_CERTIFICATES",
            "BROADBAND",
            "HEAT_PUMP",
            "WATER_HEATER",
            "ELECTRICITY_DISTRIBUTION",
            "LIGHT",
            "POLE"
          ],
          "type": "string",
          "x-spec-enum-id": "b093b6cd0238d6bd",
          "default": "ELECTRICITY",
          "description": "<p>Supply type of the supply point.</p>",
          "x-enum-descriptions": {
            "ELECTRICITY": "Electricity",
            "GAS": "Gas",
            "UNMETERED_GAS": "Unmetered Gas",
            "UNMETERED_ELECTRICITY": "Unmetered Electricity",
            "WATER": "Water",
            "EMBEDDED_WATER": "Embedded Water",
            "EMBEDDED_ELECTRICITY": "Embedded Electricity",
            "EMBEDDED_GAS": "Embedded Gas",
            "SOLAR_PPA": "Solar PPA",
            "REGOS_EXPORT_CERTIFICATES": "REGOs Export Certificates",
            "ROCS_EXPORT_CERTIFICATES": "ROCs Export Certificates",
            "BROADBAND": "Broadband",
            "HEAT_PUMP": "Heat Pump",
            "WATER_HEATER": "Water Heater",
            "ELECTRICITY_DISTRIBUTION": "Electricity Distribution",
            "LIGHT": "Light",
            "POLE": "Pole"
          }
        },
        "access_details": {
          "type": "string",
          "description": "<p>Access details for the meter point. No details indicates “Customer reports no access requirements”. Can’t be longer than 160 characters.</p>",
          "maxLength": 160
        },
        "address": {
          "allOf": [
            {
              "$ref": "#/$defs/CommonStructuredAddress"
            }
          ],
          "description": "<p>Structured address for this meter point.</p>"
        },
        "agreements": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/AusAgreement"
          },
          "description": "<p>List of agreements linked to the supply point.</p>",
          "x-validators": [
            {
              "name": "Validate product addon code and tariff code combination",
              "description": "aus:data-import--validation-product-addon-code-and-product-code-combination--help-text",
              "possible_errors": [
                "invalid_product_addon_code_and_product_code_combination"
              ]
            }
          ]
        },
        "dog_code": {
          "enum": [
            "Bluff",
            "Savage",
            "Tied",
            "Friendly",
            "Dog OK",
            "Dog Caution",
            "No Dog",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "d63e05b877b7aa4b",
          "description": "<p>Dog code.</p>",
          "x-enum-descriptions": {
            "Bluff": "Bluff",
            "Savage": "Savage",
            "Tied": "Tied",
            "Friendly": "Friendly",
            "Dog OK": "Dog Ok",
            "Dog Caution": "Dog Caution",
            "No Dog": "No Dog",
            "None": "None"
          }
        },
        "hazard_details": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "<p>Hazard details for the meterpoint.</br>\nNo supplied hazard details indicates “Not Known To Initiator”.</br>\nSpecifying a single details of “Not Known To Initiator” also indicates “Not Known To Initiator”.</br>\nIf the value is “Customer Reports No Hazard” or “Not Known To Initiator”, no other values may be provided.\nThe following are the market specified hazards:\n<ul>\n        <li>Customer Reports No Hazard</li>\n        <li>Dog</li>\n        <li>Electric Fence</li>\n        <li>Customer Caution</li>\n        <li>Electrical Safety Issue</li>\n        <li>Asbestos Fuse</li>\n        <li>Asbestos Board</li>\n        <li>Not Known To Initiator</li>\n</ul>\nOther values are the custom hazards and each of them can’t be longer than 100 characters.\n</p>",
          "x-validators": [
            {
              "name": "Validate hazard details",
              "description": "Validates that <code>Customer Reports No Hazard</code> and <code>\"Not Known To Initiator</code> cannot be combined with other market specified hazards.",
              "possible_errors": [
                "no_hazard_cannot_combine_with_other_hazards",
                "not_known_cannot_combine_with_other_hazards"
              ]
            },
            {
              "name": "Validate hazard details",
              "description": "<p>Hazard details for the meterpoint.</br>\nNo supplied hazard details indicates “Not Known To Initiator”.</br>\nSpecifying a single details of “Not Known To Initiator” also indicates “Not Known To Initiator”.</br>\nIf the value is “Customer Reports No Hazard” or “Not Known To Initiator”, no other values may be provided.\nThe following are the market specified hazards:\n<ul>\n        <li>Customer Reports No Hazard</li>\n        <li>Dog</li>\n        <li>Electric Fence</li>\n        <li>Customer Caution</li>\n        <li>Electrical Safety Issue</li>\n        <li>Asbestos Fuse</li>\n        <li>Asbestos Board</li>\n        <li>Not Known To Initiator</li>\n</ul>\nOther values are the custom hazards and each of them can’t be longer than 100 characters.\n</p>",
              "possible_errors": []
            }
          ]
        },
        "identifier": {
          "type": "string",
          "description": "<p> The unique identifier for the supply point.</p>",
          "x-validators": [
            {
              "name": "Validate the supply point identifier",
              "description": "Validate that the supply point identifier in the payload is valid for the territory that the account is importing in.",
              "possible_errors": [
                "invalid_supply_point_identifier"
              ]
            }
          ]
        },
        "last_billed_to_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Date up to which consumption has been billed on the supply point.</p><p>If the supply point has never been billed before, this should be the supply start date for the supply point and Kraken will bill from then.</p><p>If the supply point has been billed before, this typically represents the date of the reading that was last charged to. Kraken will then start to bill from this point.</p><p>This date is inclusive. If the equivalent date in the source system is exclusive make sure to add a day to the value before passing to Kraken.</p>"
        },
        "meter_position": {
          "enum": [
            "BA",
            "BG",
            "BH",
            "BR",
            "BV",
            "BW",
            "BY",
            "CE",
            "CP",
            "DR",
            "FA",
            "FD",
            "FF",
            "FH",
            "FL",
            "FR",
            "FS",
            "FV",
            "FW",
            "GA",
            "GR",
            "KC",
            "KI",
            "LS",
            "OB",
            "PA",
            "PO",
            "PY",
            "RS",
            "SH",
            "SK",
            "SP",
            "SR",
            "TO",
            "UB",
            "UC",
            "UF",
            "UL",
            "UP",
            "UR",
            "US",
            "WH",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "b2672f221b69f827",
          "description": "<p>Meter position code.</p>",
          "x-enum-descriptions": {
            "BA": "Ba",
            "BG": "Bg",
            "BH": "Bh",
            "BR": "Br",
            "BV": "Bv",
            "BW": "Bw",
            "BY": "By",
            "CE": "Ce",
            "CP": "Cp",
            "DR": "Dr",
            "FA": "Fa",
            "FD": "Fd",
            "FF": "Ff",
            "FH": "Fh",
            "FL": "Fl",
            "FR": "Fr",
            "FS": "Fs",
            "FV": "Fv",
            "FW": "Fw",
            "GA": "Ga",
            "GR": "Gr",
            "KC": "Kc",
            "KI": "Ki",
            "LS": "Ls",
            "OB": "Ob",
            "PA": "Pa",
            "PO": "Po",
            "PY": "Py",
            "RS": "Rs",
            "SH": "Sh",
            "SK": "Sk",
            "SP": "Sp",
            "SR": "Sr",
            "TO": "To",
            "UB": "Ub",
            "UC": "Uc",
            "UF": "Uf",
            "UL": "Ul",
            "UP": "Up",
            "UR": "Ur",
            "US": "Us",
            "WH": "Wh",
            "None": "None"
          }
        },
        "meters": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/ElectricityMeter"
          },
          "description": "<p>List of active and exchanged meters on the meter point.</p>",
          "x-validators": [
            {
              "name": "No repeated meter register IDs",
              "description": "Validate that a meter does not have multiple registers with the same ID.",
              "possible_errors": [
                "meter_with_duplicate_register_ids"
              ]
            }
          ]
        },
        "mpxn": {
          "type": "string",
          "description": "<p>MIRN or NMI of this meter point, UNMETERED_GAS_COOKTOP for unmetered gas cooktop, or UNMETERED_GAS_HEATER for unmetered gas heater. For CES water meter, the value should be prefixed with EMBEDDED_WATER_ (the prefix will not be saved).</p>"
        },
        "multiplier": {
          "type": [
            "string",
            "null"
          ],
          "format": "decimal",
          "pattern": "^-?\\d{0,3}(?:\\.\\d{0,2})?$",
          "description": "<p></p>"
        },
        "parent_nmi": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p>Parent NMI.</p>",
          "maxLength": 10
        },
        "sensitive_load": {
          "type": "boolean",
          "default": false,
          "description": "<p>Whether there is sensitive load. Note that the existence of a Life Support record with \"registered\" status will take precedence over this.</p>"
        },
        "supply_details": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/ElectricitySupplyDetail"
          },
          "description": "<p>List of supply details for the meter point.</p>"
        },
        "supply_end_date": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>Supply end date for current supply.</p>"
        },
        "supply_start_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Supply start date for current supply.</p>"
        },
        "use_nmi_discovery": {
          "type": "boolean",
          "description": "<p>\n    If supplied and set to true, attempt to use NMI Discovery to create meterpoints, instead of using a stored C4 file.\n    NB: This will raise an error if the environment is not configured to allow the use of NMI Discovery for import.\n    This is to prevent this functionality from being used in production.\n</p>"
        }
      },
      "required": [
        "mpxn",
        "supply_start_date"
      ],
      "x-validators": [
        {
          "name": "Validate <code>⁨supply_end_date⁩</code> not before <code>⁨supply_start_date⁩</code>",
          "description": "Validates that <code>⁨supply_end_date⁩</code>, if given, is on or later than <code>⁨supply_start_date⁩</code>.",
          "possible_errors": [
            "start_date_later_than_end_date"
          ]
        },
        {
          "name": "Validate agreements do not start before supply start date",
          "description": "Validate that agreements do not start before the supply point's supply start date, if provided.",
          "possible_errors": [
            "agreement_start_date_before_supply_start_date"
          ]
        }
      ]
    },
    "ElectricityReading": {
      "type": "object",
      "properties": {
        "estimated_reason_code": {
          "enum": [
            "0",
            "1",
            "2",
            "3",
            "4",
            "5",
            "6",
            "7",
            "8",
            "9",
            "10",
            "11",
            "12",
            "13",
            "14",
            "15",
            "16",
            "17",
            "18",
            "19",
            "20",
            "21",
            "22",
            "23",
            "24",
            "25",
            "26",
            "27",
            "28",
            "29",
            "30",
            "31",
            "32",
            "33",
            "34",
            "35",
            "36",
            "37",
            "38",
            "39",
            "40",
            "41",
            "42",
            "43",
            "44",
            "45",
            "46",
            "47",
            "48",
            "49",
            "50",
            "51",
            "52",
            "53",
            "54",
            "55",
            "58",
            "60",
            "61",
            "62",
            "64",
            "65",
            "67",
            "68",
            "69",
            "70",
            "71",
            "72",
            "73",
            "74",
            "75",
            "76",
            "77",
            "78",
            "79",
            "80",
            "81",
            "82",
            "83",
            "84",
            "85",
            "86",
            "87",
            "88",
            "89",
            "90",
            "91",
            "92",
            "93",
            "94",
            "95",
            "96",
            "97",
            "98",
            "99",
            "100",
            "101",
            "102",
            "103",
            "104",
            "105",
            "106",
            "107",
            "108",
            "109"
          ],
          "type": "string",
          "x-spec-enum-id": "e41f5c5218966eb0",
          "description": "<p>One of the NEM13 reason codes defined for Australian energy market.</p>",
          "x-enum-descriptions": {
            "0": "0",
            "1": "1",
            "2": "2",
            "3": "3",
            "4": "4",
            "5": "5",
            "6": "6",
            "7": "7",
            "8": "8",
            "9": "9",
            "10": "10",
            "11": "11",
            "12": "12",
            "13": "13",
            "14": "14",
            "15": "15",
            "16": "16",
            "17": "17",
            "18": "18",
            "19": "19",
            "20": "20",
            "21": "21",
            "22": "22",
            "23": "23",
            "24": "24",
            "25": "25",
            "26": "26",
            "27": "27",
            "28": "28",
            "29": "29",
            "30": "30",
            "31": "31",
            "32": "32",
            "33": "33",
            "34": "34",
            "35": "35",
            "36": "36",
            "37": "37",
            "38": "38",
            "39": "39",
            "40": "40",
            "41": "41",
            "42": "42",
            "43": "43",
            "44": "44",
            "45": "45",
            "46": "46",
            "47": "47",
            "48": "48",
            "49": "49",
            "50": "50",
            "51": "51",
            "52": "52",
            "53": "53",
            "54": "54",
            "55": "55",
            "58": "58",
            "60": "60",
            "61": "61",
            "62": "62",
            "64": "64",
            "65": "65",
            "67": "67",
            "68": "68",
            "69": "69",
            "70": "70",
            "71": "71",
            "72": "72",
            "73": "73",
            "74": "74",
            "75": "75",
            "76": "76",
            "77": "77",
            "78": "78",
            "79": "79",
            "80": "80",
            "81": "81",
            "82": "82",
            "83": "83",
            "84": "84",
            "85": "85",
            "86": "86",
            "87": "87",
            "88": "88",
            "89": "89",
            "90": "90",
            "91": "91",
            "92": "92",
            "93": "93",
            "94": "94",
            "95": "95",
            "96": "96",
            "97": "97",
            "98": "98",
            "99": "99",
            "100": "100",
            "101": "101",
            "102": "102",
            "103": "103",
            "104": "104",
            "105": "105",
            "106": "106",
            "107": "107",
            "108": "108",
            "109": "109"
          }
        },
        "reading_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The date of the reading.</p>"
        },
        "reading_type": {
          "enum": [
            "CUSTOMER",
            "ESTIMATE",
            "ROUTINE",
            "SMART",
            "REGULAR"
          ],
          "type": "string",
          "x-spec-enum-id": "1ae88a4096677e8e",
          "description": "<p>The type of reading. See choices for more details.</p>",
          "x-enum-descriptions": {
            "CUSTOMER": "Customer",
            "ESTIMATE": "Estimate",
            "ROUTINE": "Routine",
            "SMART": "Smart",
            "REGULAR": "Regular"
          }
        },
        "reading_value": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,11}(?:\\.\\d{0,4})?$",
          "description": "<p>The reading value as a decimal.</p>"
        },
        "register_id": {
          "type": "string",
          "description": "<p>The register identifier as provided in the Meter Technical Details (MTDs), including leading zeros.</p>",
          "maxLength": 32
        }
      },
      "required": [
        "reading_date",
        "reading_type",
        "reading_value"
      ]
    },
    "ElectricityRegister": {
      "type": "object",
      "properties": {
        "effective_ntc": {
          "enum": [
            "EA011",
            "EA025",
            "EA025_26",
            "EA025_LEGACY",
            "EA115",
            "EA316",
            "EA051",
            "EA256",
            "EA225",
            "EA225_26",
            "EA025DTOU",
            "NAST12",
            "CGTOU",
            "SBTOU",
            "N71_LEGACY",
            "N71",
            "N71_26",
            "N84",
            "N84_26",
            "N91",
            "N95",
            "6900",
            "6950",
            "6970",
            "8920",
            "8950",
            "8970",
            "3800",
            "6800",
            "8800",
            "RTC22B",
            "RTC22C",
            "RTC22D",
            "RTC22E",
            "RTC24C",
            "RTC52D",
            "RTC52E",
            "RTC52F",
            "RTC52G",
            "RTC49",
            "RTC12A",
            "RTC21",
            "RTC20L",
            "RTC22A",
            "RTC22L",
            "RTC37",
            "RTC47",
            "RTC48",
            "RTC50",
            "RTC62",
            "RTC65",
            "RTC66",
            "RTC14C",
            "RTC62A",
            "BLNT3AL",
            "BLNT2AL",
            "BLND1AR",
            "BLNRSS2",
            "BLNBSS1",
            "BLNT2AU",
            "BLND1SR",
            "BLNT3AL_QLD",
            "BLNT2AL_QLD",
            "BLNT3AL_12B",
            "BLNT3AL_12C",
            "BLNT3AL_12D",
            "BLNRSS2_12E",
            "BLNT2AL_22B",
            "BLNT2AL_22C",
            "BLNT2AL_22D",
            "BLNBSS1_22E",
            "RTOUCL_26",
            "RTOU",
            "RTOU_JULY2025",
            "RTOUMC",
            "RTOUPLUS",
            "RTOUR",
            "RAD",
            "RD",
            "RPRO",
            "QB2R",
            "NAST11",
            "NAST13",
            "NAST14",
            "NAST15",
            "NASN11",
            "NASS11",
            "NASS11S",
            "NEE24",
            "NSP20",
            "NEE20",
            "NEE21",
            "C2R",
            "C2G5",
            "CRSTOU",
            "CRTOU",
            "A10I",
            "A120",
            "A130",
            "A210",
            "D2",
            "ND2",
            "PRSTOU",
            "PRTOU",
            "NDTOU",
            "LVM2R",
            "LVS2R",
            "UMBO",
            "URSTOU",
            "URTOU",
            "LVTOU",
            "027",
            "028",
            "NEE20TOU5",
            "NEE21TOU5",
            "C2RTOU5",
            "C2G5TOU5",
            "A10ITOU5",
            "A210TOU5",
            "D2TOU5",
            "ND2TOU5",
            "LVS2RTOU5",
            "LVM2RDTOU5",
            "NDM",
            "EV_AUDI",
            "NDMO",
            "A23N",
            "CMG021",
            "EA301",
            "EA302",
            "EA302_26",
            "EA305",
            "EA310",
            "RTC14",
            "RTC24",
            "BLND1AB",
            "A230",
            "A270",
            "A300",
            "C2DL",
            "C2DLB",
            "CLLV",
            "CLLVB",
            "DH",
            "HV",
            "LLV",
            "NASN21",
            "NASN2P",
            "NASN2S",
            "NSP75",
            "CMGB",
            "CMG",
            "RTC44_KVA",
            "RTC45_KVA",
            "RTC46_KVA",
            "RTC50B_KW",
            "RTC50B_KVA",
            "RTC50C_KW",
            "RTC50C_KVA",
            "N92",
            "N93",
            "NSW_CUSTOM",
            "ELTOUDT1",
            "BAT_SAPNI",
            "BAT_AGRIDI",
            "BAT_ENDI",
            "BAT_ESSNI",
            "BAT_ANETI",
            "BAT_CITII",
            "BAT_JEMNI",
            "BAT_POWCI",
            "BAT_UNTDI",
            "BAT_ENRXI",
            "BUS_AHRS_AUSGRI",
            "BUS_DAY_AUSGRI",
            "BUS_MORN_AUSGRI",
            "BUS_AHRS_ENDEAV",
            "BUS_DAY_ENDEAV",
            "BUS_MORN_ENDEAV",
            "BUS_AHRS_ESSENT",
            "BUS_DAY_ESSENT",
            "BUS_MORN_ESSENT",
            "BUS_AHRS_ENERGX",
            "BUS_DAY_ENERGX",
            "BUS_MORN_ENERGX",
            "BUS_AHRS_SAPN",
            "BUS_DAY_SAPN",
            "BUS_MORN_SAPN",
            "BUS_AHRS_AUSNET",
            "BUS_DAY_AUSNET",
            "BUS_MORN_AUSNET",
            "BUS_AHRS_CITIPR",
            "BUS_DAY_CITIPR",
            "BUS_MORN_CITIPR",
            "BUS_AHRS_JEMENA",
            "BUS_DAY_JEMENA",
            "BUS_MORN_JEMENA",
            "BUS_AHRS_POWCOR",
            "BUS_DAY_POWCOR",
            "BUS_MORN_POWCOR",
            "BUS_AHRS_UNITED",
            "BUS_DAY_UNITED",
            "BUS_MORN_UNITED",
            "BUS_AHRS_EVOENR",
            "BUS_DAY_EVOENR",
            "BUS_MORN_EVOENR",
            "WEEKENDSHIFT_AUSGRI",
            "WEEKENDSHIFT_ENDEAV",
            "WEEKENDSHIFT_ESSENT",
            "WEEKENDSHIFT_ENERGX",
            "WEEKENDSHIFT_SAPN",
            "WEEKENDSHIFT_AUSNET",
            "WEEKENDSHIFT_CITIPR",
            "WEEKENDSHIFT_JEMENA",
            "WEEKENDSHIFT_POWCOR",
            "WEEKENDSHIFT_UNITED",
            "WEEKENDSHIFT_EVOENR",
            "WEEKDAYSHIFT_AUSGRI",
            "WEEKDAYSHIFT_ENDEAV",
            "WEEKDAYSHIFT_ESSENT",
            "WEEKDAYSHIFT_ENERGX",
            "WEEKDAYSHIFT_SAPN",
            "WEEKDAYSHIFT_AUSNET",
            "WEEKDAYSHIFT_CITIPR",
            "WEEKDAYSHIFT_JEMENA",
            "WEEKDAYSHIFT_POWCOR",
            "WEEKDAYSHIFT_UNITED",
            "WEEKDAYSHIFT_EVOENR",
            "NIGHTSHIFT_AUSGRI",
            "NIGHTSHIFT_ENDEAV",
            "NIGHTSHIFT_ESSENT",
            "NIGHTSHIFT_ENERGX",
            "NIGHTSHIFT_SAPN",
            "NIGHTSHIFT_AUSNET",
            "NIGHTSHIFT_CITIPR",
            "NIGHTSHIFT_JEMENA",
            "NIGHTSHIFT_POWCOR",
            "NIGHTSHIFT_UNITED",
            "NIGHTSHIFT_EVOENR",
            "BAT_JEMNE",
            "BAT_ANETE",
            "BAT_AGRIDE",
            "6-8_BATFIT",
            "BAT_ESSNE",
            "BAT_UNTDE",
            "BAT_ENDE",
            "BAT_ENRXE",
            "N61",
            "BEE_SFIT",
            "BAT_CITIE",
            "BAT_SAPNE",
            "BAT_POWCE",
            "EA029",
            "EA010",
            "EA050",
            "EA116",
            "N72",
            "N73",
            "N90",
            "N70",
            "N705",
            "N706",
            "RTC11",
            "RTCNA",
            "RTC20",
            "RTC43",
            "RTC66A",
            "BLNN2AU",
            "BLNN1AU",
            "3750",
            "3770",
            "3970",
            "8400",
            "3850",
            "3870",
            "3950",
            "6000",
            "8420",
            "8450",
            "8470",
            "8500",
            "QBSR",
            "QRSR",
            "QRSRI",
            "MRSR",
            "MRSRI",
            "MRSRII",
            "RSR",
            "NEE11",
            "NEE12",
            "NEE13",
            "NEE14",
            "NEE15",
            "NEE19",
            "C1R",
            "C1G",
            "C1RB",
            "A100",
            "A200",
            "D1",
            "ND1",
            "LVS1R",
            "LVM1R",
            "010",
            "011",
            "020",
            "021",
            "023",
            "025",
            "026",
            "030",
            "031",
            "040",
            "106",
            "EBIBT1",
            "ERIBT1",
            "TAS31",
            "TAS41",
            "ERTOUEXT1",
            "EA111",
            "A10D",
            "F10D",
            "T10D",
            "CR",
            "CRB",
            "DD",
            "FRESKW1R",
            "RESKW1R",
            "RESKWTOU",
            "TRESKW1R",
            "A20D",
            "T20D",
            "F20D",
            "CG",
            "CGB",
            "NDD",
            "FLVMKWTO",
            "LVMKWTOU",
            "TLVMKWTO",
            "FLVMKW1R",
            "LVMKW1R",
            "UMBD",
            "8100",
            "8200",
            "8300",
            "7400",
            "MRD",
            "RTC14A",
            "RTC14B",
            "RTC24A",
            "RTC24B",
            "RTC44_KW",
            "RTC44A",
            "RTC45_KW",
            "RTC46_KW",
            "RTC50A",
            "RTC51A",
            "RTC51B",
            "RTC51C",
            "RTC51D",
            "RTC52A",
            "RTC52B",
            "RTC52C",
            "RTC53",
            "RTCICC",
            "RTC41",
            "7100",
            "3650",
            "NASN12",
            "EA030",
            "EA250",
            "N50",
            "NC01",
            "BLNC1AU",
            "BLNC1AR",
            "BLNC1CO",
            "9000",
            "9020",
            "9050",
            "9070",
            "RTC31",
            "RTC33",
            "RTCEV",
            "RTC34",
            "RTC60A",
            "EVNBT1",
            "EVNBT2",
            "EVNBT3",
            "EVNCT1",
            "EVNCT2",
            "EVNCT3",
            "EVNT1",
            "EVNT2",
            "EVNT3",
            "EVNXT1",
            "EVNXT2",
            "EVNXT3",
            "QOPCL",
            "QOPCLI",
            "MOPCL",
            "MOPCLI",
            "OPCL",
            "OPCLI",
            "OPCLTR",
            "CL",
            "CLMC",
            "CLOP",
            "RTOUCL",
            "RTOUCLMC",
            "NEE13CL",
            "NEE30",
            "NEE31",
            "NEE32",
            "CDS",
            "A180",
            "DD1",
            "060",
            "LVDED",
            "TAS63",
            "5700",
            "EA040",
            "EA260",
            "N54",
            "NC02",
            "NC04",
            "N62",
            "BLNC2AU",
            "BLNC3NU",
            "9100",
            "9120",
            "9150",
            "9170",
            "070",
            "TAS61",
            "EVCT1",
            "RTC60B",
            "EVCBT1",
            "EVCBT2",
            "EVCBT3",
            "EVCCT1",
            "EVCCT2",
            "EVCCT3",
            "EVCT2",
            "EVCT3",
            "EVCXT1",
            "EVCXT2",
            "EVCXT3",
            "BLNE4AU",
            "GEN2028S",
            "RTCICC_EXPORT",
            "ZGENR",
            "F210",
            "GEN2028",
            "FURTOU",
            "NAST11S",
            "GGENR",
            "T270",
            "202",
            "T230",
            "TLVM1R",
            "NEE12S",
            "TFIT",
            "BLNE14AU",
            "F10X",
            "9900",
            "BLNBEX1",
            "BLNE26AU",
            "BLNREX2",
            "GENR2028",
            "GEN2016",
            "T210",
            "FLVS1R",
            "RTCSSN",
            "RTCSS",
            "SUN2B",
            "NASN11P",
            "T250",
            "SUN21",
            "9950",
            "ZGENRI",
            "F100",
            "F200",
            "RTCSSX",
            "9870",
            "NASN11S",
            "TLVKWTOUH",
            "FA270",
            "7570",
            "TTODFLEX",
            "FLVM1R",
            "BLNE24AU",
            "RTCNAX",
            "NSP23",
            "GENR2028S",
            "BLNE22AU",
            "9820",
            "NEE23",
            "NOTAPPLIC",
            "NEE26",
            "9720",
            "SSP23",
            "NESG",
            "FLVKWTOUH",
            "NEE11S",
            "7520",
            "302",
            "BLNE21AU",
            "SSP2B",
            "RTCSSA",
            "NVG1",
            "FTOD",
            "NESN",
            "FTOU",
            "T10I",
            "GENR2028I",
            "7550",
            "9800",
            "GENR2016",
            "9920",
            "T10X",
            "T100",
            "301",
            "9750",
            "9970",
            "GENR",
            "T300",
            "XGEN",
            "SUN2T",
            "TTOD9",
            "SUN23",
            "FTODFLEX",
            "BLNE23AU",
            "SSP21",
            "F120",
            "7500",
            "TTOD",
            "NVG0",
            "NEE27",
            "F10I",
            "NAST11P",
            "9770",
            "NEE28",
            "BLNE0AU",
            "NVGC2",
            "201",
            "PFIT",
            "BLNE2AU",
            "T200",
            "NFIT",
            "TASX1I",
            "ZGEN",
            "303",
            "1999",
            "XGENR",
            "9700",
            "FTOD9",
            "TTOU",
            "BLNE12AU",
            "304",
            "GENR13",
            "9850",
            "TLVS1R",
            "NEE11P",
            "RTCSOPH",
            "8900",
            "015",
            "016",
            "090",
            "TAS93",
            "RTC65A_7_00",
            "RTC65A_7_30",
            "RTC65A_8_00",
            "RTC12B",
            "RTC12C",
            "RTC12D",
            "RTC12E",
            "RTC12F",
            "3900",
            "6850",
            "BLNT3AU",
            "9600",
            "9510",
            "9530",
            "9540",
            "9560",
            "9580",
            "N99",
            "BLNP1AO",
            "RTC71",
            "UWLSLED",
            "UWLMLED",
            "UWLSCON",
            "UWLMCON",
            "UWLLCON",
            "RTC91",
            "ACS2AMAL",
            "ACS2AMIL",
            "ACSEOOMA",
            "ACSEOOMAL",
            "ACSEOOMI",
            "ACSEOOMIL",
            "ACSGEOMA",
            "ACSGEOMAL",
            "ACSGEOMI",
            "ACSGEOMIL",
            "ACSLEDMA",
            "ACSLEDMI",
            "PL2",
            "C2U",
            "BLNP3AO"
          ],
          "type": "string",
          "x-spec-enum-id": "986ed5838d1b6147",
          "description": "<p>Network Tariff Code (NTC) which will override the default if supplied for an active register. Will raise an error if the code has not been defined in Kraken.</p>",
          "x-enum-descriptions": {
            "EA011": "EA011",
            "EA025": "EA025",
            "EA025_26": "EA025_26",
            "EA025_LEGACY": "EA025_LEGACY",
            "EA115": "EA115",
            "EA316": "EA316",
            "EA051": "EA051",
            "EA256": "EA256",
            "EA225": "EA225",
            "EA225_26": "EA225_26",
            "EA025DTOU": "EA025DTOU",
            "NAST12": "NAST12",
            "CGTOU": "CGTOU",
            "SBTOU": "SBTOU",
            "N71_LEGACY": "N71_LEGACY",
            "N71": "N71",
            "N71_26": "N71_26",
            "N84": "N84",
            "N84_26": "N84_26",
            "N91": "N91",
            "N95": "N95",
            "6900": "6900",
            "6950": "6950",
            "6970": "6970",
            "8920": "8920",
            "8950": "8950",
            "8970": "8970",
            "3800": "3800",
            "6800": "6800",
            "8800": "8800",
            "RTC22B": "RTC22B",
            "RTC22C": "RTC22C",
            "RTC22D": "RTC22D",
            "RTC22E": "RTC22E",
            "RTC24C": "RTC24C",
            "RTC52D": "RTC52D",
            "RTC52E": "RTC52E",
            "RTC52F": "RTC52F",
            "RTC52G": "RTC52G",
            "RTC49": "RTC49",
            "RTC12A": "RTC12A",
            "RTC21": "RTC21",
            "RTC20L": "RTC20L",
            "RTC22A": "RTC22A",
            "RTC22L": "RTC22L",
            "RTC37": "RTC37",
            "RTC47": "RTC47",
            "RTC48": "RTC48",
            "RTC50": "RTC50",
            "RTC62": "RTC62",
            "RTC65": "RTC65",
            "RTC66": "RTC66",
            "RTC14C": "RTC14C",
            "RTC62A": "RTC62A",
            "BLNT3AL": "BLNT3AL",
            "BLNT2AL": "BLNT2AL",
            "BLND1AR": "BLND1AR",
            "BLNRSS2": "BLNRSS2",
            "BLNBSS1": "BLNBSS1",
            "BLNT2AU": "BLNT2AU",
            "BLND1SR": "BLND1SR",
            "BLNT3AL_QLD": "BLNT3AL_QLD",
            "BLNT2AL_QLD": "BLNT2AL_QLD",
            "BLNT3AL_12B": "BLNT3AL_12B",
            "BLNT3AL_12C": "BLNT3AL_12C",
            "BLNT3AL_12D": "BLNT3AL_12D",
            "BLNRSS2_12E": "BLNRSS2_12E",
            "BLNT2AL_22B": "BLNT2AL_22B",
            "BLNT2AL_22C": "BLNT2AL_22C",
            "BLNT2AL_22D": "BLNT2AL_22D",
            "BLNBSS1_22E": "BLNBSS1_22E",
            "RTOUCL_26": "RTOUCL_26",
            "RTOU": "RTOU",
            "RTOU_JULY2025": "RTOU_JULY2025",
            "RTOUMC": "RTOUMC",
            "RTOUPLUS": "RTOUPLUS",
            "RTOUR": "RTOUR",
            "RAD": "RAD",
            "RD": "RD",
            "RPRO": "RPRO",
            "QB2R": "QB2R",
            "NAST11": "NAST11",
            "NAST13": "NAST13",
            "NAST14": "NAST14",
            "NAST15": "NAST15",
            "NASN11": "NASN11",
            "NASS11": "NASS11",
            "NASS11S": "NASS11S",
            "NEE24": "NEE24",
            "NSP20": "NSP20",
            "NEE20": "NEE20",
            "NEE21": "NEE21",
            "C2R": "C2R",
            "C2G5": "C2G5",
            "CRSTOU": "CRSTOU",
            "CRTOU": "CRTOU",
            "A10I": "A10I",
            "A120": "A120",
            "A130": "A130",
            "A210": "A210",
            "D2": "D2",
            "ND2": "ND2",
            "PRSTOU": "PRSTOU",
            "PRTOU": "PRTOU",
            "NDTOU": "NDTOU",
            "LVM2R": "LVM2R",
            "LVS2R": "LVS2R",
            "UMBO": "UMBO",
            "URSTOU": "URSTOU",
            "URTOU": "URTOU",
            "LVTOU": "LVTOU",
            "027": "027",
            "028": "028",
            "NEE20TOU5": "NEE20TOU5",
            "NEE21TOU5": "NEE21TOU5",
            "C2RTOU5": "C2RTOU5",
            "C2G5TOU5": "C2G5TOU5",
            "A10ITOU5": "A10ITOU5",
            "A210TOU5": "A210TOU5",
            "D2TOU5": "D2TOU5",
            "ND2TOU5": "ND2TOU5",
            "LVS2RTOU5": "LVS2RTOU5",
            "LVM2RDTOU5": "LVM2RDTOU5",
            "NDM": "NDM",
            "EV_AUDI": "EV_AUDI",
            "NDMO": "NDMO",
            "A23N": "A23N",
            "CMG021": "CMG021",
            "EA301": "EA301",
            "EA302": "EA302",
            "EA302_26": "EA302_26",
            "EA305": "EA305",
            "EA310": "EA310",
            "RTC14": "RTC14",
            "RTC24": "RTC24",
            "BLND1AB": "BLND1AB",
            "A230": "A230",
            "A270": "A270",
            "A300": "A300",
            "C2DL": "C2DL",
            "C2DLB": "C2DLB",
            "CLLV": "CLLV",
            "CLLVB": "CLLVB",
            "DH": "DH",
            "HV": "HV",
            "LLV": "LLV",
            "NASN21": "NASN21",
            "NASN2P": "NASN2P",
            "NASN2S": "NASN2S",
            "NSP75": "NSP75",
            "CMGB": "CMGB",
            "CMG": "CMG",
            "RTC44_KVA": "RTC44_KVA",
            "RTC45_KVA": "RTC45_KVA",
            "RTC46_KVA": "RTC46_KVA",
            "RTC50B_KW": "RTC50B_KW",
            "RTC50B_KVA": "RTC50B_KVA",
            "RTC50C_KW": "RTC50C_KW",
            "RTC50C_KVA": "RTC50C_KVA",
            "N92": "N92",
            "N93": "N93",
            "NSW_CUSTOM": "NSW_CUSTOM",
            "ELTOUDT1": "ELTOUDT1",
            "BAT_SAPNI": "BAT_SAPNI",
            "BAT_AGRIDI": "BAT_AGRIDI",
            "BAT_ENDI": "BAT_ENDI",
            "BAT_ESSNI": "BAT_ESSNI",
            "BAT_ANETI": "BAT_ANETI",
            "BAT_CITII": "BAT_CITII",
            "BAT_JEMNI": "BAT_JEMNI",
            "BAT_POWCI": "BAT_POWCI",
            "BAT_UNTDI": "BAT_UNTDI",
            "BAT_ENRXI": "BAT_ENRXI",
            "BUS_AHRS_AUSGRI": "BUS_AHRS_AUSGRI",
            "BUS_DAY_AUSGRI": "BUS_DAY_AUSGRI",
            "BUS_MORN_AUSGRI": "BUS_MORN_AUSGRI",
            "BUS_AHRS_ENDEAV": "BUS_AHRS_ENDEAV",
            "BUS_DAY_ENDEAV": "BUS_DAY_ENDEAV",
            "BUS_MORN_ENDEAV": "BUS_MORN_ENDEAV",
            "BUS_AHRS_ESSENT": "BUS_AHRS_ESSENT",
            "BUS_DAY_ESSENT": "BUS_DAY_ESSENT",
            "BUS_MORN_ESSENT": "BUS_MORN_ESSENT",
            "BUS_AHRS_ENERGX": "BUS_AHRS_ENERGX",
            "BUS_DAY_ENERGX": "BUS_DAY_ENERGX",
            "BUS_MORN_ENERGX": "BUS_MORN_ENERGX",
            "BUS_AHRS_SAPN": "BUS_AHRS_SAPN",
            "BUS_DAY_SAPN": "BUS_DAY_SAPN",
            "BUS_MORN_SAPN": "BUS_MORN_SAPN",
            "BUS_AHRS_AUSNET": "BUS_AHRS_AUSNET",
            "BUS_DAY_AUSNET": "BUS_DAY_AUSNET",
            "BUS_MORN_AUSNET": "BUS_MORN_AUSNET",
            "BUS_AHRS_CITIPR": "BUS_AHRS_CITIPR",
            "BUS_DAY_CITIPR": "BUS_DAY_CITIPR",
            "BUS_MORN_CITIPR": "BUS_MORN_CITIPR",
            "BUS_AHRS_JEMENA": "BUS_AHRS_JEMENA",
            "BUS_DAY_JEMENA": "BUS_DAY_JEMENA",
            "BUS_MORN_JEMENA": "BUS_MORN_JEMENA",
            "BUS_AHRS_POWCOR": "BUS_AHRS_POWCOR",
            "BUS_DAY_POWCOR": "BUS_DAY_POWCOR",
            "BUS_MORN_POWCOR": "BUS_MORN_POWCOR",
            "BUS_AHRS_UNITED": "BUS_AHRS_UNITED",
            "BUS_DAY_UNITED": "BUS_DAY_UNITED",
            "BUS_MORN_UNITED": "BUS_MORN_UNITED",
            "BUS_AHRS_EVOENR": "BUS_AHRS_EVOENR",
            "BUS_DAY_EVOENR": "BUS_DAY_EVOENR",
            "BUS_MORN_EVOENR": "BUS_MORN_EVOENR",
            "WEEKENDSHIFT_AUSGRI": "WEEKENDSHIFT_AUSGRI",
            "WEEKENDSHIFT_ENDEAV": "WEEKENDSHIFT_ENDEAV",
            "WEEKENDSHIFT_ESSENT": "WEEKENDSHIFT_ESSENT",
            "WEEKENDSHIFT_ENERGX": "WEEKENDSHIFT_ENERGX",
            "WEEKENDSHIFT_SAPN": "WEEKENDSHIFT_SAPN",
            "WEEKENDSHIFT_AUSNET": "WEEKENDSHIFT_AUSNET",
            "WEEKENDSHIFT_CITIPR": "WEEKENDSHIFT_CITIPR",
            "WEEKENDSHIFT_JEMENA": "WEEKENDSHIFT_JEMENA",
            "WEEKENDSHIFT_POWCOR": "WEEKENDSHIFT_POWCOR",
            "WEEKENDSHIFT_UNITED": "WEEKENDSHIFT_UNITED",
            "WEEKENDSHIFT_EVOENR": "WEEKENDSHIFT_EVOENR",
            "WEEKDAYSHIFT_AUSGRI": "WEEKDAYSHIFT_AUSGRI",
            "WEEKDAYSHIFT_ENDEAV": "WEEKDAYSHIFT_ENDEAV",
            "WEEKDAYSHIFT_ESSENT": "WEEKDAYSHIFT_ESSENT",
            "WEEKDAYSHIFT_ENERGX": "WEEKDAYSHIFT_ENERGX",
            "WEEKDAYSHIFT_SAPN": "WEEKDAYSHIFT_SAPN",
            "WEEKDAYSHIFT_AUSNET": "WEEKDAYSHIFT_AUSNET",
            "WEEKDAYSHIFT_CITIPR": "WEEKDAYSHIFT_CITIPR",
            "WEEKDAYSHIFT_JEMENA": "WEEKDAYSHIFT_JEMENA",
            "WEEKDAYSHIFT_POWCOR": "WEEKDAYSHIFT_POWCOR",
            "WEEKDAYSHIFT_UNITED": "WEEKDAYSHIFT_UNITED",
            "WEEKDAYSHIFT_EVOENR": "WEEKDAYSHIFT_EVOENR",
            "NIGHTSHIFT_AUSGRI": "NIGHTSHIFT_AUSGRI",
            "NIGHTSHIFT_ENDEAV": "NIGHTSHIFT_ENDEAV",
            "NIGHTSHIFT_ESSENT": "NIGHTSHIFT_ESSENT",
            "NIGHTSHIFT_ENERGX": "NIGHTSHIFT_ENERGX",
            "NIGHTSHIFT_SAPN": "NIGHTSHIFT_SAPN",
            "NIGHTSHIFT_AUSNET": "NIGHTSHIFT_AUSNET",
            "NIGHTSHIFT_CITIPR": "NIGHTSHIFT_CITIPR",
            "NIGHTSHIFT_JEMENA": "NIGHTSHIFT_JEMENA",
            "NIGHTSHIFT_POWCOR": "NIGHTSHIFT_POWCOR",
            "NIGHTSHIFT_UNITED": "NIGHTSHIFT_UNITED",
            "NIGHTSHIFT_EVOENR": "NIGHTSHIFT_EVOENR",
            "BAT_JEMNE": "BAT_JEMNE",
            "BAT_ANETE": "BAT_ANETE",
            "BAT_AGRIDE": "BAT_AGRIDE",
            "6-8_BATFIT": "6-8_BATFIT",
            "BAT_ESSNE": "BAT_ESSNE",
            "BAT_UNTDE": "BAT_UNTDE",
            "BAT_ENDE": "BAT_ENDE",
            "BAT_ENRXE": "BAT_ENRXE",
            "N61": "N61",
            "BEE_SFIT": "BEE_SFIT",
            "BAT_CITIE": "BAT_CITIE",
            "BAT_SAPNE": "BAT_SAPNE",
            "BAT_POWCE": "BAT_POWCE",
            "EA029": "EA029",
            "EA010": "EA010",
            "EA050": "EA050",
            "EA116": "EA116",
            "N72": "N72",
            "N73": "N73",
            "N90": "N90",
            "N70": "N70",
            "N705": "N705",
            "N706": "N706",
            "RTC11": "RTC11",
            "RTCNA": "RTCNA",
            "RTC20": "RTC20",
            "RTC43": "RTC43",
            "RTC66A": "RTC66A",
            "BLNN2AU": "BLNN2AU",
            "BLNN1AU": "BLNN1AU",
            "3750": "3750",
            "3770": "3770",
            "3970": "3970",
            "8400": "8400",
            "3850": "3850",
            "3870": "3870",
            "3950": "3950",
            "6000": "6000",
            "8420": "8420",
            "8450": "8450",
            "8470": "8470",
            "8500": "8500",
            "QBSR": "QBSR",
            "QRSR": "QRSR",
            "QRSRI": "QRSRI",
            "MRSR": "MRSR",
            "MRSRI": "MRSRI",
            "MRSRII": "MRSRII",
            "RSR": "RSR",
            "NEE11": "NEE11",
            "NEE12": "NEE12",
            "NEE13": "NEE13",
            "NEE14": "NEE14",
            "NEE15": "NEE15",
            "NEE19": "NEE19",
            "C1R": "C1R",
            "C1G": "C1G",
            "C1RB": "C1RB",
            "A100": "A100",
            "A200": "A200",
            "D1": "D1",
            "ND1": "ND1",
            "LVS1R": "LVS1R",
            "LVM1R": "LVM1R",
            "010": "010",
            "011": "011",
            "020": "020",
            "021": "021",
            "023": "023",
            "025": "025",
            "026": "026",
            "030": "030",
            "031": "031",
            "040": "040",
            "106": "106",
            "EBIBT1": "EBIBT1",
            "ERIBT1": "ERIBT1",
            "TAS31": "TAS31",
            "TAS41": "TAS41",
            "ERTOUEXT1": "ERTOUEXT1",
            "EA111": "EA111",
            "A10D": "A10D",
            "F10D": "F10D",
            "T10D": "T10D",
            "CR": "CR",
            "CRB": "CRB",
            "DD": "DD",
            "FRESKW1R": "FRESKW1R",
            "RESKW1R": "RESKW1R",
            "RESKWTOU": "RESKWTOU",
            "TRESKW1R": "TRESKW1R",
            "A20D": "A20D",
            "T20D": "T20D",
            "F20D": "F20D",
            "CG": "CG",
            "CGB": "CGB",
            "NDD": "NDD",
            "FLVMKWTO": "FLVMKWTO",
            "LVMKWTOU": "LVMKWTOU",
            "TLVMKWTO": "TLVMKWTO",
            "FLVMKW1R": "FLVMKW1R",
            "LVMKW1R": "LVMKW1R",
            "UMBD": "UMBD",
            "8100": "8100",
            "8200": "8200",
            "8300": "8300",
            "7400": "7400",
            "MRD": "MRD",
            "RTC14A": "RTC14A",
            "RTC14B": "RTC14B",
            "RTC24A": "RTC24A",
            "RTC24B": "RTC24B",
            "RTC44_KW": "RTC44_KW",
            "RTC44A": "RTC44A",
            "RTC45_KW": "RTC45_KW",
            "RTC46_KW": "RTC46_KW",
            "RTC50A": "RTC50A",
            "RTC51A": "RTC51A",
            "RTC51B": "RTC51B",
            "RTC51C": "RTC51C",
            "RTC51D": "RTC51D",
            "RTC52A": "RTC52A",
            "RTC52B": "RTC52B",
            "RTC52C": "RTC52C",
            "RTC53": "RTC53",
            "RTCICC": "RTCICC",
            "RTC41": "RTC41",
            "7100": "7100",
            "3650": "3650",
            "NASN12": "NASN12",
            "EA030": "EA030",
            "EA250": "EA250",
            "N50": "N50",
            "NC01": "NC01",
            "BLNC1AU": "BLNC1AU",
            "BLNC1AR": "BLNC1AR",
            "BLNC1CO": "BLNC1CO",
            "9000": "9000",
            "9020": "9020",
            "9050": "9050",
            "9070": "9070",
            "RTC31": "RTC31",
            "RTC33": "RTC33",
            "RTCEV": "RTCEV",
            "RTC34": "RTC34",
            "RTC60A": "RTC60A",
            "EVNBT1": "EVNBT1",
            "EVNBT2": "EVNBT2",
            "EVNBT3": "EVNBT3",
            "EVNCT1": "EVNCT1",
            "EVNCT2": "EVNCT2",
            "EVNCT3": "EVNCT3",
            "EVNT1": "EVNT1",
            "EVNT2": "EVNT2",
            "EVNT3": "EVNT3",
            "EVNXT1": "EVNXT1",
            "EVNXT2": "EVNXT2",
            "EVNXT3": "EVNXT3",
            "QOPCL": "QOPCL",
            "QOPCLI": "QOPCLI",
            "MOPCL": "MOPCL",
            "MOPCLI": "MOPCLI",
            "OPCL": "OPCL",
            "OPCLI": "OPCLI",
            "OPCLTR": "OPCLTR",
            "CL": "CL",
            "CLMC": "CLMC",
            "CLOP": "CLOP",
            "RTOUCL": "RTOUCL",
            "RTOUCLMC": "RTOUCLMC",
            "NEE13CL": "NEE13CL",
            "NEE30": "NEE30",
            "NEE31": "NEE31",
            "NEE32": "NEE32",
            "CDS": "CDS",
            "A180": "A180",
            "DD1": "DD1",
            "060": "060",
            "LVDED": "LVDED",
            "TAS63": "TAS63",
            "5700": "5700",
            "EA040": "EA040",
            "EA260": "EA260",
            "N54": "N54",
            "NC02": "NC02",
            "NC04": "NC04",
            "N62": "N62",
            "BLNC2AU": "BLNC2AU",
            "BLNC3NU": "BLNC3NU",
            "9100": "9100",
            "9120": "9120",
            "9150": "9150",
            "9170": "9170",
            "070": "070",
            "TAS61": "TAS61",
            "EVCT1": "EVCT1",
            "RTC60B": "RTC60B",
            "EVCBT1": "EVCBT1",
            "EVCBT2": "EVCBT2",
            "EVCBT3": "EVCBT3",
            "EVCCT1": "EVCCT1",
            "EVCCT2": "EVCCT2",
            "EVCCT3": "EVCCT3",
            "EVCT2": "EVCT2",
            "EVCT3": "EVCT3",
            "EVCXT1": "EVCXT1",
            "EVCXT2": "EVCXT2",
            "EVCXT3": "EVCXT3",
            "BLNE4AU": "BLNE4AU",
            "GEN2028S": "GEN2028S",
            "RTCICC_EXPORT": "RTCICC_EXPORT",
            "ZGENR": "ZGENR",
            "F210": "F210",
            "GEN2028": "GEN2028",
            "FURTOU": "FURTOU",
            "NAST11S": "NAST11S",
            "GGENR": "GGENR",
            "T270": "T270",
            "202": "202",
            "T230": "T230",
            "TLVM1R": "TLVM1R",
            "NEE12S": "NEE12S",
            "TFIT": "TFIT",
            "BLNE14AU": "BLNE14AU",
            "F10X": "F10X",
            "9900": "9900",
            "BLNBEX1": "BLNBEX1",
            "BLNE26AU": "BLNE26AU",
            "BLNREX2": "BLNREX2",
            "GENR2028": "GENR2028",
            "GEN2016": "GEN2016",
            "T210": "T210",
            "FLVS1R": "FLVS1R",
            "RTCSSN": "RTCSSN",
            "RTCSS": "RTCSS",
            "SUN2B": "SUN2B",
            "NASN11P": "NASN11P",
            "T250": "T250",
            "SUN21": "SUN21",
            "9950": "9950",
            "ZGENRI": "ZGENRI",
            "F100": "F100",
            "F200": "F200",
            "RTCSSX": "RTCSSX",
            "9870": "9870",
            "NASN11S": "NASN11S",
            "TLVKWTOUH": "TLVKWTOUH",
            "FA270": "FA270",
            "7570": "7570",
            "TTODFLEX": "TTODFLEX",
            "FLVM1R": "FLVM1R",
            "BLNE24AU": "BLNE24AU",
            "RTCNAX": "RTCNAX",
            "NSP23": "NSP23",
            "GENR2028S": "GENR2028S",
            "BLNE22AU": "BLNE22AU",
            "9820": "9820",
            "NEE23": "NEE23",
            "NOTAPPLIC": "NOTAPPLIC",
            "NEE26": "NEE26",
            "9720": "9720",
            "SSP23": "SSP23",
            "NESG": "NESG",
            "FLVKWTOUH": "FLVKWTOUH",
            "NEE11S": "NEE11S",
            "7520": "7520",
            "302": "302",
            "BLNE21AU": "BLNE21AU",
            "SSP2B": "SSP2B",
            "RTCSSA": "RTCSSA",
            "NVG1": "NVG1",
            "FTOD": "FTOD",
            "NESN": "NESN",
            "FTOU": "FTOU",
            "T10I": "T10I",
            "GENR2028I": "GENR2028I",
            "7550": "7550",
            "9800": "9800",
            "GENR2016": "GENR2016",
            "9920": "9920",
            "T10X": "T10X",
            "T100": "T100",
            "301": "301",
            "9750": "9750",
            "9970": "9970",
            "GENR": "GENR",
            "T300": "T300",
            "XGEN": "XGEN",
            "SUN2T": "SUN2T",
            "TTOD9": "TTOD9",
            "SUN23": "SUN23",
            "FTODFLEX": "FTODFLEX",
            "BLNE23AU": "BLNE23AU",
            "SSP21": "SSP21",
            "F120": "F120",
            "7500": "7500",
            "TTOD": "TTOD",
            "NVG0": "NVG0",
            "NEE27": "NEE27",
            "F10I": "F10I",
            "NAST11P": "NAST11P",
            "9770": "9770",
            "NEE28": "NEE28",
            "BLNE0AU": "BLNE0AU",
            "NVGC2": "NVGC2",
            "201": "201",
            "PFIT": "PFIT",
            "BLNE2AU": "BLNE2AU",
            "T200": "T200",
            "NFIT": "NFIT",
            "TASX1I": "TASX1I",
            "ZGEN": "ZGEN",
            "303": "303",
            "1999": "1999",
            "XGENR": "XGENR",
            "9700": "9700",
            "FTOD9": "FTOD9",
            "TTOU": "TTOU",
            "BLNE12AU": "BLNE12AU",
            "304": "304",
            "GENR13": "GENR13",
            "9850": "9850",
            "TLVS1R": "TLVS1R",
            "NEE11P": "NEE11P",
            "RTCSOPH": "RTCSOPH",
            "8900": "8900",
            "015": "015",
            "016": "016",
            "090": "090",
            "TAS93": "TAS93",
            "RTC65A_7_00": "RTC65A_7_00",
            "RTC65A_7_30": "RTC65A_7_30",
            "RTC65A_8_00": "RTC65A_8_00",
            "RTC12B": "RTC12B",
            "RTC12C": "RTC12C",
            "RTC12D": "RTC12D",
            "RTC12E": "RTC12E",
            "RTC12F": "RTC12F",
            "3900": "3900",
            "6850": "6850",
            "BLNT3AU": "BLNT3AU",
            "9600": "9600",
            "9510": "9510",
            "9530": "9530",
            "9540": "9540",
            "9560": "9560",
            "9580": "9580",
            "N99": "N99",
            "BLNP1AO": "BLNP1AO",
            "RTC71": "RTC71",
            "UWLSLED": "UWLSLED",
            "UWLMLED": "UWLMLED",
            "UWLSCON": "UWLSCON",
            "UWLMCON": "UWLMCON",
            "UWLLCON": "UWLLCON",
            "RTC91": "RTC91",
            "ACS2AMAL": "ACS2AMAL",
            "ACS2AMIL": "ACS2AMIL",
            "ACSEOOMA": "ACSEOOMA",
            "ACSEOOMAL": "ACSEOOMAL",
            "ACSEOOMI": "ACSEOOMI",
            "ACSEOOMIL": "ACSEOOMIL",
            "ACSGEOMA": "ACSGEOMA",
            "ACSGEOMAL": "ACSGEOMAL",
            "ACSGEOMI": "ACSGEOMI",
            "ACSGEOMIL": "ACSGEOMIL",
            "ACSLEDMA": "ACSLEDMA",
            "ACSLEDMI": "ACSLEDMI",
            "PL2": "PL2",
            "C2U": "C2U",
            "BLNP3AO": "BLNP3AO"
          }
        },
        "effective_ntc_from": {
          "type": "string",
          "format": "date-time",
          "description": "<p>REQUIRED if <code>effective_ntc</code> is set. If <code>effective_ntc</code> is supplied: when the override starts from. Will be ignored if a value is passed but <code>effective_ntc</code> is not set.</p>"
        },
        "effective_ntc_to": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time",
          "description": "<p>If <code>effective_ntc</code> is supplied: when the override ends. Will be ignored if a value is passed but <code>effective_ntc</code> is not set.</p>"
        },
        "has_readings": {
          "type": "boolean",
          "default": true,
          "description": "<p>Indicates whether to expect interval readings to be present for this register. Ignored for registers on accumulation meters, defaults to <code>true</code> if not present.</p>"
        },
        "last_billed_to_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Date up to which consumption has been billed to.</p>"
        },
        "multiplier": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,8}(?:\\.\\d{0,5})?$",
          "description": "<p>Multiply the register value.</p>"
        },
        "network_tariff_code": {
          "type": "string",
          "description": "<p>The network tariff code for this register. This field is only used when the meter’s market_type is <code>OFF_MARKET</code>.</p>",
          "x-validators": [
            {
              "name": "Validate network tariff code",
              "description": "Validates that the register's network tariff code remapping exists for the given <code>network_tariff_code</code> value.",
              "possible_errors": [
                "invalid_network_tariff_code"
              ]
            }
          ]
        },
        "register_id": {
          "type": "string",
          "description": "<p>The ID of the register.</p>",
          "maxLength": 32
        },
        "unit_of_measure": {
          "enum": [
            "mwh",
            "kwh",
            "wh",
            "mvarh",
            "kvarh",
            "varh",
            "mvar",
            "kvar",
            "var",
            "mw",
            "kw",
            "w",
            "mvah",
            "kvah",
            "vah",
            "mva",
            "kva",
            "va",
            "kv",
            "v",
            "ka",
            "a",
            "pf"
          ],
          "type": "string",
          "x-spec-enum-id": "b6dc02a4fddbb984",
          "description": "<p>The unit of measure for this register. This field is only used when the meter’s market_type is <code>OFF_MARKET</code>.</p>",
          "x-enum-descriptions": {
            "mwh": "mwh",
            "kwh": "kwh",
            "wh": "wh",
            "mvarh": "mvarh",
            "kvarh": "kvarh",
            "varh": "varh",
            "mvar": "mvar",
            "kvar": "kvar",
            "var": "var",
            "mw": "mw",
            "kw": "kw",
            "w": "w",
            "mvah": "mvah",
            "kvah": "kvah",
            "vah": "vah",
            "mva": "mva",
            "kva": "kva",
            "va": "va",
            "kv": "kv",
            "v": "v",
            "ka": "ka",
            "a": "a",
            "pf": "pf"
          }
        }
      },
      "required": [
        "register_id"
      ],
      "x-validators": [
        {
          "name": "Validate <code>effective_ntc_from</code> is required when <code>effective_ntc</code> is provided",
          "description": "Validates that <code>effective_ntc_from</code> is required when <code>effective_ntc</code> is provided.",
          "possible_errors": [
            "required_effective_ntc_from"
          ]
        }
      ]
    },
    "ElectricitySupplyDetail": {
      "type": "object",
      "properties": {
        "agreed_capacity_kva": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,8}(?:\\.\\d{0,4})?$",
          "description": "<p>Agreed capacity (kVA).</p>"
        },
        "asset_tariff_category": {
          "enum": [
            "STANDARD_ASSET_CUSTOMER_LARGE",
            "STANDARD_ASSET_CUSTOMER_LARGE_OVER_750MWH",
            "CONNECTION_ASSET_CUSTOMER",
            "INDIVIDUALLY_CALCULATED_CUSTOMER"
          ],
          "type": "string",
          "x-spec-enum-id": "5837755de383688a",
          "description": "<p>\n    The asset tariff category of the supply point.\n    None is considered equivalent to 'Standard Asset Customer.\n</p>",
          "x-enum-descriptions": {
            "STANDARD_ASSET_CUSTOMER_LARGE": "Standard Asset Customer Large",
            "STANDARD_ASSET_CUSTOMER_LARGE_OVER_750MWH": "Standard Asset Customer Large (>750MWH)",
            "CONNECTION_ASSET_CUSTOMER": "Connection Asset Customer",
            "INDIVIDUALLY_CALCULATED_CUSTOMER": "Individually Calculated Customer"
          }
        },
        "end_at": {
          "type": "string",
          "format": "date",
          "description": "<p>End date of the supply detail.</p>"
        },
        "equipment_capacity_kw": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,8}(?:\\.\\d{0,4})?$",
          "description": "<p> Equipment capacity (kW).</p>"
        },
        "estimated_annual_consumption_kwh": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,8}(?:\\.\\d{0,4})?$",
          "description": "<p>Estimated annual consumption (kWh).</p>"
        },
        "number_of_connections": {
          "type": "integer",
          "description": "<p>Numeber of connections.</p>"
        },
        "start_at": {
          "type": "string",
          "format": "date",
          "description": "<p>Start date of the supply detail.</p>"
        }
      },
      "required": [
        "start_at"
      ]
    },
    "EmbeddedElecDistributor": {
      "type": "object",
      "properties": {
        "from_date": {
          "type": "string",
          "format": "date-time",
          "description": "<p>The date the role was active from.</p>"
        },
        "lnsp_id": {
          "enum": [
            "ACTEWP",
            "AURORAP",
            "CITIPP",
            "CITIPWMP",
            "CNRGYP",
            "CPNETMDP",
            "DMSMP",
            "EASTERN",
            "ENERGEXP",
            "ENERGYAP",
            "ERGONETP",
            "INTEGP",
            "JENMDP",
            "POWCP",
            "POWERCMP",
            "POWERMDP",
            "SOLARISP",
            "SOLARMP",
            "SPANMDP",
            "UEDMDP",
            "UMPLP",
            "UNITED",
            "UNITEDDP",
            "UNITEDMP",
            "WPNTWK"
          ],
          "type": "string",
          "x-spec-enum-id": "70462bf9b52e31d7",
          "description": "<p>LNSP id.</p>",
          "x-enum-descriptions": {
            "ACTEWP": "Evoenergy (ACTEWP)",
            "AURORAP": "Aurora Energy (AURORAP)",
            "CITIPP": "CitiPower (CITIPP)",
            "CITIPWMP": "CitiPower (CITIPWMP)",
            "CNRGYP": "Essential Energy (CNRGYP)",
            "CPNETMDP": "CitiPower (CPNETMDP)",
            "DMSMP": "AusNet Services (DMSMP)",
            "EASTERN": "AusNet Services (EASTERN)",
            "ENERGEXP": "Energex (ENERGEXP)",
            "ENERGYAP": "Ausgrid (ENERGYAP)",
            "ERGONETP": "Ergon Energy (ERGONETP)",
            "INTEGP": "Endeavour Energy (INTEGP)",
            "JENMDP": "Jemena (JENMDP)",
            "POWCP": "Powercor (POWCP)",
            "POWERCMP": "Powercor (POWERCMP)",
            "POWERMDP": "Powercor (POWERMDP)",
            "SOLARISP": "Jemena (SOLARISP)",
            "SOLARMP": "Jemena (SOLARMP)",
            "SPANMDP": "AusNet Services (SPANMDP)",
            "UEDMDP": "United Energy (UEDMDP)",
            "UMPLP": "SA Power Networks (UMPLP)",
            "UNITED": "United Energy (UNITED)",
            "UNITEDDP": "United Energy (UNITEDDP)",
            "UNITEDMP": "United Energy (UNITEDMP)",
            "WPNTWK": "WPNTWK (WPNTWK)"
          }
        },
        "to_date": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time",
          "description": "<p>The date the role was active to.</p>"
        }
      },
      "required": [
        "from_date",
        "lnsp_id"
      ]
    },
    "EmbeddedElecHistoricalReading": {
      "type": "object",
      "properties": {
        "billed": {
          "type": "boolean",
          "description": "<p>Whether the reading has been billed. This must be set to <code>false</code> if this historical reading happened after the latest transfer_reading.</p>"
        },
        "quality_method": {
          "enum": [
            "11",
            "12",
            "13",
            "14",
            "15",
            "16",
            "17",
            "18",
            "19",
            "20",
            "51",
            "52",
            "53",
            "54",
            "55",
            "56",
            "57",
            "58",
            "61",
            "62",
            "63",
            "64",
            "65",
            "66",
            "67",
            "68",
            "71",
            "72",
            "73",
            "74",
            "75",
            "KI",
            "KP",
            "KE",
            "KA"
          ],
          "type": "string",
          "x-spec-enum-id": "1b205d63b24d236e",
          "description": "<p>Quality method code.</p>",
          "x-enum-descriptions": {
            "11": "11",
            "12": "12",
            "13": "13",
            "14": "14",
            "15": "15",
            "16": "16",
            "17": "17",
            "18": "18",
            "19": "19",
            "20": "20",
            "51": "51",
            "52": "52",
            "53": "53",
            "54": "54",
            "55": "55",
            "56": "56",
            "57": "57",
            "58": "58",
            "61": "61",
            "62": "62",
            "63": "63",
            "64": "64",
            "65": "65",
            "66": "66",
            "67": "67",
            "68": "68",
            "71": "71",
            "72": "72",
            "73": "73",
            "74": "74",
            "75": "75",
            "KI": "KI",
            "KP": "KP",
            "KE": "KE",
            "KA": "KA"
          }
        },
        "reading_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Date of the reading.</p>"
        },
        "reading_quality": {
          "enum": [
            "A",
            "E",
            "F",
            "N",
            "S",
            "V"
          ],
          "type": "string",
          "x-spec-enum-id": "245b48f2f998c60e",
          "description": "<p>Reading quality code.</p>",
          "x-enum-descriptions": {
            "A": "A",
            "E": "E",
            "F": "F",
            "N": "N",
            "S": "S",
            "V": "V"
          }
        },
        "reading_value": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,10}(?:\\.\\d{0,5})?$",
          "description": "<p>Reading value.</p>"
        },
        "register_id": {
          "type": "string",
          "description": "<p>The ID of the register.</p>",
          "maxLength": 10
        }
      },
      "required": [
        "billed",
        "reading_date",
        "reading_quality",
        "reading_value",
        "register_id"
      ]
    },
    "EmbeddedElecMeter": {
      "type": "object",
      "properties": {
        "active_from": {
          "type": "string",
          "format": "date-time",
          "description": "<p>Meter active from date and time.</p>"
        },
        "active_to": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time",
          "description": "<p>Meter active to date and time.</p>"
        },
        "location": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p>Meter location.</p>",
          "maxLength": 50
        },
        "manufacturer": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p>Meter manufacturer.</p>",
          "maxLength": 15
        },
        "meter_installation_type": {
          "enum": [
            "BASIC",
            "COMMS1",
            "COMMS2",
            "COMMS3",
            "COMMS4",
            "COMMS4A",
            "COMMS4C",
            "COMMS4D",
            "VICAMI",
            "MRIM",
            "MRAM"
          ],
          "type": "string",
          "x-spec-enum-id": "0b873560b91e97c3",
          "description": "<p>Meter installation type code.</p>",
          "x-enum-descriptions": {
            "BASIC": "Basic",
            "COMMS1": "Comms1",
            "COMMS2": "Comms2",
            "COMMS3": "Comms3",
            "COMMS4": "Comms4",
            "COMMS4A": "Comms4A",
            "COMMS4C": "Comms4C",
            "COMMS4D": "Comms4D",
            "VICAMI": "Vicami",
            "MRIM": "Mrim",
            "MRAM": "Mram"
          }
        },
        "meter_read_type": {
          "enum": [
            "ACCUMULATION",
            "INTERVAL"
          ],
          "type": "string",
          "x-spec-enum-id": "4518b1b0277e90b2",
          "default": "INTERVAL",
          "description": "<p>Meter read type. Defaults to <code>INTERVAL</code>.</p>",
          "x-enum-descriptions": {
            "ACCUMULATION": "Accumulation",
            "INTERVAL": "Interval"
          }
        },
        "meter_serial_number": {
          "type": "string",
          "description": "<p>Serial number of the meter.</p>",
          "maxLength": 12
        },
        "model": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p>Meter model.</p>",
          "maxLength": 12
        },
        "read_type_frequency": {
          "enum": [
            "1",
            "2",
            "3",
            "D",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "08d093cefde0239c",
          "description": "<p>Read type frequency code.</p>",
          "x-enum-descriptions": {
            "1": "Monthly",
            "2": "Bi Monthly",
            "3": "Quarterly",
            "D": "Daily Or Weekly",
            "None": "None"
          }
        },
        "read_type_method": {
          "enum": [
            "M",
            "R"
          ],
          "type": "string",
          "x-spec-enum-id": "e6430750b148a886",
          "description": "<p>Read type method code.</p>",
          "x-enum-descriptions": {
            "M": "Manual",
            "R": "Remote"
          }
        },
        "read_type_mode": {
          "enum": [
            "T",
            "W",
            "P",
            "I",
            "G",
            "V",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "b787b821aa603bc8",
          "description": "<p>Read type mode code.</p>",
          "x-enum-descriptions": {
            "T": "Telephone",
            "W": "Wireless",
            "P": "Powerline",
            "I": "Infra Red",
            "G": "Galvanic",
            "V": "Visual",
            "None": "None"
          }
        },
        "reading_history": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/EmbeddedElecHistoricalReading"
          },
          "description": "<p>List of historical readings, prior to the one(s) given under transfer_readings.</p>"
        },
        "registers": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/EmbeddedElecRegister"
          },
          "description": "<p>The registers associated to this meter.</p>",
          "minItems": 1
        },
        "status": {
          "enum": [
            "C",
            "R",
            "D"
          ],
          "type": "string",
          "x-spec-enum-id": "c09f7f55577756ca",
          "description": "<p>Status code.</p>",
          "x-enum-descriptions": {
            "C": "Current",
            "R": "Removed",
            "D": "Remotely Disconnected"
          }
        },
        "transfer_readings": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/EmbeddedElecTransferReading"
          },
          "description": "<p>\n    Only the last reading the account has been billed up to.</br>\n    If the account has never been billed, the SSD reading(s) must be on this list.</br>\n    It’s expected that a transfer reading will be given per register on an active accumulation meter.</br>\n    It’s expected that all transfer reading dates will match the last_billed_to_date.</br>\n</p>"
        }
      },
      "required": [
        "active_from",
        "meter_installation_type",
        "meter_serial_number",
        "read_type_method",
        "registers",
        "status"
      ],
      "x-validators": [
        {
          "name": "Validate transfer readings required for active basic meter",
          "description": "Validates that <code>transfer_readings</code> are required for active basic meter.",
          "possible_errors": [
            "required_transfer_readings"
          ]
        }
      ]
    },
    "EmbeddedElecMeterDataProvider": {
      "type": "object",
      "properties": {
        "from_date": {
          "type": "string",
          "format": "date-time",
          "description": "<p>The date the role was active from.</p>"
        },
        "mdp_id": {
          "enum": [
            "ACUMEMDP",
            "CHOICMDP"
          ],
          "type": "string",
          "x-spec-enum-id": "247302c6ac1aeb13",
          "description": "<p>Metering data provider id.</p>",
          "x-enum-descriptions": {
            "ACUMEMDP": "Acume Mdp",
            "CHOICMDP": "Choice Mdp"
          }
        },
        "to_date": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time",
          "description": "<p>The date the role was active to.</p>"
        }
      },
      "required": [
        "from_date",
        "mdp_id"
      ]
    },
    "EmbeddedElecMeterPoint": {
      "type": "object",
      "properties": {
        "supply_type": {
          "enum": [
            "ELECTRICITY",
            "GAS",
            "UNMETERED_GAS",
            "AUS_UNMETERED_ELECTRICITY",
            "WATER",
            "EMBEDDED_ELECTRICITY",
            "EMBEDDED_GAS",
            "SOLAR_PPA",
            "REGOS_EXPORT_CERTIFICATES",
            "ROCS_EXPORT_CERTIFICATES"
          ],
          "type": "string",
          "x-spec-enum-id": "3e8d62bdf7f06a08",
          "default": "EMBEDDED_ELECTRICITY",
          "description": "<p>Supply type of the supply point.</p>",
          "x-enum-descriptions": {
            "ELECTRICITY": "Electricity",
            "GAS": "Gas",
            "UNMETERED_GAS": "Unmetered Gas",
            "AUS_UNMETERED_ELECTRICITY": "Unmetered Electricity",
            "WATER": "Water",
            "EMBEDDED_ELECTRICITY": "Embedded Electricity",
            "EMBEDDED_GAS": "Embedded Gas",
            "SOLAR_PPA": "Solar PPA",
            "REGOS_EXPORT_CERTIFICATES": "REGOs Export Certificates",
            "ROCS_EXPORT_CERTIFICATES": "ROCs Export Certificates"
          }
        },
        "access_details": {
          "type": "string",
          "description": "<p>Access details for the meter point. No details indicates “Customer reports no access requirements”.</p>",
          "maxLength": 160
        },
        "address": {
          "allOf": [
            {
              "$ref": "#/$defs/CommonStructuredAddress"
            }
          ],
          "description": "<p>Structured address for this meter point.</p>"
        },
        "agreements": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/AusAgreement"
          },
          "description": "<p>List of agreements linked to the supply point.</p>",
          "x-validators": [
            {
              "name": "Validate product addon code and tariff code combination",
              "description": "aus:data-import--validation-product-addon-code-and-product-code-combination--help-text",
              "possible_errors": [
                "invalid_product_addon_code_and_product_code_combination"
              ]
            }
          ]
        },
        "customer_classification": {
          "enum": [
            "BUSINESS",
            "RESIDENTIAL"
          ],
          "type": "string",
          "x-spec-enum-id": "b37115db31874da5",
          "description": "<p>Customer classification code.</p>",
          "x-enum-descriptions": {
            "BUSINESS": "Business",
            "RESIDENTIAL": "Residential"
          }
        },
        "customer_threshold": {
          "enum": [
            "LOW",
            "MEDIUM",
            "HIGH"
          ],
          "type": "string",
          "x-spec-enum-id": "f6b091eeaa84bee3",
          "description": "<p>Customer threshold code.</p>",
          "x-enum-descriptions": {
            "LOW": "Low",
            "MEDIUM": "Medium",
            "HIGH": "High"
          }
        },
        "distribution_loss_factor_code": {
          "type": "string",
          "description": "<p>This is an alphanumeric code which refers to an entry in the CATS_DLF_CODES table.</p>",
          "maxLength": 4
        },
        "distributors": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/EmbeddedElecDistributor"
          },
          "description": "<p>List of distributors.</p>",
          "x-validators": [
            {
              "name": "Validate number of current ⁨distributer⁩",
              "description": "Validates that there must be exactly one current ⁨distributer⁩ provided.",
              "possible_errors": [
                "one_current_data"
              ]
            }
          ]
        },
        "dog_code": {
          "enum": [
            "Bluff",
            "Savage",
            "Tied",
            "Friendly",
            "Dog OK",
            "Dog Caution",
            "No Dog",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "d63e05b877b7aa4b",
          "description": "<p>Dog code.</p>",
          "x-enum-descriptions": {
            "Bluff": "Bluff",
            "Savage": "Savage",
            "Tied": "Tied",
            "Friendly": "Friendly",
            "Dog OK": "Dog Ok",
            "Dog Caution": "Dog Caution",
            "No Dog": "No Dog",
            "None": "None"
          }
        },
        "hazard_details": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 255
          },
          "description": "<p>Hazard details for the meter point. - These are custom hazards and each of them can’t be longer than 80 characters.</p>",
          "x-validators": [
            {
              "name": "Validate hazard details",
              "description": "Validates that <code>Customer Reports No Hazard</code> and <code>\"Not Known To Initiator</code> cannot be combined with other market specified hazards.",
              "possible_errors": [
                "no_hazard_cannot_combine_with_other_hazards",
                "not_known_cannot_combine_with_other_hazards"
              ]
            },
            {
              "name": "Validate hazard details",
              "description": "<p>Hazard details for the meterpoint.</br>\nNo supplied hazard details indicates “Not Known To Initiator”.</br>\nSpecifying a single details of “Not Known To Initiator” also indicates “Not Known To Initiator”.</br>\nIf the value is “Customer Reports No Hazard” or “Not Known To Initiator”, no other values may be provided.\nThe following are the market specified hazards:\n<ul>\n        <li>Customer Reports No Hazard</li>\n        <li>Dog</li>\n        <li>Electric Fence</li>\n        <li>Customer Caution</li>\n        <li>Electrical Safety Issue</li>\n        <li>Asbestos Fuse</li>\n        <li>Asbestos Board</li>\n        <li>Not Known To Initiator</li>\n</ul>\nOther values are the custom hazards and each of them can’t be longer than 100 characters.\n</p>",
              "possible_errors": []
            }
          ]
        },
        "identifier": {
          "type": "string",
          "description": "<p> The unique identifier for the supply point.</p>",
          "x-validators": [
            {
              "name": "Validate the supply point identifier",
              "description": "Validate that the supply point identifier in the payload is valid for the territory that the account is importing in.",
              "possible_errors": [
                "invalid_supply_point_identifier"
              ]
            }
          ]
        },
        "jurisdiction": {
          "enum": [
            "ALL",
            "NEM",
            "ACT",
            "NSW",
            "QLD",
            "SA",
            "TAS",
            "VIC",
            "WA",
            "WWT",
            "NT",
            "ISO",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "0c5b97a933dd8722",
          "description": "<p>Jurisdiction code.</p>",
          "x-enum-descriptions": {
            "ALL": "All Jurisdictions",
            "NEM": "National Electricity Market",
            "ACT": "Australian Capital Territory",
            "NSW": "New South Wales",
            "QLD": "Queensland",
            "SA": "South Australia",
            "TAS": "Tasmania",
            "VIC": "Victoria",
            "WA": "Western Australia",
            "WWT": "Wagga Wagga Tamworth",
            "NT": "Northern Territory",
            "ISO": "Isolated",
            "None": "None"
          }
        },
        "last_billed_to_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Date up to which consumption has been billed on the supply point.</p><p>If the supply point has never been billed before, this should be the supply start date for the supply point and Kraken will bill from then.</p><p>If the supply point has been billed before, this typically represents the date of the reading that was last charged to. Kraken will then start to bill from this point.</p><p>This date is inclusive. If the equivalent date in the source system is exclusive make sure to add a day to the value before passing to Kraken.</p>"
        },
        "meter_data_providers": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/EmbeddedElecMeterDataProvider"
          },
          "description": "<p>List of meter point providers.</p>",
          "x-validators": [
            {
              "name": "Validate number of current ⁨meter data provider⁩",
              "description": "Validates that there must be exactly one current ⁨meter data provider⁩ provided.",
              "possible_errors": [
                "one_current_data"
              ]
            }
          ]
        },
        "meter_position": {
          "enum": [
            "BA",
            "BG",
            "BH",
            "BR",
            "BV",
            "BW",
            "BY",
            "CE",
            "CP",
            "DR",
            "FA",
            "FD",
            "FF",
            "FH",
            "FL",
            "FR",
            "FS",
            "FV",
            "FW",
            "GA",
            "GR",
            "KC",
            "KI",
            "LS",
            "OB",
            "PA",
            "PO",
            "PY",
            "RS",
            "SH",
            "SK",
            "SP",
            "SR",
            "TO",
            "UB",
            "UC",
            "UF",
            "UL",
            "UP",
            "UR",
            "US",
            "WH",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "b2672f221b69f827",
          "description": "<p>Meter position code.</p>",
          "x-enum-descriptions": {
            "BA": "Ba",
            "BG": "Bg",
            "BH": "Bh",
            "BR": "Br",
            "BV": "Bv",
            "BW": "Bw",
            "BY": "By",
            "CE": "Ce",
            "CP": "Cp",
            "DR": "Dr",
            "FA": "Fa",
            "FD": "Fd",
            "FF": "Ff",
            "FH": "Fh",
            "FL": "Fl",
            "FR": "Fr",
            "FS": "Fs",
            "FV": "Fv",
            "FW": "Fw",
            "GA": "Ga",
            "GR": "Gr",
            "KC": "Kc",
            "KI": "Ki",
            "LS": "Ls",
            "OB": "Ob",
            "PA": "Pa",
            "PO": "Po",
            "PY": "Py",
            "RS": "Rs",
            "SH": "Sh",
            "SK": "Sk",
            "SP": "Sp",
            "SR": "Sr",
            "TO": "To",
            "UB": "Ub",
            "UC": "Uc",
            "UF": "Uf",
            "UL": "Ul",
            "UP": "Up",
            "UR": "Ur",
            "US": "Us",
            "WH": "Wh",
            "None": "None"
          }
        },
        "meters": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/EmbeddedElecMeter"
          },
          "description": "<p>List of active and exchanged meters on the meter point.</p>",
          "minItems": 1,
          "x-validators": [
            {
              "name": "No repeated meter register IDs",
              "description": "Validate that a meter does not have multiple registers with the same ID.",
              "possible_errors": [
                "meter_with_duplicate_register_ids"
              ]
            }
          ]
        },
        "mpxn": {
          "type": "string",
          "description": "<p>MIRN or NMI of this meter point, UNMETERED_GAS_COOKTOP for unmetered gas cooktop, or UNMETERED_GAS_HEATER for unmetered gas heater. For CES water meter, the value should be prefixed with EMBEDDED_WATER_ (the prefix will not be saved).</p>"
        },
        "multiplier": {
          "type": [
            "string",
            "null"
          ],
          "format": "decimal",
          "pattern": "^-?\\d{0,3}(?:\\.\\d{0,2})?$",
          "description": "<p></p>"
        },
        "next_scheduled_read_date": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>Only required for Basic Meters.</p>",
          "x-validators": [
            {
              "name": "Validate date not in past",
              "description": "Validates that the given date is not in the past.",
              "possible_errors": [
                "date_in_past"
              ]
            }
          ]
        },
        "nmi_classification": {
          "enum": [
            "SMALL",
            "LARGE",
            "EPROFILE",
            "SAMPLE",
            "GENERATR",
            "INTERCON",
            "WHOLESAL",
            "NCONUML",
            "BULK",
            "DGENRATR",
            "DIRS",
            "DWHOLSAL",
            "NREG",
            "TIRS",
            "XBOUNDRY"
          ],
          "type": "string",
          "x-spec-enum-id": "e779ff9114d1376a",
          "description": "<p>NMI classification code.</p>",
          "x-enum-descriptions": {
            "SMALL": "Small",
            "LARGE": "Large",
            "EPROFILE": "External Profile Shape",
            "SAMPLE": "Sample",
            "GENERATR": "Generator",
            "INTERCON": "Interconnector",
            "WHOLESAL": "Wholesale TNI",
            "NCONUML": "Non-contestable Unmetered Load",
            "BULK": "Bulk Supply Point",
            "DGENRATR": "Distribution Generator",
            "DIRS": "Distribution IRS",
            "DWHOLSAL": "Distribution Wholesale",
            "NREG": "Small Generating/Bidirectional Units",
            "TIRS": "Transmission IRS",
            "XBOUNDRY": "Cross Boundary"
          }
        },
        "nmi_status_periods": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/EmbeddedElecNMIStatusPeriod"
          },
          "description": "<p>List of meter point status periods.</p>",
          "x-validators": [
            {
              "name": "Validate number of current ⁨NMI status⁩",
              "description": "Validates that there must be exactly one current ⁨NMI status⁩ provided.",
              "possible_errors": [
                "one_current_data"
              ]
            }
          ]
        },
        "outage_contact_email": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p>Email of outage contact.</p>"
        },
        "outage_contact_phone": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p>Phone number of outage contact.</p>"
        },
        "parent_nmi": {
          "type": "string",
          "description": "<p>Parent NMI - On Supply.</p>",
          "maxLength": 256
        },
        "sensitive_load": {
          "type": "boolean",
          "default": false,
          "description": "<p>Whether there is sensitive load. Note that the existence of a Life Support record with \"registered\" status will take precedence over this.</p>"
        },
        "shared_isolation_flag": {
          "enum": [
            "Y",
            "N",
            "I",
            "U",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "458e050d98891916",
          "description": "<p>Shared isolation flag code.</p>",
          "x-enum-descriptions": {
            "Y": "Yes",
            "N": "No",
            "I": "Isolated",
            "U": "Unknown",
            "None": "None"
          }
        },
        "supply_end_date": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>Supply end date for current supply.</p>"
        },
        "supply_start_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Supply start date for current supply.</p>"
        }
      },
      "required": [
        "customer_classification",
        "customer_threshold",
        "distributors",
        "meter_data_providers",
        "meters",
        "mpxn",
        "nmi_classification",
        "nmi_status_periods",
        "parent_nmi",
        "supply_start_date"
      ],
      "x-validators": [
        {
          "name": "Validate <code>⁨supply_end_date⁩</code> not before <code>⁨supply_start_date⁩</code>",
          "description": "Validates that <code>⁨supply_end_date⁩</code>, if given, is on or later than <code>⁨supply_start_date⁩</code>.",
          "possible_errors": [
            "start_date_later_than_end_date"
          ]
        },
        {
          "name": "Validate agreements do not start before supply start date",
          "description": "Validate that agreements do not start before the supply point's supply start date, if provided.",
          "possible_errors": [
            "agreement_start_date_before_supply_start_date"
          ]
        },
        {
          "name": "Validate <code>⁨supply_end_date⁩</code> not before <code>⁨supply_start_date⁩</code>",
          "description": "Validates that <code>⁨supply_end_date⁩</code>, if given, is on or later than <code>⁨supply_start_date⁩</code>.",
          "possible_errors": [
            "start_date_later_than_end_date"
          ]
        }
      ]
    },
    "EmbeddedElecNMIStatusPeriod": {
      "type": "object",
      "properties": {
        "active_from": {
          "type": "string",
          "format": "date-time",
          "description": "<p>The date the meter point was in the status from.</p>"
        },
        "active_to": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time",
          "description": "<p>The date the meter point was in the status to.</p>"
        },
        "status": {
          "enum": [
            "A",
            "D",
            "X",
            "G"
          ],
          "type": "string",
          "x-spec-enum-id": "d79ebcf035bd4dc7",
          "description": "<p>Status code.</p>",
          "x-enum-descriptions": {
            "A": "Active",
            "D": "De-energised",
            "X": "Extinct",
            "G": "Greenfield"
          }
        }
      },
      "required": [
        "active_from",
        "status"
      ]
    },
    "EmbeddedElecRegister": {
      "type": "object",
      "properties": {
        "active_from": {
          "type": "string",
          "format": "date-time",
          "description": "<p>The date the register was active from.</p>"
        },
        "active_to": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time",
          "description": "<p>The date the register was active to.</p>"
        },
        "controlled_load": {
          "type": "boolean",
          "description": "<p>Whether the load is controlled.</p>"
        },
        "dial_format_decimals": {
          "type": "integer",
          "description": "<p>The number of digits to the right of the decimal place on the register display.</p>"
        },
        "dial_format_digits": {
          "type": "integer",
          "description": "<p>The number of digits to the left of the decimal place on the register display.</p>"
        },
        "multiplier": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,8}(?:\\.\\d{0,5})?$",
          "description": "<p>Multiply the register value by this to get the value for billing.</p>"
        },
        "register_id": {
          "type": "string",
          "description": "<p>The ID of the register. Used to match against Register ID readings.</p>",
          "maxLength": 10
        },
        "status": {
          "enum": [
            "C",
            "R"
          ],
          "type": "string",
          "x-spec-enum-id": "cdb038558b14ed53",
          "description": "<p>To indicate whether register is active or not.</p>",
          "x-enum-descriptions": {
            "C": "Current",
            "R": "Removed"
          }
        },
        "suffix": {
          "type": "string",
          "description": "<p>Suffix of the register. Used to work out whether IMPORT or EXPORT for billing.</p>",
          "maxLength": 10
        },
        "time_of_day": {
          "type": "string",
          "description": "<p>Time of the day mode.</p>",
          "maxLength": 10
        },
        "unit_of_measure": {
          "enum": [
            "mwh",
            "kwh",
            "wh",
            "mvarh",
            "kvarh",
            "varh",
            "mvar",
            "kvar",
            "var",
            "mw",
            "kw",
            "w",
            "mvah",
            "kvah",
            "vah",
            "mva",
            "kva",
            "va",
            "kv",
            "v",
            "ka",
            "a",
            "pf"
          ],
          "type": "string",
          "x-spec-enum-id": "9ebea1ecf6d5fb4d",
          "description": "<p>Unit for measuring consumption.</p>",
          "x-enum-descriptions": {
            "mwh": "MWh",
            "kwh": "kWh",
            "wh": "Wh",
            "mvarh": "MVArh",
            "kvarh": "kVArh",
            "varh": "VArh",
            "mvar": "MVAr",
            "kvar": "kVAr",
            "var": "VAr",
            "mw": "MW",
            "kw": "kW",
            "w": "W",
            "mvah": "MVAh",
            "kvah": "kVAh",
            "vah": "VAh",
            "mva": "MVA",
            "kva": "kVA",
            "va": "VA",
            "kv": "kV",
            "v": "V",
            "ka": "kA",
            "a": "A",
            "pf": "pf"
          }
        }
      },
      "required": [
        "active_from",
        "dial_format_decimals",
        "dial_format_digits",
        "multiplier",
        "register_id",
        "status",
        "suffix",
        "time_of_day",
        "unit_of_measure"
      ]
    },
    "EmbeddedElecTransferReading": {
      "type": "object",
      "properties": {
        "quality_method": {
          "enum": [
            "11",
            "12",
            "13",
            "14",
            "15",
            "16",
            "17",
            "18",
            "19",
            "20",
            "51",
            "52",
            "53",
            "54",
            "55",
            "56",
            "57",
            "58",
            "61",
            "62",
            "63",
            "64",
            "65",
            "66",
            "67",
            "68",
            "71",
            "72",
            "73",
            "74",
            "75",
            "KI",
            "KP",
            "KE",
            "KA"
          ],
          "type": "string",
          "x-spec-enum-id": "1b205d63b24d236e",
          "description": "<p>Quality method code.</p>",
          "x-enum-descriptions": {
            "11": "11",
            "12": "12",
            "13": "13",
            "14": "14",
            "15": "15",
            "16": "16",
            "17": "17",
            "18": "18",
            "19": "19",
            "20": "20",
            "51": "51",
            "52": "52",
            "53": "53",
            "54": "54",
            "55": "55",
            "56": "56",
            "57": "57",
            "58": "58",
            "61": "61",
            "62": "62",
            "63": "63",
            "64": "64",
            "65": "65",
            "66": "66",
            "67": "67",
            "68": "68",
            "71": "71",
            "72": "72",
            "73": "73",
            "74": "74",
            "75": "75",
            "KI": "KI",
            "KP": "KP",
            "KE": "KE",
            "KA": "KA"
          }
        },
        "reading_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Date of the reading.</p>"
        },
        "reading_quality": {
          "enum": [
            "A",
            "E",
            "F",
            "N",
            "S",
            "V"
          ],
          "type": "string",
          "x-spec-enum-id": "245b48f2f998c60e",
          "description": "<p>Reading quality code.</p>",
          "x-enum-descriptions": {
            "A": "A",
            "E": "E",
            "F": "F",
            "N": "N",
            "S": "S",
            "V": "V"
          }
        },
        "reading_value": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,10}(?:\\.\\d{0,5})?$",
          "description": "<p>Reading value.</p>"
        },
        "register_id": {
          "type": "string",
          "description": "<p>The ID of the register.</p>",
          "maxLength": 10
        }
      },
      "required": [
        "reading_date",
        "reading_quality",
        "reading_value",
        "register_id"
      ]
    },
    "EmbeddedGasHistoricalReading": {
      "type": "object",
      "properties": {
        "billed": {
          "type": "boolean",
          "default": true,
          "description": "<p>Whether the reading has been billed. This must be set to false if this historical reading happened after the latest transfer_reading.</p>"
        },
        "reading_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Date of the reading.</p>"
        },
        "reading_quality": {
          "enum": [
            "ACTUAL",
            "ESTIMATED",
            "SKIPPED",
            "CUSTOMER"
          ],
          "type": "string",
          "x-spec-enum-id": "21b49b48d66a1ca8",
          "description": "<p>Reading quality.</p>",
          "x-enum-descriptions": {
            "ACTUAL": "Actual",
            "ESTIMATED": "Estimated",
            "SKIPPED": "Skipped",
            "CUSTOMER": "Customer"
          }
        },
        "reading_value": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,10}(?:\\.\\d{0,5})?$",
          "description": "<p>Reading value.</p>"
        }
      },
      "required": [
        "reading_date",
        "reading_quality",
        "reading_value"
      ]
    },
    "EmbeddedGasMeter": {
      "type": "object",
      "properties": {
        "access_details": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p>Access details for the meter.</p>",
          "maxLength": 255
        },
        "active_from": {
          "type": "string",
          "format": "date-time",
          "description": "<p>Meter active from date and time.</p>"
        },
        "active_to": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time",
          "description": "<p>Meter active to date and time.</p>"
        },
        "key_details": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p>Key details for the meter.</p>",
          "maxLength": 255
        },
        "kpa_value": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,5}(?:\\.\\d{0,4})?$",
          "description": "<p>KPA value.</p>"
        },
        "location": {
          "enum": [
            "ACCESS_HATCH",
            "BACK_GATE",
            "BACK_OF_HOUSE",
            "BACK_VERANDAH",
            "BACK_WALL",
            "BACK_YARD",
            "BASEMENT",
            "BATHROOM",
            "CEILING_SPACE",
            "CELLAR",
            "CUPBOARD",
            "DINING_ROOM",
            "FACTORY",
            "FIREHOUSE_REEL_CUPBOARD",
            "FRONT_DOOR",
            "FRONT_FENCE",
            "FRONT_HOUSE",
            "FRONT_LEFT_SIDE",
            "FRONT_RIGHT_SIDE",
            "FRONT_VERANDAH",
            "FRONT_WALL",
            "FRONT_WALL_SHOP",
            "GARAGE",
            "GROUP_OF_METERS",
            "HALLWAY_CUPBOARD",
            "KITCHEN",
            "KITCHEN_CUPBOARD",
            "LAUNDRY_CUPBOARD",
            "LAUNDRY_HATCH",
            "LEFT_SIDE",
            "OTHER",
            "OVER_BACK_DOOR",
            "PANTRY",
            "PASSAGE",
            "PORCH",
            "REFUSE_ROOM",
            "RIGHT_SIDE",
            "SEE_ACCESS_DETAILS",
            "SHED",
            "SHOP",
            "STORE_ROOM",
            "TOILET",
            "UNDER_BACK_HOUSE",
            "UNDER_COUNTER",
            "UNDER_FRONT_HOUSE",
            "UNDER_LEFT_HOUSE",
            "UNDER_RIGHT_HOUSE",
            "UNDER_SINK",
            "UNDER_STAIRS",
            "UNKNOWN",
            "UPSTAIRS",
            "WASH_HOUSE"
          ],
          "type": "string",
          "x-spec-enum-id": "2a7b272dd5ba7cea",
          "description": "<p>Location of the meter.</p>",
          "x-enum-descriptions": {
            "ACCESS_HATCH": "Access hatch",
            "BACK_GATE": "Back gate",
            "BACK_OF_HOUSE": "Back of house",
            "BACK_VERANDAH": "Back verandah",
            "BACK_WALL": "Back wall",
            "BACK_YARD": "Back yard",
            "BASEMENT": "Basement",
            "BATHROOM": "Bathroom",
            "CEILING_SPACE": "Ceiling space",
            "CELLAR": "Cellar",
            "CUPBOARD": "Cupboard",
            "DINING_ROOM": "Dining room",
            "FACTORY": "Factory",
            "FIREHOUSE_REEL_CUPBOARD": "Firehouse reel cupboard",
            "FRONT_DOOR": "Front door",
            "FRONT_FENCE": "Front face",
            "FRONT_HOUSE": "Front house",
            "FRONT_LEFT_SIDE": "Front left side",
            "FRONT_RIGHT_SIDE": "Front right side",
            "FRONT_VERANDAH": "Front verandah",
            "FRONT_WALL": "Front wall",
            "FRONT_WALL_SHOP": "Front wall shop",
            "GARAGE": "Garage",
            "GROUP_OF_METERS": "Group or meters",
            "HALLWAY_CUPBOARD": "Hallway cupboard",
            "KITCHEN": "Kitchen",
            "KITCHEN_CUPBOARD": "Kitchen cupboard",
            "LAUNDRY_CUPBOARD": "Laundry cupboard",
            "LAUNDRY_HATCH": "Laundry hatch",
            "LEFT_SIDE": "Left side",
            "OTHER": "Other",
            "OVER_BACK_DOOR": "Over back door",
            "PANTRY": "Pantry",
            "PASSAGE": "Passage",
            "PORCH": "Porch",
            "REFUSE_ROOM": "Refuse room",
            "RIGHT_SIDE": "Right side",
            "SEE_ACCESS_DETAILS": "See access details",
            "SHED": "Shed",
            "SHOP": "Shop",
            "STORE_ROOM": "Store room",
            "TOILET": "Toilet",
            "UNDER_BACK_HOUSE": "Under back house",
            "UNDER_COUNTER": "Under counter",
            "UNDER_FRONT_HOUSE": "Under front house",
            "UNDER_LEFT_HOUSE": "Under left house",
            "UNDER_RIGHT_HOUSE": "Under right house",
            "UNDER_SINK": "Under sink",
            "UNDER_STAIRS": "Under stairs",
            "UNKNOWN": "Unknown",
            "UPSTAIRS": "Upstairs",
            "WASH_HOUSE": "Wash house"
          }
        },
        "measurement_type": {
          "enum": [
            "M",
            "I"
          ],
          "type": "string",
          "x-spec-enum-id": "55229098b2a5b784",
          "description": "<p></p>",
          "x-enum-descriptions": {
            "M": "Metric",
            "I": "Imperial"
          }
        },
        "meter_serial_number": {
          "type": "string",
          "description": "<p>Serial number of the meter.</p>",
          "maxLength": 12
        },
        "model_number": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p></p>",
          "maxLength": 255
        },
        "multiplier": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,3}(?:\\.\\d{0,4})?$",
          "description": "<p>Meter multiplier.</p>"
        },
        "number_of_dials": {
          "type": "integer",
          "description": "<p></p>"
        },
        "reading_history": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/EmbeddedGasHistoricalReading"
          },
          "description": "<p>\n    List of historical readings. Generally these are readings prior to the one(s) provided under transfer_readings.</br>\n    It is possible to provide readings in the reading_history after the transfer_reading date but these must be unbilled.\n</p>"
        },
        "reading_route": {
          "type": "string",
          "description": "<p>Reading route. Should match a route defined in Kraken.</p>",
          "x-validators": [
            {
              "name": "Validate reading route code",
              "description": "Validates reading route is known to Kraken.",
              "possible_errors": [
                "invalid_reading_route"
              ]
            }
          ]
        },
        "reading_route_sequence": {
          "type": [
            "integer",
            "null"
          ],
          "default": 10,
          "description": "<p>Reading route sequence. In multiples of 10. Default value: 10.</p>"
        },
        "status": {
          "enum": [
            "Turned on",
            "Turned off",
            "Plugged",
            "No meter",
            "Trailer AC",
            "No Reg"
          ],
          "type": "string",
          "x-spec-enum-id": "d5fc3bb4a12ad320",
          "description": "<p>Status of the meter.</p>",
          "x-enum-descriptions": {
            "Turned on": "Turned On",
            "Turned off": "Turned Off",
            "Plugged": "Plugged",
            "No meter": "No Meter",
            "Trailer AC": "Trailer Ac",
            "No Reg": "No Reg"
          }
        },
        "transfer_readings": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/EmbeddedGasTransferReading"
          },
          "description": "<p>\n    Only the last reading (or readings, if the meter is ECO7 or ECO10) the account has been billed up to.</br>\n    If the account has never been billed, the SSD reading(s) must be on this list.</br>\n    It’s expected that a transfer reading will be given per register on an active accumulation meter in the case of electricity and a reading per active gas meter.</br>\n    It’s expected that all transfer reading dates will match the last_billed_to_date.\n</p>"
        }
      },
      "required": [
        "active_from",
        "kpa_value",
        "location",
        "measurement_type",
        "meter_serial_number",
        "multiplier",
        "number_of_dials",
        "reading_history",
        "reading_route",
        "status",
        "transfer_readings"
      ]
    },
    "EmbeddedGasMeterPoint": {
      "type": "object",
      "properties": {
        "supply_type": {
          "enum": [
            "ELECTRICITY",
            "GAS",
            "UNMETERED_GAS",
            "UNMETERED_ELECTRICITY",
            "WATER",
            "EMBEDDED_WATER",
            "EMBEDDED_ELECTRICITY",
            "EMBEDDED_GAS",
            "SOLAR_PPA",
            "REGOS_EXPORT_CERTIFICATES",
            "ROCS_EXPORT_CERTIFICATES",
            "BROADBAND",
            "HEAT_PUMP",
            "WATER_HEATER",
            "ELECTRICITY_DISTRIBUTION",
            "LIGHT",
            "POLE"
          ],
          "type": "string",
          "x-spec-enum-id": "b093b6cd0238d6bd",
          "default": "EMBEDDED_GAS",
          "description": "<p>Supply type of the supply point.</p>",
          "x-enum-descriptions": {
            "ELECTRICITY": "Electricity",
            "GAS": "Gas",
            "UNMETERED_GAS": "Unmetered Gas",
            "UNMETERED_ELECTRICITY": "Unmetered Electricity",
            "WATER": "Water",
            "EMBEDDED_WATER": "Embedded Water",
            "EMBEDDED_ELECTRICITY": "Embedded Electricity",
            "EMBEDDED_GAS": "Embedded Gas",
            "SOLAR_PPA": "Solar PPA",
            "REGOS_EXPORT_CERTIFICATES": "REGOs Export Certificates",
            "ROCS_EXPORT_CERTIFICATES": "ROCs Export Certificates",
            "BROADBAND": "Broadband",
            "HEAT_PUMP": "Heat Pump",
            "WATER_HEATER": "Water Heater",
            "ELECTRICITY_DISTRIBUTION": "Electricity Distribution",
            "LIGHT": "Light",
            "POLE": "Pole"
          }
        },
        "access_details": {
          "type": "string",
          "description": "<p>Access details for the meter point. No details indicates “Customer reports no access requirements”. Can’t be longer than 160 characters.</p>",
          "maxLength": 160
        },
        "address": {
          "allOf": [
            {
              "$ref": "#/$defs/CommonStructuredAddress"
            }
          ],
          "description": "<p>Structured address for this meter point.</p>"
        },
        "agreements": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/AusAgreement"
          },
          "description": "<p>List of agreements linked to the supply point.</p>",
          "x-validators": [
            {
              "name": "Validate product addon code and tariff code combination",
              "description": "aus:data-import--validation-product-addon-code-and-product-code-combination--help-text",
              "possible_errors": [
                "invalid_product_addon_code_and_product_code_combination"
              ]
            }
          ]
        },
        "baseload": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,3}(?:\\.\\d{0,3})?$",
          "description": "<p>An average daily load for the meter point.</p>"
        },
        "customer_characterisation": {
          "enum": [
            "Metropolitan Business",
            "Metropolitan Residential",
            "Non Metropolitan Business",
            "Non Metropolitan Residential"
          ],
          "type": "string",
          "x-spec-enum-id": "9d533322e22e46d0",
          "description": "<p>Describes whether the customer is metropolitan or non-metropolitan, and whether they are a residential or business customer.</p>",
          "x-enum-descriptions": {
            "Metropolitan Business": "Metro Business",
            "Metropolitan Residential": "Metro Residential",
            "Non Metropolitan Business": "Non Metro Business",
            "Non Metropolitan Residential": "Non Metro Residential"
          }
        },
        "customer_classification": {
          "enum": [
            "BUS",
            "RES",
            "UNKNOWN"
          ],
          "type": "string",
          "x-spec-enum-id": "63353d9709a8242d",
          "description": "<p>Customer classification code.</p>",
          "x-enum-descriptions": {
            "BUS": "Business",
            "RES": "Residential",
            "UNKNOWN": "Unknown"
          }
        },
        "distribution_tariff": {
          "enum": [
            "Volume",
            "Demand",
            "Commercial"
          ],
          "type": "string",
          "x-spec-enum-id": "60b50a0019f31942",
          "description": "<p>Determines the way the meter will be billed.</p>",
          "x-enum-descriptions": {
            "Volume": "Volume",
            "Demand": "Demand",
            "Commercial": "Commercial"
          }
        },
        "dog_code": {
          "enum": [
            "Bluff",
            "Savage",
            "Tied",
            "Friendly",
            "Dog OK",
            "Dog Caution",
            "No Dog",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "d63e05b877b7aa4b",
          "description": "<p>Dog code.</p>",
          "x-enum-descriptions": {
            "Bluff": "Bluff",
            "Savage": "Savage",
            "Tied": "Tied",
            "Friendly": "Friendly",
            "Dog OK": "Dog Ok",
            "Dog Caution": "Dog Caution",
            "No Dog": "No Dog",
            "None": "None"
          }
        },
        "hazard_details": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "<p>Hazard details for the meterpoint.</br>\nNo supplied hazard details indicates “Not Known To Initiator”.</br>\nSpecifying a single details of “Not Known To Initiator” also indicates “Not Known To Initiator”.</br>\nIf the value is “Customer Reports No Hazard” or “Not Known To Initiator”, no other values may be provided.\nThe following are the market specified hazards:\n<ul>\n        <li>Customer Reports No Hazard</li>\n        <li>Dog</li>\n        <li>Electric Fence</li>\n        <li>Customer Caution</li>\n        <li>Electrical Safety Issue</li>\n        <li>Asbestos Fuse</li>\n        <li>Asbestos Board</li>\n        <li>Not Known To Initiator</li>\n</ul>\nOther values are the custom hazards and each of them can’t be longer than 100 characters.\n</p>",
          "x-validators": [
            {
              "name": "Validate hazard details",
              "description": "Validates that <code>Customer Reports No Hazard</code> and <code>\"Not Known To Initiator</code> cannot be combined with other market specified hazards.",
              "possible_errors": [
                "no_hazard_cannot_combine_with_other_hazards",
                "not_known_cannot_combine_with_other_hazards"
              ]
            },
            {
              "name": "Validate hazard details",
              "description": "<p>Hazard details for the meterpoint.</br>\nNo supplied hazard details indicates “Not Known To Initiator”.</br>\nSpecifying a single details of “Not Known To Initiator” also indicates “Not Known To Initiator”.</br>\nIf the value is “Customer Reports No Hazard” or “Not Known To Initiator”, no other values may be provided.\nThe following are the market specified hazards:\n<ul>\n        <li>Customer Reports No Hazard</li>\n        <li>Dog</li>\n        <li>Electric Fence</li>\n        <li>Customer Caution</li>\n        <li>Electrical Safety Issue</li>\n        <li>Asbestos Fuse</li>\n        <li>Asbestos Board</li>\n        <li>Not Known To Initiator</li>\n</ul>\nOther values are the custom hazards and each of them can’t be longer than 100 characters.\n</p>",
              "possible_errors": []
            }
          ]
        },
        "heating_value": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,3}(?:\\.\\d{0,3})?$",
          "description": "<p>Heating value.</p>"
        },
        "heating_value_zone": {
          "type": "string",
          "description": "<p>Heating value zone.</p>"
        },
        "identifier": {
          "type": "string",
          "description": "<p> The unique identifier for the supply point.</p>",
          "x-validators": [
            {
              "name": "Validate the supply point identifier",
              "description": "Validate that the supply point identifier in the payload is valid for the territory that the account is importing in.",
              "possible_errors": [
                "invalid_supply_point_identifier"
              ]
            }
          ]
        },
        "last_billed_to_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Date up to which consumption has been billed on the supply point.</p><p>If the supply point has never been billed before, this should be the supply start date for the supply point and Kraken will bill from then.</p><p>If the supply point has been billed before, this typically represents the date of the reading that was last charged to. Kraken will then start to bill from this point.</p><p>This date is inclusive. If the equivalent date in the source system is exclusive make sure to add a day to the value before passing to Kraken.</p>"
        },
        "meter_position": {
          "enum": [
            "BA",
            "BG",
            "BH",
            "BR",
            "BV",
            "BW",
            "BY",
            "CE",
            "CP",
            "DR",
            "FA",
            "FD",
            "FF",
            "FH",
            "FL",
            "FR",
            "FS",
            "FV",
            "FW",
            "GA",
            "GR",
            "KC",
            "KI",
            "LS",
            "OB",
            "PA",
            "PO",
            "PY",
            "RS",
            "SH",
            "SK",
            "SP",
            "SR",
            "TO",
            "UB",
            "UC",
            "UF",
            "UL",
            "UP",
            "UR",
            "US",
            "WH",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "b2672f221b69f827",
          "description": "<p>Meter position code.</p>",
          "x-enum-descriptions": {
            "BA": "Ba",
            "BG": "Bg",
            "BH": "Bh",
            "BR": "Br",
            "BV": "Bv",
            "BW": "Bw",
            "BY": "By",
            "CE": "Ce",
            "CP": "Cp",
            "DR": "Dr",
            "FA": "Fa",
            "FD": "Fd",
            "FF": "Ff",
            "FH": "Fh",
            "FL": "Fl",
            "FR": "Fr",
            "FS": "Fs",
            "FV": "Fv",
            "FW": "Fw",
            "GA": "Ga",
            "GR": "Gr",
            "KC": "Kc",
            "KI": "Ki",
            "LS": "Ls",
            "OB": "Ob",
            "PA": "Pa",
            "PO": "Po",
            "PY": "Py",
            "RS": "Rs",
            "SH": "Sh",
            "SK": "Sk",
            "SP": "Sp",
            "SR": "Sr",
            "TO": "To",
            "UB": "Ub",
            "UC": "Uc",
            "UF": "Uf",
            "UL": "Ul",
            "UP": "Up",
            "UR": "Ur",
            "US": "Us",
            "WH": "Wh",
            "None": "None"
          }
        },
        "meters": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/EmbeddedGasMeter"
          },
          "description": "<p>List of active and exchanged meters on the meter point.</p>"
        },
        "mpxn": {
          "type": "string",
          "description": "<p>MIRN or NMI of this meter point, UNMETERED_GAS_COOKTOP for unmetered gas cooktop, or UNMETERED_GAS_HEATER for unmetered gas heater. For CES water meter, the value should be prefixed with EMBEDDED_WATER_ (the prefix will not be saved).</p>"
        },
        "multiplier": {
          "type": [
            "string",
            "null"
          ],
          "format": "decimal",
          "pattern": "^-?\\d{0,3}(?:\\.\\d{0,2})?$",
          "description": "<p></p>"
        },
        "parent_installation_id": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p></p>"
        },
        "parent_mirn": {
          "type": "string",
          "description": "<p>Parent MIRN for embedded gas service.</p>"
        },
        "pressure_correction_factor": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,3}(?:\\.\\d{0,3})?$",
          "description": "<p>Pressure correction factor.</p>"
        },
        "pricing_zone": {
          "enum": [
            "TAMWORTH",
            "ALBURY",
            "MURYVALLEY",
            "MILDURA",
            "OEMETRO_AGLSOUTH",
            "TRURCBARWN",
            "TRUWEST",
            "OEMURVLYV",
            "TRUEAST_OESTHEAST",
            "OENORTH",
            "OEYRVALLEY",
            "AGLNSW",
            "APTALLGAS_NSW_QLD",
            "ACTEWAGL_ACT_QUEANBEYAN",
            "COOMABOMBA",
            "TEMORA_HHOLCWALLA",
            "WAGGAURANQ",
            "TUMUTGUNDA",
            "AGLNORTH_TRUCENTRAL",
            "TRURULWEST",
            "OEWGPLAND",
            "OEBRNSDALE",
            "BRISNORTH",
            "WIDEBAY",
            "QLDNORTH",
            "AGN_SA",
            "MIDWSOUTHW",
            "ALICESPNGS",
            "APTALLGAS"
          ],
          "type": "string",
          "x-spec-enum-id": "b210716b72e7d361",
          "description": "<p>Code of the pricing zone for embedded gas service. Must match an existing zone.</p>",
          "x-enum-descriptions": {
            "TAMWORTH": "Tamworth",
            "ALBURY": "AGN Albury",
            "MURYVALLEY": "AGN Murray Valley (NSW)",
            "MILDURA": "AGN - Mildura",
            "OEMETRO_AGLSOUTH": "Multinet",
            "TRURCBARWN": "AusNet Services Adjoining Central",
            "TRUWEST": "AusNet Services West",
            "OEMURVLYV": "AGN - Murray Vic",
            "TRUEAST_OESTHEAST": "AGN Central",
            "OENORTH": "AGN North",
            "OEYRVALLEY": "Multinet Yarra Valley",
            "AGLNSW": "Jemena",
            "APTALLGAS_NSW_QLD": "Allgas Energy",
            "ACTEWAGL_ACT_QUEANBEYAN": "Evoenergy",
            "COOMABOMBA": "AGN Bombala and Cooma",
            "TEMORA_HHOLCWALLA": "AGN Temora Culciarn Holbrook",
            "WAGGAURANQ": "AGN Wagga Wagga",
            "TUMUTGUNDA": "AGN Adelong, Gundagai and Tumut",
            "AGLNORTH_TRUCENTRAL": "AusNet Services Central",
            "TRURULWEST": "AusNet Services Adjoining West",
            "OEWGPLAND": "AGN - Cardinia",
            "OEBRNSDALE": "AGN - Bairnsdale",
            "BRISNORTH": "AGN - Brisbane",
            "WIDEBAY": "AGN - Wide Bay",
            "QLDNORTH": "AGN - Northern",
            "AGN_SA": "AGN - SA",
            "MIDWSOUTHW": "ATCO Australia",
            "ALICESPNGS": "AGN - NT",
            "APTALLGAS": "Allgas Energy"
          }
        },
        "sensitive_load": {
          "type": "boolean",
          "default": false,
          "description": "<p>Whether there is sensitive load. Note that the existence of a Life Support record with \"registered\" status will take precedence over this.</p>"
        },
        "status": {
          "enum": [
            "Registered",
            "Commissioned",
            "Decommissioned",
            "Deregistered",
            "Unclaimed"
          ],
          "type": "string",
          "x-spec-enum-id": "f52b1d4e40016523",
          "description": "<p>Status of the meter point.</p>",
          "x-enum-descriptions": {
            "Registered": "Registered",
            "Commissioned": "Commissioned",
            "Decommissioned": "Decomissioned",
            "Deregistered": "Deregistered",
            "Unclaimed": "Unclaimed"
          }
        },
        "supply_end_date": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>Supply end date for current supply.</p>"
        },
        "supply_start_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Supply start date for current supply.</p>"
        }
      },
      "required": [
        "baseload",
        "customer_characterisation",
        "customer_classification",
        "distribution_tariff",
        "heating_value",
        "heating_value_zone",
        "meters",
        "mpxn",
        "parent_mirn",
        "pressure_correction_factor",
        "pricing_zone",
        "status",
        "supply_start_date"
      ],
      "x-validators": [
        {
          "name": "Validate <code>⁨supply_end_date⁩</code> not before <code>⁨supply_start_date⁩</code>",
          "description": "Validates that <code>⁨supply_end_date⁩</code>, if given, is on or later than <code>⁨supply_start_date⁩</code>.",
          "possible_errors": [
            "start_date_later_than_end_date"
          ]
        },
        {
          "name": "Validate agreements do not start before supply start date",
          "description": "Validate that agreements do not start before the supply point's supply start date, if provided.",
          "possible_errors": [
            "agreement_start_date_before_supply_start_date"
          ]
        }
      ]
    },
    "EmbeddedGasTransferReading": {
      "type": "object",
      "properties": {
        "reading_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Date of the reading.</p>"
        },
        "reading_quality": {
          "enum": [
            "ACTUAL",
            "ESTIMATED",
            "SKIPPED",
            "CUSTOMER"
          ],
          "type": "string",
          "x-spec-enum-id": "21b49b48d66a1ca8",
          "description": "<p>Reading quality.</p>",
          "x-enum-descriptions": {
            "ACTUAL": "Actual",
            "ESTIMATED": "Estimated",
            "SKIPPED": "Skipped",
            "CUSTOMER": "Customer"
          }
        },
        "reading_value": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,10}(?:\\.\\d{0,5})?$",
          "description": "<p>Reading value.</p>"
        }
      },
      "required": [
        "reading_date",
        "reading_quality",
        "reading_value"
      ]
    },
    "EmbeddedWaterConnectionPeriod": {
      "type": "object",
      "properties": {
        "end_at": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time",
          "description": "<p>Period end date.</p>"
        },
        "start_at": {
          "type": "string",
          "format": "date-time",
          "description": "<p>Period starting date.</p>"
        },
        "status": {
          "enum": [
            "CONNECTED",
            "DISCONNECTED"
          ],
          "type": "string",
          "x-spec-enum-id": "aed1b22dc6aad4c9",
          "description": "<p>Connection status.</p>",
          "x-enum-descriptions": {
            "CONNECTED": "Connected",
            "DISCONNECTED": "Disconnected"
          }
        }
      },
      "required": [
        "start_at",
        "status"
      ]
    },
    "EmbeddedWaterHistoricalReading": {
      "type": "object",
      "properties": {
        "billed": {
          "type": "boolean",
          "default": true,
          "description": "<p>Whether reading has been billed or not.</p>"
        },
        "reading_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Date of the reading.</p>"
        },
        "reading_quality": {
          "enum": [
            "ACTUAL",
            "ESTIMATED",
            "SKIPPED",
            "CUSTOMER"
          ],
          "type": "string",
          "x-spec-enum-id": "21b49b48d66a1ca8",
          "description": "<p>Reading quality.</p>",
          "x-enum-descriptions": {
            "ACTUAL": "Actual",
            "ESTIMATED": "Estimated",
            "SKIPPED": "Skipped",
            "CUSTOMER": "Customer"
          }
        },
        "reading_value": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,10}(?:\\.\\d{0,5})?$",
          "description": "<p>Reading value.</p>"
        }
      },
      "required": [
        "reading_date",
        "reading_quality",
        "reading_value"
      ]
    },
    "EmbeddedWaterMeter": {
      "type": "object",
      "properties": {
        "access_details": {
          "type": "string",
          "default": "",
          "description": "<p>Access details for the meter.</p>",
          "maxLength": 256
        },
        "connection_periods": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/EmbeddedWaterConnectionPeriod"
          },
          "description": "<p>List of connection periods.</p>"
        },
        "construction_date": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>Construction date of the meter.</p>"
        },
        "installed_on": {
          "type": "string",
          "format": "date",
          "description": "<p>The date the meter was installed.</p>"
        },
        "key_details": {
          "type": "string",
          "default": "",
          "description": "<p>Key details for the meter.</p>",
          "maxLength": 256
        },
        "last_billed_to_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Date up to which consumption has been billed to.</p>"
        },
        "location": {
          "enum": [
            "ACCESS_HATCH",
            "BACK_GATE",
            "BACK_OF_HOUSE",
            "BACK_VERANDAH",
            "BACK_WALL",
            "BACK_YARD",
            "BASEMENT",
            "BATHROOM",
            "CEILING_SPACE",
            "CELLAR",
            "CUPBOARD",
            "DINING_ROOM",
            "FACTORY",
            "FIREHOUSE_REEL_CUPBOARD",
            "FRONT_DOOR",
            "FRONT_FENCE",
            "FRONT_HOUSE",
            "FRONT_LEFT_SIDE",
            "FRONT_RIGHT_SIDE",
            "FRONT_VERANDAH",
            "FRONT_WALL",
            "FRONT_WALL_SHOP",
            "GARAGE",
            "GROUP_OF_METERS",
            "HALLWAY_CUPBOARD",
            "KITCHEN",
            "KITCHEN_CUPBOARD",
            "LAUNDRY_CUPBOARD",
            "LAUNDRY_HATCH",
            "LEFT_SIDE",
            "OTHER",
            "OVER_BACK_DOOR",
            "PANTRY",
            "PASSAGE",
            "PORCH",
            "REFUSE_ROOM",
            "RIGHT_SIDE",
            "SEE_ACCESS_DETAILS",
            "SHED",
            "SHOP",
            "STORE_ROOM",
            "TOILET",
            "UNDER_BACK_HOUSE",
            "UNDER_COUNTER",
            "UNDER_FRONT_HOUSE",
            "UNDER_LEFT_HOUSE",
            "UNDER_RIGHT_HOUSE",
            "UNDER_SINK",
            "UNDER_STAIRS",
            "UNKNOWN",
            "UPSTAIRS",
            "WASH_HOUSE"
          ],
          "type": "string",
          "x-spec-enum-id": "2a7b272dd5ba7cea",
          "description": "<p>Location of the meter.</p>",
          "x-enum-descriptions": {
            "ACCESS_HATCH": "Access hatch",
            "BACK_GATE": "Back gate",
            "BACK_OF_HOUSE": "Back of house",
            "BACK_VERANDAH": "Back verandah",
            "BACK_WALL": "Back wall",
            "BACK_YARD": "Back yard",
            "BASEMENT": "Basement",
            "BATHROOM": "Bathroom",
            "CEILING_SPACE": "Ceiling space",
            "CELLAR": "Cellar",
            "CUPBOARD": "Cupboard",
            "DINING_ROOM": "Dining room",
            "FACTORY": "Factory",
            "FIREHOUSE_REEL_CUPBOARD": "Firehouse reel cupboard",
            "FRONT_DOOR": "Front door",
            "FRONT_FENCE": "Front face",
            "FRONT_HOUSE": "Front house",
            "FRONT_LEFT_SIDE": "Front left side",
            "FRONT_RIGHT_SIDE": "Front right side",
            "FRONT_VERANDAH": "Front verandah",
            "FRONT_WALL": "Front wall",
            "FRONT_WALL_SHOP": "Front wall shop",
            "GARAGE": "Garage",
            "GROUP_OF_METERS": "Group or meters",
            "HALLWAY_CUPBOARD": "Hallway cupboard",
            "KITCHEN": "Kitchen",
            "KITCHEN_CUPBOARD": "Kitchen cupboard",
            "LAUNDRY_CUPBOARD": "Laundry cupboard",
            "LAUNDRY_HATCH": "Laundry hatch",
            "LEFT_SIDE": "Left side",
            "OTHER": "Other",
            "OVER_BACK_DOOR": "Over back door",
            "PANTRY": "Pantry",
            "PASSAGE": "Passage",
            "PORCH": "Porch",
            "REFUSE_ROOM": "Refuse room",
            "RIGHT_SIDE": "Right side",
            "SEE_ACCESS_DETAILS": "See access details",
            "SHED": "Shed",
            "SHOP": "Shop",
            "STORE_ROOM": "Store room",
            "TOILET": "Toilet",
            "UNDER_BACK_HOUSE": "Under back house",
            "UNDER_COUNTER": "Under counter",
            "UNDER_FRONT_HOUSE": "Under front house",
            "UNDER_LEFT_HOUSE": "Under left house",
            "UNDER_RIGHT_HOUSE": "Under right house",
            "UNDER_SINK": "Under sink",
            "UNDER_STAIRS": "Under stairs",
            "UNKNOWN": "Unknown",
            "UPSTAIRS": "Upstairs",
            "WASH_HOUSE": "Wash house"
          }
        },
        "make_and_model": {
          "type": "string",
          "default": "",
          "description": "<p>Make and model of the meter.</p>"
        },
        "meter_measurement_unit": {
          "enum": [
            "dL",
            "daL",
            "kL",
            "gal"
          ],
          "type": "string",
          "x-spec-enum-id": "83abc84b30ee6528",
          "description": "<p>Meter measurement unit of the meter.</p>",
          "x-enum-descriptions": {
            "dL": "Decilitres",
            "daL": "Decalitres",
            "kL": "Kilolitres",
            "gal": "Gallons"
          }
        },
        "meter_serial_number": {
          "type": "string",
          "description": "<p>Serial number of the meter.</p>"
        },
        "number_of_dials_on_device": {
          "type": "integer",
          "description": "<p></p>"
        },
        "read_method": {
          "enum": [
            "REMOTE",
            "MANUAL"
          ],
          "type": "string",
          "x-spec-enum-id": "b42987f03411fddd",
          "description": "<p>Read method.</p>",
          "x-enum-descriptions": {
            "REMOTE": "Remote",
            "MANUAL": "Manual"
          }
        },
        "reading_history": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/EmbeddedWaterHistoricalReading"
          },
          "description": "<p>\n    List of historical readings. Generally these are readings prior to the one(s) provided under transfer_readings.</br>\n    It is possible to provide readings in the reading_history after the transfer_reading date but these must be unbilled.\n</p>"
        },
        "reading_route_sequence": {
          "type": [
            "integer",
            "null"
          ],
          "default": 10,
          "description": "<p>Reading route sequence. In multiples of 10. Default value: 10.</p>"
        },
        "removed_on": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>The date the meter was removed.</p>"
        },
        "transfer_readings": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/EmbeddedWaterTransferReading"
          },
          "description": "<p>List of currently relevant readings.</p>"
        }
      },
      "required": [
        "installed_on",
        "location",
        "meter_measurement_unit",
        "meter_serial_number",
        "number_of_dials_on_device",
        "read_method"
      ]
    },
    "EmbeddedWaterMeterPoint": {
      "type": "object",
      "properties": {
        "supply_type": {
          "enum": [
            "ELECTRICITY",
            "GAS",
            "UNMETERED_GAS",
            "UNMETERED_ELECTRICITY",
            "WATER",
            "EMBEDDED_WATER",
            "EMBEDDED_ELECTRICITY",
            "EMBEDDED_GAS",
            "SOLAR_PPA",
            "REGOS_EXPORT_CERTIFICATES",
            "ROCS_EXPORT_CERTIFICATES",
            "BROADBAND",
            "HEAT_PUMP",
            "WATER_HEATER",
            "ELECTRICITY_DISTRIBUTION",
            "LIGHT",
            "POLE"
          ],
          "type": "string",
          "x-spec-enum-id": "b093b6cd0238d6bd",
          "default": "EMBEDDED_WATER",
          "description": "<p>Supply type of the supply point.</p>",
          "x-enum-descriptions": {
            "ELECTRICITY": "Electricity",
            "GAS": "Gas",
            "UNMETERED_GAS": "Unmetered Gas",
            "UNMETERED_ELECTRICITY": "Unmetered Electricity",
            "WATER": "Water",
            "EMBEDDED_WATER": "Embedded Water",
            "EMBEDDED_ELECTRICITY": "Embedded Electricity",
            "EMBEDDED_GAS": "Embedded Gas",
            "SOLAR_PPA": "Solar PPA",
            "REGOS_EXPORT_CERTIFICATES": "REGOs Export Certificates",
            "ROCS_EXPORT_CERTIFICATES": "ROCs Export Certificates",
            "BROADBAND": "Broadband",
            "HEAT_PUMP": "Heat Pump",
            "WATER_HEATER": "Water Heater",
            "ELECTRICITY_DISTRIBUTION": "Electricity Distribution",
            "LIGHT": "Light",
            "POLE": "Pole"
          }
        },
        "access_details": {
          "type": "string",
          "description": "<p>Access details for the meter point. No details indicates “Customer reports no access requirements”. Can’t be longer than 160 characters.</p>",
          "maxLength": 160
        },
        "address": {
          "allOf": [
            {
              "$ref": "#/$defs/CommonStructuredAddress"
            }
          ],
          "description": "<p>Structured address for this meter point.</p>"
        },
        "agreements": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/AusAgreement"
          },
          "description": "<p>List of agreements linked to the supply point.</p>",
          "x-validators": [
            {
              "name": "Validate product addon code and tariff code combination",
              "description": "aus:data-import--validation-product-addon-code-and-product-code-combination--help-text",
              "possible_errors": [
                "invalid_product_addon_code_and_product_code_combination"
              ]
            }
          ]
        },
        "dog_code": {
          "enum": [
            "Bluff",
            "Savage",
            "Tied",
            "Friendly",
            "Dog OK",
            "Dog Caution",
            "No Dog",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "d63e05b877b7aa4b",
          "description": "<p>Dog code.</p>",
          "x-enum-descriptions": {
            "Bluff": "Bluff",
            "Savage": "Savage",
            "Tied": "Tied",
            "Friendly": "Friendly",
            "Dog OK": "Dog Ok",
            "Dog Caution": "Dog Caution",
            "No Dog": "No Dog",
            "None": "None"
          }
        },
        "hazard_details": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "<p>Hazard details for the meterpoint.</br>\nNo supplied hazard details indicates “Not Known To Initiator”.</br>\nSpecifying a single details of “Not Known To Initiator” also indicates “Not Known To Initiator”.</br>\nIf the value is “Customer Reports No Hazard” or “Not Known To Initiator”, no other values may be provided.\nThe following are the market specified hazards:\n<ul>\n        <li>Customer Reports No Hazard</li>\n        <li>Dog</li>\n        <li>Electric Fence</li>\n        <li>Customer Caution</li>\n        <li>Electrical Safety Issue</li>\n        <li>Asbestos Fuse</li>\n        <li>Asbestos Board</li>\n        <li>Not Known To Initiator</li>\n</ul>\nOther values are the custom hazards and each of them can’t be longer than 100 characters.\n</p>",
          "x-validators": [
            {
              "name": "Validate hazard details",
              "description": "Validates that <code>Customer Reports No Hazard</code> and <code>\"Not Known To Initiator</code> cannot be combined with other market specified hazards.",
              "possible_errors": [
                "no_hazard_cannot_combine_with_other_hazards",
                "not_known_cannot_combine_with_other_hazards"
              ]
            },
            {
              "name": "Validate hazard details",
              "description": "<p>Hazard details for the meterpoint.</br>\nNo supplied hazard details indicates “Not Known To Initiator”.</br>\nSpecifying a single details of “Not Known To Initiator” also indicates “Not Known To Initiator”.</br>\nIf the value is “Customer Reports No Hazard” or “Not Known To Initiator”, no other values may be provided.\nThe following are the market specified hazards:\n<ul>\n        <li>Customer Reports No Hazard</li>\n        <li>Dog</li>\n        <li>Electric Fence</li>\n        <li>Customer Caution</li>\n        <li>Electrical Safety Issue</li>\n        <li>Asbestos Fuse</li>\n        <li>Asbestos Board</li>\n        <li>Not Known To Initiator</li>\n</ul>\nOther values are the custom hazards and each of them can’t be longer than 100 characters.\n</p>",
              "possible_errors": []
            }
          ]
        },
        "identifier": {
          "type": "string",
          "description": "<p> The unique identifier for the supply point.</p>",
          "x-validators": [
            {
              "name": "Validate the supply point identifier",
              "description": "Validate that the supply point identifier in the payload is valid for the territory that the account is importing in.",
              "possible_errors": [
                "invalid_supply_point_identifier"
              ]
            }
          ]
        },
        "installation_id": {
          "type": "string",
          "description": "<p>Installation ID.</p>",
          "maxLength": 10,
          "minLength": 10
        },
        "installation_type": {
          "enum": [
            "SHW",
            "BHW"
          ],
          "type": "string",
          "x-spec-enum-id": "2f510b098235af9a",
          "description": "<p>Installation type.</p>",
          "x-enum-descriptions": {
            "SHW": "Serviced hot water",
            "BHW": "Bulk hot water"
          }
        },
        "last_billed_to_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Date up to which consumption has been billed on the supply point.</p><p>If the supply point has never been billed before, this should be the supply start date for the supply point and Kraken will bill from then.</p><p>If the supply point has been billed before, this typically represents the date of the reading that was last charged to. Kraken will then start to bill from this point.</p><p>This date is inclusive. If the equivalent date in the source system is exclusive make sure to add a day to the value before passing to Kraken.</p>"
        },
        "meter_position": {
          "enum": [
            "BA",
            "BG",
            "BH",
            "BR",
            "BV",
            "BW",
            "BY",
            "CE",
            "CP",
            "DR",
            "FA",
            "FD",
            "FF",
            "FH",
            "FL",
            "FR",
            "FS",
            "FV",
            "FW",
            "GA",
            "GR",
            "KC",
            "KI",
            "LS",
            "OB",
            "PA",
            "PO",
            "PY",
            "RS",
            "SH",
            "SK",
            "SP",
            "SR",
            "TO",
            "UB",
            "UC",
            "UF",
            "UL",
            "UP",
            "UR",
            "US",
            "WH",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "b2672f221b69f827",
          "description": "<p>Meter position code.</p>",
          "x-enum-descriptions": {
            "BA": "Ba",
            "BG": "Bg",
            "BH": "Bh",
            "BR": "Br",
            "BV": "Bv",
            "BW": "Bw",
            "BY": "By",
            "CE": "Ce",
            "CP": "Cp",
            "DR": "Dr",
            "FA": "Fa",
            "FD": "Fd",
            "FF": "Ff",
            "FH": "Fh",
            "FL": "Fl",
            "FR": "Fr",
            "FS": "Fs",
            "FV": "Fv",
            "FW": "Fw",
            "GA": "Ga",
            "GR": "Gr",
            "KC": "Kc",
            "KI": "Ki",
            "LS": "Ls",
            "OB": "Ob",
            "PA": "Pa",
            "PO": "Po",
            "PY": "Py",
            "RS": "Rs",
            "SH": "Sh",
            "SK": "Sk",
            "SP": "Sp",
            "SR": "Sr",
            "TO": "To",
            "UB": "Ub",
            "UC": "Uc",
            "UF": "Uf",
            "UL": "Ul",
            "UP": "Up",
            "UR": "Ur",
            "US": "Us",
            "WH": "Wh",
            "None": "None"
          }
        },
        "meters": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/EmbeddedWaterMeter"
          },
          "description": "<p>List of active and exchanged meters on the meter point.</p>"
        },
        "mpxn": {
          "type": "string",
          "description": "<p>MIRN or NMI of this meter point, UNMETERED_GAS_COOKTOP for unmetered gas cooktop, or UNMETERED_GAS_HEATER for unmetered gas heater. For CES water meter, the value should be prefixed with EMBEDDED_WATER_ (the prefix will not be saved).</p>"
        },
        "multiplier": {
          "type": [
            "string",
            "null"
          ],
          "format": "decimal",
          "pattern": "^-?\\d{0,3}(?:\\.\\d{0,2})?$",
          "description": "<p></p>"
        },
        "parent_installation_id": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p>Parent installation ID.</p>"
        },
        "parent_mirn": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p>Parent MIRN.</p>"
        },
        "parent_nmi": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p>Parent NMI.</p>"
        },
        "plant_fuel_type": {
          "enum": [
            "NG",
            "LP",
            "ELECTRICITY"
          ],
          "type": "string",
          "x-spec-enum-id": "b2b450c3454f6d6a",
          "description": "<p>Plant fuel type.</p>",
          "x-enum-descriptions": {
            "NG": "Natural gas",
            "LP": "Liquid petroleum",
            "ELECTRICITY": "Electricity"
          }
        },
        "plant_temperature": {
          "enum": [
            "50C",
            "65C",
            ""
          ],
          "type": "string",
          "x-spec-enum-id": "8d817a4b1844fc60",
          "description": "<p>Plant temperature.</p>",
          "x-enum-descriptions": {
            "50C": "50°C",
            "65C": "65°C",
            "": ""
          }
        },
        "pricing_zone": {
          "enum": [
            "ACTEWAGL",
            "ADELAIDE",
            "AGLNSW",
            "ALBURY",
            "BALGRAFT",
            "BRISBANE",
            "BRISNORTH",
            "DARWIN",
            "MIDWSOUTHW",
            "MURYVALLEY",
            "OEMETRO",
            "OENORTH",
            "OESTHEAST",
            "SEQLD",
            "TWEEDHEADS"
          ],
          "type": "string",
          "x-spec-enum-id": "83f5c58d83e964ae",
          "description": "<p>Code of the pricing zone.</p>",
          "x-enum-descriptions": {
            "ACTEWAGL": "Actewagl",
            "ADELAIDE": "Adelaide",
            "AGLNSW": "Aglnsw",
            "ALBURY": "Albury",
            "BALGRAFT": "Balgraft",
            "BRISBANE": "Brisbane",
            "BRISNORTH": "Brisnorth",
            "DARWIN": "Darwin",
            "MIDWSOUTHW": "Midwsouthw",
            "MURYVALLEY": "Muryvalley",
            "OEMETRO": "Oemetro",
            "OENORTH": "Oenorth",
            "OESTHEAST": "Oestheast",
            "SEQLD": "Seqld",
            "TWEEDHEADS": "Tweedheads"
          }
        },
        "reading_route": {
          "type": "string",
          "description": "<p>Reading route.</p>"
        },
        "sensitive_load": {
          "type": "boolean",
          "default": false,
          "description": "<p>Whether there is sensitive load. Note that the existence of a Life Support record with \"registered\" status will take precedence over this.</p>"
        },
        "supply_end_date": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>Supply end date for current supply.</p>"
        },
        "supply_start_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Supply start date for current supply.</p>"
        }
      },
      "required": [
        "installation_id",
        "installation_type",
        "meters",
        "mpxn",
        "plant_fuel_type",
        "pricing_zone",
        "reading_route",
        "supply_start_date"
      ],
      "x-validators": [
        {
          "name": "Validate <code>⁨supply_end_date⁩</code> not before <code>⁨supply_start_date⁩</code>",
          "description": "Validates that <code>⁨supply_end_date⁩</code>, if given, is on or later than <code>⁨supply_start_date⁩</code>.",
          "possible_errors": [
            "start_date_later_than_end_date"
          ]
        },
        {
          "name": "Validate agreements do not start before supply start date",
          "description": "Validate that agreements do not start before the supply point's supply start date, if provided.",
          "possible_errors": [
            "agreement_start_date_before_supply_start_date"
          ]
        },
        {
          "name": "Validate installation id",
          "description": "Validates installation id can be converted to int and is within range.",
          "possible_errors": [
            "installation_id_out_of_range",
            "installation_id_should_be_integer"
          ]
        },
        {
          "name": "Validate parent nmi or mirn are provided",
          "description": "Validates parent nmi or mirn is required and provided by fuel type.",
          "possible_errors": [
            "field_not_allowed_for_fuel_type",
            "field_required_for_fuel_type"
          ]
        }
      ]
    },
    "EmbeddedWaterTransferReading": {
      "type": "object",
      "properties": {
        "reading_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Date of the reading.</p>"
        },
        "reading_quality": {
          "enum": [
            "ACTUAL",
            "ESTIMATED",
            "SKIPPED",
            "CUSTOMER"
          ],
          "type": "string",
          "x-spec-enum-id": "21b49b48d66a1ca8",
          "description": "<p>Reading quality.</p>",
          "x-enum-descriptions": {
            "ACTUAL": "Actual",
            "ESTIMATED": "Estimated",
            "SKIPPED": "Skipped",
            "CUSTOMER": "Customer"
          }
        },
        "reading_value": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,10}(?:\\.\\d{0,5})?$",
          "description": "<p>Reading value.</p>"
        }
      },
      "required": [
        "reading_date",
        "reading_quality",
        "reading_value"
      ]
    },
    "ExistingPaymentInstructionReference": {
      "type": "object",
      "properties": {
        "vendor_name": {
          "enum": [
            "WESTPAC"
          ],
          "type": "string",
          "x-spec-enum-id": "19baa89b6ef9d00c",
          "description": "<p>The payment vendor (e.g., gocardless, stripe) for the payment instruction.</p>",
          "x-enum-descriptions": {
            "WESTPAC": "Westpac"
          }
        },
        "vendor_reference": {
          "type": "string",
          "description": "<p>The reference of the mandate as known by the vendor for the payment instruction.</p>",
          "maxLength": 512
        }
      },
      "required": [
        "vendor_name",
        "vendor_reference"
      ]
    },
    "GasHistoricalReading": {
      "type": "object",
      "properties": {
        "average_heating_value": {
          "type": [
            "string",
            "null"
          ],
          "format": "decimal",
          "pattern": "^-?\\d{0,2}(?:\\.\\d{0,2})?$",
          "description": "<p>Average heating value.</p>"
        },
        "billed": {
          "type": "boolean",
          "description": "<p>Whether the reading has been billed.</p>"
        },
        "common_factor": {
          "type": [
            "string",
            "null"
          ],
          "format": "decimal",
          "pattern": "^-?\\d{0,5}(?:\\.\\d{0,6})?$",
          "description": "<p>Common factor.</p>"
        },
        "consumed_energy": {
          "type": [
            "string",
            "null"
          ],
          "format": "decimal",
          "pattern": "^-?\\d{0,11}(?:\\.\\d{0,0})?$",
          "description": "<p>Consumed energy.</p>"
        },
        "estimation_substitution_reason_code": {
          "enum": [
            "00",
            "01",
            "02",
            "03",
            "04",
            "05",
            "06",
            "07",
            "08",
            "09",
            "10",
            "11",
            "12",
            "13",
            "14",
            "15",
            "16",
            "17",
            "18",
            "19",
            "20",
            "21",
            "22",
            "23",
            "24",
            "25",
            "26",
            "27",
            "28",
            "29",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "eefbf0448ea8989d",
          "description": "<p>Estimation substitution reason code.</p>",
          "x-enum-descriptions": {
            "00": "Other",
            "01": "Meter Removed",
            "02": "Meter Obstructed",
            "03": "Dirty Dial",
            "04": "Cannot locate Meter",
            "05": "Gate Locked",
            "06": "Dog on Premises",
            "07": "Meter Changed",
            "08": "Refused Access",
            "09": "Locked Premises",
            "10": "Delayed Read",
            "11": "Adjustment Read",
            "12": "Damaged Meter",
            "13": "Dial out of Alignment",
            "14": "Key Required",
            "15": "Access Overgrown",
            "16": "Hi/Low Failure",
            "17": "Meter Capacity Failure",
            "18": "Customer bad read",
            "19": "Quarantined Premises",
            "20": "Extreme Weather Conditions",
            "21": "Unsafe equipment / location",
            "22": "Meter high / ladder required",
            "23": "Remote Read Device Not Registering",
            "24": "Remote Read Device Out of Alignment",
            "25": "Operational System Condition",
            "26": "Resource Limitations",
            "27": "Unable to Locate Premises",
            "28": "Communications Fault",
            "29": "Vacant Premises",
            "None": "None"
          }
        },
        "estimation_substitution_type": {
          "enum": [
            "E1",
            "E2",
            "E3",
            "E4",
            "S1",
            "S2",
            "S3",
            "S4",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "d315b90b76d8cd20",
          "description": "<p>Estimation substitution type.</p>",
          "x-enum-descriptions": {
            "E1": "Estimation method 1",
            "E2": "Estimation method 2",
            "E3": "RB/DB agreed value",
            "E4": "Estimation method 4 for QLD",
            "S1": "Substitution method 1",
            "S2": "Substitution method 2",
            "S3": "RB/DB agreed substituted value",
            "S4": "Substitution method 4 for QLD",
            "None": "None"
          }
        },
        "gas_meter_units": {
          "enum": [
            "M",
            "I",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "55229098b2a5b784",
          "description": "<p>Gas meter units.</p>",
          "x-enum-descriptions": {
            "M": "Metric",
            "I": "Imperial",
            "None": "None"
          }
        },
        "pressure_correction_factor": {
          "type": [
            "string",
            "null"
          ],
          "format": "decimal",
          "pattern": "^-?\\d{0,2}(?:\\.\\d{0,4})?$",
          "description": "<p>Pressure correction factor.</p>"
        },
        "prev_reading_date": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>Previous reading date.</p>"
        },
        "reading_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The date of the reading.</p>"
        },
        "reading_type": {
          "enum": [
            "CUSTOMER",
            "ESTIMATE",
            "ROUTINE",
            "SMART",
            "REGULAR"
          ],
          "type": "string",
          "x-spec-enum-id": "1ae88a4096677e8e",
          "description": "<p>The type of reading. See choices for more details.</p>",
          "x-enum-descriptions": {
            "CUSTOMER": "Customer",
            "ESTIMATE": "Estimate",
            "ROUTINE": "Routine",
            "SMART": "Smart",
            "REGULAR": "Regular"
          }
        },
        "reading_value": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,7}(?:\\.\\d{0,3})?$",
          "description": "<p>Reading value.</p>"
        },
        "register_id": {
          "type": "string",
          "description": "<p>The register identifier as provided in the Meter Technical Details (MTDs), including leading zeros.</p>",
          "maxLength": 32
        },
        "validation_status": {
          "enum": [
            "VALIDATED",
            "UNVALIDATED",
            "FAILED"
          ],
          "type": "string",
          "x-spec-enum-id": "3ab1e518b1b0a9db",
          "default": "VALIDATED",
          "description": "<p>Whether the reading has been validated or not. See choices for more details.</p>",
          "x-enum-descriptions": {
            "VALIDATED": "Validated",
            "UNVALIDATED": "Unvalidated",
            "FAILED": "Failed"
          }
        },
        "volume_flow": {
          "type": [
            "string",
            "null"
          ],
          "format": "decimal",
          "pattern": "^-?\\d{0,9}(?:\\.\\d{0,2})?$",
          "description": "<p>Volumn flow.</p>"
        }
      },
      "required": [
        "billed",
        "reading_date",
        "reading_type",
        "reading_value"
      ]
    },
    "GasMasterData": {
      "type": "object",
      "properties": {
        "baseload": {
          "type": [
            "string",
            "null"
          ],
          "format": "decimal",
          "pattern": "^-?\\d{0,8}(?:\\.\\d{0,1})?$",
          "description": "<p></p>"
        },
        "customer_characterisation": {
          "enum": [
            "Metropolitan Business",
            "Metropolitan Residential",
            "Non Metropolitan Business",
            "Non Metropolitan Residential"
          ],
          "type": "string",
          "x-spec-enum-id": "9d533322e22e46d0",
          "description": "<p>Describes whether the customer is metropolitan or non-metropolitan, and whether they are a residential or business customer.</p>",
          "x-enum-descriptions": {
            "Metropolitan Business": "Metro Business",
            "Metropolitan Residential": "Metro Residential",
            "Non Metropolitan Business": "Non Metro Business",
            "Non Metropolitan Residential": "Non Metro Residential"
          }
        },
        "customer_classification_code": {
          "enum": [
            "BUS",
            "RES",
            "UNKNOWN"
          ],
          "type": "string",
          "x-spec-enum-id": "63353d9709a8242d",
          "description": "<p>Customer classification code.</p>",
          "x-enum-descriptions": {
            "BUS": "Business",
            "RES": "Residential",
            "UNKNOWN": "Unknown"
          }
        },
        "customer_classification_threshold": {
          "enum": [
            "LOW",
            "MEDIUM",
            "HIGH",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "f6b091eeaa84bee3",
          "description": "<p>Customer classification threshold.</p>",
          "x-enum-descriptions": {
            "LOW": "Low",
            "MEDIUM": "Medium",
            "HIGH": "High",
            "None": "None"
          }
        },
        "distribution_tariff": {
          "enum": [
            "Volume",
            "Volume High",
            "Volume Boundary",
            "Demand",
            "Commercial"
          ],
          "type": "string",
          "x-spec-enum-id": "22781591b23eba59",
          "description": "<p>Distribution tariff.</p>",
          "x-enum-descriptions": {
            "Volume": "Volume",
            "Volume High": "Volume High",
            "Volume Boundary": "Volume Boundary",
            "Demand": "Demand",
            "Commercial": "Commercial"
          }
        },
        "heating_value_zone": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p>Heating value zone.</p>",
          "maxLength": 3
        },
        "market": {
          "enum": [
            "NSWACTGAS",
            "QLDGAS",
            "SAGAS",
            "VICGAS",
            "WAGAS",
            "ACTGAS",
            "NTGAS"
          ],
          "type": "string",
          "x-spec-enum-id": "7045e51163768b66",
          "description": "<p>Retail market.</p>",
          "x-enum-descriptions": {
            "NSWACTGAS": "New South Wales",
            "QLDGAS": "Queensland",
            "SAGAS": "South Australia",
            "VICGAS": "Victoria",
            "WAGAS": "Western Australia",
            "ACTGAS": "Australian Capital Territory",
            "NTGAS": "Northern Territory"
          }
        },
        "mirn_status": {
          "enum": [
            "Commissioned",
            "Decommissioned",
            "Deregistered",
            "Registered",
            "Unclaimed"
          ],
          "type": "string",
          "x-spec-enum-id": "41af05d61bef9fe8",
          "description": "<p>Meter point status.</p>",
          "x-enum-descriptions": {
            "Commissioned": "Commissioned",
            "Decommissioned": "Decommissioned",
            "Deregistered": "Deregistered",
            "Registered": "Registered",
            "Unclaimed": "Unclaimed"
          }
        },
        "network_id": {
          "type": "string",
          "description": "<p>Code that identifies a MIRN that is connected to a specific network section.</p>",
          "maxLength": 12
        },
        "temperature_sensitivity_factor": {
          "type": [
            "string",
            "null"
          ],
          "format": "decimal",
          "pattern": "^-?\\d{0,7}(?:\\.\\d{0,2})?$",
          "description": "<p></p>"
        },
        "transmission_zone": {
          "type": [
            "integer",
            "null"
          ],
          "maximum": 99,
          "minimum": 0,
          "description": "<p>Transmission zone.</p>"
        }
      },
      "required": [
        "customer_classification_code",
        "heating_value_zone",
        "market",
        "mirn_status"
      ]
    },
    "GasMeter": {
      "type": "object",
      "properties": {
        "billing_method": {
          "enum": [
            "O",
            "C",
            "D",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "1bbe4ecef1b595ba",
          "description": "<p>Billing method for the meter.</p>",
          "x-enum-descriptions": {
            "O": "Ordinary",
            "C": "Hot Water System",
            "D": "Deduct Billing",
            "None": "None"
          }
        },
        "installed_on": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>The date the meter was installed.</p>"
        },
        "kpa_value": {
          "type": [
            "string",
            "null"
          ],
          "format": "decimal",
          "pattern": "^-?\\d{0,5}(?:\\.\\d{0,4})?$",
          "description": "<p>KPA value.</p>"
        },
        "last_billed_to_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Date up to which consumption has been billed to.</p>"
        },
        "meter_installation_type": {
          "enum": [
            "M",
            "S",
            "O",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "5008be39c3d1c941",
          "description": "<p>Meter installation type.</p>",
          "x-enum-descriptions": {
            "M": "Master Meter",
            "S": "Sub Meter",
            "O": "Ordinary",
            "None": "None"
          }
        },
        "meter_measurement_unit": {
          "enum": [
            "M",
            "I",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "55229098b2a5b784",
          "description": "<p>Meter measurement unit.</p>",
          "x-enum-descriptions": {
            "M": "Metric",
            "I": "Imperial",
            "None": "None"
          }
        },
        "meter_multiplier": {
          "type": [
            "string",
            "null"
          ],
          "format": "decimal",
          "pattern": "^-?\\d{0,3}(?:\\.\\d{0,2})?$",
          "description": "<p>Meter multiplier.</p>"
        },
        "meter_position": {
          "enum": [
            "BA",
            "BG",
            "BH",
            "BR",
            "BV",
            "BW",
            "BY",
            "CE",
            "CP",
            "DR",
            "FA",
            "FD",
            "FF",
            "FH",
            "FL",
            "FR",
            "FS",
            "FV",
            "FW",
            "GA",
            "GR",
            "KC",
            "KI",
            "LS",
            "OB",
            "PA",
            "PO",
            "PY",
            "RS",
            "SH",
            "SK",
            "SP",
            "SR",
            "TO",
            "UB",
            "UC",
            "UF",
            "UL",
            "UP",
            "UR",
            "US",
            "WH"
          ],
          "type": "string",
          "x-spec-enum-id": "b2672f221b69f827",
          "description": "<p>Meter position.</p>",
          "x-enum-descriptions": {
            "BA": "Ba",
            "BG": "Bg",
            "BH": "Bh",
            "BR": "Br",
            "BV": "Bv",
            "BW": "Bw",
            "BY": "By",
            "CE": "Ce",
            "CP": "Cp",
            "DR": "Dr",
            "FA": "Fa",
            "FD": "Fd",
            "FF": "Ff",
            "FH": "Fh",
            "FL": "Fl",
            "FR": "Fr",
            "FS": "Fs",
            "FV": "Fv",
            "FW": "Fw",
            "GA": "Ga",
            "GR": "Gr",
            "KC": "Kc",
            "KI": "Ki",
            "LS": "Ls",
            "OB": "Ob",
            "PA": "Pa",
            "PO": "Po",
            "PY": "Py",
            "RS": "Rs",
            "SH": "Sh",
            "SK": "Sk",
            "SP": "Sp",
            "SR": "Sr",
            "TO": "To",
            "UB": "Ub",
            "UC": "Uc",
            "UF": "Uf",
            "UL": "Ul",
            "UP": "Up",
            "UR": "Ur",
            "US": "Us",
            "WH": "Wh"
          }
        },
        "meter_read_frequency": {
          "enum": [
            "Bi Monthly",
            "Daily",
            "Monthly",
            "Quarterly",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "9f2ea9c3ef129058",
          "description": "<p>Meter read frequency.</p>",
          "x-enum-descriptions": {
            "Bi Monthly": "Bi Monthly",
            "Daily": "Daily",
            "Monthly": "Monthly",
            "Quarterly": "Quarterly",
            "None": "None"
          }
        },
        "meter_read_type": {
          "enum": [
            "ACCUMULATION",
            "INTERVAL"
          ],
          "type": "string",
          "x-spec-enum-id": "4518b1b0277e90b2",
          "default": "ACCUMULATION",
          "description": "<p>Meter ready type. Defaults to <code>ACCUMULATION</code>.</p>",
          "x-enum-descriptions": {
            "ACCUMULATION": "Accumulation",
            "INTERVAL": "Interval"
          }
        },
        "meter_serial_number": {
          "type": "string",
          "description": "<p>Serial number of the meter.</p>",
          "maxLength": 32,
          "x-validators": [
            {
              "name": "Normalise Meter Serial Number",
              "description": "Normalises gas meter serial numbers to uppercase",
              "possible_errors": []
            }
          ]
        },
        "meter_status": {
          "enum": [
            "Turned on",
            "Turned off",
            "Plugged",
            "No meter",
            "Trailer AC",
            "No Reg"
          ],
          "type": "string",
          "x-spec-enum-id": "d5fc3bb4a12ad320",
          "description": "<p>Meter status.</p>",
          "x-enum-descriptions": {
            "Turned on": "Turned On",
            "Turned off": "Turned Off",
            "Plugged": "Plugged",
            "No meter": "No Meter",
            "Trailer AC": "Trailer Ac",
            "No Reg": "No Reg"
          }
        },
        "meter_type": {
          "enum": [
            "G",
            "W"
          ],
          "type": "string",
          "x-spec-enum-id": "d3681db792fd6e83",
          "default": "G",
          "description": "<p>Meter type. Defaults to <code>G</code>.</p>",
          "x-enum-descriptions": {
            "G": "Gas",
            "W": "Hot Water"
          }
        },
        "meter_type_size_code": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p>Meter type size code.</p>",
          "maxLength": 3
        },
        "next_scheduled_read_date": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>The next scheduled read date.</p>"
        },
        "number_of_dials_on_device": {
          "type": [
            "integer",
            "null"
          ],
          "description": "<p>Number of dials on device.</p>"
        },
        "reading_history": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/GasHistoricalReading"
          },
          "description": "<p>List of historical readings. Generally these are readings prior to the one(s) provided under transfer_readings.\nIt is possible to provide readings in the reading_history after the transfer_reading date but these must be unbilled.\n</p>"
        },
        "removed_on": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>The date the meter was removed.</p>"
        },
        "supply_point_code": {
          "enum": [
            "Basic",
            "Interval",
            "Transmission"
          ],
          "type": "string",
          "x-spec-enum-id": "e2d721230a3cd8f8",
          "description": "<p>Meter supply point code.</p>",
          "x-enum-descriptions": {
            "Basic": "Basic",
            "Interval": "Interval",
            "Transmission": "Transmission"
          }
        },
        "supply_point_id": {
          "type": "string",
          "description": "<p>Meter supply point ID.</p>",
          "maxLength": 13
        },
        "transfer_readings": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/GasTransferReading"
          },
          "description": "<p>\nOnly the last reading (or readings, if the meter is ECO7 or ECO10) the account has been billed up to.</br>\nIf the account has never been billed, the SSD reading(s) must be on this list.</br>\nIt’s expected that a transfer reading will be given per register on an active accumulation meter in the case of electricity and a reading per active gas meter.</br>\nIt’s expected that all transfer reading dates will match the last_billed_to_date.\n</p>"
        }
      },
      "required": [
        "meter_serial_number"
      ]
    },
    "GasMeterPoint": {
      "type": "object",
      "properties": {
        "supply_type": {
          "enum": [
            "ELECTRICITY",
            "GAS",
            "UNMETERED_GAS",
            "UNMETERED_ELECTRICITY",
            "WATER",
            "EMBEDDED_WATER",
            "EMBEDDED_ELECTRICITY",
            "EMBEDDED_GAS",
            "SOLAR_PPA",
            "REGOS_EXPORT_CERTIFICATES",
            "ROCS_EXPORT_CERTIFICATES",
            "BROADBAND",
            "HEAT_PUMP",
            "WATER_HEATER",
            "ELECTRICITY_DISTRIBUTION",
            "LIGHT",
            "POLE"
          ],
          "type": "string",
          "x-spec-enum-id": "b093b6cd0238d6bd",
          "default": "GAS",
          "description": "<p>Supply type of the supply point.</p>",
          "x-enum-descriptions": {
            "ELECTRICITY": "Electricity",
            "GAS": "Gas",
            "UNMETERED_GAS": "Unmetered Gas",
            "UNMETERED_ELECTRICITY": "Unmetered Electricity",
            "WATER": "Water",
            "EMBEDDED_WATER": "Embedded Water",
            "EMBEDDED_ELECTRICITY": "Embedded Electricity",
            "EMBEDDED_GAS": "Embedded Gas",
            "SOLAR_PPA": "Solar PPA",
            "REGOS_EXPORT_CERTIFICATES": "REGOs Export Certificates",
            "ROCS_EXPORT_CERTIFICATES": "ROCs Export Certificates",
            "BROADBAND": "Broadband",
            "HEAT_PUMP": "Heat Pump",
            "WATER_HEATER": "Water Heater",
            "ELECTRICITY_DISTRIBUTION": "Electricity Distribution",
            "LIGHT": "Light",
            "POLE": "Pole"
          }
        },
        "access_details": {
          "type": "string",
          "description": "<p>Access details for the meter point. No details indicates “Customer reports no access requirements”. Can’t be longer than 160 characters.</p>",
          "maxLength": 160
        },
        "address": {
          "allOf": [
            {
              "$ref": "#/$defs/GasStructuredAddress"
            }
          ],
          "description": "<p>The address to be associated with this gas meter point.</p>"
        },
        "agreements": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/AusAgreement"
          },
          "description": "<p>List of agreements linked to the supply point.</p>",
          "x-validators": [
            {
              "name": "Validate product addon code and tariff code combination",
              "description": "aus:data-import--validation-product-addon-code-and-product-code-combination--help-text",
              "possible_errors": [
                "invalid_product_addon_code_and_product_code_combination"
              ]
            }
          ]
        },
        "dog_code": {
          "enum": [
            "Bluff",
            "Savage",
            "Tied",
            "Friendly",
            "Dog OK",
            "Dog Caution",
            "No Dog",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "d63e05b877b7aa4b",
          "description": "<p>Dog code.</p>",
          "x-enum-descriptions": {
            "Bluff": "Bluff",
            "Savage": "Savage",
            "Tied": "Tied",
            "Friendly": "Friendly",
            "Dog OK": "Dog Ok",
            "Dog Caution": "Dog Caution",
            "No Dog": "No Dog",
            "None": "None"
          }
        },
        "hazard_details": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "<p>Hazard details for the meterpoint.</br>\nNo supplied hazard details indicates “Not Known To Initiator”.</br>\nSpecifying a single details of “Not Known To Initiator” also indicates “Not Known To Initiator”.</br>\nIf the value is “Customer Reports No Hazard” or “Not Known To Initiator”, no other values may be provided.\nThe following are the market specified hazards:\n<ul>\n        <li>Customer Reports No Hazard</li>\n        <li>Dog</li>\n        <li>Electric Fence</li>\n        <li>Customer Caution</li>\n        <li>Electrical Safety Issue</li>\n        <li>Asbestos Fuse</li>\n        <li>Asbestos Board</li>\n        <li>Not Known To Initiator</li>\n</ul>\nOther values are the custom hazards and each of them can’t be longer than 100 characters.\n</p>",
          "x-validators": [
            {
              "name": "Validate hazard details",
              "description": "Validates that <code>Customer Reports No Hazard</code> and <code>\"Not Known To Initiator</code> cannot be combined with other market specified hazards.",
              "possible_errors": [
                "no_hazard_cannot_combine_with_other_hazards",
                "not_known_cannot_combine_with_other_hazards"
              ]
            },
            {
              "name": "Validate hazard details",
              "description": "<p>Hazard details for the meterpoint.</br>\nNo supplied hazard details indicates “Not Known To Initiator”.</br>\nSpecifying a single details of “Not Known To Initiator” also indicates “Not Known To Initiator”.</br>\nIf the value is “Customer Reports No Hazard” or “Not Known To Initiator”, no other values may be provided.\nThe following are the market specified hazards:\n<ul>\n        <li>Customer Reports No Hazard</li>\n        <li>Dog</li>\n        <li>Electric Fence</li>\n        <li>Customer Caution</li>\n        <li>Electrical Safety Issue</li>\n        <li>Asbestos Fuse</li>\n        <li>Asbestos Board</li>\n        <li>Not Known To Initiator</li>\n</ul>\nOther values are the custom hazards and each of them can’t be longer than 100 characters.\n</p>",
              "possible_errors": []
            }
          ]
        },
        "identifier": {
          "type": "string",
          "description": "<p> The unique identifier for the supply point.</p>",
          "x-validators": [
            {
              "name": "Validate the supply point identifier",
              "description": "Validate that the supply point identifier in the payload is valid for the territory that the account is importing in.",
              "possible_errors": [
                "invalid_supply_point_identifier"
              ]
            }
          ]
        },
        "last_billed_to_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Date up to which consumption has been billed on the supply point.</p><p>If the supply point has never been billed before, this should be the supply start date for the supply point and Kraken will bill from then.</p><p>If the supply point has been billed before, this typically represents the date of the reading that was last charged to. Kraken will then start to bill from this point.</p><p>This date is inclusive. If the equivalent date in the source system is exclusive make sure to add a day to the value before passing to Kraken.</p>"
        },
        "master_data": {
          "allOf": [
            {
              "$ref": "#/$defs/GasMasterData"
            }
          ],
          "description": "<p>The master data associated with this gas meter point.</p>"
        },
        "meter_position": {
          "enum": [
            "BA",
            "BG",
            "BH",
            "BR",
            "BV",
            "BW",
            "BY",
            "CE",
            "CP",
            "DR",
            "FA",
            "FD",
            "FF",
            "FH",
            "FL",
            "FR",
            "FS",
            "FV",
            "FW",
            "GA",
            "GR",
            "KC",
            "KI",
            "LS",
            "OB",
            "PA",
            "PO",
            "PY",
            "RS",
            "SH",
            "SK",
            "SP",
            "SR",
            "TO",
            "UB",
            "UC",
            "UF",
            "UL",
            "UP",
            "UR",
            "US",
            "WH",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "b2672f221b69f827",
          "description": "<p>Meter position code.</p>",
          "x-enum-descriptions": {
            "BA": "Ba",
            "BG": "Bg",
            "BH": "Bh",
            "BR": "Br",
            "BV": "Bv",
            "BW": "Bw",
            "BY": "By",
            "CE": "Ce",
            "CP": "Cp",
            "DR": "Dr",
            "FA": "Fa",
            "FD": "Fd",
            "FF": "Ff",
            "FH": "Fh",
            "FL": "Fl",
            "FR": "Fr",
            "FS": "Fs",
            "FV": "Fv",
            "FW": "Fw",
            "GA": "Ga",
            "GR": "Gr",
            "KC": "Kc",
            "KI": "Ki",
            "LS": "Ls",
            "OB": "Ob",
            "PA": "Pa",
            "PO": "Po",
            "PY": "Py",
            "RS": "Rs",
            "SH": "Sh",
            "SK": "Sk",
            "SP": "Sp",
            "SR": "Sr",
            "TO": "To",
            "UB": "Ub",
            "UC": "Uc",
            "UF": "Uf",
            "UL": "Ul",
            "UP": "Up",
            "UR": "Ur",
            "US": "Us",
            "WH": "Wh",
            "None": "None"
          }
        },
        "meters": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/GasMeter"
          },
          "description": "<p>List of active and exchanged meters on the meter point.</p>"
        },
        "mpxn": {
          "type": "string",
          "description": "<p>MIRN or NMI of this meter point, UNMETERED_GAS_COOKTOP for unmetered gas cooktop, or UNMETERED_GAS_HEATER for unmetered gas heater. For CES water meter, the value should be prefixed with EMBEDDED_WATER_ (the prefix will not be saved).</p>"
        },
        "multiplier": {
          "type": [
            "string",
            "null"
          ],
          "format": "decimal",
          "pattern": "^-?\\d{0,3}(?:\\.\\d{0,2})?$",
          "description": "<p></p>"
        },
        "role_assignments": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/GasRoleAssignment"
          },
          "description": "<p>List of gas role assignments. Required for gas meter points.</p>",
          "maxItems": 2,
          "minItems": 2
        },
        "sensitive_load": {
          "type": "boolean",
          "default": false,
          "description": "<p>Whether there is sensitive load. Note that the existence of a Life Support record with \"registered\" status will take precedence over this.</p>"
        },
        "supply_end_date": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>Supply end date for current supply.</p>"
        },
        "supply_start_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Supply start date for current supply.</p>"
        }
      },
      "required": [
        "address",
        "master_data",
        "mpxn",
        "role_assignments",
        "supply_start_date"
      ],
      "x-validators": [
        {
          "name": "Validate <code>⁨supply_end_date⁩</code> not before <code>⁨supply_start_date⁩</code>",
          "description": "Validates that <code>⁨supply_end_date⁩</code>, if given, is on or later than <code>⁨supply_start_date⁩</code>.",
          "possible_errors": [
            "start_date_later_than_end_date"
          ]
        },
        {
          "name": "Validate agreements do not start before supply start date",
          "description": "Validate that agreements do not start before the supply point's supply start date, if provided.",
          "possible_errors": [
            "agreement_start_date_before_supply_start_date"
          ]
        },
        {
          "name": "Validate required meter fields are provided",
          "description": "Validates some of the required gas meter fields are provided if no 'removed_on'.",
          "possible_errors": [
            "required"
          ]
        }
      ]
    },
    "GasRoleAssignment": {
      "type": "object",
      "properties": {
        "party": {
          "type": "string",
          "description": "<p>Role identifier.</p>"
        },
        "role": {
          "enum": [
            "FRO",
            "DB"
          ],
          "type": "string",
          "x-spec-enum-id": "c88906cd20f34117",
          "description": "<p>Role assignment code.</p>",
          "x-enum-descriptions": {
            "FRO": "FRO",
            "DB": "DB"
          }
        }
      },
      "required": [
        "party",
        "role"
      ]
    },
    "GasStructuredAddress": {
      "type": "object",
      "properties": {
        "building_or_property_name": {
          "type": "string",
          "description": "<p>Building or property name. No longer than 60 chars as two lines of 30 chars each. If more than 30 chars, there must be a <code>\\n</code> after 30 chars.</p>",
          "maxLength": 60
        },
        "delivery_point_identifier": {
          "type": "string",
          "description": "<p>Delivery point identifier.</p>"
        },
        "flat_or_unit_number": {
          "type": "string",
          "description": "<p>if supplied, <code>flat_or_unit_type</code> must be as well. limit of 7 characters, numbers and <code>.</code> with optional alphabetical prefix and suffix.</p>"
        },
        "flat_or_unit_type": {
          "enum": [
            "ANT",
            "APT",
            "ATM",
            "BBQ",
            "BLCK",
            "BTSD",
            "BLDG",
            "BNGW",
            "CAGE",
            "CARP",
            "CARS",
            "CLUB",
            "COOL",
            "CTGE",
            "DUP",
            "FY",
            "F",
            "GRGE",
            "HALL",
            "HSE",
            "KSK",
            "LSE",
            "LBBY",
            "LOFT",
            "LOT",
            "MSNT",
            "MB",
            "OFF",
            "PTHS",
            "REAR",
            "RESV",
            "RM",
            "SEC",
            "SHED",
            "SHOP",
            "SHRM",
            "SIGN",
            "SITE",
            "SL",
            "STOR",
            "STR",
            "STU",
            "SUBS",
            "SE",
            "TNCY",
            "TWR",
            "TNHS",
            "U",
            "VLT",
            "VLLA",
            "WARD",
            "WE",
            "WKSH",
            ""
          ],
          "type": "string",
          "x-spec-enum-id": "9306e5734ae7a103",
          "description": "<p>Flat or unit type.</p>",
          "x-enum-descriptions": {
            "ANT": "Antenna",
            "APT": "Apartment",
            "ATM": "ATM",
            "BBQ": "Barbeque",
            "BLCK": "Block",
            "BTSD": "Boatshed",
            "BLDG": "Building",
            "BNGW": "Bungalow",
            "CAGE": "Cage",
            "CARP": "Carpark",
            "CARS": "Carspace",
            "CLUB": "Club",
            "COOL": "Coolroom",
            "CTGE": "Cottage",
            "DUP": "Duplex",
            "FY": "Factory",
            "F": "Flat",
            "GRGE": "Garage",
            "HALL": "Hall",
            "HSE": "House",
            "KSK": "Kiosk",
            "LSE": "Lease",
            "LBBY": "Lobby",
            "LOFT": "Loft",
            "LOT": "Lot",
            "MSNT": "Maisonette",
            "MB": "Marine Berth",
            "OFF": "Office",
            "PTHS": "Penthouse",
            "REAR": "Rear",
            "RESV": "Reserve",
            "RM": "Room",
            "SEC": "Section",
            "SHED": "Shed",
            "SHOP": "Shop",
            "SHRM": "Showroom",
            "SIGN": "Sign",
            "SITE": "Site",
            "SL": "Stall",
            "STOR": "Store",
            "STR": "Strata Unit",
            "STU": "Studio",
            "SUBS": "Substation",
            "SE": "Suite",
            "TNCY": "Tenancy",
            "TWR": "Tower",
            "TNHS": "Townhouse",
            "U": "Unit",
            "VLT": "Vault",
            "VLLA": "Villa",
            "WARD": "Ward",
            "WE": "Warehouse",
            "WKSH": "Workshop",
            "": ""
          }
        },
        "floor_or_level_number": {
          "type": "string",
          "description": "<p>if supplied, <code>floor_or_level_type</code> must be as well. limit of 5 characters, numbers and <code>.</code> with optional alphabetical prefix and suffix</p>"
        },
        "floor_or_level_type": {
          "enum": [
            "B",
            "FL",
            "G",
            "L",
            "LG",
            "M",
            "LL",
            "OD",
            "P",
            "PTHS",
            "PLF",
            "PDM",
            "RT",
            "SB",
            "UG",
            "LB",
            ""
          ],
          "type": "string",
          "x-spec-enum-id": "9810b2a79eb3d5cf",
          "description": "<p>Floor or level type.</p>",
          "x-enum-descriptions": {
            "B": "Basement",
            "FL": "Floor",
            "G": "Ground",
            "L": "Level",
            "LG": "Lower Ground",
            "M": "Mezzanine",
            "LL": "Lower Level",
            "OD": "Observation Deck",
            "P": "Parking",
            "PTHS": "Penthouse",
            "PLF": "Platform",
            "PDM": "Podium",
            "RT": "Rooftop",
            "SB": "Sub-Basement",
            "UG": "Upper Ground",
            "LB": "Lobby",
            "": ""
          }
        },
        "house": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/CommonHouse"
          },
          "description": "<p>House object.</p>",
          "maxItems": 2
        },
        "location_descriptor": {
          "type": "string",
          "description": "<p>A description of the location.</p>"
        },
        "lot_number": {
          "type": "string",
          "description": "<p>Letters, numbers and <code>.</code>.</p>",
          "maxLength": 6
        },
        "melway_grid_reference": {
          "type": "string",
          "description": "<p>Melway grid reference.</p>",
          "maxLength": 9
        },
        "postcode": {
          "type": "string",
          "description": "<p>Australian postcode.</p>",
          "maxLength": 10
        },
        "state_or_territory": {
          "type": "string",
          "description": "<p>Australian state or territory.</p>",
          "maxLength": 3
        },
        "street": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/CommonStreet"
          },
          "description": "<p>Street object.</p>",
          "maxItems": 2
        },
        "suburb_or_place_or_locality": {
          "type": "string",
          "description": "<p>Suburb or place or locality.</p>"
        }
      },
      "required": [
        "postcode"
      ]
    },
    "GasTransferReading": {
      "type": "object",
      "properties": {
        "average_heating_value": {
          "type": [
            "string",
            "null"
          ],
          "format": "decimal",
          "pattern": "^-?\\d{0,2}(?:\\.\\d{0,2})?$",
          "description": "<p>Average heating value.</p>"
        },
        "common_factor": {
          "type": [
            "string",
            "null"
          ],
          "format": "decimal",
          "pattern": "^-?\\d{0,5}(?:\\.\\d{0,6})?$",
          "description": "<p>Common factor.</p>"
        },
        "consumed_energy": {
          "type": [
            "string",
            "null"
          ],
          "format": "decimal",
          "pattern": "^-?\\d{0,11}(?:\\.\\d{0,0})?$",
          "description": "<p>Consumed energy.</p>"
        },
        "estimation_substitution_reason_code": {
          "enum": [
            "00",
            "01",
            "02",
            "03",
            "04",
            "05",
            "06",
            "07",
            "08",
            "09",
            "10",
            "11",
            "12",
            "13",
            "14",
            "15",
            "16",
            "17",
            "18",
            "19",
            "20",
            "21",
            "22",
            "23",
            "24",
            "25",
            "26",
            "27",
            "28",
            "29",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "eefbf0448ea8989d",
          "description": "<p>Estimation substitution reason code.</p>",
          "x-enum-descriptions": {
            "00": "Other",
            "01": "Meter Removed",
            "02": "Meter Obstructed",
            "03": "Dirty Dial",
            "04": "Cannot locate Meter",
            "05": "Gate Locked",
            "06": "Dog on Premises",
            "07": "Meter Changed",
            "08": "Refused Access",
            "09": "Locked Premises",
            "10": "Delayed Read",
            "11": "Adjustment Read",
            "12": "Damaged Meter",
            "13": "Dial out of Alignment",
            "14": "Key Required",
            "15": "Access Overgrown",
            "16": "Hi/Low Failure",
            "17": "Meter Capacity Failure",
            "18": "Customer bad read",
            "19": "Quarantined Premises",
            "20": "Extreme Weather Conditions",
            "21": "Unsafe equipment / location",
            "22": "Meter high / ladder required",
            "23": "Remote Read Device Not Registering",
            "24": "Remote Read Device Out of Alignment",
            "25": "Operational System Condition",
            "26": "Resource Limitations",
            "27": "Unable to Locate Premises",
            "28": "Communications Fault",
            "29": "Vacant Premises",
            "None": "None"
          }
        },
        "estimation_substitution_type": {
          "enum": [
            "E1",
            "E2",
            "E3",
            "E4",
            "S1",
            "S2",
            "S3",
            "S4",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "d315b90b76d8cd20",
          "description": "<p>Estimation substitution type.</p>",
          "x-enum-descriptions": {
            "E1": "Estimation method 1",
            "E2": "Estimation method 2",
            "E3": "RB/DB agreed value",
            "E4": "Estimation method 4 for QLD",
            "S1": "Substitution method 1",
            "S2": "Substitution method 2",
            "S3": "RB/DB agreed substituted value",
            "S4": "Substitution method 4 for QLD",
            "None": "None"
          }
        },
        "gas_meter_units": {
          "enum": [
            "M",
            "I",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "55229098b2a5b784",
          "description": "<p>Gas meter units.</p>",
          "x-enum-descriptions": {
            "M": "Metric",
            "I": "Imperial",
            "None": "None"
          }
        },
        "pressure_correction_factor": {
          "type": [
            "string",
            "null"
          ],
          "format": "decimal",
          "pattern": "^-?\\d{0,2}(?:\\.\\d{0,4})?$",
          "description": "<p>Pressure correction factor.</p>"
        },
        "prev_reading_date": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>Previous reading date.</p>"
        },
        "reading_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The date of the reading.</p>"
        },
        "reading_type": {
          "enum": [
            "CUSTOMER",
            "ESTIMATE",
            "ROUTINE",
            "SMART",
            "REGULAR"
          ],
          "type": "string",
          "x-spec-enum-id": "1ae88a4096677e8e",
          "description": "<p>The type of reading. See choices for more details.</p>",
          "x-enum-descriptions": {
            "CUSTOMER": "Customer",
            "ESTIMATE": "Estimate",
            "ROUTINE": "Routine",
            "SMART": "Smart",
            "REGULAR": "Regular"
          }
        },
        "reading_value": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,7}(?:\\.\\d{0,3})?$",
          "description": "<p>Reading value.</p>"
        },
        "register_id": {
          "type": "string",
          "description": "<p>The register identifier as provided in the Meter Technical Details (MTDs), including leading zeros.</p>",
          "maxLength": 32
        },
        "volume_flow": {
          "type": [
            "string",
            "null"
          ],
          "format": "decimal",
          "pattern": "^-?\\d{0,9}(?:\\.\\d{0,2})?$",
          "description": "<p>Volumn flow.</p>"
        }
      },
      "required": [
        "reading_date",
        "reading_type",
        "reading_value"
      ]
    },
    "GuaranteeOfOriginConfiguration": {
      "type": "object",
      "properties": {
        "term_type": {
          "type": "string",
          "description": "<p>The type of the contract term.</p>"
        },
        "guarantee_of_origin_percentage": {
          "enum": [
            0,
            25,
            50,
            75,
            100
          ],
          "type": "integer",
          "x-spec-enum-id": "fb9427e17f642d36",
          "description": "data-import--field-definition--guarantee-of-origin-configuration--guarantee-of-origin-percentage-help",
          "x-enum-descriptions": {
            "0": "0",
            "25": "25",
            "50": "50",
            "75": "75",
            "100": "100"
          }
        },
        "is_variable": {
          "type": "boolean",
          "default": true,
          "description": "<p>Whether the contract term is variable in Kraken or not. If not, it must be amended by a new contract.</p>"
        }
      },
      "required": [
        "guarantee_of_origin_percentage",
        "term_type"
      ]
    },
    "HardshipAgreement": {
      "type": "object",
      "properties": {
        "end_date": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>The date the hardship agreement ends (inclusive).</p>"
        },
        "exit_reason": {
          "enum": [
            "INITIAL_PAYMENT_PLAN_NOT_ESTABLISHED",
            "CUSTOMER_REQUEST",
            "PAYMENT_PLAN_BROKEN_FOR_NON_PAYMENT",
            "PAYMENT_PLAN_COMPLETED_SUCCESSFULLY",
            "FURTHER_PAYMENT_PLAN_NOT_ESTABLISHED",
            "ACCOUNT_FINALISED",
            "RAISED_IN_ERROR",
            "NO_ENGAGEMENT",
            "CREDIT_OR_NIL_BALANCE",
            "OTHER",
            ""
          ],
          "type": "string",
          "x-spec-enum-id": "ce0b3239ec445c26",
          "description": "<p>The reason for the hardship agreement ending.</p>",
          "x-enum-descriptions": {
            "INITIAL_PAYMENT_PLAN_NOT_ESTABLISHED": "Initial payment plan not established",
            "CUSTOMER_REQUEST": "Customer request",
            "PAYMENT_PLAN_BROKEN_FOR_NON_PAYMENT": "Payment plan broken for non-payment",
            "PAYMENT_PLAN_COMPLETED_SUCCESSFULLY": "Payment plan completed successfully",
            "FURTHER_PAYMENT_PLAN_NOT_ESTABLISHED": "Further payment plan not established",
            "ACCOUNT_FINALISED": "Account finalised",
            "RAISED_IN_ERROR": "Raised in Error",
            "NO_ENGAGEMENT": "No Engagement",
            "CREDIT_OR_NIL_BALANCE": "Credit or nil balance",
            "OTHER": "Other",
            "": ""
          }
        },
        "exit_reason_details": {
          "type": "string",
          "description": "<p>Text for hardship agreement exit reason details if <code>exit_reason</code> is set to <code>OTHER</code>.</p>",
          "maxLength": 512
        },
        "hardship_details": {
          "type": "string",
          "description": "<p>Optional text for hardship agreement details.</p>"
        },
        "hardship_entry_reason": {
          "enum": [
            "SELF_IDENTIFIED",
            "EXTERNAL_REFERENCE",
            "RETAILER_REFERRAL"
          ],
          "type": "string",
          "x-spec-enum-id": "9e8509f7b4a74ace",
          "description": "<p>The reason for the hardship agreement.</p>",
          "x-enum-descriptions": {
            "SELF_IDENTIFIED": "Customer self-identified as being in hardship",
            "EXTERNAL_REFERENCE": "Financial counsellor or external agent referral",
            "RETAILER_REFERRAL": "Retailer referral"
          }
        },
        "hardship_type": {
          "enum": [
            "DEATH_IN_FAMILY",
            "HOUSEHOLD_ILLNESS",
            "FAMILY_VIOLENCE",
            "UNEMPLOYMENT",
            "REDUCED_INCOME",
            "OTHER"
          ],
          "type": "string",
          "x-spec-enum-id": "badc249c235661ae",
          "description": "<p>The type of hardship agreement.</p>",
          "x-enum-descriptions": {
            "DEATH_IN_FAMILY": "Death in the family",
            "HOUSEHOLD_ILLNESS": "Household illness",
            "FAMILY_VIOLENCE": "Family violence",
            "UNEMPLOYMENT": "Unemployment",
            "REDUCED_INCOME": "Reduced income",
            "OTHER": "Other"
          }
        },
        "payment_plan_details": {
          "type": "string",
          "description": "<p>Details of the payment plan for the hardship agreement.</p>",
          "maxLength": 512
        },
        "start_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The date the hardship agreement starts (inclusive).</p>"
        }
      },
      "required": [
        "hardship_entry_reason",
        "hardship_type",
        "start_date"
      ],
      "x-validators": [
        {
          "name": "Validate <code>⁨end_date⁩</code> not before <code>⁨start_date⁩</code>",
          "description": "Validates that <code>⁨end_date⁩</code>, if given, is on or later than <code>⁨start_date⁩</code>.",
          "possible_errors": [
            "start_date_later_than_end_date"
          ]
        },
        {
          "name": "Validate that end date is set with exit reason",
          "description": "Validates that a hardship agreement end date is set together with an exit reason.",
          "possible_errors": [
            "hardship_agreement_end_date_not_set_with_exit_reason"
          ]
        },
        {
          "name": "Validate exit reason details",
          "description": "Validates that a hardship agreement exit reason details is provided when its exit reason is set to OTHER.",
          "possible_errors": [
            "missing_hardship_agreement_exit_reason_details"
          ]
        }
      ]
    },
    "IndexationOption": {
      "type": "object",
      "properties": {
        "escalation_start_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Date the indexation applies from.</p>"
        },
        "index_code": {
          "type": "string",
          "description": "<p>The code for the relevant index.</p>"
        }
      },
      "required": [
        "escalation_start_date",
        "index_code"
      ]
    },
    "LatePaymentFees": {
      "type": "object",
      "properties": {
        "term_type": {
          "type": "string",
          "description": "<p>The type of the contract term.</p>"
        },
        "flat_fee_amount": {
          "type": "integer",
          "minimum": 0,
          "description": "<p>The flat amount added to each late payment fee, in the lowest denomination for the currency.</p>"
        },
        "interest_policy_name": {
          "enum": [
            "",
            "RBA"
          ],
          "type": "string",
          "x-spec-enum-id": "755d70bd45dbabbb",
          "description": "<p>The interest policy to use for late payment fee calculations.</p>",
          "x-enum-descriptions": {
            "": "---------",
            "RBA": "RBA"
          }
        },
        "is_variable": {
          "type": "boolean",
          "default": true,
          "description": "<p>Whether the contract term is variable in Kraken or not. If not, it must be amended by a new contract.</p>"
        },
        "percentage_fee": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,3}(?:\\.\\d{0,2})?$",
          "description": "<p>The percentage fee to be applied as part of the late payment fee calculations.</p>"
        },
        "percentage_interval_days": {
          "type": "integer",
          "minimum": 0,
          "description": "<p>The interval the percentage fee rate represents in days (365 = annual).</p>"
        }
      },
      "required": [
        "flat_fee_amount",
        "percentage_fee",
        "percentage_interval_days",
        "term_type"
      ]
    },
    "Ledger": {
      "type": "object",
      "properties": {
        "ledger_code": {
          "type": "string",
          "description": "<p>The code of the relevant Kraken ledger type.</p>",
          "x-validators": [
            {
              "name": "Validate ledger code",
              "description": "Validates that the ledger code provided in the payload matches an available ledger type in Kraken.",
              "possible_errors": [
                "ledger_code_does_not_exist"
              ]
            }
          ]
        },
        "ledger_identifier": {
          "type": "string",
          "description": "<p> A unique string value that helps to refer a ledger object across the payload.</p>"
        }
      },
      "required": [
        "ledger_code"
      ]
    },
    "Metadata": {
      "type": "object",
      "properties": {
        "key": {
          "type": "string",
          "description": "<p>The key on which the metadata will be stored on.</p>",
          "maxLength": 1024
        },
        "value": {
          "description": "<p>A json object containing any arbitrary piece of data to store in relation to the account.</p>"
        }
      },
      "required": [
        "key",
        "value"
      ]
    },
    "MeterPoint": {
      "oneOf": [
        {
          "$ref": "#/$defs/ElectricityMeterPoint"
        },
        {
          "$ref": "#/$defs/EmbeddedElecMeterPoint"
        },
        {
          "$ref": "#/$defs/EmbeddedWaterMeterPoint"
        },
        {
          "$ref": "#/$defs/GasMeterPoint"
        },
        {
          "$ref": "#/$defs/UnmeteredGasSupplyPoint"
        },
        {
          "$ref": "#/$defs/EmbeddedGasMeterPoint"
        },
        {
          "$ref": "#/$defs/SolarPPASupplyPoint"
        },
        {
          "$ref": "#/$defs/UnmeteredElectricitySupplyPoint"
        }
      ]
    },
    "MinimumContractLength": {
      "type": "object",
      "properties": {
        "term_type": {
          "type": "string",
          "description": "<p>The type of the contract term.</p>"
        },
        "contract_identifier": {
          "type": "string",
          "description": "<p>Unique identifier of the contract.</p>"
        },
        "is_variable": {
          "type": "boolean",
          "default": true,
          "description": "<p>Whether the contract term is variable in Kraken or not. If not, it must be amended by a new contract.</p>"
        },
        "length": {
          "type": "integer",
          "minimum": 1,
          "description": "<p>Minimum length of the contract.</p>"
        },
        "unit_of_time": {
          "enum": [
            "WEEK",
            "MONTH",
            "YEAR"
          ],
          "type": "string",
          "x-spec-enum-id": "2dd8361d760ce9df",
          "description": "<p>Unit of time used to measure the length of the contract.</p>",
          "x-enum-descriptions": {
            "WEEK": "Week",
            "MONTH": "Month",
            "YEAR": "Year"
          }
        }
      },
      "required": [
        "contract_identifier",
        "length",
        "term_type",
        "unit_of_time"
      ]
    },
    "NewPaymentInstructionReference": {
      "type": "object",
      "properties": {
        "instruction_identifier": {
          "type": "string",
          "description": "<p>Identifier for the payment instruction from the <code>payment_instructions</code>. This will be used to refer to a payment instruction in the same payload for the payment preference.</p>",
          "maxLength": 512
        }
      },
      "required": [
        "instruction_identifier"
      ]
    },
    "Note": {
      "type": "object",
      "properties": {
        "body": {
          "type": "string",
          "description": "<p>The body of the note. Should include who/what created the note if this is required.</p>"
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "description": "<p>The date and time the note was created.</p>"
        },
        "document_paths": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/NoteDocument"
          },
          "description": "<p>A list of relative paths in S3 for documents to be attached to the note.</p><p>More details on document path parameters can be found <a href=\"/rest/guides/data-import/basics#document-paths\">here</a>.</p>"
        },
        "external_id": {
          "type": "string",
          "description": "<p>Unique identifier for this note to avoid duplicate entries.</p>"
        },
        "is_archived": {
          "type": "boolean",
          "description": "<p>If set to true, this will archive the note in the Kraken account support site page.</p>"
        },
        "is_pinned": {
          "type": "boolean",
          "description": "<p>If set to true, this will pin the note to the top of the Kraken account support site page.</p>"
        },
        "unpin_at": {
          "type": "string",
          "format": "date-time",
          "description": "<p>When the pinned note should be unpinned. Has to be later than <code>created_at</code> if this is provided. Has no effect if the note is not pinned.</p>"
        }
      },
      "x-validators": [
        {
          "name": "Validate note body or document paths provided",
          "description": "Validate that at least a note body or document paths are provided.",
          "possible_errors": [
            "note_body_or_document_path_not_found"
          ]
        },
        {
          "name": "Validate note created at is equal to or before unpin at",
          "description": "Validate that the note's created at date is equal to or before the unpin at date if both are provided.",
          "possible_errors": [
            "note_unpin_at_earlier_than_creation_date"
          ]
        }
      ]
    },
    "NoteDocument": {
      "type": "object",
      "properties": {
        "document_path": {
          "type": "string",
          "description": "<p>The S3 relative path to the document to be attached to the note.</p>",
          "x-validators": [
            {
              "name": "Validate path exists in file store",
              "description": "Validate that the given path corresponds to a file that has previously been uploaded to the migration file store. Note that this validation is disabled by default and can be enabled using the relevant feature flag.",
              "possible_errors": [
                "path_does_not_exist_in_file_store"
              ]
            }
          ]
        }
      },
      "required": [
        "document_path"
      ]
    },
    "OriginLedgerRecordWithTransactions": {
      "type": "object",
      "properties": {
        "current_statement_transactions": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/OriginTransaction"
          },
          "description": "<p>Transactions that are meant to be billed by Kraken that are specific to the given ledger.</p><p>These could be the transactions that took place after the last statement was issued or all of the transactions that have taken place since the account was created if it has never been billed.</p><p>Their value, plus the <code>last_statement_balance</code>, must add up to the <code>ledger_balance</code>.</p>",
          "x-validators": [
            {
              "name": "Validate line item periods",
              "description": "Validate that no line items overlap (checked per supply point, product, and rate band combination) or have gaps (checked per supply point only) in supply charge transactions.",
              "possible_errors": [
                "gaps_or_overlaps_in_periods"
              ]
            }
          ]
        },
        "historical_statement_transactions": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/OriginTransaction"
          },
          "description": "<p>Transactions that are <strong>not</strong> meant to be billed by Kraken that are specific to the given ledger.</p><p>If these are provided then they will appear on the initial closed statement on the account.</p><p>The sum of historic transactions must equal the <code>last_statement_balance</code> if it is provided.</p><p>If a value for <code>last_statement_balance</code> is not provided the it will be assumed this value is zero and the payload will likely fail validation.</p>",
          "x-validators": [
            {
              "name": "Validate line item periods",
              "description": "Validate that no line items overlap (checked per supply point, product, and rate band combination) or have gaps (checked per supply point only) in supply charge transactions.",
              "possible_errors": [
                "gaps_or_overlaps_in_periods"
              ]
            }
          ]
        },
        "identifiers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "<p>A list of unique supply point identifiers (e.g. MPxN) for supply points that are associated with this ledger.</p>"
        },
        "last_statement_balance": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,10}(?:\\.\\d{0,10})?$",
          "description": "<p>The balance of the latest statement issued by the previous supplier. Credit balances must be positive, debit balances must be negative. Provide this amount in the currency's major unit rather than its minor unit (for example euros rather than cents, or pounds rather than pence). These examples are illustrative only; the same applies to any currency that has a major and minor unit. For currencies without a minor unit, such as the Japanese yen, pass the value as-is.</p>"
        },
        "last_statement_closing_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Date when the last statement was closed.</p><p>Kraken will create an initial closed statement for all historical transactions, and will use this value for its <strong>closing</strong> date. This also means that Kraken will bill any transactions (but not necessarily consumption) from the day <strong>after</strong> this date.</p><p> If <code>last_statement_closing_date</code> is supplied, historical transactions can be on or before this date, but any current transactions must be strictly after this date.</p>"
        },
        "last_statement_issue_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Date when the last statement was issued. If this date is not given then the <code>last_statement_closing_date</code> will be used as the issue date of the initial statement.</p>"
        },
        "ledger_balance": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,10}(?:\\.\\d{0,10})?$",
          "description": "<p>The balance of the ledger. The sum of <code>ledger_balance</code> of all ledgers be equal to the account-level <code>transfer_balance</code>. Credit balances must be positive, debit balances must be negative. Provide this amount in the currency's major unit rather than its minor unit (for example euros rather than cents, or pounds rather than pence). These examples are illustrative only; the same applies to any currency that has a major and minor unit. For currencies without a minor unit, such as the Japanese yen, pass the value as-is.</p>"
        },
        "ledger_code": {
          "type": "string",
          "description": "<p>The code of the relevant Kraken ledger type.</p>",
          "x-validators": [
            {
              "name": "Validate ledger code",
              "description": "Validates that the ledger code provided in the payload matches an available ledger type in Kraken.",
              "possible_errors": [
                "ledger_code_does_not_exist"
              ]
            }
          ]
        },
        "ledger_identifier": {
          "type": "string",
          "description": "<p> A unique string value that helps to refer a ledger object across the payload.</p>"
        }
      },
      "x-validators": [
        {
          "name": "Validate that current statement transactions are after the last statement closing date",
          "description": "Validate that all <code>current_statement_transactions</code>, if provided, are after the <code>last_statement_closing_date</code>, if this date is given.",
          "possible_errors": [
            "current_statement_transaction_before_last_statement_closing_date"
          ]
        },
        {
          "name": "Validate <code>last_statement_balance</code> plus/minus <code>current_statement_transactions</code> equal <code>ledger_balance</code>",
          "description": "Validate that the sum of <code>current_statement_transactions</code> plus the <code>last_statement_balance</code> is equal to the <code>ledger_balance</code>. For example, if a <code>last_statement_balance</code> of 100 is provided, and the <code>current_statement_transactions</code> include one payment of 50, then the expected <code>ledger_balance</code> would 150. Transactions that are payments or credits add to the balance. Transactions that are repayments or charges subtract from the balance.",
          "possible_errors": [
            "balance_mismatch_on_ledger_balance"
          ]
        },
        {
          "name": "Validate that there are no current statement transactions for unbillable ledger",
          "description": "Validate that transactions for ledgers that will never issue any bills are only in <code>historical_statement_transactions</code>.",
          "possible_errors": [
            "unbillable_ledger_transactions_in_current_statement_transactions"
          ]
        },
        {
          "name": "Validate unique transaction IDs",
          "description": "Validate that all transaction IDs provided are unique.",
          "possible_errors": [
            "duplicate_transaction_ids",
            "missing_transaction_id"
          ]
        },
        {
          "name": "Validate that a last statement closing date is provided for non-zero last statement balance",
          "description": "Validate that if <code>last_statement_balance</code> is not zero and <code>current_statement_transactions</code> is provided then a <code>last_statement_closing_date</code> is required.",
          "possible_errors": [
            "historical_statement_without_last_statement_closing_date"
          ]
        },
        {
          "name": "Validate that the last statement issue date is on or after the last statement closing date",
          "description": "Validate if <code>historical_statement_transactions</code> has been provided, that the <code>last_statement_issue_date</code>, if given, is on or after the <code>last_statement_closing_date</code> given.",
          "possible_errors": [
            "last_statement_issued_before_closing_date"
          ]
        },
        {
          "name": "Historical statement transactions require <code>last_statement_closing_date</code> for invoices",
          "description": "When <code>historical_statement_transactions</code> are provided, the <code>last_statement_closing_date</code> must also be provided to properly create and archive the initial invoice.",
          "possible_errors": [
            "historical_statement_transactions_require_last_statement_closing_date"
          ]
        },
        {
          "name": "Validate current statement transactions are after historical statement transactions",
          "description": "Validate that all current statement transactions are dated after all current historical statement transactions.",
          "possible_errors": [
            "historical_statement_transaction_after_current_statement_transaction"
          ]
        },
        {
          "name": "Validate that there are no historical statement transactions after the last statement closing date",
          "description": "Validate that if <code>historical_statement_transactions</code> are provided then none are later than the <code>last_statement_closing_date</code>.",
          "possible_errors": [
            "historical_statement_transaction_after_last_statement_closing_date"
          ]
        },
        {
          "name": "Validate that the summed historical statement transactions match the last statement balance",
          "description": "Validate that the sum of the <code>historical_statement_transactions</code> equals the <code>last_statement_balance</code>.",
          "possible_errors": [
            "historical_statement_transactions_balance_mismatch"
          ]
        }
      ]
    },
    "OriginLineItem": {
      "type": "object",
      "properties": {
        "end_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The end date for the billing period, inclusive.</p>"
        },
        "external_rate_identifier": {
          "type": "string",
          "description": "<p>The external identifier of the rate used to generate the charge for this line item. Only required if Kraken is configured to use placeholder rates when creating supply charge line items.</p>"
        },
        "net_amount": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,10}(?:\\.\\d{0,10})?$",
          "description": "<p>Charge amount for the line item. Provide this amount in the currency's major unit rather than its minor unit (for example euros rather than cents, or pounds rather than pence). These examples are illustrative only; the same applies to any currency that has a major and minor unit. For currencies without a minor unit, such as the Japanese yen, pass the value as-is.</p>"
        },
        "network_tariff_distributor_code": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p>The distributor code identifying the network tariff library entry. Required when importing a supply charge line item backed by an NTL rate.</p>"
        },
        "network_tariff_rate_code": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p>The rate code identifying the specific rate within the network tariff. Must match a <code>READY_TO_BILL</code> rate whose effective period covers the line item period.</p>"
        },
        "network_tariff_tariff_code": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p>The tariff code identifying the network tariff library entry. Required when importing a supply charge line item backed by an NTL rate.</p>"
        },
        "number_of_units": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,12}(?:\\.\\d{0,4})?$",
          "description": "<p>E.g. cubic meters consumed for the period, days on supply for fixed charges or RV proportion for period for unmetered RV charges.</p>"
        },
        "params": {
          "type": "object",
          "description": "<p>Additional parameters for the line item.</p>\n<p>Specify the following keys to control line item charge targets:</p>\n<p>\n    <ul>\n        <li>\n            Supply point charge target:\n            <ul>\n                <li><code>charge_target_type</code>: <code>SUPPLY_POINT</code></li>\n            </ul>\n        </li>\n        <li>\n            Register charge target:\n            <ul>\n                <li><code>charge_target_type</code>: <code>REGISTER</code></li>\n                <li><code>charge_target_meter_serial</code>: Serial number for the register's meter</li>\n                <li><code>charge_target_identifier</code>: Register identifier</li>\n            </ul>\n        </li>\n    </ul>\n</p>",
          "x-validators": [
            {
              "name": "Validate supply charge target",
              "description": "Validate that the supply charge target are supplied correctly in params.",
              "possible_errors": [
                "invalid_charge_target_type"
              ]
            }
          ]
        },
        "price_per_unit": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,8}(?:\\.\\d{0,7})?$",
          "description": "<p>Price per unit for the line item. If this is not provided, then the price per unit from the relevant product rate will be used instead. Provide this amount in the currency's major unit rather than its minor unit (for example euros rather than cents, or pounds rather than pence). These examples are illustrative only; the same applies to any currency that has a major and minor unit. For currencies without a minor unit, such as the Japanese yen, pass the value as-is.</p>"
        },
        "rate_band": {
          "type": "string",
          "description": "<p>Rate of the product this charge is for. Must match an existing rate of a product <code>product_code</code>. Rate must be active from <code>start_date</code> to <code>end_date</code>.</p>"
        },
        "rate_specification_code": {
          "type": "string",
          "description": "<p>Rate specification code of the product this charge is for. This code must refer to an existing rate specification within the product.</p>"
        },
        "start_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The start date for the billing period, inclusive.</p>"
        },
        "time_series_specification_code": {
          "type": "string",
          "description": "<p>Time series specification code.</p>"
        },
        "units": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "decimal",
            "pattern": "^-?\\d{0,12}(?:\\.\\d{0,4})?$"
          },
          "description": "<p>For metered accounts only. List of decimal numbers representing the meter readings for the billing period.</p>",
          "x-validators": [
            {
              "name": "Validate line item units",
              "description": "Validates that the line item units provided in the payload is a list of two items only.",
              "possible_errors": [
                "line_item_units_must_be_two_values"
              ]
            }
          ]
        }
      },
      "required": [
        "end_date",
        "net_amount",
        "number_of_units",
        "params",
        "start_date"
      ],
      "x-validators": [
        {
          "name": "Validate <code>⁨end_date⁩</code> not before <code>⁨start_date⁩</code>",
          "description": "Validates that <code>⁨end_date⁩</code>, if given, is on or later than <code>⁨start_date⁩</code>.",
          "possible_errors": [
            "start_date_later_than_end_date"
          ]
        },
        {
          "name": "Validate the line item net amount",
          "description": "Validate that the line item net amount is equal to the price per unit multiplied by the number of units.",
          "possible_errors": [
            "incorrect_line_item_net_amount"
          ]
        },
        {
          "name": "Ensure that the band or rate specification or time series specification for a line item is specified.",
          "description": "Validate line items include exactly one of <code>rate_band</code>, <code>rate_specification_code</code>, or <code>time_series_specification_code</code>.",
          "possible_errors": [
            "conflicting_rate_band_specification"
          ]
        }
      ]
    },
    "OriginStrictAccountBillingOptions": {
      "type": "object",
      "properties": {
        "period_length": {
          "enum": [
            "MONTHLY",
            "QUARTERLY",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "8c93f45b27bbc5df",
          "description": "<p>The length of the billing period.</p>",
          "x-enum-descriptions": {
            "MONTHLY": "Monthly",
            "QUARTERLY": "Quarterly",
            "None": "None"
          },
          "x-validators": [
            {
              "name": "Validate specific field value",
              "description": "Ensures that the provided field value matches the required expected value.",
              "possible_errors": [
                "invalid_value"
              ]
            }
          ]
        },
        "period_length_multiplier": {
          "type": "integer",
          "maximum": 1,
          "minimum": 1,
          "description": "<p>The multiplier for the billing period length. The period length gets multiplied by this value to get a variation of the period length for fixed billing. E.g. If the period length is monthly and the multiplier is 2, the account will be billed every 2 months.</p>"
        },
        "period_start_day": {
          "type": "integer",
          "maximum": 1,
          "minimum": 1,
          "description": "<p>The day of the month on which the billing period starts.</p>"
        },
        "period_start_month": {
          "type": [
            "integer",
            "null"
          ],
          "maximum": 12,
          "minimum": 1,
          "description": "<p>The month in which the billing period starts.</p>"
        },
        "use_industry_billing": {
          "type": "boolean",
          "description": "<p>Whether Kraken should rely on industry data to trigger billing or (if false) it should trigger it itself.</p>",
          "x-validators": [
            {
              "name": "Validate specific field value",
              "description": "Ensures that the provided field value matches the required expected value.",
              "possible_errors": [
                "invalid_value"
              ]
            }
          ]
        }
      },
      "required": [
        "period_length",
        "period_length_multiplier",
        "period_start_day",
        "use_industry_billing"
      ],
      "x-validators": [
        {
          "name": "Validate industry billing or period provided",
          "description": "Validates that either industry billing is being used or the billing period start day and length is being provided.",
          "possible_errors": [
            "account_billing_options_industry_billing_with_period_data",
            "account_billing_options_period_data_required"
          ]
        },
        {
          "name": "Validate period length and period start month for account billing options",
          "description": "Validate that period start month is provided when using QUARTERLY period length or for NON quarterly with period length multiplier > 1",
          "possible_errors": [
            "account_billing_options_period_start_month_required"
          ]
        }
      ]
    },
    "OriginSupplyCharge": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "CHARGE",
            "PAYMENT",
            "REPAYMENT",
            "CREDIT",
            "SUPPLY_CHARGE"
          ],
          "type": "string",
          "x-spec-enum-id": "06d6aba5cee32f9a",
          "description": "<p>The type of the transaction.</p>",
          "x-enum-descriptions": {
            "CHARGE": "Charge",
            "PAYMENT": "Payment",
            "REPAYMENT": "Repayment",
            "CREDIT": "Credit",
            "SUPPLY_CHARGE": "Supply Charge"
          }
        },
        "amount": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,10}(?:\\.\\d{0,10})?$",
          "description": "<p>The amount of the transaction. e.g. if the customer has a consumption charge worth 23.43, this equates to a transaction of type <code>CHARGE</code> of 23.43. Payments and repayments must be positive numbers. Generally charges and credits are also positive, but may be negative to represent reversed charges or credits, or if an incorrect estimated reading has resulted in a negative consumption charge. Provide this amount in the currency's major unit rather than its minor unit (for example euros rather than cents, or pounds rather than pence). These examples are illustrative only; the same applies to any currency that has a major and minor unit. For currencies without a minor unit, such as the Japanese yen, pass the value as-is.</p>"
        },
        "billing_document_identifier": {
          "type": "string",
          "description": "<p>The identifier from the source system that groups a set of transactions together. This will be used in Kraken during the migration of historical statement transactions to create an archived billing document. For now this field is only required if <code>HISTORICAL_STATEMENT_REQUIRE_SINGLE_BILLING_DOCUMENT_IDENTIFIER</code> settings is ON and is meant for only <code>historical_statements_transactions</code>. Passing this to other transactions like <code>current_statement_transactions</code> or <code>transactions_in_open_settlement_period</code> will raise validation error.</p>"
        },
        "display_note": {
          "type": "string",
          "description": "<p>The customer-facing note that can be displayed in a statement or email to the customer.</p>"
        },
        "line_items": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/OriginLineItem"
          },
          "description": "<p>For <code>SUPPLY_CHARGE</code> transactions only, line items contain details about the charge, e.g. standing/consumption charge, billing period, number of units etc.</p>"
        },
        "note": {
          "type": "string",
          "description": "<p>Any additional notes about the transaction.</p>"
        },
        "product_code": {
          "type": "string",
          "description": "<p>The product code for the product that the transaction is associated with.</p>",
          "x-validators": [
            {
              "name": "Validate product code exists",
              "description": "Validate that the product code exists in Kraken.",
              "possible_errors": [
                "product_code_does_not_exist"
              ]
            }
          ]
        },
        "supply_point_identifier": {
          "type": "string",
          "description": "<p>Supply point identifier associated with the supply point this charge applies to.</p>"
        },
        "tax_items": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/TaxItem"
          },
          "description": "<p>For <code>SUPPLY_CHARGE</code> and <code>CHARGE</code> transactions only, tax items contain details about the tax. If not provided will be set to default zero tax.</p>"
        },
        "transaction_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The date of the transaction.</p>",
          "x-validators": [
            {
              "name": "Validate transaction date",
              "description": "Validates that the transaction date provided in the payload is not in the future.",
              "possible_errors": [
                "transaction_in_future"
              ]
            }
          ]
        },
        "transaction_id": {
          "type": "string",
          "description": "<p>The unique internal identifier for the transaction.</p>"
        }
      },
      "required": [
        "amount",
        "line_items",
        "product_code",
        "transaction_date",
        "transaction_id",
        "type"
      ],
      "x-validators": [
        {
          "name": "Validates supply charge line item rate",
          "description": "This validation only applies to transactions of type supply charge. Validates that product code is provided and a product exists with that code. Validates that line items are provided and each line item rate band exists for the product.",
          "possible_errors": []
        },
        {
          "name": "Validate that the given price per unit matches an existing rate price per unit",
          "description": "Validate that the given price per unit matches an existing rate price per unit. If the existing rate is a dynamic rate (i.e. it has a <code>NaN</code> price per unit), then there must be a price per unit in the payload.",
          "possible_errors": []
        },
        {
          "name": "Validate line item number of units",
          "description": "Validate that the line item number of units matches the number of days in the period provided for standing charges.",
          "possible_errors": []
        },
        {
          "name": "Validate that the total transaction amount is correct",
          "description": "Ensure that the total line items amount matches transaction amount.",
          "possible_errors": [
            "ledger_transaction_amount_does_not_match_with_line_item_net_amount_and_tax_amount"
          ]
        },
        {
          "name": "Ensure supply point identifier is provided when line items use rate_specification_code",
          "description": "Validate that <code>supply_point_identifier</code> is provided when any line item contains a <code>rate_specification_code</code>, as the supply point is required for rate resolution.",
          "possible_errors": [
            "supply_point_identifier_required_for_rate_specification_code"
          ]
        },
        {
          "name": "Validate that the line items do not overlap with any already charged periods",
          "description": "Validate that the line item periods do not overlap with any already charged periods for a supply point.",
          "possible_errors": [
            "line_items_overlap_already_charged_period"
          ]
        }
      ]
    },
    "OriginTransaction": {
      "oneOf": [
        {
          "$ref": "#/$defs/Credit"
        },
        {
          "$ref": "#/$defs/AusCharge"
        },
        {
          "$ref": "#/$defs/Payment"
        },
        {
          "$ref": "#/$defs/Repayment"
        },
        {
          "$ref": "#/$defs/OriginSupplyCharge"
        }
      ]
    },
    "PartnerCommission": {
      "type": "object",
      "properties": {
        "term_type": {
          "type": "string",
          "description": "<p>The type of the contract term.</p>"
        },
        "configurations": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/PartnerCommissionConfig"
          },
          "description": "<p>List of partner commission configurations to associate with this contract term.</p>",
          "minItems": 1,
          "x-validators": [
            {
              "name": "Validate partner commission numbers exist",
              "description": "Validate that all partner commission numbers in the term configurations exist in Kraken.",
              "possible_errors": [
                "not_found"
              ]
            }
          ]
        },
        "is_variable": {
          "type": "boolean",
          "default": true,
          "description": "<p>Whether the contract term is variable in Kraken or not. If not, it must be amended by a new contract.</p>"
        }
      },
      "required": [
        "configurations",
        "term_type"
      ]
    },
    "PartnerCommissionConfig": {
      "type": "object",
      "properties": {
        "apply_uplift": {
          "type": "boolean",
          "default": false,
          "description": "<p>Whether to apply a product uplift for this partner commission. Defaults to <code>false</code>.</p>"
        },
        "override_trailing_percentage": {
          "type": [
            "string",
            "null"
          ],
          "format": "decimal",
          "pattern": "^-?\\d{0,3}(?:\\.\\d{0,2})?$",
          "description": "<p>Optional override for the trailing commission percentage. Overrides the default percentage on the partner commission.</p>"
        },
        "override_unit_amount": {
          "type": [
            "string",
            "null"
          ],
          "format": "decimal",
          "pattern": "^-?\\d{0,8}(?:\\.\\d{0,8})?$",
          "description": "<p>Optional override for the unit-based commission rate. Overrides the default unit amount on the partner commission.</p>"
        },
        "partner_commission_number": {
          "type": "string",
          "description": "<p>The unique identifier of the partner commission (e.g. <code>OPC-XXXXXXXX</code> or <code>TPC-XXXXXXXX</code>).</p>",
          "maxLength": 20
        }
      },
      "required": [
        "partner_commission_number"
      ]
    },
    "PartnerFileAttachment": {
      "type": "object",
      "properties": {
        "category": {
          "enum": [
            "LETTER_OF_AUTHORITY"
          ],
          "type": "string",
          "x-spec-enum-id": "23434383040d8c62",
          "description": "<p>The category of the partner file attachment.</p>",
          "x-enum-descriptions": {
            "LETTER_OF_AUTHORITY": "Letter of Authority"
          }
        },
        "filename": {
          "type": "string",
          "description": "<p>The filename of the partner file attachment.</p>",
          "maxLength": 255
        },
        "partner_number": {
          "type": "string",
          "description": "<p>The partner number of the organisation the file attachment belongs to.</p>",
          "maxLength": 128,
          "x-validators": [
            {
              "name": "Validate <code>organisation_number</code>",
              "description": "Validate that the given <code>organisation_number</code> has a corresponding organisation registered in the database.",
              "possible_errors": [
                "partner_organisation_does_not_exist"
              ]
            }
          ]
        },
        "s3_key": {
          "type": "string",
          "description": "<p>The S3 key of the partner file attachment.</p>",
          "maxLength": 1024,
          "x-validators": [
            {
              "name": "Validate path exists in file store",
              "description": "Validate that the given path corresponds to a file that has previously been uploaded to the correct file store.",
              "possible_errors": [
                "path_does_not_exist_in_file_store"
              ]
            }
          ]
        }
      },
      "required": [
        "category",
        "filename",
        "partner_number",
        "s3_key"
      ]
    },
    "PartnerOrganisation": {
      "type": "object",
      "properties": {
        "organisation_number": {
          "type": "string",
          "description": "<p>Identifier of the partner organisation.</p>",
          "maxLength": 128,
          "x-validators": [
            {
              "name": "Validate <code>organisation_number</code>",
              "description": "Validate that the given <code>organisation_number</code> has a corresponding organisation registered in the database.",
              "possible_errors": [
                "partner_organisation_does_not_exist"
              ]
            }
          ]
        },
        "role": {
          "enum": [
            "G_LOA"
          ],
          "type": "string",
          "x-spec-enum-id": "7e197ea5273e96fb",
          "description": "<p>The type of role the partner organisation plays.</p>",
          "x-enum-descriptions": {
            "G_LOA": "General Letter of Authority"
          }
        },
        "source_reference_s3_key": {
          "type": "string",
          "description": "<p>The s3 key of the partner file attachment that governs this organisation relationship.</p>"
        },
        "valid_from": {
          "type": "string",
          "format": "date-time",
          "description": "<p>The beginning of the validity period of this organisation relationship.</p>"
        },
        "valid_to": {
          "type": "string",
          "format": "date-time",
          "description": "<p>The end of the validity period of this organisation relationship.</p>"
        }
      },
      "required": [
        "organisation_number",
        "role",
        "valid_from",
        "valid_to"
      ],
      "x-validators": [
        {
          "name": "Validate <code>⁨valid_to⁩</code> not before <code>⁨valid_from⁩</code>",
          "description": "Validates that <code>⁨valid_to⁩</code>, if given, is on or later than <code>⁨valid_from⁩</code>.",
          "possible_errors": [
            "start_date_later_than_end_date"
          ]
        }
      ]
    },
    "Payment": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "CHARGE",
            "PAYMENT",
            "REPAYMENT",
            "CREDIT",
            "SUPPLY_CHARGE"
          ],
          "type": "string",
          "x-spec-enum-id": "06d6aba5cee32f9a",
          "description": "<p>The type of the transaction.</p>",
          "x-enum-descriptions": {
            "CHARGE": "Charge",
            "PAYMENT": "Payment",
            "REPAYMENT": "Repayment",
            "CREDIT": "Credit",
            "SUPPLY_CHARGE": "Supply Charge"
          }
        },
        "amount": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,10}(?:\\.\\d{0,10})?$",
          "description": "<p>The amount of the transaction. e.g. if the customer has a consumption charge worth 23.43, this equates to a transaction of type <code>CHARGE</code> of 23.43. Payments and repayments must be positive numbers. Generally charges and credits are also positive, but may be negative to represent reversed charges or credits, or if an incorrect estimated reading has resulted in a negative consumption charge. Provide this amount in the currency's major unit rather than its minor unit (for example euros rather than cents, or pounds rather than pence). These examples are illustrative only; the same applies to any currency that has a major and minor unit. For currencies without a minor unit, such as the Japanese yen, pass the value as-is.</p>"
        },
        "billing_document_identifier": {
          "type": "string",
          "description": "<p>The identifier from the source system that groups a set of transactions together. This will be used in Kraken during the migration of historical statement transactions to create an archived billing document. For now this field is only required if <code>HISTORICAL_STATEMENT_REQUIRE_SINGLE_BILLING_DOCUMENT_IDENTIFIER</code> settings is ON and is meant for only <code>historical_statements_transactions</code>. Passing this to other transactions like <code>current_statement_transactions</code> or <code>transactions_in_open_settlement_period</code> will raise validation error.</p>"
        },
        "display_note": {
          "type": "string",
          "description": "<p>The customer-facing note that can be displayed in a statement or email to the customer.</p>",
          "deprecated": true
        },
        "note": {
          "type": "string",
          "description": "<p>Any additional notes about the transaction.</p>"
        },
        "payment_type": {
          "enum": [
            "DD_FIRST_COLLECTION",
            "DD_REGULAR_COLLECTION",
            "DD_RE_PRESENTATION",
            "DD_FINAL_COLLECTION",
            "CREDIT_CARD",
            "DEBIT_CARD",
            "CHEQUE",
            "BACS_DEPOSIT",
            "ALLPAY_CASH",
            "ALLPAY_CARD",
            "ALLPAY_CHEQUE",
            "PAYPOINT_CASH",
            "PAYPOINT_CARD",
            "PAYPOINT_CHEQUE",
            "DCA_COLLECTION",
            "BRISTOL_POUND",
            "CASH",
            "FUEL_DIRECT",
            "BPAY",
            "AUSTRALIA_POST",
            "HEEA",
            "HEEAS",
            "CENTREPAY",
            "EAPA_VOUCHER",
            "URGS",
            "BPOINT",
            "EFT",
            "ERRONEOUS_PAYMENT",
            "PAYZONE",
            "POST_OFFICE_CASH",
            "POST_OFFICE_CARD",
            "POST_OFFICE_CHEQUE",
            "POST_OFFICE_SAVINGS_STAMPS",
            "KONBINI",
            ""
          ],
          "type": "string",
          "x-spec-enum-id": "e5c2d3475e079058",
          "description": "<p>The payment type for the transaction.</p>",
          "x-enum-descriptions": {
            "DD_FIRST_COLLECTION": "DD_FIRST_COLLECTION",
            "DD_REGULAR_COLLECTION": "DD_REGULAR_COLLECTION",
            "DD_RE_PRESENTATION": "DD_RE_PRESENTATION",
            "DD_FINAL_COLLECTION": "DD_FINAL_COLLECTION",
            "CREDIT_CARD": "CREDIT_CARD",
            "DEBIT_CARD": "DEBIT_CARD",
            "CHEQUE": "CHEQUE",
            "BACS_DEPOSIT": "BACS_DEPOSIT",
            "ALLPAY_CASH": "ALLPAY_CASH",
            "ALLPAY_CARD": "ALLPAY_CARD",
            "ALLPAY_CHEQUE": "ALLPAY_CHEQUE",
            "PAYPOINT_CASH": "PAYPOINT_CASH",
            "PAYPOINT_CARD": "PAYPOINT_CARD",
            "PAYPOINT_CHEQUE": "PAYPOINT_CHEQUE",
            "DCA_COLLECTION": "DCA_COLLECTION",
            "BRISTOL_POUND": "BRISTOL_POUND",
            "CASH": "CASH",
            "FUEL_DIRECT": "FUEL_DIRECT",
            "BPAY": "BPAY",
            "AUSTRALIA_POST": "AUSTRALIA_POST",
            "HEEA": "HEEA",
            "HEEAS": "HEEAS",
            "CENTREPAY": "CENTREPAY",
            "EAPA_VOUCHER": "EAPA_VOUCHER",
            "URGS": "URGS",
            "BPOINT": "BPOINT",
            "EFT": "EFT",
            "ERRONEOUS_PAYMENT": "ERRONEOUS_PAYMENT",
            "PAYZONE": "PAYZONE",
            "POST_OFFICE_CASH": "POST_OFFICE_CASH",
            "POST_OFFICE_CARD": "POST_OFFICE_CARD",
            "POST_OFFICE_CHEQUE": "POST_OFFICE_CHEQUE",
            "POST_OFFICE_SAVINGS_STAMPS": "POST_OFFICE_SAVINGS_STAMPS",
            "KONBINI": "Konbini",
            "": ""
          }
        },
        "reason": {
          "type": "string",
          "description": "<p>The reason for the transaction.</p>"
        },
        "reference": {
          "type": "string",
          "description": "<p>The reference for the transaction. This could be an external id to help identify this transaction.</p>"
        },
        "transaction_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The date of the transaction.</p>",
          "x-validators": [
            {
              "name": "Validate transaction date",
              "description": "Validates that the transaction date provided in the payload is not in the future.",
              "possible_errors": [
                "transaction_in_future"
              ]
            }
          ]
        },
        "transaction_id": {
          "type": "string",
          "description": "<p>The unique internal identifier for the transaction.</p>"
        }
      },
      "required": [
        "amount",
        "transaction_date",
        "transaction_id",
        "type"
      ]
    },
    "PaymentAdequacyChange": {
      "type": "object",
      "properties": {
        "applied_at": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time",
          "description": "<p>The datetime the payment adequacy change was applied and the customer was notified. This should be <code>None</code> if the payment adequacy change was not applied.</p>",
          "x-validators": [
            {
              "name": "Validate payment adequacy change applied in past",
              "description": "Validates that the payment adequacy change applied at date, if provided, is not in the future.",
              "possible_errors": [
                "payment_adequacy_invalid_dates"
              ]
            }
          ]
        },
        "average_monthly_charge": {
          "type": "integer",
          "minimum": 0,
          "description": "<p>The average monthly charge for the account, if we sum all yearly charges and divide them by 12.</p>"
        },
        "average_monthly_elec_charge": {
          "type": "integer",
          "minimum": 0,
          "description": "<p>The average monthly electricity charge for the account, if we sum all yearly charges and divide them by 12.</p>"
        },
        "average_monthly_gas_charge": {
          "type": "integer",
          "minimum": 0,
          "description": "<p>The average monthly gas charge for the account, if we sum all yearly charges and divide them by 12.</p>"
        },
        "balance_adjustment": {
          "type": "integer",
          "description": "<p>The adjustment on top of the average monthly charge, to be used as the new direct debit payment. This can be 0 if the difference between current and target balance is small enough to not act on.</p>"
        },
        "created_at": {
          "type": "string",
          "format": "date-time",
          "description": "<p>The datetime the payment adequacy change was created.</p>",
          "x-validators": [
            {
              "name": "Validate payment adequacy change created in past",
              "description": "Validates that the payment adequacy change created at date provided is not in the future.",
              "possible_errors": [
                "payment_adequacy_invalid_dates"
              ]
            }
          ]
        },
        "current_balance": {
          "type": "integer",
          "description": "<p>The account balance at the date of the payment adequacy run.</p>"
        },
        "existing_direct_debit_payment": {
          "type": "integer",
          "minimum": 0,
          "description": "<p>The existing Direct Debit payment amount at the time of review.</p>"
        },
        "ledger": {
          "allOf": [
            {
              "$ref": "#/$defs/Ledger"
            }
          ],
          "description": "<p>The ledger for the payment adequacy change. The ledger must already exist in Kraken.</p>"
        },
        "new_direct_debit": {
          "type": "integer",
          "minimum": 0,
          "description": "<p>The recommended Direct Debit payment amount.</p>"
        },
        "should_not_be_applied_reason": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p>The reason why the payment adequacy change was not applied. This should be <code>null</code> if the payment adequacy change was applied.</p>",
          "maxLength": 512
        },
        "target_balance": {
          "type": "integer",
          "description": "<p>The target balance for the account after 12 months.</p>"
        }
      },
      "required": [
        "average_monthly_charge",
        "average_monthly_elec_charge",
        "average_monthly_gas_charge",
        "balance_adjustment",
        "created_at",
        "current_balance",
        "existing_direct_debit_payment",
        "new_direct_debit",
        "target_balance"
      ],
      "x-validators": [
        {
          "name": "Validate payment adequacy change created before applied",
          "description": "Validates that the payment adequacy change created at date is before the applied at date, if provided.",
          "possible_errors": [
            "payment_adequacy_invalid_dates"
          ]
        },
        {
          "name": "Validate payment adequacy change applied or reason provided",
          "description": "Validates that either a payment adequacy change applied at date or a reason to not apply the payment adequacy change is provided, but not both.",
          "possible_errors": [
            "payment_adequacy_missing_reason",
            "payment_adequacy_should_not_have_been_applied"
          ]
        },
        {
          "name": "Validate average monthly charge equal to sum",
          "description": "Validates that the average monthly charge is equal to the sum of the electricity and gas monthly charges provided.",
          "possible_errors": [
            "payment_adequacy_monthly_charges_unequal"
          ]
        },
        {
          "name": "Validate non zero balance adjustment equal to monthly difference",
          "description": "Validates that the non zero balance adjustment provided in the payload is equal to the monthly difference between the target balance and current balance.",
          "possible_errors": [
            "payment_adequacy_balance_adjustment_mismatch"
          ]
        },
        {
          "name": "Validate direct debit between existing and max payment",
          "description": "Validates that the direct debit amount provided is between the existing direct debit amount provided and the maximum payment amount. Here, the maximum payment amount is average monthly charge plus balance adjustment provided.",
          "possible_errors": [
            "payment_adequacy_new_direct_debit_amount_mismatch"
          ]
        }
      ]
    },
    "PaymentInstructionCard": {
      "type": "object",
      "properties": {
        "card_payment_network": {
          "enum": [
            "MASTERCARD",
            "VISA",
            "AMEX",
            "JCB",
            "DISCOVER",
            "DANKORT"
          ],
          "type": "string",
          "x-spec-enum-id": "c8ed471949510265",
          "description": "<p>The card payment network for the payment instruction.</p>",
          "x-enum-descriptions": {
            "MASTERCARD": "Mastercard",
            "VISA": "Visa",
            "AMEX": "American Express",
            "JCB": "JCB",
            "DISCOVER": "Discover",
            "DANKORT": "Dankort"
          }
        },
        "card_type": {
          "enum": [
            "CREDIT",
            "DEBIT",
            "PREPAID"
          ],
          "type": "string",
          "x-spec-enum-id": "90bbc4bed8c0c0e8",
          "description": "<p>The card type for the payment instruction.</p>",
          "x-enum-descriptions": {
            "CREDIT": "Credit",
            "DEBIT": "Debit",
            "PREPAID": "Prepaid"
          }
        },
        "expiry_month": {
          "type": "integer",
          "maximum": 12,
          "minimum": 1,
          "description": "<p>The expiry month of the card in MM format.</p>"
        },
        "expiry_year": {
          "type": "integer",
          "minimum": 1000,
          "description": "<p>The expiry year of the card in YYYY format.</p>"
        },
        "last_digits": {
          "type": "string",
          "description": "<p>The last 3 or 4 digits of the card number.</p>",
          "pattern": "^[0-9]{3,4}$"
        }
      },
      "required": [
        "card_payment_network",
        "card_type"
      ]
    },
    "PaymentPreference": {
      "oneOf": [
        {
          "$ref": "#/$defs/PaymentPreferencesWithExistingInstructionReferences"
        },
        {
          "$ref": "#/$defs/PaymentPreferencesWithNewInstructionReferences"
        },
        {
          "$ref": "#/$defs/BasePaymentPreference"
        }
      ]
    },
    "PaymentPreferencesWithExistingInstructionReferences": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "ACTIVE_EXISTING",
            "ACTIVE_NEW",
            "PASSIVE"
          ],
          "type": "string",
          "x-spec-enum-id": "4cc9502ba974f87d",
          "description": "<p>Indicates whether this payment preference refers to an existing payment instruction already present in Kraken, or to a new one being created in the import.</p>",
          "x-enum-descriptions": {
            "ACTIVE_EXISTING": "Existing Payment Instruction",
            "ACTIVE_NEW": "New Payment Instruction",
            "PASSIVE": "No Payment Instruction Preference"
          }
        },
        "instruction_reference_params": {
          "allOf": [
            {
              "$ref": "#/$defs/ExistingPaymentInstructionReference"
            }
          ],
          "description": "<p>Parameters identifying the payment instruction to use for automated payments on this ledger.</p>"
        },
        "ledger_identifier": {
          "type": "string",
          "description": "<p>Identifier for the ledger from the <code>ledgers</code>. This will be used to link the payment instruction to a specific ledger being imported using payment preference.</p>"
        }
      },
      "required": [
        "instruction_reference_params",
        "ledger_identifier",
        "type"
      ]
    },
    "PaymentPreferencesWithNewInstructionReferences": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "ACTIVE_EXISTING",
            "ACTIVE_NEW",
            "PASSIVE"
          ],
          "type": "string",
          "x-spec-enum-id": "4cc9502ba974f87d",
          "description": "<p>Indicates whether this payment preference refers to an existing payment instruction already present in Kraken, or to a new one being created in the import.</p>",
          "x-enum-descriptions": {
            "ACTIVE_EXISTING": "Existing Payment Instruction",
            "ACTIVE_NEW": "New Payment Instruction",
            "PASSIVE": "No Payment Instruction Preference"
          }
        },
        "instruction_reference_params": {
          "allOf": [
            {
              "$ref": "#/$defs/NewPaymentInstructionReference"
            }
          ],
          "description": "<p>Parameters identifying the payment instruction to use for automated payments on this ledger.</p>"
        },
        "ledger_identifier": {
          "type": "string",
          "description": "<p>Identifier for the ledger from the <code>ledgers</code>. This will be used to link the payment instruction to a specific ledger being imported using payment preference.</p>"
        }
      },
      "required": [
        "instruction_reference_params",
        "ledger_identifier",
        "type"
      ]
    },
    "PaymentPromise": {
      "type": "object",
      "properties": {
        "amount": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,8}(?:\\.\\d{0,2})?$",
          "description": "<p>The amount of the promised payment.</p>"
        },
        "ledger_code": {
          "type": "string",
          "description": "<p>The Kraken ledger code that this payment promise should be created on.</p>"
        },
        "payment_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The payment date of the promised payment.</p>"
        }
      },
      "required": [
        "amount",
        "payment_date"
      ]
    },
    "PaymentSchedule": {
      "type": "object",
      "properties": {
        "amount": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,8}(?:\\.\\d{0,2})?$",
          "default": "0.00",
          "description": "<p>The amount of the payment schedule.</p>"
        },
        "balance_threshold": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,8}(?:\\.\\d{0,2})?$",
          "description": "<p>The account balance threshold that triggers a payment for balance-triggered schedules.</p>"
        },
        "day_of_month": {
          "type": [
            "integer",
            "null"
          ],
          "description": "<p>The day of the month the payment is due.</p>",
          "x-validators": [
            {
              "name": "Validate payment day for payment schedule",
              "description": "Validate that the payment day for a payment schedule is between the configured minimum and maximum allowed payment days in Kraken.",
              "possible_errors": [
                "invalid_payment_day_for_payment_schedule"
              ]
            }
          ]
        },
        "debt_repayment_element": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,8}(?:\\.\\d{0,2})?$",
          "description": "<p>The contribution to the <code>amount</code> in addition to the regular fixed schedule payment amount.</p><p><code>debt_repayment_element = amount -</code> fixed schedule amount.</p>"
        },
        "debt_repayment_end_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The date on which the debt repayment will no longer be taken in addition to the regular payment.</p>"
        },
        "delay_days": {
          "type": "integer",
          "description": "<p>The delay days to configure for the schedule. This configures how many days are delayed when a payment is trigged from a BILL triggered schedule and is therefore only compatible if the trigger = BILL. This is required only if delay_strategy is set.</p>"
        },
        "delay_strategy": {
          "enum": [
            "FIXED",
            "WORKING_DAYS"
          ],
          "type": "string",
          "x-spec-enum-id": "65a4ec07dce09466",
          "description": "<p>The delay days strategy for the schedule. This configures how many days are delayed when a payment is trigged from a BILL triggered schedule and is therefore only compatible if the trigger = BILL</p>",
          "x-enum-descriptions": {
            "FIXED": "Fixed",
            "WORKING_DAYS": "Working Day"
          }
        },
        "end_date": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>The end date for the payment schedule.</p>"
        },
        "exempt_from_payment_adequacy": {
          "type": "boolean",
          "default": false,
          "description": "<p>Whether the payment schedule is exempt from payment adequacy or not.</p>"
        },
        "frequency": {
          "enum": [
            "MONTHLY",
            "QUARTERLY",
            "WEEKLY",
            "FORTNIGHTLY",
            "FOUR_WEEKLY",
            "ANNUALLY",
            "SIX_MONTHLY"
          ],
          "type": "string",
          "x-spec-enum-id": "356d8ee33fff0f54",
          "description": "<p>The frequency of the payment schedule (e.g., WEEKLY, MONTHLY).</p>",
          "x-enum-descriptions": {
            "MONTHLY": "Monthly",
            "QUARTERLY": "Quarterly",
            "WEEKLY": "Weekly",
            "FORTNIGHTLY": "Fortnightly",
            "FOUR_WEEKLY": "Four-weekly",
            "ANNUALLY": "Annually",
            "SIX_MONTHLY": "Six-monthly"
          }
        },
        "instalments": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/Payments"
          },
          "description": "<p>The instalments of the payment schedule.</p>",
          "x-validators": [
            {
              "name": "Validate that each child has a unique combination of values for the <code>⁨payment_date, payment_type⁩</code> fields",
              "description": "Validate that each child has a unique combination of values for the <code>⁨payment_date, payment_type⁩</code> fields.",
              "possible_errors": [
                "children_with_duplicate_values"
              ]
            }
          ]
        },
        "is_debt_repayment_plan": {
          "type": "boolean",
          "default": false,
          "description": "<p>Whether the payment schedule is a debt repayment plan or not.</p>"
        },
        "ledger_code": {
          "type": "string",
          "description": "<p>The code of the relevant Kraken ledger type for the payment schedule.</p>",
          "x-validators": [
            {
              "name": "Validate ledger code",
              "description": "Validates that the ledger code provided in the payload matches an available ledger type in Kraken.",
              "possible_errors": [
                "ledger_code_does_not_exist"
              ]
            }
          ]
        },
        "means": {
          "enum": [
            "DD",
            "CARD",
            "MANUAL",
            "PAYMENT_SLIP"
          ],
          "type": "string",
          "x-spec-enum-id": "07a5f0f09deee145",
          "description": "<p>The means of the payment schedule.</p>",
          "x-enum-descriptions": {
            "DD": "Direct Debit",
            "CARD": "Card",
            "MANUAL": "Manual Payment",
            "PAYMENT_SLIP": "Payment Slip"
          }
        },
        "paid_by": {
          "enum": [
            "CUSTOMER"
          ],
          "type": "string",
          "x-spec-enum-id": "85d7698587f632ef",
          "default": "CUSTOMER",
          "description": "<p>Who is paying the payments on the schedule.</p>",
          "x-enum-descriptions": {
            "CUSTOMER": "CUSTOMER"
          }
        },
        "start_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The start date for the payment schedule.</p>"
        },
        "trigger": {
          "enum": [
            "PLAN",
            "REGULAR",
            "REGULAR_PLAN",
            "BALANCE",
            "BILL"
          ],
          "type": "string",
          "x-spec-enum-id": "70fceded34e99681",
          "description": "<p>The trigger for the payment schedule. See choices for more details.</p><p>If not provided we create a  fixed schedule, i.e.  trigger  = REGULAR. A BILL triggered schedule creates a ledger balance clearing payment when a statement or invoice is issued.</p>",
          "x-enum-descriptions": {
            "PLAN": "Planned collection",
            "REGULAR": "Regular collection",
            "REGULAR_PLAN": "Regular planned collection",
            "BALANCE": "Balance below",
            "BILL": "Bill issued"
          }
        }
      },
      "required": [
        "means",
        "start_date"
      ],
      "x-validators": [
        {
          "name": "Validate <code>⁨end_date⁩</code> not before <code>⁨start_date⁩</code>",
          "description": "Validates that <code>⁨end_date⁩</code>, if given, is on or later than <code>⁨start_date⁩</code>.",
          "possible_errors": [
            "start_date_later_than_end_date"
          ]
        },
        {
          "name": "Validate fixed payment schedule has amount",
          "description": "Validates that a fixed payment schedule has an non zero amount provided in the payload. A fixed schedule is defined as a payment schedule with a trigger that is not type BILL.",
          "possible_errors": [
            "zero_payment_schedule_amount"
          ]
        },
        {
          "name": "Validate regular payment schedule frequency provided",
          "description": "Validates that a fixed regular payment schedule has a frequency provided in the payload.",
          "possible_errors": [
            "fixed_payment_schedule_missing_frequency"
          ]
        },
        {
          "name": "Validate payment schedule balance threshold provided",
          "description": "Validates that a payment schedule with a balance trigger has a balance threshold provided in the payload. This balance threshold is the amount the ledger balance must drop below to trigger a payment.",
          "possible_errors": [
            "balance_triggered_schedule_missing_threshold"
          ]
        },
        {
          "name": "Validate debt repayment end date provided",
          "description": "Validates that a debt repayment end date is provided in the payload if a debt repayment element is provided.",
          "possible_errors": [
            "debt_repayment_missing_end_date"
          ]
        },
        {
          "name": "Validate debt repayment end date is not later than schedule end date",
          "description": "Validates that a debt repayment end date is not later than  the payment schedule end date if both are provided.",
          "possible_errors": [
            "debt_repayment_end_date_after_schedule_end_date"
          ]
        },
        {
          "name": "Validate exempt from payment adequacy is applied only to regular schedule",
          "description": "Validates that only a regular payment schedule is marked as exempted from payment adequacy, so as to create a fixed regular payment schedule.",
          "possible_errors": [
            "invalid_payment_schedule_to_exempt_from_payment_adequacy"
          ]
        },
        {
          "name": "Validate fixed payment schedule has payment day",
          "description": "Validates that a fixed payment schedule has a day of month in the payload. A fixed schedule is defined as a payment schedule with a trigger of type REGULAR.",
          "possible_errors": [
            "fixed_payment_schedule_missing_day_of_month"
          ]
        },
        {
          "name": "Validate instalments is provided if trigger is PLAN",
          "description": "Validate that the instalment field is not empty if payment schedule trigger is PLAN.",
          "possible_errors": [
            "payment_instalments_not_provided"
          ]
        },
        {
          "name": "Validate instalment payment amounts sum to total amount",
          "description": "Validate instalment payment amounts sum to total amount given.",
          "possible_errors": [
            "payment_instalments_do_not_sum_to_total"
          ]
        },
        {
          "name": "Validate instalment payment date is within payment schedule active period",
          "description": "Validate instalment payment date is within the period between start date and end date provided.",
          "possible_errors": [
            "payment_instalments_date_outside_of_payment_schedule_active_period"
          ]
        },
        {
          "name": "Validate that the delayer days is set if delayer strategy is set",
          "description": "Validate that the delayer days is set if delayer strategy is set",
          "possible_errors": [
            "payment_schedule_delay_must_have_bill_trigger",
            "payment_schedule_delay_strategy_missing_delay_days"
          ]
        },
        {
          "name": "Validate that the payment amount for fixed payment schedules is within the minor currency unit range of ⁨0⁩ - ⁨upper_bound⁩",
          "description": "Validate that the payment amount for any fixed payment schedule is within the major currency unit range of ⁨lower_limit⁩ - ⁨UNLIMITED⁩.",
          "possible_errors": [
            "fixed_payment_schedule_amount_out_of_range"
          ]
        },
        {
          "name": "Standalone payment request method code is unexpected",
          "description": "Validates that standalone_payment_request_method_code is only provided for MANUAL payment schedules.",
          "possible_errors": [
            "standalone_payment_request_method_code_unexpected"
          ]
        },
        {
          "name": "Standalone payment request method code is valid",
          "description": "Validates that standalone_payment_request_method_code matches a registered method.",
          "possible_errors": [
            "standalone_payment_request_method_code_invalid"
          ]
        }
      ]
    },
    "Payments": {
      "type": "object",
      "properties": {
        "amount": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,8}(?:\\.\\d{0,2})?$",
          "description": "<p>The payable amount of an instalment.</p>"
        },
        "payment_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The payable date of an instalment.</p>"
        },
        "payment_type": {
          "enum": [
            ""
          ],
          "type": "string",
          "x-spec-enum-id": "4f53cda18c2baa0c",
          "description": "<p>The type of an instalment.</p>",
          "x-enum-descriptions": {
            "": ""
          }
        }
      },
      "required": [
        "amount",
        "payment_date"
      ]
    },
    "PaysByDirectDebitTerm": {
      "type": "object",
      "properties": {
        "term_type": {
          "type": "string",
          "description": "<p>The type of the contract term.</p>"
        },
        "is_variable": {
          "type": "boolean",
          "default": true,
          "description": "<p>Whether the contract term is variable in Kraken or not. If not, it must be amended by a new contract.</p>"
        },
        "pays_by_direct_debit": {
          "type": "boolean",
          "description": "<p>Whether the customer pays by direct debit.</p>"
        }
      },
      "required": [
        "pays_by_direct_debit",
        "term_type"
      ]
    },
    "Portfolio": {
      "oneOf": [
        {
          "$ref": "#/$defs/AccountPortfolio"
        },
        {
          "$ref": "#/$defs/AccountPortfolioRequiredPortfolioReference"
        }
      ]
    },
    "PortfolioReference": {
      "type": "object",
      "properties": {
        "namespace": {
          "enum": [
            "external-portfolio-reference-id",
            "portfolio-label"
          ],
          "type": "string",
          "x-spec-enum-id": "9c7783add2be9a67",
          "description": "<p>The namespace refers to the particular context the reference exists in. This must be one of the following options below if a portfolio reference is being provided.</p>",
          "x-enum-descriptions": {
            "external-portfolio-reference-id": "external-portfolio-reference-id",
            "portfolio-label": "portfolio-label"
          }
        },
        "value": {
          "type": "string",
          "description": "<p>The unique identifier for the portfolio.</p>",
          "maxLength": 100
        }
      },
      "required": [
        "namespace",
        "value"
      ]
    },
    "PortfolioSettings": {
      "type": "object",
      "properties": {
        "collective_billing": {
          "type": "boolean",
          "default": false,
          "description": "<p>Set all accounts on the portfolio to be billed collectively. This value can only be provided if the account is the portfolio lead account.</p>"
        },
        "collective_payments": {
          "type": "boolean",
          "default": false,
          "description": "<p>Set all accounts on the portfolio to pay collectively. This value can only be provided if the account is the portfolio lead account.</p>"
        },
        "delegate_billing_schedule_to_children": {
          "type": "boolean",
          "default": false,
          "description": "<p>When using collective billing, use the child account's billing options to determine when we charge and prepare billing documents (as opposed to using the lead account's options). This value can only be provided if the account is the portfolio lead account.</p>"
        },
        "send_collective_bill_constituent_messages": {
          "type": "boolean",
          "default": false,
          "description": "<p>When using collective billing, send collective bill constituent messages to each member of the collective bill. This value can only be provided if the account is the portfolio lead account.</p>"
        }
      }
    },
    "ProductCharacteristic": {
      "oneOf": [
        {
          "$ref": "#/$defs/SalesChannelCharacteristic"
        }
      ],
      "x-validators": [
        {
          "name": "Validate that <code>characteristics.code</code> and <code>characteristics.value</code> are valid",
          "description": "Ensure that the characteristic code exists and the characteristic value is valid for the given code.",
          "possible_errors": [
            "characteristic_code_not_found",
            "invalid_characteristic_value"
          ]
        }
      ]
    },
    "ProductRateOverrideConfiguration": {
      "type": "object",
      "properties": {
        "term_type": {
          "type": "string",
          "description": "<p>The type of the contract term.</p>"
        },
        "indexation_options": {
          "allOf": [
            {
              "$ref": "#/$defs/IndexationOption"
            }
          ],
          "description": "<p>The indexation options for the product rate override.</p>"
        },
        "is_variable": {
          "type": "boolean",
          "default": true,
          "description": "<p>Whether the contract term is variable in Kraken or not. If not, it must be amended by a new contract.</p>"
        },
        "schedules": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/ProductRateOverrideSchedule"
          },
          "description": "<p>The schedule associated with the product rate override.</p>"
        }
      },
      "required": [
        "schedules",
        "term_type"
      ]
    },
    "ProductRateOverrideItemByRateBand": {
      "type": "object",
      "properties": {
        "price_per_unit": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,10}(?:\\.\\d{0,5})?$",
          "description": "<p>The price per unit of the item.</p>"
        },
        "product_code": {
          "type": "string",
          "description": "<p>The product code of the item.</p>",
          "x-validators": [
            {
              "name": "Validate product code exists",
              "description": "Validate that the product code exists in Kraken.",
              "possible_errors": [
                "product_code_does_not_exist"
              ]
            }
          ]
        },
        "rate_band": {
          "type": "string",
          "description": "<p>The override rate of the item.</p>"
        }
      },
      "required": [
        "price_per_unit",
        "product_code",
        "rate_band"
      ],
      "x-validators": [
        {
          "name": "Validate that the rate band is valid for the product code",
          "description": "Validate that the rate band provided matches the rate band for the product's rates with the provided product code.",
          "possible_errors": [
            "rate_band_not_found_for_product"
          ]
        }
      ]
    },
    "ProductRateOverrideItemByVariantProfile": {
      "type": "object",
      "properties": {
        "characteristic_values": {
          "type": "object",
          "description": "<p>The characteristic values of the product rate override item.</p>",
          "x-validators": [
            {
              "name": "Validate provided dictionary content types",
              "description": "Validates that provided dictionary contents are of the specified key type and value type.",
              "possible_errors": []
            }
          ]
        },
        "price_per_unit": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,10}(?:\\.\\d{0,5})?$",
          "description": "<p>The override rate of the item.</p>"
        },
        "product_code": {
          "type": "string",
          "description": "<p>The product code of the item.</p>",
          "x-validators": [
            {
              "name": "Validate product code exists",
              "description": "Validate that the product code exists in Kraken.",
              "possible_errors": [
                "product_code_does_not_exist"
              ]
            }
          ]
        },
        "rate_specification_code": {
          "type": "string",
          "description": "<p>The rate specification code of the item.</p>"
        },
        "scheme_labels": {
          "type": "object",
          "description": "<p>The scheme labels of the product rate override item.</p>",
          "x-validators": [
            {
              "name": "Validate provided dictionary content types",
              "description": "Validates that provided dictionary contents are of the specified key type and value type.",
              "possible_errors": []
            }
          ]
        }
      },
      "required": [
        "price_per_unit",
        "product_code",
        "rate_specification_code"
      ],
      "x-validators": [
        {
          "name": "Validate that the rate band is valid for the product code",
          "description": "Validate that the rate band provided matches the rate band for the product's rates with the provided product code.",
          "possible_errors": [
            "characteristic_code_not_found",
            "invalid_characteristic_value",
            "invalid_variant_profile_for_product",
            "product_specification_not_found_for_product",
            "rate_specification_not_found_for_product"
          ]
        }
      ]
    },
    "ProductRateOverrideSchedule": {
      "type": "object",
      "properties": {
        "effective_from": {
          "type": "string",
          "format": "date-time",
          "description": "<p>The date on which the schedule goes into effect. This is an inclusive date. Example: If the <code>effective_from</code> is October 1, 2024, then the schedule is valid on October 1, 2024 and following dates.</p>"
        },
        "items": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/ProductRateOverrideItemByRateBand"
          },
          "description": "<p>The items specified by rate band affected by the override during this schedule.</p>"
        },
        "variant_items": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/ProductRateOverrideItemByVariantProfile"
          },
          "description": "<p>The items specified by characteristic values affected by the override during this schedule.</p>"
        }
      },
      "required": [
        "effective_from"
      ],
      "x-validators": [
        {
          "name": "Validate that rate override schedule item must include rate overrides.",
          "description": "Validate that rate override schedule item must include at least 'items' or 'characteristic_items' values.",
          "possible_errors": [
            "rate_override_items_required"
          ]
        }
      ]
    },
    "PromotionAssignmentSchedule": {
      "type": "object",
      "properties": {
        "discount_targets": {
          "type": "object",
          "additionalProperties": {
            "type": "array",
            "items": {
              "$ref": "#/$defs/PromotionAssignmentTarget"
            }
          },
          "description": "<p>Mapping of discount code to a list of targets the discount applies to.</p>"
        },
        "params": {
          "type": "object",
          "description": "<p>Optional parameters for the promotion assignment schedule. Supports the following keys: <code>promotion_start_date</code> — an ISO 8601 datetime string (e.g. <code>2024-01-15T00:00:00+00:00</code>) that overrides the date used when calculating promotion eligibility (e.g. months since sign-up). If omitted, the date is derived from the customer's agreement.</p>"
        },
        "promotion_code": {
          "type": "string",
          "description": "<p>The promotion code to apply.</p>"
        }
      },
      "required": [
        "discount_targets",
        "promotion_code"
      ],
      "x-validators": [
        {
          "name": "Promotion assignment discount targets are valid",
          "description": "Validates that the promotion exists, discounts are defined in the promotion, target types match the discount target type, and target identifiers are valid.",
          "possible_errors": [
            "discount_not_in_promotion",
            "invalid_input_data",
            "promotion_not_registered",
            "rate_source_provider_not_registered",
            "source_data_not_supported_for_fixed_rate",
            "source_data_reference_mismatch",
            "target_identifier_invalid",
            "target_type_mismatch",
            "target_type_not_registered"
          ]
        },
        {
          "name": "Promotion assignment params are valid",
          "description": "Validates that the params field contains only valid values. If promotion_start_date is provided, it must be a valid ISO 8601 datetime string.",
          "possible_errors": [
            "invalid_promotion_start_date"
          ]
        }
      ]
    },
    "PromotionAssignmentTarget": {
      "type": "object",
      "properties": {
        "displayed_on_bill": {
          "type": "boolean",
          "default": true,
          "description": "<p>Whether this discount should be displayed as a line item on customer bills. Defaults to <code>true</code>. Set to <code>false</code> to hide the discount from bills while still applying it.</p>"
        },
        "identifier": {
          "type": "string",
          "description": "<p>The identifier for the target. Format is <code>&lt;product_specification_identifier&gt;:&lt;specification_code&gt;</code> (e.g., for rate specifications or shared rates).</p>"
        },
        "source_data": {
          "type": "object",
          "description": "<p>Optional configuration data used by rate providers to resolve discount rates. The structure depends on the rate provider (e.g., <code>&#123;\"bespoke_amount\": \"0.05\"&#125;</code> for bespoke rates).</p>"
        },
        "target_type": {
          "type": "string",
          "description": "<p>The type of target being discounted. Use <code>rate_specification</code> to target a product catalog rate specification, or <code>shared_rate</code> to target a shared rate.</p>"
        }
      },
      "required": [
        "identifier",
        "target_type"
      ]
    },
    "PromotionAssignmentTerm": {
      "type": "object",
      "properties": {
        "term_type": {
          "type": "string",
          "description": "<p>The type of the contract term.</p>"
        },
        "is_variable": {
          "type": "boolean",
          "default": true,
          "description": "<p>Whether the contract term is variable in Kraken or not. If not, it must be amended by a new contract.</p>"
        },
        "schedules": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/PromotionAssignmentSchedule"
          },
          "description": "<p>The list of promotion assignment schedules.</p>",
          "minItems": 1
        }
      },
      "required": [
        "schedules",
        "term_type"
      ]
    },
    "PropertyAdministrator": {
      "type": "object",
      "properties": {
        "address1": {
          "type": "string",
          "description": "<p>Property administrator's address line 1.</p>",
          "deprecated": true,
          "maxLength": 512
        },
        "address2": {
          "type": "string",
          "description": "<p>Property administrator's address line 2.</p>",
          "deprecated": true,
          "maxLength": 512
        },
        "address3": {
          "type": "string",
          "description": "<p>Property administrator's address line 3.</p>",
          "deprecated": true,
          "maxLength": 512
        },
        "address4": {
          "type": "string",
          "description": "<p>Property administrator's address line 4.</p>",
          "deprecated": true,
          "maxLength": 512
        },
        "address5": {
          "type": "string",
          "description": "<p>Property administrator's address line 5.</p>",
          "deprecated": true,
          "maxLength": 512
        },
        "billing_name": {
          "type": "string",
          "default": "",
          "description": "<p>The billing name to be used on the property administrators account. If provided, it will be used for producing statements. If not, the customer names on the account will be used.</p>",
          "maxLength": 255
        },
        "date_of_birth": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>The property administrator's date of birth.</p>"
        },
        "deceased": {
          "enum": [
            "Reported",
            "Confirmed",
            ""
          ],
          "type": "string",
          "x-spec-enum-id": "f90e7d899a971044",
          "default": "",
          "description": "<p>Whether the property administrator is deceased or not. Defaults to an empty string if not provided.</p>",
          "x-enum-descriptions": {
            "Reported": "Reported",
            "Confirmed": "Confirmed",
            "": ""
          }
        },
        "effective_from": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time",
          "description": "<p>The date at which this person starts being an administrator of the property (inclusive).</p>"
        },
        "effective_to": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time",
          "description": "<p>The date at which this person stops being an administrator of the property (exclusive).</p>"
        },
        "email": {
          "type": [
            "string",
            "null"
          ],
          "format": "email",
          "description": "<p>The property administrator's email address. This is the email address they will use to log into their online portal. Defaults to an empty string if not provided.</p>",
          "maxLength": 254
        },
        "family_name": {
          "type": "string",
          "default": "",
          "description": "<p>The property administrator's family name.</p>",
          "maxLength": 255
        },
        "given_name": {
          "type": [
            "string",
            "null"
          ],
          "default": "",
          "description": "<p>The property administrator's given name.</p>",
          "maxLength": 255
        },
        "landline": {
          "type": [
            "string",
            "null"
          ],
          "default": "",
          "description": "<p>The property administrator's landline phone number.</p>",
          "maxLength": 32,
          "x-validators": [
            {
              "name": "Validate phone number",
              "description": "Validates that a phone number conforms to the norms of the region from which the migration is taking place.",
              "possible_errors": [
                "invalid_phone_number"
              ]
            }
          ]
        },
        "mobile": {
          "type": [
            "string",
            "null"
          ],
          "default": "",
          "description": "<p>The property administrator's personal mobile number.</p>",
          "maxLength": 32,
          "x-validators": [
            {
              "name": "Validate phone number",
              "description": "Validates that a phone number conforms to the norms of the region from which the migration is taking place.",
              "possible_errors": [
                "invalid_phone_number"
              ]
            }
          ]
        },
        "postcode": {
          "type": "string",
          "description": "<p>Property administrator's postcode.</p>",
          "deprecated": true,
          "maxLength": 10
        },
        "role": {
          "enum": [
            "LANDLORD",
            "PROPERTY_DEVELOPER"
          ],
          "type": "string",
          "x-spec-enum-id": "6092c30314e34a56",
          "default": "LANDLORD",
          "description": "<p>The portfolio role to be assigned to the property administrator on account creation. Will default to LANDLORD if no value is provided.</p>",
          "x-enum-descriptions": {
            "LANDLORD": "Landlord",
            "PROPERTY_DEVELOPER": "Property Developer"
          }
        },
        "salutation": {
          "type": [
            "string",
            "null"
          ],
          "default": "",
          "description": "<p>The property administrator's preferred salutation.</p>",
          "maxLength": 128
        },
        "title": {
          "type": [
            "string",
            "null"
          ],
          "default": "",
          "description": "<p>The property administrator's preferred title.</p>",
          "maxLength": 20
        }
      },
      "x-validators": [
        {
          "name": "Validate <code>⁨effective_to⁩</code> not before <code>⁨effective_from⁩</code>",
          "description": "Validates that <code>⁨effective_to⁩</code>, if given, is on or later than <code>⁨effective_from⁩</code>.",
          "possible_errors": [
            "start_date_later_than_end_date"
          ]
        }
      ]
    },
    "RateGroupEligibilityConfiguration": {
      "type": "object",
      "properties": {
        "term_type": {
          "type": "string",
          "description": "<p>The type of the contract term.</p>"
        },
        "is_variable": {
          "type": "boolean",
          "default": true,
          "description": "<p>Whether the contract term is variable in Kraken or not. If not, it must be amended by a new contract.</p>"
        },
        "schedules": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/RateGroupEligibilitySchedule"
          },
          "description": "<p>Rate group eligibility schedules.</p>"
        },
        "time_series_specification_schedules": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/TimeSeriesSpecificationEligibilitySchedule"
          },
          "description": "<p>Shared rate eligibility schedules.</p>"
        }
      },
      "required": [
        "schedules",
        "term_type",
        "time_series_specification_schedules"
      ]
    },
    "RateGroupEligibilitySchedule": {
      "type": "object",
      "properties": {
        "effective_period": {
          "allOf": [
            {
              "$ref": "#/$defs/EffectivePeriod"
            }
          ],
          "description": "<p>The effective period of the schedule.</p>"
        },
        "is_eligible": {
          "type": "boolean",
          "description": "<p>Whether the rate group is eligible for charging to the customer.</p>"
        },
        "product_code": {
          "type": "string",
          "description": "<p>Product code. </p>",
          "x-validators": [
            {
              "name": "Validate product code exists",
              "description": "Validate that the product code exists in Kraken.",
              "possible_errors": [
                "product_code_does_not_exist"
              ]
            }
          ]
        },
        "rate_group_code": {
          "type": "string",
          "description": "<p>The unique rate group code for the product.</p>"
        },
        "supply_point_identifier": {
          "type": "string",
          "description": "<p>Optional supply point identifier to restrict this schedule to a specific supply point.</p>"
        }
      },
      "required": [
        "effective_period",
        "is_eligible",
        "product_code",
        "rate_group_code"
      ],
      "x-validators": [
        {
          "name": "Validate that the rate group code is valid for the product code",
          "description": "Validate that the rate group code provided matches the rate group for the product with the provided product code.",
          "possible_errors": [
            "rate_group_not_found_for_product"
          ]
        }
      ]
    },
    "Repayment": {
      "type": "object",
      "properties": {
        "type": {
          "enum": [
            "CHARGE",
            "PAYMENT",
            "REPAYMENT",
            "CREDIT",
            "SUPPLY_CHARGE"
          ],
          "type": "string",
          "x-spec-enum-id": "06d6aba5cee32f9a",
          "description": "<p>The type of the transaction.</p>",
          "x-enum-descriptions": {
            "CHARGE": "Charge",
            "PAYMENT": "Payment",
            "REPAYMENT": "Repayment",
            "CREDIT": "Credit",
            "SUPPLY_CHARGE": "Supply Charge"
          }
        },
        "amount": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,10}(?:\\.\\d{0,10})?$",
          "description": "<p>The amount of the transaction. e.g. if the customer has a consumption charge worth 23.43, this equates to a transaction of type <code>CHARGE</code> of 23.43. Payments and repayments must be positive numbers. Generally charges and credits are also positive, but may be negative to represent reversed charges or credits, or if an incorrect estimated reading has resulted in a negative consumption charge. Provide this amount in the currency's major unit rather than its minor unit (for example euros rather than cents, or pounds rather than pence). These examples are illustrative only; the same applies to any currency that has a major and minor unit. For currencies without a minor unit, such as the Japanese yen, pass the value as-is.</p>"
        },
        "billing_document_identifier": {
          "type": "string",
          "description": "<p>The identifier from the source system that groups a set of transactions together. This will be used in Kraken during the migration of historical statement transactions to create an archived billing document. For now this field is only required if <code>HISTORICAL_STATEMENT_REQUIRE_SINGLE_BILLING_DOCUMENT_IDENTIFIER</code> settings is ON and is meant for only <code>historical_statements_transactions</code>. Passing this to other transactions like <code>current_statement_transactions</code> or <code>transactions_in_open_settlement_period</code> will raise validation error.</p>"
        },
        "display_note": {
          "type": "string",
          "description": "<p>The customer-facing note that can be displayed in a statement or email to the customer.</p>",
          "deprecated": true
        },
        "note": {
          "type": "string",
          "description": "<p>Any additional notes about the transaction.</p>"
        },
        "payment_type": {
          "enum": [
            "DIRECT_CREDIT",
            "CARD_REFUND",
            "BACS",
            "CHEQUE",
            "BPAY",
            ""
          ],
          "type": "string",
          "x-spec-enum-id": "d2c4d6e823ed27aa",
          "description": "<p>The payment type for the transaction.</p>",
          "x-enum-descriptions": {
            "DIRECT_CREDIT": "DIRECT_CREDIT",
            "CARD_REFUND": "CARD_REFUND",
            "BACS": "BACS",
            "CHEQUE": "CHEQUE",
            "BPAY": "BPAY",
            "": ""
          }
        },
        "reason": {
          "type": "string",
          "description": "<p>The reason for the transaction.</p>"
        },
        "reference": {
          "type": "string",
          "description": "<p>The reference for the transaction. This could be an external id to help identify this transaction.</p>"
        },
        "transaction_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The date of the transaction.</p>",
          "x-validators": [
            {
              "name": "Validate transaction date",
              "description": "Validates that the transaction date provided in the payload is not in the future.",
              "possible_errors": [
                "transaction_in_future"
              ]
            }
          ]
        },
        "transaction_id": {
          "type": "string",
          "description": "<p>The unique internal identifier for the transaction.</p>"
        }
      },
      "required": [
        "amount",
        "transaction_date",
        "transaction_id",
        "type"
      ]
    },
    "SalesChannelCharacteristic": {
      "type": "object",
      "properties": {
        "code": {
          "enum": [
            "sales_channel"
          ],
          "type": "string",
          "x-spec-enum-id": "03e433a571effc5f",
          "description": "<p>The code for the product's characteristic.</p>",
          "x-enum-descriptions": {
            "sales_channel": "sales_channel"
          }
        },
        "value": {
          "enum": [
            "HIGH_REFERRER",
            "PARENT_POWER",
            "MOVE_IN",
            "TELESALES",
            "BROKER",
            "PARTNERSHIPS",
            "DIRECT",
            "ACQUISITION",
            "PEOPLE_POWER",
            "FIELD_SALES",
            "EVENTS",
            "AGGREGATOR",
            "DIGI_TELESALES",
            "LANDLORD",
            "SUPPLIER_OF_LAST_RESORT",
            "PRICE_COMPARISON",
            "NEW_TENANT",
            "WORKS_WITH_OCTOPUS",
            "GIFT_OF_KIT",
            "WORKPLACE_POP_UP",
            "DEBT_COLLECTION_AGENCY"
          ],
          "type": "string",
          "x-spec-enum-id": "2c5347e84652fd95",
          "description": "<p>The value for the product's characteristic.</p>",
          "x-enum-descriptions": {
            "HIGH_REFERRER": "HIGH_REFERRER",
            "PARENT_POWER": "PARENT_POWER",
            "MOVE_IN": "MOVE_IN",
            "TELESALES": "TELESALES",
            "BROKER": "BROKER",
            "PARTNERSHIPS": "PARTNERSHIPS",
            "DIRECT": "DIRECT",
            "ACQUISITION": "ACQUISITION",
            "PEOPLE_POWER": "PEOPLE_POWER",
            "FIELD_SALES": "FIELD_SALES",
            "EVENTS": "EVENTS",
            "AGGREGATOR": "AGGREGATOR",
            "DIGI_TELESALES": "DIGI_TELESALES",
            "LANDLORD": "LANDLORD",
            "SUPPLIER_OF_LAST_RESORT": "SUPPLIER_OF_LAST_RESORT",
            "PRICE_COMPARISON": "PRICE_COMPARISON",
            "NEW_TENANT": "NEW_TENANT",
            "WORKS_WITH_OCTOPUS": "WORKS_WITH_OCTOPUS",
            "GIFT_OF_KIT": "GIFT_OF_KIT",
            "WORKPLACE_POP_UP": "WORKPLACE_POP_UP",
            "DEBT_COLLECTION_AGENCY": "DEBT_COLLECTION_AGENCY"
          }
        }
      },
      "required": [
        "code",
        "value"
      ]
    },
    "SolarPPASupplyPoint": {
      "type": "object",
      "properties": {
        "supply_type": {
          "enum": [
            "ELECTRICITY",
            "GAS",
            "UNMETERED_GAS",
            "UNMETERED_ELECTRICITY",
            "WATER",
            "EMBEDDED_WATER",
            "EMBEDDED_ELECTRICITY",
            "EMBEDDED_GAS",
            "SOLAR_PPA",
            "REGOS_EXPORT_CERTIFICATES",
            "ROCS_EXPORT_CERTIFICATES",
            "BROADBAND",
            "HEAT_PUMP",
            "WATER_HEATER",
            "ELECTRICITY_DISTRIBUTION",
            "LIGHT",
            "POLE"
          ],
          "type": "string",
          "x-spec-enum-id": "b093b6cd0238d6bd",
          "default": "SOLAR_PPA",
          "description": "<p>Supply type of the supply point.</p>",
          "x-enum-descriptions": {
            "ELECTRICITY": "Electricity",
            "GAS": "Gas",
            "UNMETERED_GAS": "Unmetered Gas",
            "UNMETERED_ELECTRICITY": "Unmetered Electricity",
            "WATER": "Water",
            "EMBEDDED_WATER": "Embedded Water",
            "EMBEDDED_ELECTRICITY": "Embedded Electricity",
            "EMBEDDED_GAS": "Embedded Gas",
            "SOLAR_PPA": "Solar PPA",
            "REGOS_EXPORT_CERTIFICATES": "REGOs Export Certificates",
            "ROCS_EXPORT_CERTIFICATES": "ROCs Export Certificates",
            "BROADBAND": "Broadband",
            "HEAT_PUMP": "Heat Pump",
            "WATER_HEATER": "Water Heater",
            "ELECTRICITY_DISTRIBUTION": "Electricity Distribution",
            "LIGHT": "Light",
            "POLE": "Pole"
          }
        },
        "access_details": {
          "type": "string",
          "description": "<p>Access details for the meter point. No details indicates “Customer reports no access requirements”. Can’t be longer than 160 characters.</p>",
          "maxLength": 160
        },
        "address": {
          "allOf": [
            {
              "$ref": "#/$defs/CommonStructuredAddress"
            }
          ],
          "description": "<p>Structured address for this meter point.</p>"
        },
        "agreements": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/AusAgreement"
          },
          "description": "<p>List of agreements linked to the supply point.</p>",
          "x-validators": [
            {
              "name": "Validate product addon code and tariff code combination",
              "description": "aus:data-import--validation-product-addon-code-and-product-code-combination--help-text",
              "possible_errors": [
                "invalid_product_addon_code_and_product_code_combination"
              ]
            }
          ]
        },
        "dog_code": {
          "enum": [
            "Bluff",
            "Savage",
            "Tied",
            "Friendly",
            "Dog OK",
            "Dog Caution",
            "No Dog",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "d63e05b877b7aa4b",
          "description": "<p>Dog code.</p>",
          "x-enum-descriptions": {
            "Bluff": "Bluff",
            "Savage": "Savage",
            "Tied": "Tied",
            "Friendly": "Friendly",
            "Dog OK": "Dog Ok",
            "Dog Caution": "Dog Caution",
            "No Dog": "No Dog",
            "None": "None"
          }
        },
        "hazard_details": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "<p>Hazard details for the meterpoint.</br>\nNo supplied hazard details indicates “Not Known To Initiator”.</br>\nSpecifying a single details of “Not Known To Initiator” also indicates “Not Known To Initiator”.</br>\nIf the value is “Customer Reports No Hazard” or “Not Known To Initiator”, no other values may be provided.\nThe following are the market specified hazards:\n<ul>\n        <li>Customer Reports No Hazard</li>\n        <li>Dog</li>\n        <li>Electric Fence</li>\n        <li>Customer Caution</li>\n        <li>Electrical Safety Issue</li>\n        <li>Asbestos Fuse</li>\n        <li>Asbestos Board</li>\n        <li>Not Known To Initiator</li>\n</ul>\nOther values are the custom hazards and each of them can’t be longer than 100 characters.\n</p>",
          "x-validators": [
            {
              "name": "Validate hazard details",
              "description": "Validates that <code>Customer Reports No Hazard</code> and <code>\"Not Known To Initiator</code> cannot be combined with other market specified hazards.",
              "possible_errors": [
                "no_hazard_cannot_combine_with_other_hazards",
                "not_known_cannot_combine_with_other_hazards"
              ]
            },
            {
              "name": "Validate hazard details",
              "description": "<p>Hazard details for the meterpoint.</br>\nNo supplied hazard details indicates “Not Known To Initiator”.</br>\nSpecifying a single details of “Not Known To Initiator” also indicates “Not Known To Initiator”.</br>\nIf the value is “Customer Reports No Hazard” or “Not Known To Initiator”, no other values may be provided.\nThe following are the market specified hazards:\n<ul>\n        <li>Customer Reports No Hazard</li>\n        <li>Dog</li>\n        <li>Electric Fence</li>\n        <li>Customer Caution</li>\n        <li>Electrical Safety Issue</li>\n        <li>Asbestos Fuse</li>\n        <li>Asbestos Board</li>\n        <li>Not Known To Initiator</li>\n</ul>\nOther values are the custom hazards and each of them can’t be longer than 100 characters.\n</p>",
              "possible_errors": []
            }
          ]
        },
        "identifier": {
          "type": "string",
          "description": "<p> The unique identifier for the supply point.</p>",
          "x-validators": [
            {
              "name": "Validate the supply point identifier",
              "description": "Validate that the supply point identifier in the payload is valid for the territory that the account is importing in.",
              "possible_errors": [
                "invalid_supply_point_identifier"
              ]
            }
          ]
        },
        "last_billed_to_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Date up to which consumption has been billed on the supply point.</p><p>If the supply point has never been billed before, this should be the supply start date for the supply point and Kraken will bill from then.</p><p>If the supply point has been billed before, this typically represents the date of the reading that was last charged to. Kraken will then start to bill from this point.</p><p>This date is inclusive. If the equivalent date in the source system is exclusive make sure to add a day to the value before passing to Kraken.</p>"
        },
        "meter_position": {
          "enum": [
            "BA",
            "BG",
            "BH",
            "BR",
            "BV",
            "BW",
            "BY",
            "CE",
            "CP",
            "DR",
            "FA",
            "FD",
            "FF",
            "FH",
            "FL",
            "FR",
            "FS",
            "FV",
            "FW",
            "GA",
            "GR",
            "KC",
            "KI",
            "LS",
            "OB",
            "PA",
            "PO",
            "PY",
            "RS",
            "SH",
            "SK",
            "SP",
            "SR",
            "TO",
            "UB",
            "UC",
            "UF",
            "UL",
            "UP",
            "UR",
            "US",
            "WH",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "b2672f221b69f827",
          "description": "<p>Meter position code.</p>",
          "x-enum-descriptions": {
            "BA": "Ba",
            "BG": "Bg",
            "BH": "Bh",
            "BR": "Br",
            "BV": "Bv",
            "BW": "Bw",
            "BY": "By",
            "CE": "Ce",
            "CP": "Cp",
            "DR": "Dr",
            "FA": "Fa",
            "FD": "Fd",
            "FF": "Ff",
            "FH": "Fh",
            "FL": "Fl",
            "FR": "Fr",
            "FS": "Fs",
            "FV": "Fv",
            "FW": "Fw",
            "GA": "Ga",
            "GR": "Gr",
            "KC": "Kc",
            "KI": "Ki",
            "LS": "Ls",
            "OB": "Ob",
            "PA": "Pa",
            "PO": "Po",
            "PY": "Py",
            "RS": "Rs",
            "SH": "Sh",
            "SK": "Sk",
            "SP": "Sp",
            "SR": "Sr",
            "TO": "To",
            "UB": "Ub",
            "UC": "Uc",
            "UF": "Uf",
            "UL": "Ul",
            "UP": "Up",
            "UR": "Ur",
            "US": "Us",
            "WH": "Wh",
            "None": "None"
          }
        },
        "mpxn": {
          "type": "string",
          "description": "<p>MIRN or NMI of this meter point, UNMETERED_GAS_COOKTOP for unmetered gas cooktop, or UNMETERED_GAS_HEATER for unmetered gas heater. For CES water meter, the value should be prefixed with EMBEDDED_WATER_ (the prefix will not be saved).</p>"
        },
        "multiplier": {
          "type": [
            "string",
            "null"
          ],
          "format": "decimal",
          "pattern": "^-?\\d{0,3}(?:\\.\\d{0,2})?$",
          "description": "<p></p>"
        },
        "sensitive_load": {
          "type": "boolean",
          "default": false,
          "description": "<p>Whether there is sensitive load. Note that the existence of a Life Support record with \"registered\" status will take precedence over this.</p>"
        },
        "supply_end_date": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>Supply end date for current supply.</p>"
        },
        "supply_start_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Supply start date for current supply.</p>"
        }
      },
      "required": [
        "mpxn",
        "supply_start_date"
      ],
      "x-validators": [
        {
          "name": "Validate <code>⁨supply_end_date⁩</code> not before <code>⁨supply_start_date⁩</code>",
          "description": "Validates that <code>⁨supply_end_date⁩</code>, if given, is on or later than <code>⁨supply_start_date⁩</code>.",
          "possible_errors": [
            "start_date_later_than_end_date"
          ]
        },
        {
          "name": "Validate agreements do not start before supply start date",
          "description": "Validate that agreements do not start before the supply point's supply start date, if provided.",
          "possible_errors": [
            "agreement_start_date_before_supply_start_date"
          ]
        }
      ]
    },
    "SupplyPointTaxAdjustment": {
      "type": "object",
      "properties": {
        "adjustment_type": {
          "enum": [
            "EXEMPTION",
            "REDUCTION"
          ],
          "type": "string",
          "x-spec-enum-id": "7048963418647159",
          "description": "<p>The type of tax adjustment (EXEMPTION or REDUCTION).</p>",
          "x-enum-descriptions": {
            "EXEMPTION": "Exemption",
            "REDUCTION": "Reduction"
          }
        },
        "effective_from_date": {
          "type": "string",
          "format": "date",
          "description": "<p>The date the tax adjustment is effective from.</p>"
        },
        "effective_to_date": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>The date the tax adjustment is effective to (inclusive, optional).</p>"
        },
        "qualifying_usage": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,1}(?:\\.\\d{0,2})?$",
          "description": "<p>The normalised percentage of energy use on the supply point that qualifies for the tax adjustment (between 0 and 1).</p>"
        },
        "supply_point_external_identifier": {
          "type": "string",
          "description": "<p>The external identifier of the supply point this tax adjustment applies to.</p>",
          "maxLength": 255
        },
        "tax_category": {
          "type": "string",
          "description": "<p>The category of tax this adjustment applies to.</p>",
          "maxLength": 50
        },
        "tax_subcategory": {
          "type": "string",
          "default": "",
          "description": "<p>The subcategory of tax this adjustment applies to (optional).</p>",
          "maxLength": 50
        }
      },
      "required": [
        "adjustment_type",
        "effective_from_date",
        "qualifying_usage",
        "supply_point_external_identifier",
        "tax_category"
      ],
      "x-validators": [
        {
          "name": "Convert supply point external identifier to ID",
          "description": "Convert the supply point external identifier to the internal supply point ID by looking up the supply point in the database.",
          "possible_errors": [
            "supply_point_not_found"
          ]
        },
        {
          "name": "Validate <code>⁨effective_to⁩</code> not before <code>⁨effective_from⁩</code>",
          "description": "Validates that <code>⁨effective_to⁩</code>, if given, is on or later than <code>⁨effective_from⁩</code>.",
          "possible_errors": [
            "start_date_later_than_end_date"
          ]
        }
      ]
    },
    "TaxAdjustmentConfiguration": {
      "type": "object",
      "properties": {
        "term_type": {
          "type": "string",
          "description": "<p>The type of the contract term.</p>"
        },
        "adjustments": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/SupplyPointTaxAdjustment"
          },
          "description": "<p>A list of tax adjustments for supply points.</p>",
          "minItems": 0,
          "x-validators": [
            {
              "name": "Validate tax adjustments do not overlap",
              "description": "Validate that tax adjustments for the same supply point, adjustment type, tax category, and tax subcategory do not have overlapping effective periods.",
              "possible_errors": [
                "overlapping_tax_adjustments"
              ]
            }
          ]
        },
        "is_variable": {
          "type": "boolean",
          "default": true,
          "description": "<p>Whether the contract term is variable in Kraken or not. If not, it must be amended by a new contract.</p>"
        }
      },
      "required": [
        "adjustments",
        "term_type"
      ]
    },
    "TaxItem": {
      "type": "object",
      "properties": {
        "amount": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,10}(?:\\.\\d{0,10})?$",
          "description": "<p>The amount of tax. Provide this amount in the currency's major unit rather than its minor unit (for example euros rather than cents, or pounds rather than pence). These examples are illustrative only; the same applies to any currency that has a major and minor unit. For currencies without a minor unit, such as the Japanese yen, pass the value as-is.</p>"
        },
        "params": {
          "type": "object",
          "default": {},
          "description": "<p>Additional parameters for the tax item.</p>"
        },
        "rate": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,15}(?:\\.\\d{0,5})?$",
          "description": "<p>The rate at which tax has been applied.</p>"
        },
        "tax_type": {
          "type": "string",
          "description": "<p>The type of tax.</p>"
        },
        "unit_type": {
          "enum": [
            "PROPORTION",
            "CURRENCY_PER_KWH"
          ],
          "type": "string",
          "x-spec-enum-id": "c3c821f5b0c08a37",
          "description": "<p>The tax unit type.</p>",
          "x-enum-descriptions": {
            "PROPORTION": "Proportion",
            "CURRENCY_PER_KWH": "Currency Per Kwh"
          }
        },
        "value_taxed": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,15}(?:\\.\\d{0,5})?$",
          "description": "<p>The value that the tax is applied to.</p>"
        }
      },
      "required": [
        "amount",
        "rate",
        "tax_type",
        "unit_type",
        "value_taxed"
      ]
    },
    "TerminationFee": {
      "type": "object",
      "properties": {
        "term_type": {
          "type": "string",
          "description": "<p>The type of the contract term.</p>"
        },
        "amount": {
          "type": "integer",
          "description": "<p>The fee amount in the lowest currency unit. For example, this amount could be represented in cents, pence, etc.</p>"
        },
        "fee_type": {
          "enum": [
            "FLAT",
            "WHOLE_MONTHS_REMAINING",
            "WHOLE_DAYS_REMAINING"
          ],
          "type": "string",
          "x-spec-enum-id": "ac778cd433d63345",
          "description": "<p>The type, or nature, of the fee. For example, the fee can be flat or pertain to the amount of time remaining in the contract.</p>",
          "x-enum-descriptions": {
            "FLAT": "contracts--terms--termination-fee-fee-type-flat",
            "WHOLE_MONTHS_REMAINING": "Per month remaining",
            "WHOLE_DAYS_REMAINING": "Per day remaining"
          }
        },
        "is_variable": {
          "type": "boolean",
          "default": true,
          "description": "<p>Whether the contract term is variable in Kraken or not. If not, it must be amended by a new contract.</p>"
        },
        "supply_type": {
          "enum": [
            "ELECTRICITY",
            "GAS",
            "UNMETERED_GAS",
            "UNMETERED_ELECTRICITY",
            "EMBEDDED_WATER",
            "EMBEDDED_ELECTRICITY",
            "EMBEDDED_GAS",
            "SOLAR_PPA"
          ],
          "type": "string",
          "x-spec-enum-id": "b30233ba99cda713",
          "description": "<p>The supply type being terminated.</p>",
          "x-enum-descriptions": {
            "ELECTRICITY": "Electricity",
            "GAS": "Gas",
            "UNMETERED_GAS": "Unmetered Gas",
            "UNMETERED_ELECTRICITY": "Unmetered Electricity",
            "EMBEDDED_WATER": "Embedded Water",
            "EMBEDDED_ELECTRICITY": "Embedded Electricity",
            "EMBEDDED_GAS": "Embedded Gas",
            "SOLAR_PPA": "Solar PPA"
          }
        }
      },
      "required": [
        "amount",
        "fee_type",
        "term_type"
      ],
      "x-validators": [
        {
          "name": "Validate that <code>⁨supply_type⁩</code> and <code>⁨market_name⁩</code> are not both provided",
          "description": "Validate that ⁨supply_type⁩ and ⁨market_name⁩ are not both provided.",
          "possible_errors": [
            "fields_are_mutually_exclusive"
          ]
        }
      ]
    },
    "Terms": {
      "oneOf": [
        {
          "$ref": "#/$defs/BespokeRateConfiguration"
        },
        {
          "$ref": "#/$defs/BillDueDate"
        },
        {
          "$ref": "#/$defs/BillingDocumentIssuanceFrequencyTerm"
        },
        {
          "$ref": "#/$defs/CharacteristicOverrideConfiguration"
        },
        {
          "$ref": "#/$defs/CollateralRequired"
        },
        {
          "$ref": "#/$defs/ContractMetaData"
        },
        {
          "$ref": "#/$defs/ContractedVolumeConfiguration"
        },
        {
          "$ref": "#/$defs/CorrectivePeriod"
        },
        {
          "$ref": "#/$defs/DelayerDays"
        },
        {
          "$ref": "#/$defs/GuaranteeOfOriginConfiguration"
        },
        {
          "$ref": "#/$defs/LatePaymentFees"
        },
        {
          "$ref": "#/$defs/MinimumContractLength"
        },
        {
          "$ref": "#/$defs/PartnerCommission"
        },
        {
          "$ref": "#/$defs/PaysByDirectDebitTerm"
        },
        {
          "$ref": "#/$defs/ProductRateOverrideConfiguration"
        },
        {
          "$ref": "#/$defs/PromotionAssignmentTerm"
        },
        {
          "$ref": "#/$defs/RateGroupEligibilityConfiguration"
        },
        {
          "$ref": "#/$defs/TrancheTargetResidualFee"
        },
        {
          "$ref": "#/$defs/TaxAdjustmentConfiguration"
        },
        {
          "$ref": "#/$defs/TerminationFee"
        },
        {
          "$ref": "#/$defs/AusEEPAExportContractedVolumeConfiguration"
        }
      ]
    },
    "TimeSeriesSpecificationEligibilitySchedule": {
      "type": "object",
      "properties": {
        "effective_period": {
          "allOf": [
            {
              "$ref": "#/$defs/EffectivePeriod"
            }
          ],
          "description": "<p>The effective period of the schedule.</p>"
        },
        "is_eligible": {
          "type": "boolean",
          "description": "<p>Whether the rate group is eligible for charging to the customer.</p>"
        },
        "product_code": {
          "type": "string",
          "description": "<p>Product code. </p>",
          "x-validators": [
            {
              "name": "Validate product code exists",
              "description": "Validate that the product code exists in Kraken.",
              "possible_errors": [
                "product_code_does_not_exist"
              ]
            }
          ]
        },
        "supply_point_identifier": {
          "type": "string",
          "description": "<p>Optional supply point identifier to restrict this schedule to a specific supply point.</p>"
        },
        "time_series_specification_code": {
          "type": "string",
          "description": "<p>The unique shared rate code for the product.</p>"
        }
      },
      "required": [
        "effective_period",
        "is_eligible",
        "product_code",
        "time_series_specification_code"
      ],
      "x-validators": [
        {
          "name": "data-import--validation--shared-rate-exists-for-product",
          "description": "Validate that the shared rate code provided matches the shared rate for the product with the provided product code.",
          "possible_errors": [
            "product_specification_not_found_for_product",
            "time_series_not_found_for_product"
          ]
        }
      ]
    },
    "TrancheTargetResidualFee": {
      "type": "object",
      "properties": {
        "term_type": {
          "type": "string",
          "description": "<p>The type of the contract term.</p>"
        },
        "contract_identifier": {
          "type": "string",
          "description": "<p>Contract identifier</p>"
        },
        "is_variable": {
          "type": "boolean",
          "default": true,
          "description": "<p>Whether the contract term is variable in Kraken or not. If not, it must be amended by a new contract.</p>"
        },
        "markets": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/TrancheTargetResidualFeeMarket"
          },
          "description": "<p>Markets</p>"
        }
      },
      "required": [
        "contract_identifier",
        "markets",
        "term_type"
      ]
    },
    "TrancheTargetResidualFeeMarket": {
      "type": "object",
      "properties": {
        "amount": {
          "type": "string",
          "format": "decimal",
          "pattern": "^-?\\d{0,10}(?:\\.\\d{0,8})?$",
          "description": "<p>Residual fee amount</p>"
        },
        "market_name": {
          "type": "string",
          "description": "<p>The market the residual fee applies to</p>"
        },
        "unit": {
          "type": "string",
          "description": "<p>Residual fee unit</p>"
        }
      },
      "required": [
        "amount",
        "market_name",
        "unit"
      ]
    },
    "UnmeteredElectricitySupplyPoint": {
      "type": "object",
      "properties": {
        "supply_type": {
          "enum": [
            "ELECTRICITY",
            "GAS",
            "UNMETERED_GAS",
            "UNMETERED_ELECTRICITY",
            "WATER",
            "EMBEDDED_WATER",
            "EMBEDDED_ELECTRICITY",
            "EMBEDDED_GAS",
            "SOLAR_PPA",
            "REGOS_EXPORT_CERTIFICATES",
            "ROCS_EXPORT_CERTIFICATES",
            "BROADBAND",
            "HEAT_PUMP",
            "WATER_HEATER",
            "ELECTRICITY_DISTRIBUTION",
            "LIGHT",
            "POLE"
          ],
          "type": "string",
          "x-spec-enum-id": "b093b6cd0238d6bd",
          "default": "UNMETERED_ELECTRICITY",
          "description": "<p>Supply type of the supply point.</p>",
          "x-enum-descriptions": {
            "ELECTRICITY": "Electricity",
            "GAS": "Gas",
            "UNMETERED_GAS": "Unmetered Gas",
            "UNMETERED_ELECTRICITY": "Unmetered Electricity",
            "WATER": "Water",
            "EMBEDDED_WATER": "Embedded Water",
            "EMBEDDED_ELECTRICITY": "Embedded Electricity",
            "EMBEDDED_GAS": "Embedded Gas",
            "SOLAR_PPA": "Solar PPA",
            "REGOS_EXPORT_CERTIFICATES": "REGOs Export Certificates",
            "ROCS_EXPORT_CERTIFICATES": "ROCs Export Certificates",
            "BROADBAND": "Broadband",
            "HEAT_PUMP": "Heat Pump",
            "WATER_HEATER": "Water Heater",
            "ELECTRICITY_DISTRIBUTION": "Electricity Distribution",
            "LIGHT": "Light",
            "POLE": "Pole"
          }
        },
        "access_details": {
          "type": "string",
          "description": "<p>Access details for the meter point. No details indicates “Customer reports no access requirements”. Can’t be longer than 160 characters.</p>",
          "maxLength": 160
        },
        "address": {
          "allOf": [
            {
              "$ref": "#/$defs/CommonStructuredAddress"
            }
          ],
          "description": "<p>Structured address for this meter point.</p>"
        },
        "agreements": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/AusAgreement"
          },
          "description": "<p>List of agreements linked to the supply point.</p>",
          "x-validators": [
            {
              "name": "Validate product addon code and tariff code combination",
              "description": "aus:data-import--validation-product-addon-code-and-product-code-combination--help-text",
              "possible_errors": [
                "invalid_product_addon_code_and_product_code_combination"
              ]
            }
          ]
        },
        "appliance_type": {
          "type": [
            "string",
            "null"
          ],
          "description": "<details><summary>Appliance type for unmetered electricity service. One of:</summary>\n    <p>\n        <ul>\n            <li><code>AIR_CONDITIONING</code></li>\n        </ul>\n    </p>\n</details>\n<p>Note: If not supplied, it will be derived from the MPXN, eg UNMETERED_ELECTRICITY_AIR_CONDITIONING -> AIR_CONDITIONING</p>"
        },
        "dog_code": {
          "enum": [
            "Bluff",
            "Savage",
            "Tied",
            "Friendly",
            "Dog OK",
            "Dog Caution",
            "No Dog",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "d63e05b877b7aa4b",
          "description": "<p>Dog code.</p>",
          "x-enum-descriptions": {
            "Bluff": "Bluff",
            "Savage": "Savage",
            "Tied": "Tied",
            "Friendly": "Friendly",
            "Dog OK": "Dog Ok",
            "Dog Caution": "Dog Caution",
            "No Dog": "No Dog",
            "None": "None"
          }
        },
        "hazard_details": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "<p>Hazard details for the meterpoint.</br>\nNo supplied hazard details indicates “Not Known To Initiator”.</br>\nSpecifying a single details of “Not Known To Initiator” also indicates “Not Known To Initiator”.</br>\nIf the value is “Customer Reports No Hazard” or “Not Known To Initiator”, no other values may be provided.\nThe following are the market specified hazards:\n<ul>\n        <li>Customer Reports No Hazard</li>\n        <li>Dog</li>\n        <li>Electric Fence</li>\n        <li>Customer Caution</li>\n        <li>Electrical Safety Issue</li>\n        <li>Asbestos Fuse</li>\n        <li>Asbestos Board</li>\n        <li>Not Known To Initiator</li>\n</ul>\nOther values are the custom hazards and each of them can’t be longer than 100 characters.\n</p>",
          "x-validators": [
            {
              "name": "Validate hazard details",
              "description": "Validates that <code>Customer Reports No Hazard</code> and <code>\"Not Known To Initiator</code> cannot be combined with other market specified hazards.",
              "possible_errors": [
                "no_hazard_cannot_combine_with_other_hazards",
                "not_known_cannot_combine_with_other_hazards"
              ]
            },
            {
              "name": "Validate hazard details",
              "description": "<p>Hazard details for the meterpoint.</br>\nNo supplied hazard details indicates “Not Known To Initiator”.</br>\nSpecifying a single details of “Not Known To Initiator” also indicates “Not Known To Initiator”.</br>\nIf the value is “Customer Reports No Hazard” or “Not Known To Initiator”, no other values may be provided.\nThe following are the market specified hazards:\n<ul>\n        <li>Customer Reports No Hazard</li>\n        <li>Dog</li>\n        <li>Electric Fence</li>\n        <li>Customer Caution</li>\n        <li>Electrical Safety Issue</li>\n        <li>Asbestos Fuse</li>\n        <li>Asbestos Board</li>\n        <li>Not Known To Initiator</li>\n</ul>\nOther values are the custom hazards and each of them can’t be longer than 100 characters.\n</p>",
              "possible_errors": []
            }
          ]
        },
        "identifier": {
          "type": "string",
          "description": "<p> The unique identifier for the supply point.</p>",
          "x-validators": [
            {
              "name": "Validate the supply point identifier",
              "description": "Validate that the supply point identifier in the payload is valid for the territory that the account is importing in.",
              "possible_errors": [
                "invalid_supply_point_identifier"
              ]
            }
          ]
        },
        "last_billed_to_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Date up to which consumption has been billed on the supply point.</p><p>If the supply point has never been billed before, this should be the supply start date for the supply point and Kraken will bill from then.</p><p>If the supply point has been billed before, this typically represents the date of the reading that was last charged to. Kraken will then start to bill from this point.</p><p>This date is inclusive. If the equivalent date in the source system is exclusive make sure to add a day to the value before passing to Kraken.</p>"
        },
        "meter_position": {
          "enum": [
            "BA",
            "BG",
            "BH",
            "BR",
            "BV",
            "BW",
            "BY",
            "CE",
            "CP",
            "DR",
            "FA",
            "FD",
            "FF",
            "FH",
            "FL",
            "FR",
            "FS",
            "FV",
            "FW",
            "GA",
            "GR",
            "KC",
            "KI",
            "LS",
            "OB",
            "PA",
            "PO",
            "PY",
            "RS",
            "SH",
            "SK",
            "SP",
            "SR",
            "TO",
            "UB",
            "UC",
            "UF",
            "UL",
            "UP",
            "UR",
            "US",
            "WH",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "b2672f221b69f827",
          "description": "<p>Meter position code.</p>",
          "x-enum-descriptions": {
            "BA": "Ba",
            "BG": "Bg",
            "BH": "Bh",
            "BR": "Br",
            "BV": "Bv",
            "BW": "Bw",
            "BY": "By",
            "CE": "Ce",
            "CP": "Cp",
            "DR": "Dr",
            "FA": "Fa",
            "FD": "Fd",
            "FF": "Ff",
            "FH": "Fh",
            "FL": "Fl",
            "FR": "Fr",
            "FS": "Fs",
            "FV": "Fv",
            "FW": "Fw",
            "GA": "Ga",
            "GR": "Gr",
            "KC": "Kc",
            "KI": "Ki",
            "LS": "Ls",
            "OB": "Ob",
            "PA": "Pa",
            "PO": "Po",
            "PY": "Py",
            "RS": "Rs",
            "SH": "Sh",
            "SK": "Sk",
            "SP": "Sp",
            "SR": "Sr",
            "TO": "To",
            "UB": "Ub",
            "UC": "Uc",
            "UF": "Uf",
            "UL": "Ul",
            "UP": "Up",
            "UR": "Ur",
            "US": "Us",
            "WH": "Wh",
            "None": "None"
          }
        },
        "mpxn": {
          "type": "string",
          "description": "<p>MIRN or NMI of this meter point, UNMETERED_GAS_COOKTOP for unmetered gas cooktop, or UNMETERED_GAS_HEATER for unmetered gas heater. For CES water meter, the value should be prefixed with EMBEDDED_WATER_ (the prefix will not be saved).</p>"
        },
        "multiplier": {
          "type": [
            "string",
            "null"
          ],
          "format": "decimal",
          "pattern": "^-?\\d{0,3}(?:\\.\\d{0,4})?$",
          "description": "<p>This can be used to approximate greater consumption of an unmetered asset.</p>"
        },
        "parent_nmi": {
          "type": "string",
          "description": "<p>Parent NMI for unmetered electricity service.</p>"
        },
        "sensitive_load": {
          "type": "boolean",
          "default": false,
          "description": "<p>Whether there is sensitive load. Note that the existence of a Life Support record with \"registered\" status will take precedence over this.</p>"
        },
        "supply_end_date": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>Supply end date for current supply.</p>"
        },
        "supply_start_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Supply start date for current supply.</p>"
        }
      },
      "required": [
        "mpxn",
        "parent_nmi",
        "supply_start_date"
      ],
      "x-validators": [
        {
          "name": "Validate <code>⁨supply_end_date⁩</code> not before <code>⁨supply_start_date⁩</code>",
          "description": "Validates that <code>⁨supply_end_date⁩</code>, if given, is on or later than <code>⁨supply_start_date⁩</code>.",
          "possible_errors": [
            "start_date_later_than_end_date"
          ]
        },
        {
          "name": "Validate agreements do not start before supply start date",
          "description": "Validate that agreements do not start before the supply point's supply start date, if provided.",
          "possible_errors": [
            "agreement_start_date_before_supply_start_date"
          ]
        }
      ]
    },
    "UnmeteredGasSupplyPoint": {
      "type": "object",
      "properties": {
        "supply_type": {
          "enum": [
            "ELECTRICITY",
            "GAS",
            "UNMETERED_GAS",
            "UNMETERED_ELECTRICITY",
            "WATER",
            "EMBEDDED_WATER",
            "EMBEDDED_ELECTRICITY",
            "EMBEDDED_GAS",
            "SOLAR_PPA",
            "REGOS_EXPORT_CERTIFICATES",
            "ROCS_EXPORT_CERTIFICATES",
            "BROADBAND",
            "HEAT_PUMP",
            "WATER_HEATER",
            "ELECTRICITY_DISTRIBUTION",
            "LIGHT",
            "POLE"
          ],
          "type": "string",
          "x-spec-enum-id": "b093b6cd0238d6bd",
          "default": "UNMETERED_GAS",
          "description": "<p>Supply type of the supply point.</p>",
          "x-enum-descriptions": {
            "ELECTRICITY": "Electricity",
            "GAS": "Gas",
            "UNMETERED_GAS": "Unmetered Gas",
            "UNMETERED_ELECTRICITY": "Unmetered Electricity",
            "WATER": "Water",
            "EMBEDDED_WATER": "Embedded Water",
            "EMBEDDED_ELECTRICITY": "Embedded Electricity",
            "EMBEDDED_GAS": "Embedded Gas",
            "SOLAR_PPA": "Solar PPA",
            "REGOS_EXPORT_CERTIFICATES": "REGOs Export Certificates",
            "ROCS_EXPORT_CERTIFICATES": "ROCs Export Certificates",
            "BROADBAND": "Broadband",
            "HEAT_PUMP": "Heat Pump",
            "WATER_HEATER": "Water Heater",
            "ELECTRICITY_DISTRIBUTION": "Electricity Distribution",
            "LIGHT": "Light",
            "POLE": "Pole"
          }
        },
        "access_details": {
          "type": "string",
          "description": "<p>Access details for the meter point. No details indicates “Customer reports no access requirements”. Can’t be longer than 160 characters.</p>",
          "maxLength": 160
        },
        "address": {
          "allOf": [
            {
              "$ref": "#/$defs/CommonStructuredAddress"
            }
          ],
          "description": "<p>Structured address for this meter point.</p>"
        },
        "agreements": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/AusAgreement"
          },
          "description": "<p>List of agreements linked to the supply point.</p>",
          "x-validators": [
            {
              "name": "Validate product addon code and tariff code combination",
              "description": "aus:data-import--validation-product-addon-code-and-product-code-combination--help-text",
              "possible_errors": [
                "invalid_product_addon_code_and_product_code_combination"
              ]
            }
          ]
        },
        "appliance_type": {
          "enum": [
            "COOKTOP",
            "HEATER",
            "MANTLE_LIGHT",
            "BARBEQUE_BBQ",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "e152f3756321ba2c",
          "description": "<p>>Appliance type for unmetered gas service.</p>\n<p>Note: If not supplied, it will be derived from the MPXN, eg UNMETERED_GAS_COOKTOP -> COOKTOP</p>",
          "x-enum-descriptions": {
            "COOKTOP": "Cooktop",
            "HEATER": "Heater",
            "MANTLE_LIGHT": "Mantle light",
            "BARBEQUE_BBQ": "Barbeque(BBQ)",
            "None": "None"
          }
        },
        "dog_code": {
          "enum": [
            "Bluff",
            "Savage",
            "Tied",
            "Friendly",
            "Dog OK",
            "Dog Caution",
            "No Dog",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "d63e05b877b7aa4b",
          "description": "<p>Dog code.</p>",
          "x-enum-descriptions": {
            "Bluff": "Bluff",
            "Savage": "Savage",
            "Tied": "Tied",
            "Friendly": "Friendly",
            "Dog OK": "Dog Ok",
            "Dog Caution": "Dog Caution",
            "No Dog": "No Dog",
            "None": "None"
          }
        },
        "hazard_details": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "<p>Hazard details for the meterpoint.</br>\nNo supplied hazard details indicates “Not Known To Initiator”.</br>\nSpecifying a single details of “Not Known To Initiator” also indicates “Not Known To Initiator”.</br>\nIf the value is “Customer Reports No Hazard” or “Not Known To Initiator”, no other values may be provided.\nThe following are the market specified hazards:\n<ul>\n        <li>Customer Reports No Hazard</li>\n        <li>Dog</li>\n        <li>Electric Fence</li>\n        <li>Customer Caution</li>\n        <li>Electrical Safety Issue</li>\n        <li>Asbestos Fuse</li>\n        <li>Asbestos Board</li>\n        <li>Not Known To Initiator</li>\n</ul>\nOther values are the custom hazards and each of them can’t be longer than 100 characters.\n</p>",
          "x-validators": [
            {
              "name": "Validate hazard details",
              "description": "Validates that <code>Customer Reports No Hazard</code> and <code>\"Not Known To Initiator</code> cannot be combined with other market specified hazards.",
              "possible_errors": [
                "no_hazard_cannot_combine_with_other_hazards",
                "not_known_cannot_combine_with_other_hazards"
              ]
            },
            {
              "name": "Validate hazard details",
              "description": "<p>Hazard details for the meterpoint.</br>\nNo supplied hazard details indicates “Not Known To Initiator”.</br>\nSpecifying a single details of “Not Known To Initiator” also indicates “Not Known To Initiator”.</br>\nIf the value is “Customer Reports No Hazard” or “Not Known To Initiator”, no other values may be provided.\nThe following are the market specified hazards:\n<ul>\n        <li>Customer Reports No Hazard</li>\n        <li>Dog</li>\n        <li>Electric Fence</li>\n        <li>Customer Caution</li>\n        <li>Electrical Safety Issue</li>\n        <li>Asbestos Fuse</li>\n        <li>Asbestos Board</li>\n        <li>Not Known To Initiator</li>\n</ul>\nOther values are the custom hazards and each of them can’t be longer than 100 characters.\n</p>",
              "possible_errors": []
            }
          ]
        },
        "identifier": {
          "type": "string",
          "description": "<p> The unique identifier for the supply point.</p>",
          "x-validators": [
            {
              "name": "Validate the supply point identifier",
              "description": "Validate that the supply point identifier in the payload is valid for the territory that the account is importing in.",
              "possible_errors": [
                "invalid_supply_point_identifier"
              ]
            }
          ]
        },
        "last_billed_to_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Date up to which consumption has been billed on the supply point.</p><p>If the supply point has never been billed before, this should be the supply start date for the supply point and Kraken will bill from then.</p><p>If the supply point has been billed before, this typically represents the date of the reading that was last charged to. Kraken will then start to bill from this point.</p><p>This date is inclusive. If the equivalent date in the source system is exclusive make sure to add a day to the value before passing to Kraken.</p>"
        },
        "meter_position": {
          "enum": [
            "BA",
            "BG",
            "BH",
            "BR",
            "BV",
            "BW",
            "BY",
            "CE",
            "CP",
            "DR",
            "FA",
            "FD",
            "FF",
            "FH",
            "FL",
            "FR",
            "FS",
            "FV",
            "FW",
            "GA",
            "GR",
            "KC",
            "KI",
            "LS",
            "OB",
            "PA",
            "PO",
            "PY",
            "RS",
            "SH",
            "SK",
            "SP",
            "SR",
            "TO",
            "UB",
            "UC",
            "UF",
            "UL",
            "UP",
            "UR",
            "US",
            "WH",
            null
          ],
          "type": [
            "string",
            "null"
          ],
          "x-spec-enum-id": "b2672f221b69f827",
          "description": "<p>Meter position code.</p>",
          "x-enum-descriptions": {
            "BA": "Ba",
            "BG": "Bg",
            "BH": "Bh",
            "BR": "Br",
            "BV": "Bv",
            "BW": "Bw",
            "BY": "By",
            "CE": "Ce",
            "CP": "Cp",
            "DR": "Dr",
            "FA": "Fa",
            "FD": "Fd",
            "FF": "Ff",
            "FH": "Fh",
            "FL": "Fl",
            "FR": "Fr",
            "FS": "Fs",
            "FV": "Fv",
            "FW": "Fw",
            "GA": "Ga",
            "GR": "Gr",
            "KC": "Kc",
            "KI": "Ki",
            "LS": "Ls",
            "OB": "Ob",
            "PA": "Pa",
            "PO": "Po",
            "PY": "Py",
            "RS": "Rs",
            "SH": "Sh",
            "SK": "Sk",
            "SP": "Sp",
            "SR": "Sr",
            "TO": "To",
            "UB": "Ub",
            "UC": "Uc",
            "UF": "Uf",
            "UL": "Ul",
            "UP": "Up",
            "UR": "Ur",
            "US": "Us",
            "WH": "Wh",
            "None": "None"
          }
        },
        "mpxn": {
          "type": "string",
          "description": "<p>MIRN or NMI of this meter point, UNMETERED_GAS_COOKTOP for unmetered gas cooktop, or UNMETERED_GAS_HEATER for unmetered gas heater. For CES water meter, the value should be prefixed with EMBEDDED_WATER_ (the prefix will not be saved).</p>"
        },
        "multiplier": {
          "type": [
            "string",
            "null"
          ],
          "format": "decimal",
          "pattern": "^-?\\d{0,3}(?:\\.\\d{0,2})?$",
          "description": "<p></p>"
        },
        "parent_mirn": {
          "type": [
            "string",
            "null"
          ],
          "description": "<p>Parent MIRN for unmetered gas service</p>"
        },
        "pricing_zone": {
          "enum": [
            "ACTEWAGL",
            "ADELAIDE",
            "AGLNSW",
            "ALBURY",
            "BALGRAFT",
            "BRISBANE",
            "BRISNORTH",
            "DARWIN",
            "MIDWSOUTHW",
            "MURYVALLEY",
            "OEMETRO",
            "OENORTH",
            "OESTHEAST",
            "SEQLD",
            "TWEEDHEADS"
          ],
          "type": "string",
          "x-spec-enum-id": "83f5c58d83e964ae",
          "description": "<p>Code of the pricing zone for unmetered gas service.</p>",
          "x-enum-descriptions": {
            "ACTEWAGL": "Actewagl",
            "ADELAIDE": "Adelaide",
            "AGLNSW": "Aglnsw",
            "ALBURY": "Albury",
            "BALGRAFT": "Balgraft",
            "BRISBANE": "Brisbane",
            "BRISNORTH": "Brisnorth",
            "DARWIN": "Darwin",
            "MIDWSOUTHW": "Midwsouthw",
            "MURYVALLEY": "Muryvalley",
            "OEMETRO": "Oemetro",
            "OENORTH": "Oenorth",
            "OESTHEAST": "Oestheast",
            "SEQLD": "Seqld",
            "TWEEDHEADS": "Tweedheads"
          }
        },
        "sensitive_load": {
          "type": "boolean",
          "default": false,
          "description": "<p>Whether there is sensitive load. Note that the existence of a Life Support record with \"registered\" status will take precedence over this.</p>"
        },
        "supply_end_date": {
          "type": [
            "string",
            "null"
          ],
          "format": "date",
          "description": "<p>Supply end date for current supply.</p>"
        },
        "supply_start_date": {
          "type": "string",
          "format": "date",
          "description": "<p>Supply start date for current supply.</p>"
        }
      },
      "required": [
        "mpxn",
        "pricing_zone",
        "supply_start_date"
      ],
      "x-validators": [
        {
          "name": "Validate <code>⁨supply_end_date⁩</code> not before <code>⁨supply_start_date⁩</code>",
          "description": "Validates that <code>⁨supply_end_date⁩</code>, if given, is on or later than <code>⁨supply_start_date⁩</code>.",
          "possible_errors": [
            "start_date_later_than_end_date"
          ]
        },
        {
          "name": "Validate agreements do not start before supply start date",
          "description": "Validate that agreements do not start before the supply point's supply start date, if provided.",
          "possible_errors": [
            "agreement_start_date_before_supply_start_date"
          ]
        }
      ]
    },
    "VariantProfile": {
      "type": "object",
      "properties": {
        "characteristic_values": {
          "type": "object",
          "description": "<p>A dictionary of characteristic values which the rate applies to.</p>",
          "x-validators": [
            {
              "name": "Validate provided dictionary content types",
              "description": "Validates that provided dictionary contents are of the specified key type and value type.",
              "possible_errors": []
            }
          ]
        },
        "scheme_labels": {
          "type": "object",
          "description": "<p>A dictionary of scheme labels which the rate applies to.</p>",
          "x-validators": [
            {
              "name": "Validate provided dictionary content types",
              "description": "Validates that provided dictionary contents are of the specified key type and value type.",
              "possible_errors": []
            },
            {
              "name": "Validate that scheme labels have the correct format",
              "description": "Validate that scheme labels have the the following format 'scheme-type:identifier' where 'scheme-type' is one of 'time_of_use', 'register'.",
              "possible_errors": [
                "invalid_scheme_label_format"
              ]
            }
          ]
        }
      }
    }
  }
}