← Files VeraARCHIVED FILE

modules/new-client/schemas/new_client_input.schema.json

33.9 KB · Oct 2, 2026 · 00:29 UTC

↓ Download file

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://mparanza.com/schemas/new-client/new-client-input-1.1.json",
  "title": "Vera New Client Input",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "schema_version",
    "jurisdiction",
    "language",
    "client_file_preparation_binding",
    "client_reference",
    "client_type",
    "tax_facts",
    "party_facts",
    "party_identity_document",
    "representatives",
    "representative_posture",
    "beneficial_owners",
    "ownership_status",
    "screening_results",
    "engagement",
    "privacy_processing_decisions",
    "marketing_consent",
    "evidence_register",
    "applicability",
    "template_references",
    "aml"
  ],
  "properties": {
    "schema_version": {
      "const": "1.1"
    },
    "language": {
      "type": "string",
      "enum": ["it", "en", "fr", "de", "es"],
      "default": "it"
    },
    "jurisdiction": {
      "const": "IT",
      "description": "Only the Italy professional-setup country pack is currently available."
    },
    "client_file_preparation_binding": {
      "$ref": "#/$defs/client_file_preparation_binding"
    },
    "client_reference": {
      "$ref": "#/$defs/reference"
    },
    "client_type": {
      "enum": ["individual", "sole_trader", "company", "entity"]
    },
    "tax_facts": {
      "type": "object",
      "additionalProperties": false,
      "required": ["codice_fiscale", "partita_iva"],
      "properties": {
        "codice_fiscale": {
          "$ref": "#/$defs/tax_fact"
        },
        "partita_iva": {
          "$ref": "#/$defs/tax_fact"
        }
      }
    },
    "beneficial_owners": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/beneficial_owner"
      }
    },
    "ownership_status": {
      "$ref": "#/$defs/ownership_status"
    },
    "party_facts": {
      "type": "array",
      "minItems": 1,
      "items": {
        "$ref": "#/$defs/party_fact"
      }
    },
    "party_identity_document": {
      "$ref": "#/$defs/identity_document"
    },
    "representatives": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/representative"
      }
    },
    "representative_posture": {
      "$ref": "#/$defs/representative_posture"
    },
    "screening_results": {
      "type": "array",
      "minItems": 3,
      "items": {
        "$ref": "#/$defs/screening_result"
      }
    },
    "engagement": {
      "$ref": "#/$defs/engagement"
    },
    "privacy_processing_decisions": {
      "type": "array",
      "minItems": 1,
      "items": {
        "$ref": "#/$defs/privacy_processing_decision"
      }
    },
    "marketing_consent": {
      "$ref": "#/$defs/marketing_consent"
    },
    "evidence_register": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/evidence"
      }
    },
    "applicability": {
      "type": "array",
      "minItems": 5,
      "maxItems": 5,
      "items": {
        "$ref": "#/$defs/applicability_record"
      }
    },
    "template_references": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/template_reference"
      }
    },
    "aml": {
      "$ref": "#/$defs/aml"
    }
  },
  "$defs": {
    "representative_posture": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "status",
        "executor_reference",
        "basis",
        "evidence_ids",
        "confirmed_by_role",
        "confirmed_at"
      ],
      "properties": {
        "status": {"enum": ["recorded", "none_required_confirmed", "pending"]},
        "executor_reference": {
          "oneOf": [{"type": "null"}, {"$ref": "#/$defs/reference"}]
        },
        "basis": {"type": "string", "minLength": 1},
        "evidence_ids": {"$ref": "#/$defs/evidence_ids"},
        "confirmed_by_role": {"enum": [null, "professional"]},
        "confirmed_at": {"type": ["string", "null"], "format": "date-time"}
      }
    },
    "ownership_status": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "status",
        "basis",
        "evidence_ids",
        "confirmed_by_role",
        "confirmed_at"
      ],
      "properties": {
        "status": {
          "enum": [
            "owners_recorded",
            "none_confirmed",
            "not_applicable_confirmed",
            "pending"
          ]
        },
        "basis": {"type": "string", "minLength": 1},
        "evidence_ids": {"$ref": "#/$defs/evidence_ids"},
        "confirmed_by_role": {"enum": [null, "professional"]},
        "confirmed_at": {"type": ["string", "null"], "format": "date-time"}
      }
    },
    "reference": {
      "type": "string",
      "pattern": "^[A-Za-z0-9][A-Za-z0-9_.:-]{2,79}$"
    },
    "sha256": {
      "type": "string",
      "pattern": "^[0-9a-fA-F]{64}$"
    },
    "path_reference": {
      "enum": ["run_root_relative", "plugin_root_relative"]
    },
    "client_file_preparation_binding": {
      "oneOf": [
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "mode",
            "run_id",
            "final_artifacts_path",
            "final_artifacts_sha256",
            "upstream_package_hash",
            "promoted_evidence_ids"
          ],
          "properties": {
            "mode": {"const": "client_file_preparation_run"},
            "run_id": {"$ref": "#/$defs/reference"},
            "final_artifacts_path": {"type": "string", "minLength": 1},
            "final_artifacts_path_reference": {"$ref": "#/$defs/path_reference"},
            "final_artifacts_sha256": {"$ref": "#/$defs/sha256"},
            "upstream_package_hash": {"$ref": "#/$defs/sha256"},
            "promoted_evidence_ids": {"$ref": "#/$defs/evidence_ids"}
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": ["mode", "reason", "evidence_ids"],
          "properties": {
            "mode": {"const": "standalone_evidence"},
            "reason": {"type": "string", "minLength": 1},
            "evidence_ids": {"$ref": "#/$defs/evidence_ids"}
          }
        }
      ]
    },
    "evidence_ids": {
      "type": "array",
      "uniqueItems": true,
      "items": {
        "$ref": "#/$defs/reference"
      }
    },
    "tax_fact": {
      "type": "object",
      "additionalProperties": false,
      "required": ["value", "verification_status", "evidence_ids"],
      "properties": {
        "value": {
          "type": ["string", "null"]
        },
        "verification_status": {
          "enum": ["unknown", "reported", "verified", "not_applicable"]
        },
        "evidence_ids": {
          "$ref": "#/$defs/evidence_ids"
        }
      }
    },
    "beneficial_owner": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "owner_reference",
        "control_basis",
        "verification_status",
        "evidence_ids",
        "identity_document"
      ],
      "properties": {
        "owner_reference": {
          "$ref": "#/$defs/reference"
        },
        "control_basis": {
          "type": "string",
          "minLength": 1
        },
        "verification_status": {
          "enum": ["unknown", "reported", "verified"]
        },
        "evidence_ids": {
          "$ref": "#/$defs/evidence_ids"
        },
        "identity_document": {
          "$ref": "#/$defs/identity_document"
        }
      }
    },
    "party_fact": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "fact_id",
        "fact_code",
        "value",
        "verification_status",
        "evidence_ids"
      ],
      "properties": {
        "fact_id": {
          "$ref": "#/$defs/reference"
        },
        "fact_code": {
          "$ref": "#/$defs/reference"
        },
        "value": {
          "type": ["string", "number", "integer", "boolean", "null"]
        },
        "verification_status": {
          "enum": ["unknown", "reported", "verified", "not_applicable"]
        },
        "evidence_ids": {
          "$ref": "#/$defs/evidence_ids"
        }
      }
    },
    "identity_document": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "verification_status",
        "document_type",
        "document_number",
        "issuer",
        "issued_on",
        "expires_on",
        "verified_on",
        "verification_method",
        "evidence_ids"
      ],
      "properties": {
        "verification_status": {
          "enum": ["unknown", "reported", "verified", "not_applicable"]
        },
        "document_type": {
          "type": ["string", "null"]
        },
        "document_number": {
          "type": ["string", "null"]
        },
        "issuer": {
          "type": ["string", "null"]
        },
        "issued_on": {
          "type": ["string", "null"],
          "format": "date"
        },
        "expires_on": {
          "type": ["string", "null"],
          "format": "date"
        },
        "verified_on": {
          "type": ["string", "null"],
          "format": "date"
        },
        "verification_method": {
          "type": ["string", "null"]
        },
        "evidence_ids": {
          "$ref": "#/$defs/evidence_ids"
        }
      }
    },
    "representative": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "representative_reference",
        "role",
        "authority_basis",
        "evidence_ids",
        "identity_document"
      ],
      "properties": {
        "representative_reference": {
          "$ref": "#/$defs/reference"
        },
        "role": {
          "enum": ["executor", "legal_representative", "delegate", "other"]
        },
        "authority_basis": {
          "type": "string",
          "minLength": 1
        },
        "evidence_ids": {
          "$ref": "#/$defs/evidence_ids"
        },
        "identity_document": {
          "$ref": "#/$defs/identity_document"
        }
      }
    },
    "professional_screening_resolution": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "status",
        "relationship_decision",
        "basis",
        "confirmed_by_role",
        "confirmed_at",
        "evidence_ids"
      ],
      "properties": {
        "status": {"enum": ["unresolved", "confirmed"]},
        "relationship_decision": {
          "enum": [null, "proceed", "proceed_with_controls", "do_not_proceed"]
        },
        "basis": {"type": "string", "minLength": 1},
        "confirmed_by_role": {"enum": [null, "professional"]},
        "confirmed_at": {"type": ["string", "null"], "format": "date-time"},
        "evidence_ids": {"$ref": "#/$defs/evidence_ids"}
      },
      "allOf": [
        {
          "if": {"properties": {"status": {"const": "confirmed"}}},
          "then": {
            "properties": {
              "relationship_decision": {
                "enum": ["proceed", "proceed_with_controls", "do_not_proceed"]
              },
              "confirmed_by_role": {"const": "professional"},
              "confirmed_at": {"type": "string", "format": "date-time"},
              "evidence_ids": {"minItems": 1}
            }
          },
          "else": {
            "properties": {
              "relationship_decision": {"type": "null"},
              "confirmed_by_role": {"type": "null"},
              "confirmed_at": {"type": "null"}
            }
          }
        }
      ]
    },
    "screening_result": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "screening_id",
        "subject_reference",
        "screening_type",
        "source_reference",
        "checked_at",
        "outcome",
        "review_status",
        "evidence_ids",
        "professional_resolution"
      ],
      "properties": {
        "screening_id": {
          "$ref": "#/$defs/reference"
        },
        "subject_reference": {
          "$ref": "#/$defs/reference"
        },
        "screening_type": {
          "enum": ["pep", "sanctions", "country"]
        },
        "source_reference": {
          "type": ["string", "null"],
          "minLength": 1
        },
        "checked_at": {
          "type": ["string", "null"],
          "format": "date-time"
        },
        "outcome": {
          "enum": ["clear", "potential_match", "confirmed_match", "unknown"]
        },
        "review_status": {
          "enum": ["proposed", "confirmed"]
        },
        "evidence_ids": {
          "$ref": "#/$defs/evidence_ids"
        },
        "professional_resolution": {
          "oneOf": [
            {"type": "null"},
            {"$ref": "#/$defs/professional_screening_resolution"}
          ]
        }
      },
      "allOf": [
        {
          "if": {"properties": {"outcome": {"const": "clear"}}},
          "then": {"properties": {"professional_resolution": {"type": "null"}}},
          "else": {
            "properties": {
              "professional_resolution": {
                "$ref": "#/$defs/professional_screening_resolution"
              }
            }
          }
        },
        {
          "if": {"properties": {"review_status": {"const": "confirmed"}}},
          "then": {
            "properties": {
              "source_reference": {"type": "string", "minLength": 1},
              "checked_at": {"type": "string", "format": "date-time"},
              "evidence_ids": {"minItems": 1}
            }
          }
        }
      ]
    },
    "service": {
      "type": "object",
      "additionalProperties": false,
      "required": ["service_id", "description", "assessment_status"],
      "properties": {
        "service_id": {
          "$ref": "#/$defs/reference"
        },
        "description": {
          "type": "string",
          "minLength": 1
        },
        "assessment_status": {
          "enum": ["proposed", "confirmed"]
        }
      }
    },
    "controller_legal_basis": {
      "type": "object",
      "additionalProperties": false,
      "required": ["code", "basis"],
      "properties": {
        "code": {
          "enum": [
            "consent",
            "contract",
            "legal_obligation",
            "vital_interests",
            "public_task",
            "legitimate_interests"
          ]
        },
        "basis": {"type": "string", "minLength": 1}
      }
    },
    "privacy_processing_decision": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "decision_id",
        "purpose",
        "role",
        "controller_legal_basis",
        "processor_authority_reference",
        "retention",
        "source_ids",
        "review_status",
        "confirmed_by_role",
        "confirmed_at"
      ],
      "properties": {
        "decision_id": {"$ref": "#/$defs/reference"},
        "purpose": {"type": "string", "minLength": 1},
        "role": {
          "enum": ["controller", "processor", "joint_controller", "undetermined"]
        },
        "controller_legal_basis": {
          "oneOf": [
            {"type": "null"},
            {"$ref": "#/$defs/controller_legal_basis"}
          ]
        },
        "processor_authority_reference": {"type": ["string", "null"]},
        "retention": {
          "type": "object",
          "additionalProperties": false,
          "required": ["status", "period_or_criteria"],
          "properties": {
            "status": {"enum": ["defined", "undetermined"]},
            "period_or_criteria": {"type": ["string", "null"]}
          }
        },
        "source_ids": {
          "type": "array",
          "uniqueItems": true,
          "items": {"$ref": "#/$defs/reference"}
        },
        "review_status": {"enum": ["proposed", "confirmed"]},
        "confirmed_by_role": {"enum": [null, "professional"]},
        "confirmed_at": {"type": ["string", "null"], "format": "date-time"}
      }
    },
    "marketing_consent": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "scope",
        "request_status",
        "choice",
        "purposes",
        "channels",
        "requested_at",
        "recorded_at",
        "withdrawn_at",
        "evidence_ids",
        "review_status",
        "confirmed_by_role",
        "confirmed_at"
      ],
      "properties": {
        "scope": {"const": "marketing_only"},
        "request_status": {"enum": ["not_requested", "requested"]},
        "choice": {"enum": [null, "granted", "refused", "withdrawn"]},
        "purposes": {"type": "array", "uniqueItems": true, "items": {"type": "string", "minLength": 1}},
        "channels": {"type": "array", "uniqueItems": true, "items": {"type": "string", "minLength": 1}},
        "requested_at": {"type": ["string", "null"], "format": "date-time"},
        "recorded_at": {"type": ["string", "null"], "format": "date-time"},
        "withdrawn_at": {"type": ["string", "null"], "format": "date-time"},
        "evidence_ids": {"$ref": "#/$defs/evidence_ids"},
        "review_status": {"enum": ["not_required", "proposed", "confirmed"]},
        "confirmed_by_role": {"enum": [null, "professional"]},
        "confirmed_at": {"type": ["string", "null"], "format": "date-time"}
      }
    },
    "engagement_terms": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "review_status",
        "duration_months",
        "notice_days",
        "advance_amount",
        "currency",
        "payment_terms",
        "indexation_basis",
        "insurance_reference"
      ],
      "properties": {
        "review_status": {
          "enum": ["proposed", "confirmed", "incomplete"]
        },
        "duration_months": {
          "type": ["integer", "null"],
          "minimum": 0
        },
        "notice_days": {
          "type": ["integer", "null"],
          "minimum": 0
        },
        "advance_amount": {
          "type": ["number", "null"],
          "minimum": 0
        },
        "currency": {
          "type": "string",
          "minLength": 3
        },
        "payment_terms": {
          "type": ["string", "null"]
        },
        "indexation_basis": {
          "type": ["string", "null"]
        },
        "insurance_reference": {
          "type": ["string", "null"]
        }
      }
    },
    "engagement": {
      "type": "object",
      "additionalProperties": false,
      "required": ["kind", "start_date", "services", "terms"],
      "properties": {
        "kind": {
          "enum": ["ongoing", "one_off"]
        },
        "start_date": {
          "type": ["string", "null"],
          "format": "date"
        },
        "services": {
          "type": "array",
          "minItems": 1,
          "items": {
            "$ref": "#/$defs/service"
          }
        },
        "terms": {
          "$ref": "#/$defs/engagement_terms"
        }
      }
    },
    "evidence": {
      "type": "object",
      "additionalProperties": false,
      "required": ["evidence_id", "evidence_type", "status"],
      "properties": {
        "evidence_id": {
          "$ref": "#/$defs/reference"
        },
        "evidence_type": {
          "type": "string",
          "minLength": 1
        },
        "status": {
          "enum": ["verified", "available", "requested", "missing", "stale"]
        },
        "obtained_on": {
          "type": ["string", "null"],
          "format": "date"
        },
        "expires_on": {
          "type": ["string", "null"],
          "format": "date"
        },
        "sha256": {
          "type": ["string", "null"],
          "pattern": "^[0-9a-fA-F]{64}$"
        },
        "local_path": {
          "type": ["string", "null"]
        },
        "local_path_reference": {
          "$ref": "#/$defs/path_reference"
        }
      }
    },
    "applicability_record": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "topic",
        "applicability_status",
        "review_status",
        "basis",
        "source_ids",
        "case_fact_ids"
      ],
      "properties": {
        "topic": {
          "enum": [
            "mandate",
            "privacy_notice",
            "ai_transparency_notice",
            "article_28_terms",
            "aml_assessment"
          ]
        },
        "applicability_status": {
          "enum": ["applicable", "not_applicable", "unclear"]
        },
        "review_status": {
          "enum": ["proposed", "confirmed"]
        },
        "basis": {
          "type": "string",
          "minLength": 1
        },
        "source_ids": {
          "type": "array",
          "uniqueItems": true,
          "items": {
            "$ref": "#/$defs/reference"
          }
        },
        "case_fact_ids": {
          "type": "array",
          "minItems": 1,
          "uniqueItems": true,
          "items": {"$ref": "#/$defs/reference"}
        },
        "confirmed_by_role": {
          "enum": [null, "professional"]
        },
        "confirmed_at": {
          "type": ["string", "null"],
          "format": "date-time"
        }
      },
      "allOf": [
        {
          "if": {
            "properties": {"review_status": {"const": "confirmed"}},
            "required": ["review_status"]
          },
          "then": {
            "required": ["confirmed_by_role", "confirmed_at"],
            "properties": {
              "confirmed_by_role": {"const": "professional"},
              "confirmed_at": {"type": "string", "format": "date-time"}
            }
          },
          "else": {
            "properties": {
              "confirmed_by_role": {"type": "null"},
              "confirmed_at": {"type": "null"}
            }
          }
        }
      ]
    },
    "template_reference": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "document_type",
        "template_id",
        "version",
        "local_path",
        "sha256",
        "source_ids",
        "source_basis_sha256",
        "approval_status",
        "approved_by_role",
        "approved_at",
        "approval_withdrawn_at",
        "reuse_status",
        "reuse_scope",
        "jurisdiction",
        "language",
        "valid_from",
        "valid_until",
        "review_due_on"
      ],
      "properties": {
        "document_type": {
          "enum": [
            "mandate",
            "privacy_notice",
            "ai_transparency_notice",
            "article_28_terms",
            "aml_assessment"
          ]
        },
        "template_id": {
          "$ref": "#/$defs/reference"
        },
        "version": {
          "type": "string",
          "minLength": 1
        },
        "local_path": {"type": "string", "minLength": 1},
        "local_path_reference": {"$ref": "#/$defs/path_reference"},
        "sha256": {"$ref": "#/$defs/sha256"},
        "source_ids": {
          "type": "array",
          "uniqueItems": true,
          "items": {"$ref": "#/$defs/reference"}
        },
        "source_basis_sha256": {"$ref": "#/$defs/sha256"},
        "approval_status": {"enum": ["approved", "pending", "withdrawn"]},
        "approved_by_role": {
          "enum": [null, "professional"]
        },
        "approved_at": {
          "type": ["string", "null"],
          "format": "date-time"
        },
        "approval_withdrawn_at": {
          "type": ["string", "null"],
          "format": "date-time"
        },
        "reuse_status": {
          "enum": ["studio_owned", "licensed_for_client_use", "reference_only", "unknown", "prohibited"]
        },
        "reuse_scope": {"enum": [null, "single_case", "studio_clients"]},
        "jurisdiction": {"type": "string", "minLength": 1},
        "language": {"type": "string", "minLength": 1},
        "valid_from": {"type": "string", "format": "date"},
        "valid_until": {"type": ["string", "null"], "format": "date"},
        "review_due_on": {"type": "string", "format": "date"}
      }
    },
    "aml_factor_a": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "factor_id",
        "score",
        "assessment_status",
        "basis",
        "evidence_ids"
      ],
      "properties": {
        "factor_id": {
          "enum": ["A1", "A2", "A3", "A4"]
        },
        "score": {
          "type": ["number", "null"],
          "minimum": 1,
          "maximum": 4
        },
        "assessment_status": {
          "enum": ["proposed", "confirmed"]
        },
        "basis": {
          "type": "string",
          "minLength": 1
        },
        "evidence_ids": {
          "$ref": "#/$defs/evidence_ids"
        },
        "confirmed_by_role": {
          "enum": [null, "professional"]
        },
        "confirmed_at": {
          "type": ["string", "null"],
          "format": "date-time"
        }
      },
      "allOf": [
        {
          "if": {
            "properties": {"assessment_status": {"const": "confirmed"}},
            "required": ["assessment_status"]
          },
          "then": {
            "required": ["confirmed_by_role", "confirmed_at"],
            "properties": {
              "score": {"type": "number"},
              "confirmed_by_role": {"const": "professional"},
              "confirmed_at": {"type": "string", "format": "date-time"}
            }
          },
          "else": {
            "properties": {
              "confirmed_by_role": {"type": "null"},
              "confirmed_at": {"type": "null"}
            }
          }
        }
      ]
    },
    "aml_factor_b": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "factor_id",
        "score",
        "assessment_status",
        "basis",
        "evidence_ids"
      ],
      "properties": {
        "factor_id": {
          "enum": ["B1", "B2", "B3", "B4", "B5", "B6"]
        },
        "score": {
          "type": ["number", "null"],
          "minimum": 1,
          "maximum": 4
        },
        "assessment_status": {
          "enum": ["proposed", "confirmed"]
        },
        "basis": {
          "type": "string",
          "minLength": 1
        },
        "evidence_ids": {
          "$ref": "#/$defs/evidence_ids"
        },
        "confirmed_by_role": {
          "enum": [null, "professional"]
        },
        "confirmed_at": {
          "type": ["string", "null"],
          "format": "date-time"
        }
      },
      "allOf": [
        {
          "if": {
            "properties": {"assessment_status": {"const": "confirmed"}},
            "required": ["assessment_status"]
          },
          "then": {
            "required": ["confirmed_by_role", "confirmed_at"],
            "properties": {
              "confirmed_by_role": {"const": "professional"},
              "confirmed_at": {"type": "string", "format": "date-time"}
            }
          },
          "else": {
            "properties": {
              "confirmed_by_role": {"type": "null"},
              "confirmed_at": {"type": "null"}
            }
          }
        }
      ]
    },
    "aml_trigger": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "trigger_id",
        "status",
        "review_status",
        "basis",
        "evidence_ids"
      ],
      "properties": {
        "trigger_id": {
          "enum": [
            "pep_private_capacity",
            "high_risk_third_country",
            "qualified_cross_border_correspondence"
          ]
        },
        "status": {
          "enum": ["yes", "no", "unknown"]
        },
        "review_status": {
          "enum": ["proposed", "confirmed"]
        },
        "basis": {
          "type": "string",
          "minLength": 1
        },
        "evidence_ids": {
          "$ref": "#/$defs/evidence_ids"
        },
        "confirmed_by_role": {
          "enum": [null, "professional"]
        },
        "confirmed_at": {
          "type": ["string", "null"],
          "format": "date-time"
        }
      },
      "allOf": [
        {
          "if": {
            "properties": {"review_status": {"const": "confirmed"}},
            "required": ["review_status"]
          },
          "then": {
            "required": ["confirmed_by_role", "confirmed_at"],
            "properties": {
              "confirmed_by_role": {"const": "professional"},
              "confirmed_at": {"type": "string", "format": "date-time"}
            }
          },
          "else": {
            "properties": {
              "confirmed_by_role": {"type": "null"},
              "confirmed_at": {"type": "null"}
            }
          }
        }
      ]
    },
    "table_1_assessment": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "status",
        "review_status",
        "basis",
        "confirmed_by_role",
        "confirmed_at"
      ],
      "properties": {
        "status": {
          "enum": ["yes", "no", "unknown"]
        },
        "review_status": {
          "enum": ["proposed", "confirmed"]
        },
        "basis": {
          "type": "string",
          "minLength": 1
        },
        "confirmed_by_role": {
          "type": ["string", "null"]
        },
        "confirmed_at": {
          "type": ["string", "null"],
          "format": "date-time"
        }
      },
      "allOf": [
        {
          "if": {
            "properties": {
              "review_status": {
                "const": "confirmed"
              }
            },
            "required": ["review_status"]
          },
          "then": {
            "properties": {
              "status": {
                "enum": ["yes", "no"]
              },
              "confirmed_by_role": {
                "const": "professional"
              },
              "confirmed_at": {
                "type": "string",
                "format": "date-time"
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "review_status": {
                "const": "proposed"
              }
            },
            "required": ["review_status"]
          },
          "then": {
            "properties": {
              "confirmed_by_role": {
                "type": "null"
              },
              "confirmed_at": {
                "type": "null"
              }
            }
          }
        }
      ]
    },
    "section_b_confirmation": {
      "type": "object",
      "additionalProperties": false,
      "required": ["confirmed", "reason", "confirmed_by_role", "confirmed_at"],
      "properties": {
        "confirmed": {
          "const": true
        },
        "reason": {
          "type": "string",
          "minLength": 1
        },
        "confirmed_by_role": {
          "const": "professional"
        },
        "confirmed_at": {
          "type": "string",
          "format": "date-time"
        }
      }
    },
    "aml": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "assessment_date",
        "inherent_risk",
        "inherent_risk_status",
        "section_b_mode",
        "section_b_exclusion_confirmation",
        "factors_a",
        "factors_b",
        "mandatory_enhanced_triggers",
        "table_1_assessment",
        "current_verification_mode",
        "enhanced_review_interval_months"
      ],
      "properties": {
        "assessment_date": {
          "type": "string",
          "format": "date"
        },
        "inherent_risk": {
          "type": ["number", "null"],
          "minimum": 1,
          "maximum": 4
        },
        "inherent_risk_status": {
          "enum": ["proposed", "confirmed"]
        },
        "section_b_mode": {
          "enum": ["full", "excluded_confirmed"]
        },
        "section_b_exclusion_confirmation": {
          "oneOf": [
            {
              "type": "null"
            },
            {
              "$ref": "#/$defs/section_b_confirmation"
            }
          ]
        },
        "factors_a": {
          "type": "array",
          "minItems": 4,
          "maxItems": 4,
          "items": {
            "$ref": "#/$defs/aml_factor_a"
          }
        },
        "factors_b": {
          "type": "array",
          "minItems": 6,
          "maxItems": 6,
          "items": {
            "$ref": "#/$defs/aml_factor_b"
          }
        },
        "mandatory_enhanced_triggers": {
          "type": "array",
          "minItems": 3,
          "maxItems": 3,
          "items": {
            "$ref": "#/$defs/aml_trigger"
          }
        },
        "table_1_assessment": {
          "$ref": "#/$defs/table_1_assessment"
        },
        "current_verification_mode": {
          "enum": [null, "conduct_rule", "simplified", "ordinary", "enhanced"]
        },
        "enhanced_review_interval_months": {
          "enum": [null, 6, 12]
        }
      },
      "allOf": [
        {
          "if": {"properties": {"inherent_risk_status": {"const": "confirmed"}}},
          "then": {"properties": {"inherent_risk": {"type": "number"}}}
        },
        {
          "if": {
            "properties": {
              "section_b_mode": {
                "const": "full"
              }
            }
          },
          "then": {
            "properties": {
              "section_b_exclusion_confirmation": {
                "type": "null"
              },
              "factors_b": {
                "items": {
                  "if": {"properties": {"assessment_status": {"const": "confirmed"}}},
                  "then": {"properties": {"score": {"type": "number"}}},
                  "properties": {
                    "score": {
                      "type": ["number", "null"],
                      "minimum": 1,
                      "maximum": 4
                    }
                  }
                }
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "section_b_mode": {
                "const": "excluded_confirmed"
              }
            }
          },
          "then": {
            "properties": {
              "section_b_exclusion_confirmation": {
                "$ref": "#/$defs/section_b_confirmation"
              },
              "factors_b": {
                "items": {
                  "properties": {
                    "score": {
                      "type": "null"
                    }
                  }
                }
              }
            }
          }
        }
      ]
    }
  }
}

SHA-256: 3455a07c30598769690358fc2429ca74176066c9c2c5db122d32c541348f81c1