{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "urn:capstone:back-to-back-funding-book:exhibits:v1r2",
  "title": "Funding-book reference input case",
  "description": "One independent fictional case. Legal, market, cash/title, policy and event facts only. Derived exposure, reserves, capital, PnL and candidate reports are not admissible inputs.",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "schema_version",
    "episode_id",
    "branch",
    "parameters_file",
    "as_of",
    "base_currency",
    "fictional",
    "book",
    "documents",
    "bindings",
    "snapshots",
    "parties",
    "counterparty_constraints",
    "mandate",
    "accepted_positions",
    "calendars",
    "instruments",
    "curves",
    "price_quotes",
    "fx_quotes",
    "agreements",
    "opinions",
    "trades",
    "netting_sets",
    "collateral",
    "custody_accounts",
    "cash_accounts",
    "cash_events",
    "title_events",
    "pricing",
    "bank",
    "actions",
    "scenarios",
    "branch_event",
    "reporting_panels"
  ],
  "properties": {
    "schema_version": {
      "const": "back_to_back_funding_book.v1r2"
    },
    "episode_id": {
      "type": "string",
      "enum": [
        "W1_issued",
        "W1_contingent",
        "W2",
        "W3",
        "W4"
      ]
    },
    "branch": {
      "type": "string",
      "enum": [
        "W1_issued",
        "W1_contingent",
        "W2",
        "W3",
        "W4"
      ]
    },
    "parameters_file": {
      "const": "fixtures/numerical-inputs.json"
    },
    "as_of": {
      "$ref": "#/$defs/instant"
    },
    "base_currency": {
      "$ref": "#/$defs/currency"
    },
    "fictional": {
      "const": true
    },
    "book": {
      "$ref": "#/$defs/book"
    },
    "documents": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/document"
      },
      "minItems": 1
    },
    "bindings": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/binding"
      },
      "minItems": 1
    },
    "snapshots": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/snapshot"
      },
      "minItems": 1
    },
    "parties": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/party"
      },
      "minItems": 1
    },
    "counterparty_constraints": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/counterparty_constraint"
      },
      "minItems": 1
    },
    "mandate": {
      "$ref": "#/$defs/mandate"
    },
    "accepted_positions": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/accepted_position"
      },
      "minItems": 0
    },
    "calendars": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/calendar"
      },
      "minItems": 1
    },
    "instruments": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/instrument"
      },
      "minItems": 1
    },
    "curves": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/curve"
      },
      "minItems": 9
    },
    "price_quotes": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/price_quote"
      },
      "minItems": 1
    },
    "fx_quotes": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/fx_quote"
      },
      "minItems": 1
    },
    "agreements": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/agreement"
      },
      "minItems": 1
    },
    "opinions": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/opinion"
      },
      "minItems": 1
    },
    "trades": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/trade"
      },
      "minItems": 1
    },
    "netting_sets": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/netting_set"
      },
      "minItems": 1
    },
    "collateral": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/collateral"
      },
      "minItems": 0
    },
    "custody_accounts": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/custody_account"
      },
      "minItems": 1
    },
    "cash_accounts": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/cash_account"
      },
      "minItems": 1
    },
    "cash_events": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/cash_event"
      },
      "minItems": 1
    },
    "title_events": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/title_event"
      },
      "minItems": 1
    },
    "pricing": {
      "$ref": "#/$defs/pricing"
    },
    "bank": {
      "$ref": "#/$defs/bank"
    },
    "actions": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/action"
      },
      "minItems": 6
    },
    "scenarios": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/scenario"
      },
      "minItems": 1
    },
    "branch_event": {
      "$ref": "#/$defs/branch_event"
    },
    "reporting_panels": {
      "$ref": "#/$defs/reporting_panels"
    },
    "snapshot": {
      "$ref": "#/$defs/desk_snapshot",
      "description": "Optional. Present only on a snapshot case built by src/desk_snapshot.py: the day-N desk path this case is frozen from. Requires a RECEIPT_LOG document."
    }
  },
  "allOf": [
    {
      "if": {
        "properties": {
          "branch": {
            "const": "W1_issued"
          }
        },
        "required": [
          "branch"
        ]
      },
      "then": {
        "properties": {
          "episode_id": {
            "const": "W1_issued"
          },
          "branch_event": {
            "$ref": "#/$defs/event_W1_issued"
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "branch": {
            "const": "W1_contingent"
          }
        },
        "required": [
          "branch"
        ]
      },
      "then": {
        "properties": {
          "episode_id": {
            "const": "W1_contingent"
          },
          "branch_event": {
            "$ref": "#/$defs/event_W1_contingent"
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "branch": {
            "const": "W2"
          }
        },
        "required": [
          "branch"
        ]
      },
      "then": {
        "properties": {
          "episode_id": {
            "const": "W2"
          },
          "branch_event": {
            "$ref": "#/$defs/event_W2"
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "branch": {
            "const": "W3"
          }
        },
        "required": [
          "branch"
        ]
      },
      "then": {
        "properties": {
          "episode_id": {
            "const": "W3"
          },
          "branch_event": {
            "$ref": "#/$defs/event_W3"
          }
        }
      }
    },
    {
      "if": {
        "properties": {
          "branch": {
            "const": "W4"
          }
        },
        "required": [
          "branch"
        ]
      },
      "then": {
        "properties": {
          "episode_id": {
            "const": "W4"
          },
          "branch_event": {
            "$ref": "#/$defs/event_W4"
          }
        }
      }
    }
  ],
  "$defs": {
    "text": {
      "type": "string",
      "minLength": 1
    },
    "id": {
      "type": "string",
      "pattern": "^[A-Za-z][A-Za-z0-9_.:-]*$"
    },
    "decimal": {
      "type": "string",
      "pattern": "^-?(0|[1-9][0-9]*)(\\.[0-9]+)?(?![\\s\\S])"
    },
    "nonnegative": {
      "type": "string",
      "pattern": "^(0|[1-9][0-9]*)(\\.[0-9]+)?(?![\\s\\S])"
    },
    "positive": {
      "type": "string",
      "pattern": "^(?:[1-9][0-9]*(?:\\.[0-9]+)?|0\\.[0-9]*[1-9][0-9]*)(?![\\s\\S])"
    },
    "ratio": {
      "type": "string",
      "pattern": "^(?:0(?:\\.[0-9]+)?|1(?:\\.0+)?)(?![\\s\\S])"
    },
    "date": {
      "type": "string",
      "format": "date",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "instant": {
      "type": "string",
      "format": "date-time",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}Z$"
    },
    "currency": {
      "const": "USD"
    },
    "count": {
      "type": "integer",
      "minimum": 0
    },
    "flag": {
      "type": "boolean"
    },
    "ids": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/id"
      },
      "minItems": 0,
      "uniqueItems": true
    },
    "texts": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/text"
      },
      "minItems": 0,
      "uniqueItems": true
    },
    "pointer": {
      "type": "string",
      "pattern": "^/(?:[^~/]|~0|~1)+(?:/(?:[^~/]|~0|~1)+)*$"
    },
    "parameter_ref": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "file",
        "pointer"
      ],
      "properties": {
        "file": {
          "const": "fixtures/numerical-inputs.json"
        },
        "pointer": {
          "$ref": "#/$defs/pointer"
        }
      }
    },
    "evidence_ref": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "document_id",
        "locator"
      ],
      "properties": {
        "document_id": {
          "$ref": "#/$defs/id"
        },
        "locator": {
          "$ref": "#/$defs/text"
        }
      }
    },
    "evidence_refs": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/evidence_ref"
      },
      "minItems": 1,
      "uniqueItems": true
    },
    "capital_treatment": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "exposure_class",
        "external_ratings_permitted",
        "zero_weight_eligible",
        "evidence"
      ],
      "properties": {
        "exposure_class": {
          "const": "other_mdb"
        },
        "external_ratings_permitted": {
          "const": true
        },
        "zero_weight_eligible": {
          "const": false
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "institutional_legal_form": {
      "type": "string",
      "enum": [
        "issued_security_pledge",
        "contingent_issuance_promise",
        "payment_rights_assignment",
        "title_transfer_repo",
        "sale_funded_total_return_swap",
        "gold_pledge",
        "gold_equivalent_title",
        "gold_identical_title",
        "fiscal_advance"
      ]
    },
    "institutional_action_kind": {
      "type": "string",
      "enum": [
        "hold_capital",
        "execute_csa",
        "substitute_collateral",
        "reverse_substitution",
        "execute_offset",
        "consolidate_netting",
        "buy_protection",
        "designate_protection",
        "repo_allocate",
        "repay_repo",
        "sell_lot",
        "buy_equivalent",
        "return_collateral",
        "draw_facility",
        "repay_facility",
        "meet_margin_call",
        "settle_payable",
        "settle_claim",
        "liquidate_collateral",
        "reinvest",
        "fiscal_advance",
        "identical_title_financing",
        "execute_CSA",
        "buy_CDS",
        "release_substitution",
        "escalate",
        "decline"
      ]
    },
    "situation_kind": {
      "description": "Closed set naming why the counterparty is at the desk; the free-text situation stays the narrative and cannot widen this set.",
      "type": "string",
      "enum": [
        "liquidity_stress",
        "ratings_pressure",
        "regulatory_order",
        "fiscal_ceiling",
        "resolution",
        "sanctions_exposure",
        "none"
      ]
    },
    "counterparty_constraint": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "party_id",
        "situation",
        "situation_kind",
        "required_cash",
        "currency",
        "funding_deadline",
        "allowed_legal_forms",
        "prohibited_legal_forms",
        "classification_by_form",
        "required_return",
        "borrowing_ceiling",
        "maximum_spread",
        "required_approval_ids",
        "evidence"
      ],
      "properties": {
        "party_id": {
          "$ref": "#/$defs/id"
        },
        "situation": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "situation_kind": {
          "$ref": "#/$defs/situation_kind"
        },
        "required_cash": {
          "$ref": "#/$defs/nonnegative"
        },
        "currency": {
          "$ref": "#/$defs/currency"
        },
        "funding_deadline": {
          "$ref": "#/$defs/date"
        },
        "allowed_legal_forms": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/institutional_legal_form"
          },
          "uniqueItems": true
        },
        "prohibited_legal_forms": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/institutional_legal_form"
          },
          "uniqueItems": true
        },
        "classification_by_form": {
          "type": "object",
          "additionalProperties": false,
          "properties": {
            "issued_security_pledge": {
              "$ref": "#/$defs/text"
            },
            "contingent_issuance_promise": {
              "$ref": "#/$defs/text"
            },
            "payment_rights_assignment": {
              "$ref": "#/$defs/text"
            },
            "title_transfer_repo": {
              "$ref": "#/$defs/text"
            },
            "sale_funded_total_return_swap": {
              "$ref": "#/$defs/text"
            },
            "gold_pledge": {
              "$ref": "#/$defs/text"
            },
            "gold_equivalent_title": {
              "$ref": "#/$defs/text"
            },
            "gold_identical_title": {
              "$ref": "#/$defs/text"
            },
            "fiscal_advance": {
              "$ref": "#/$defs/text"
            }
          }
        },
        "required_return": {
          "type": "string",
          "enum": [
            "identical",
            "equivalent",
            "none"
          ]
        },
        "borrowing_ceiling": {
          "anyOf": [
            {
              "$ref": "#/$defs/nonnegative"
            },
            {
              "type": "null"
            }
          ]
        },
        "maximum_spread": {
          "anyOf": [
            {
              "$ref": "#/$defs/decimal"
            },
            {
              "type": "null"
            }
          ]
        },
        "required_approval_ids": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/id"
          },
          "uniqueItems": true
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "mandate_rule": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "rule_id",
        "action_kind",
        "subject_id",
        "tier",
        "maximum_amount",
        "approver_id",
        "approval_delay_days",
        "approval_outcome",
        "approval_valid_days",
        "reason_codes",
        "evidence"
      ],
      "properties": {
        "rule_id": {
          "$ref": "#/$defs/id"
        },
        "action_kind": {
          "$ref": "#/$defs/institutional_action_kind"
        },
        "subject_id": {
          "$ref": "#/$defs/id"
        },
        "tier": {
          "type": "string",
          "enum": [
            "permitted",
            "requires_approval",
            "prohibited"
          ]
        },
        "maximum_amount": {
          "anyOf": [
            {
              "$ref": "#/$defs/nonnegative"
            },
            {
              "type": "null"
            }
          ]
        },
        "approver_id": {
          "anyOf": [
            {
              "$ref": "#/$defs/id"
            },
            {
              "type": "null"
            }
          ]
        },
        "approval_delay_days": {
          "type": "integer",
          "minimum": 0
        },
        "approval_outcome": {
          "enum": [
            "approved",
            "declined",
            "pending",
            null
          ]
        },
        "approval_valid_days": {
          "type": "integer",
          "minimum": 0
        },
        "reason_codes": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/id"
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      },
      "if": {
        "properties": {
          "tier": {
            "const": "requires_approval"
          }
        },
        "required": [
          "tier"
        ]
      },
      "then": {
        "properties": {
          "approver_id": {
            "$ref": "#/$defs/id"
          },
          "approval_outcome": {
            "enum": [
              "approved",
              "declined",
              "pending"
            ]
          },
          "approval_valid_days": {
            "minimum": 1
          }
        }
      },
      "else": {
        "properties": {
          "approver_id": {
            "type": "null"
          },
          "approval_delay_days": {
            "const": 0
          },
          "approval_outcome": {
            "type": "null"
          },
          "approval_valid_days": {
            "const": 0
          }
        }
      }
    },
    "mandate": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "mandate_id",
        "bank_id",
        "rules",
        "evidence"
      ],
      "properties": {
        "mandate_id": {
          "$ref": "#/$defs/id"
        },
        "bank_id": {
          "$ref": "#/$defs/id"
        },
        "rules": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/mandate_rule"
          },
          "minItems": 1
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "premise": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "source",
        "pointer",
        "relation",
        "value"
      ],
      "properties": {
        "source": {
          "enum": [
            "case",
            "state",
            "book",
            "report"
          ]
        },
        "pointer": {
          "type": "string",
          "pattern": "^(?:/(?:[^~/]|~[01])*)*(?![\\s\\S])"
        },
        "relation": {
          "enum": [
            "eq",
            "ne",
            "gte",
            "lte",
            "contains"
          ]
        },
        "value": {
          "anyOf": [
            {
              "type": [
                "string",
                "integer",
                "boolean",
                "null"
              ]
            },
            {
              "type": "array",
              "items": {
                "type": [
                  "string",
                  "integer",
                  "boolean",
                  "null"
                ]
              }
            }
          ]
        }
      }
    },
    "accepted_position": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "position_id",
        "action_kind",
        "subject_id",
        "binding_constraint",
        "requirements",
        "rationale"
      ],
      "properties": {
        "position_id": {
          "$ref": "#/$defs/id"
        },
        "action_kind": {
          "$ref": "#/$defs/institutional_action_kind"
        },
        "subject_id": {
          "$ref": "#/$defs/id"
        },
        "binding_constraint": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        },
        "requirements": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/premise"
          },
          "minItems": 1
        },
        "rationale": {
          "type": "string",
          "minLength": 1,
          "pattern": "\\S"
        }
      }
    },
    "locator": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "id",
        "quote",
        "sha256"
      ],
      "properties": {
        "id": {
          "$ref": "#/$defs/text"
        },
        "quote": {
          "$ref": "#/$defs/text"
        },
        "sha256": {
          "type": "string",
          "pattern": "^[0-9a-f]{64}$"
        }
      }
    },
    "document": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "document_id",
        "title",
        "source_kind",
        "fictional",
        "author",
        "published_at",
        "file",
        "source_uris",
        "source_version",
        "locators"
      ],
      "properties": {
        "document_id": {
          "$ref": "#/$defs/id"
        },
        "title": {
          "$ref": "#/$defs/text"
        },
        "source_kind": {
          "type": "string",
          "enum": [
            "fictional_contract",
            "fictional_opinion",
            "fictional_market",
            "fictional_policy",
            "fictional_event",
            "official_rule_packet"
          ]
        },
        "fictional": {
          "$ref": "#/$defs/flag"
        },
        "author": {
          "$ref": "#/$defs/text"
        },
        "published_at": {
          "$ref": "#/$defs/date"
        },
        "file": {
          "type": "string",
          "pattern": "^(?:[A-Za-z0-9][A-Za-z0-9_.-]*/)+[A-Za-z0-9][A-Za-z0-9_.-]*\\.(md|json|txt)$"
        },
        "source_uris": {
          "type": "array",
          "items": {
            "type": "string",
            "format": "uri"
          },
          "minItems": 0
        },
        "source_version": {
          "$ref": "#/$defs/text"
        },
        "locators": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/locator"
          },
          "minItems": 1
        }
      }
    },
    "rating": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "status",
        "agency",
        "agency_eligible",
        "grade",
        "scope",
        "as_of",
        "implicit_support_excluded",
        "evidence"
      ],
      "properties": {
        "status": {
          "type": "string",
          "enum": [
            "rated",
            "unrated"
          ]
        },
        "agency": {
          "$ref": "#/$defs/text"
        },
        "agency_eligible": {
          "$ref": "#/$defs/flag"
        },
        "grade": {
          "type": "string",
          "enum": [
            "AAA",
            "AA",
            "A",
            "BBB",
            "BB",
            "B",
            "CCC",
            "unrated"
          ]
        },
        "scope": {
          "type": "string",
          "enum": [
            "issue",
            "issuer"
          ]
        },
        "as_of": {
          "$ref": "#/$defs/date"
        },
        "implicit_support_excluded": {
          "$ref": "#/$defs/flag"
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "party": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "party_id",
        "legal_name",
        "kind",
        "incorporation_jurisdiction",
        "insolvency_jurisdiction",
        "resolution_jurisdiction",
        "ownership_group",
        "regulated_bank",
        "rating",
        "evidence"
      ],
      "properties": {
        "party_id": {
          "$ref": "#/$defs/id"
        },
        "legal_name": {
          "$ref": "#/$defs/text"
        },
        "kind": {
          "type": "string",
          "enum": [
            "bank",
            "sovereign",
            "supranational",
            "corporate",
            "custodian",
            "law_firm",
            "public_authority",
            "internal_function"
          ]
        },
        "role": {
          "type": "string",
          "enum": [
            "credit_committee",
            "legal",
            "compliance",
            "desk_head"
          ]
        },
        "incorporation_jurisdiction": {
          "$ref": "#/$defs/text"
        },
        "insolvency_jurisdiction": {
          "$ref": "#/$defs/text"
        },
        "resolution_jurisdiction": {
          "$ref": "#/$defs/text"
        },
        "ownership_group": {
          "$ref": "#/$defs/text"
        },
        "regulated_bank": {
          "$ref": "#/$defs/flag"
        },
        "rating": {
          "$ref": "#/$defs/rating"
        },
        "capital_treatment": {
          "$ref": "#/$defs/capital_treatment"
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      },
      "if": {
        "properties": {
          "kind": {
            "const": "internal_function"
          }
        }
      },
      "then": {
        "required": ["role"]
      },
      "else": {
        "not": {
          "required": ["role"]
        }
      }
    },
    "calendar": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "calendar_id",
        "timezone",
        "coverage_start",
        "coverage_end",
        "weekend_days",
        "holidays",
        "business_day_convention",
        "evidence"
      ],
      "properties": {
        "calendar_id": {
          "$ref": "#/$defs/id"
        },
        "timezone": {
          "const": "UTC"
        },
        "coverage_start": {
          "$ref": "#/$defs/date"
        },
        "coverage_end": {
          "$ref": "#/$defs/date"
        },
        "weekend_days": {
          "type": "array",
          "items": {
            "type": "integer",
            "minimum": 0,
            "maximum": 6
          },
          "minItems": 0,
          "uniqueItems": true
        },
        "holidays": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/date"
          },
          "minItems": 0,
          "uniqueItems": true
        },
        "business_day_convention": {
          "type": "string",
          "enum": [
            "following",
            "unadjusted"
          ]
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "settlement_terms": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "calendar_id",
        "lag_business_days",
        "cutoff_utc",
        "delivery_versus_payment",
        "currency",
        "evidence"
      ],
      "properties": {
        "calendar_id": {
          "$ref": "#/$defs/id"
        },
        "lag_business_days": {
          "$ref": "#/$defs/count"
        },
        "cutoff_utc": {
          "type": "string",
          "pattern": "^\\d{2}:\\d{2}:\\d{2}$"
        },
        "delivery_versus_payment": {
          "$ref": "#/$defs/flag"
        },
        "currency": {
          "$ref": "#/$defs/currency"
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "period": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "period",
        "start_date",
        "end_date",
        "settlement_date",
        "model_start_year",
        "model_end_year",
        "year_fraction",
        "evidence"
      ],
      "properties": {
        "period": {
          "type": "integer",
          "minimum": 1
        },
        "start_date": {
          "$ref": "#/$defs/date"
        },
        "end_date": {
          "$ref": "#/$defs/date"
        },
        "settlement_date": {
          "$ref": "#/$defs/date"
        },
        "model_start_year": {
          "$ref": "#/$defs/nonnegative"
        },
        "model_end_year": {
          "$ref": "#/$defs/positive"
        },
        "year_fraction": {
          "$ref": "#/$defs/positive"
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "instrument": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "instrument_id",
        "status",
        "isin",
        "issuer_party_id",
        "issuer_kind",
        "issue_date",
        "maturity_date",
        "currency",
        "security_type",
        "ranking",
        "face_per_unit",
        "issued_quantity",
        "case_quantity",
        "initial_legal_owner",
        "governing_law",
        "payment_jurisdictions",
        "coupon_ois_linked",
        "coupon_spread",
        "redemption_per_unit",
        "embedded_options",
        "rating",
        "price_curve_id",
        "price_convention",
        "settlement",
        "evidence"
      ],
      "properties": {
        "instrument_id": {
          "$ref": "#/$defs/id"
        },
        "status": {
          "const": "issued"
        },
        "isin": {
          "type": "string",
          "pattern": "^[A-Z]{2}[A-Z0-9]{9}[0-9]$"
        },
        "issuer_party_id": {
          "$ref": "#/$defs/id"
        },
        "issuer_kind": {
          "type": "string",
          "enum": [
            "sovereign",
            "bank",
            "corporate"
          ]
        },
        "issue_date": {
          "$ref": "#/$defs/date"
        },
        "maturity_date": {
          "$ref": "#/$defs/date"
        },
        "currency": {
          "$ref": "#/$defs/currency"
        },
        "security_type": {
          "type": "string",
          "enum": [
            "floating_rate_note",
            "fixed_rate_bond",
            "main_index_equity"
          ]
        },
        "ranking": {
          "type": "string",
          "enum": [
            "senior_unsecured",
            "senior_secured",
            "equity"
          ]
        },
        "face_per_unit": {
          "$ref": "#/$defs/positive"
        },
        "issued_quantity": {
          "$ref": "#/$defs/positive"
        },
        "case_quantity": {
          "$ref": "#/$defs/positive"
        },
        "initial_legal_owner": {
          "$ref": "#/$defs/id"
        },
        "governing_law": {
          "$ref": "#/$defs/text"
        },
        "payment_jurisdictions": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/text"
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "coupon_ois_linked": {
          "$ref": "#/$defs/flag"
        },
        "coupon_spread": {
          "$ref": "#/$defs/nonnegative"
        },
        "redemption_per_unit": {
          "$ref": "#/$defs/nonnegative"
        },
        "embedded_options": {
          "const": "none"
        },
        "rating": {
          "$ref": "#/$defs/rating"
        },
        "price_curve_id": {
          "$ref": "#/$defs/id"
        },
        "price_convention": {
          "const": "currency_per_unit_ex_distribution"
        },
        "settlement": {
          "$ref": "#/$defs/settlement_terms"
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "curve_node": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "tenor_years",
        "value"
      ],
      "properties": {
        "tenor_years": {
          "$ref": "#/$defs/nonnegative"
        },
        "value": {
          "$ref": "#/$defs/decimal"
        }
      }
    },
    "curve": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "curve_id",
        "role",
        "currency",
        "as_of",
        "quote_units",
        "basis",
        "interpolation",
        "extrapolation",
        "nodes",
        "observable",
        "observability_reason",
        "numerical_source",
        "source_components",
        "evidence"
      ],
      "properties": {
        "curve_id": {
          "$ref": "#/$defs/id"
        },
        "role": {
          "type": "string",
          "enum": [
            "OIS_discount",
            "internal_AAA_mark",
            "own_unsecured_bond",
            "own_CDS",
            "provider_CDS",
            "reference_issuer_credit",
            "EM_deployment_credit",
            "hedge_provider_CDS",
            "eligible_collateral_credit"
          ]
        },
        "currency": {
          "$ref": "#/$defs/currency"
        },
        "as_of": {
          "$ref": "#/$defs/instant"
        },
        "quote_units": {
          "type": "string",
          "enum": [
            "annual_rate",
            "annual_spread"
          ]
        },
        "basis": {
          "$ref": "#/$defs/text"
        },
        "interpolation": {
          "const": "flat"
        },
        "extrapolation": {
          "const": "forbidden"
        },
        "nodes": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/curve_node"
          },
          "minItems": 2
        },
        "observable": {
          "$ref": "#/$defs/flag"
        },
        "observability_reason": {
          "$ref": "#/$defs/text"
        },
        "numerical_source": {
          "$ref": "#/$defs/parameter_ref"
        },
        "source_components": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "name",
              "level",
              "observable"
            ],
            "properties": {
              "name": {
                "$ref": "#/$defs/text"
              },
              "level": {
                "$ref": "#/$defs/decimal"
              },
              "observable": {
                "$ref": "#/$defs/flag"
              }
            }
          },
          "minItems": 1
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "curve_bindings": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "OIS_discount",
        "internal_AAA_mark",
        "own_unsecured_bond",
        "own_CDS",
        "provider_CDS",
        "reference_issuer_credit",
        "EM_deployment_credit",
        "hedge_provider_CDS",
        "eligible_collateral_credit"
      ],
      "properties": {
        "OIS_discount": {
          "$ref": "#/$defs/id"
        },
        "internal_AAA_mark": {
          "$ref": "#/$defs/id"
        },
        "own_unsecured_bond": {
          "$ref": "#/$defs/id"
        },
        "own_CDS": {
          "$ref": "#/$defs/id"
        },
        "provider_CDS": {
          "$ref": "#/$defs/id"
        },
        "reference_issuer_credit": {
          "$ref": "#/$defs/id"
        },
        "EM_deployment_credit": {
          "$ref": "#/$defs/id"
        },
        "hedge_provider_CDS": {
          "$ref": "#/$defs/id"
        },
        "eligible_collateral_credit": {
          "$ref": "#/$defs/id"
        }
      }
    },
    "price_quote": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "quote_id",
        "instrument_id",
        "scenario_id",
        "quoted_at",
        "valid_until",
        "currency",
        "price_per_unit",
        "quantity_capacity",
        "executable",
        "settlement_at",
        "market_id",
        "quote_type",
        "evidence"
      ],
      "properties": {
        "quote_id": {
          "$ref": "#/$defs/id"
        },
        "instrument_id": {
          "$ref": "#/$defs/id"
        },
        "scenario_id": {
          "$ref": "#/$defs/id"
        },
        "quoted_at": {
          "$ref": "#/$defs/instant"
        },
        "valid_until": {
          "$ref": "#/$defs/instant"
        },
        "currency": {
          "$ref": "#/$defs/currency"
        },
        "price_per_unit": {
          "$ref": "#/$defs/nonnegative"
        },
        "quantity_capacity": {
          "$ref": "#/$defs/nonnegative"
        },
        "executable": {
          "$ref": "#/$defs/flag"
        },
        "settlement_at": {
          "$ref": "#/$defs/instant"
        },
        "market_id": {
          "$ref": "#/$defs/id"
        },
        "quote_type": {
          "type": "string",
          "enum": [
            "firm_bid",
            "indicative_mark"
          ]
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "fx_quote": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "quote_id",
        "base_currency",
        "quote_currency",
        "rate",
        "as_of",
        "evidence"
      ],
      "properties": {
        "quote_id": {
          "$ref": "#/$defs/id"
        },
        "base_currency": {
          "$ref": "#/$defs/currency"
        },
        "quote_currency": {
          "$ref": "#/$defs/currency"
        },
        "rate": {
          "const": "1"
        },
        "as_of": {
          "$ref": "#/$defs/instant"
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "condition": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "condition_id",
        "description",
        "status",
        "assessed_at",
        "evidence"
      ],
      "properties": {
        "condition_id": {
          "$ref": "#/$defs/id"
        },
        "description": {
          "$ref": "#/$defs/text"
        },
        "status": {
          "type": "string",
          "enum": [
            "satisfied",
            "pending",
            "failed"
          ]
        },
        "assessed_at": {
          "$ref": "#/$defs/instant"
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "execution": {
      "oneOf": [
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "status",
            "executed_at",
            "signatory_party_ids",
            "authority_evidence"
          ],
          "properties": {
            "status": {
              "const": "executed"
            },
            "executed_at": {
              "$ref": "#/$defs/instant"
            },
            "signatory_party_ids": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/id"
              },
              "minItems": 2,
              "uniqueItems": true
            },
            "authority_evidence": {
              "$ref": "#/$defs/evidence_refs"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "status",
            "proposed_at",
            "required_party_ids",
            "evidence"
          ],
          "properties": {
            "status": {
              "const": "proposed"
            },
            "proposed_at": {
              "$ref": "#/$defs/instant"
            },
            "required_party_ids": {
              "type": "array",
              "items": {
                "$ref": "#/$defs/id"
              },
              "minItems": 2,
              "uniqueItems": true
            },
            "evidence": {
              "$ref": "#/$defs/evidence_refs"
            }
          }
        }
      ]
    },
    "effectiveness": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "status",
        "effective_at",
        "conditions"
      ],
      "properties": {
        "status": {
          "type": "string",
          "enum": [
            "effective",
            "pending"
          ]
        },
        "effective_at": {
          "$ref": "#/$defs/instant"
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/condition"
          },
          "minItems": 0
        }
      }
    },
    "termination": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "final_maturity",
        "early_termination_events",
        "unilateral_extension",
        "full_settlement_required",
        "evidence"
      ],
      "properties": {
        "final_maturity": {
          "$ref": "#/$defs/date"
        },
        "early_termination_events": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "default",
              "illegality",
              "nonpayment",
              "mutual_consent"
            ]
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "unilateral_extension": {
          "const": false
        },
        "full_settlement_required": {
          "const": true
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "closeout": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "valuation_basis",
        "currency",
        "setoff",
        "stay_business_days",
        "dispute_process",
        "evidence"
      ],
      "properties": {
        "valuation_basis": {
          "type": "string",
          "enum": [
            "replacement_value_full_remaining_terms",
            "secured_loan_acceleration",
            "principal_and_accrued_interest",
            "no_closeout_netting"
          ]
        },
        "currency": {
          "$ref": "#/$defs/currency"
        },
        "setoff": {
          "$ref": "#/$defs/flag"
        },
        "stay_business_days": {
          "$ref": "#/$defs/count"
        },
        "dispute_process": {
          "$ref": "#/$defs/text"
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "reset": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "reference_price_reset",
        "resets_full_trade_value_to_zero",
        "reset_frequency",
        "next_price_adjustment",
        "redemption_in_final_distribution",
        "post_redemption_price",
        "stub_paid_separately_once",
        "evidence"
      ],
      "properties": {
        "reference_price_reset": {
          "const": "last_actual_price_settlement"
        },
        "resets_full_trade_value_to_zero": {
          "$ref": "#/$defs/flag"
        },
        "reset_frequency": {
          "const": "quarterly"
        },
        "next_price_adjustment": {
          "const": "quantity_times_current_less_last_settled_price_discounted_to_next_settlement"
        },
        "redemption_in_final_distribution": {
          "const": true
        },
        "post_redemption_price": {
          "const": "0"
        },
        "stub_paid_separately_once": {
          "const": true
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "sale_terms": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "kind",
        "instrument_id",
        "quantity",
        "sale_price_per_unit",
        "seller_id",
        "buyer_id",
        "cash_event_id",
        "title_event_id",
        "repurchase_obligation"
      ],
      "properties": {
        "kind": {
          "const": "asset_sale"
        },
        "instrument_id": {
          "$ref": "#/$defs/id"
        },
        "quantity": {
          "$ref": "#/$defs/positive"
        },
        "sale_price_per_unit": {
          "$ref": "#/$defs/positive"
        },
        "seller_id": {
          "$ref": "#/$defs/id"
        },
        "buyer_id": {
          "$ref": "#/$defs/id"
        },
        "cash_event_id": {
          "$ref": "#/$defs/id"
        },
        "title_event_id": {
          "$ref": "#/$defs/id"
        },
        "repurchase_obligation": {
          "const": "none"
        }
      }
    },
    "trs_terms": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "kind",
        "reference_instrument_id",
        "quantity",
        "notional",
        "total_return_receiver_id",
        "financing_payer_id",
        "counterparty_id",
        "principal_exchange",
        "locked_financing_spread",
        "financing_base_curve_id",
        "last_settled_reference_price",
        "reset",
        "replacement_quote",
        "same_quantity_notional_maturity_and_remaining_terms"
      ],
      "properties": {
        "kind": {
          "const": "funding_TRS"
        },
        "reference_instrument_id": {
          "$ref": "#/$defs/id"
        },
        "quantity": {
          "$ref": "#/$defs/positive"
        },
        "notional": {
          "$ref": "#/$defs/positive"
        },
        "total_return_receiver_id": {
          "$ref": "#/$defs/id"
        },
        "financing_payer_id": {
          "$ref": "#/$defs/id"
        },
        "counterparty_id": {
          "$ref": "#/$defs/id"
        },
        "principal_exchange": {
          "const": "none"
        },
        "locked_financing_spread": {
          "$ref": "#/$defs/decimal"
        },
        "financing_base_curve_id": {
          "$ref": "#/$defs/id"
        },
        "last_settled_reference_price": {
          "$ref": "#/$defs/positive"
        },
        "reset": {
          "$ref": "#/$defs/reset"
        },
        "replacement_quote": {
          "$ref": "#/$defs/parameter_ref"
        },
        "same_quantity_notional_maturity_and_remaining_terms": {
          "const": true
        }
      }
    },
    "loan_terms": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "kind",
        "lender_id",
        "borrower_id",
        "principal",
        "coupon_base_curve_id",
        "coupon_spread",
        "funding_cash_event_id",
        "principal_repaid_at_maturity",
        "security_agreement_id",
        "year5_reinvestment"
      ],
      "properties": {
        "kind": {
          "const": "deployment_loan"
        },
        "lender_id": {
          "$ref": "#/$defs/id"
        },
        "borrower_id": {
          "$ref": "#/$defs/id"
        },
        "principal": {
          "$ref": "#/$defs/positive"
        },
        "coupon_base_curve_id": {
          "$ref": "#/$defs/id"
        },
        "coupon_spread": {
          "$ref": "#/$defs/nonnegative"
        },
        "funding_cash_event_id": {
          "$ref": "#/$defs/id"
        },
        "principal_repaid_at_maturity": {
          "const": true
        },
        "security_agreement_id": {
          "$ref": "#/$defs/id"
        },
        "year5_reinvestment": {
          "const": "OIS_cash"
        }
      }
    },
    "security_terms": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "kind",
        "collateral_kind",
        "grantor_id",
        "secured_party_id",
        "asset_id",
        "permitted_by_contract",
        "perfection_status",
        "priority",
        "reuse_right",
        "reuse_conditions",
        "withdrawal_right",
        "enforcement_business_days"
      ],
      "properties": {
        "kind": {
          "const": "security"
        },
        "collateral_kind": {
          "type": "string",
          "enum": [
            "issued_security",
            "future_payment_rights",
            "contingent_issuance"
          ]
        },
        "grantor_id": {
          "$ref": "#/$defs/id"
        },
        "secured_party_id": {
          "$ref": "#/$defs/id"
        },
        "asset_id": {
          "$ref": "#/$defs/id"
        },
        "permitted_by_contract": {
          "$ref": "#/$defs/flag"
        },
        "perfection_status": {
          "type": "string",
          "enum": [
            "perfected",
            "not_possible_preissue",
            "unperfected"
          ]
        },
        "priority": {
          "type": "string",
          "enum": [
            "first_ranking",
            "unsecured_promise"
          ]
        },
        "reuse_right": {
          "type": "string",
          "enum": [
            "permitted",
            "prohibited",
            "conditional"
          ]
        },
        "reuse_conditions": {
          "$ref": "#/$defs/texts"
        },
        "withdrawal_right": {
          "type": "string",
          "enum": [
            "consent_required",
            "prohibited"
          ]
        },
        "enforcement_business_days": {
          "$ref": "#/$defs/count"
        }
      }
    },
    "master_terms": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "kind",
        "party_ids",
        "single_closeout_balance",
        "walkaway_clause",
        "cross_product",
        "covered_trade_ids"
      ],
      "properties": {
        "kind": {
          "const": "netting_master"
        },
        "party_ids": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/id"
          },
          "minItems": 2,
          "uniqueItems": true
        },
        "single_closeout_balance": {
          "$ref": "#/$defs/flag"
        },
        "walkaway_clause": {
          "$ref": "#/$defs/flag"
        },
        "cross_product": {
          "$ref": "#/$defs/flag"
        },
        "covered_trade_ids": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/id"
          },
          "minItems": 1,
          "uniqueItems": true
        }
      }
    },
    "csa_terms": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "kind",
        "netting_set_id",
        "direction",
        "daily_full_mark_VM",
        "threshold_bank",
        "threshold_provider",
        "minimum_transfer_amount",
        "NICA",
        "initial_margin",
        "VM_currency",
        "remuneration_curve_id",
        "reuse_right",
        "segregated",
        "MPOR_business_days",
        "payment_lag_business_days",
        "call_cutoff_utc",
        "dispute_business_days"
      ],
      "properties": {
        "kind": {
          "const": "CSA"
        },
        "netting_set_id": {
          "$ref": "#/$defs/id"
        },
        "direction": {
          "type": "string",
          "enum": [
            "two_way",
            "bank_posts_only",
            "provider_posts_only"
          ]
        },
        "daily_full_mark_VM": {
          "$ref": "#/$defs/flag"
        },
        "threshold_bank": {
          "$ref": "#/$defs/nonnegative"
        },
        "threshold_provider": {
          "$ref": "#/$defs/nonnegative"
        },
        "minimum_transfer_amount": {
          "$ref": "#/$defs/nonnegative"
        },
        "NICA": {
          "$ref": "#/$defs/decimal"
        },
        "initial_margin": {
          "$ref": "#/$defs/nonnegative"
        },
        "VM_currency": {
          "$ref": "#/$defs/currency"
        },
        "remuneration_curve_id": {
          "$ref": "#/$defs/id"
        },
        "reuse_right": {
          "type": "string",
          "enum": [
            "permitted",
            "prohibited"
          ]
        },
        "segregated": {
          "$ref": "#/$defs/flag"
        },
        "MPOR_business_days": {
          "$ref": "#/$defs/count"
        },
        "payment_lag_business_days": {
          "$ref": "#/$defs/count"
        },
        "call_cutoff_utc": {
          "$ref": "#/$defs/text"
        },
        "dispute_business_days": {
          "$ref": "#/$defs/count"
        }
      }
    },
    "facility_terms": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "kind",
        "lender_id",
        "borrower_id",
        "limit",
        "spread",
        "commitment_fee",
        "draw_purpose",
        "draw_conditions",
        "cash_account_id",
        "unconditional_during_market_closure"
      ],
      "properties": {
        "kind": {
          "const": "liquidity_facility"
        },
        "lender_id": {
          "$ref": "#/$defs/id"
        },
        "borrower_id": {
          "$ref": "#/$defs/id"
        },
        "limit": {
          "$ref": "#/$defs/nonnegative"
        },
        "spread": {
          "$ref": "#/$defs/nonnegative"
        },
        "commitment_fee": {
          "$ref": "#/$defs/nonnegative"
        },
        "draw_purpose": {
          "type": "string",
          "enum": [
            "settled_cash_deficit",
            "conditional_external_prefunding",
            "branch_cash_call",
            "ois_deposit",
            "operating_payment_only"
          ]
        },
        "draw_conditions": {
          "$ref": "#/$defs/texts"
        },
        "cash_account_id": {
          "$ref": "#/$defs/id"
        },
        "unconditional_during_market_closure": {
          "$ref": "#/$defs/flag"
        }
      }
    },
    "cds_terms": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "kind",
        "buyer_id",
        "seller_id",
        "reference_obligor_id",
        "covered_trade_ids",
        "notional",
        "premium",
        "direct_claim",
        "explicit",
        "irrevocable",
        "unconditional",
        "restructuring_covered",
        "credit_events",
        "same_currency",
        "same_ranking",
        "payment_grace_business_days",
        "seller_can_cancel",
        "designation",
        "settlement"
      ],
      "properties": {
        "kind": {
          "const": "CDS"
        },
        "buyer_id": {
          "$ref": "#/$defs/id"
        },
        "seller_id": {
          "$ref": "#/$defs/id"
        },
        "reference_obligor_id": {
          "$ref": "#/$defs/id"
        },
        "covered_trade_ids": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/id"
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "notional": {
          "$ref": "#/$defs/positive"
        },
        "premium": {
          "$ref": "#/$defs/nonnegative"
        },
        "direct_claim": {
          "$ref": "#/$defs/flag"
        },
        "explicit": {
          "$ref": "#/$defs/flag"
        },
        "irrevocable": {
          "$ref": "#/$defs/flag"
        },
        "unconditional": {
          "$ref": "#/$defs/flag"
        },
        "restructuring_covered": {
          "$ref": "#/$defs/flag"
        },
        "credit_events": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "bankruptcy",
              "failure_to_pay",
              "restructuring"
            ]
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "same_currency": {
          "$ref": "#/$defs/flag"
        },
        "same_ranking": {
          "$ref": "#/$defs/flag"
        },
        "payment_grace_business_days": {
          "$ref": "#/$defs/count"
        },
        "seller_can_cancel": {
          "$ref": "#/$defs/flag"
        },
        "designation": {
          "type": "string",
          "enum": [
            "CCR_and_CVA",
            "CCR_only",
            "CVA_only",
            "undesignated"
          ]
        },
        "settlement": {
          "type": "string",
          "enum": [
            "cash",
            "physical"
          ]
        }
      }
    },
    "custody_terms": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "kind",
        "custodian_id",
        "account_ids",
        "segregated",
        "reuse_right",
        "return_obligation",
        "evidence"
      ],
      "properties": {
        "kind": {
          "const": "custody"
        },
        "custodian_id": {
          "$ref": "#/$defs/id"
        },
        "account_ids": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/id"
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "segregated": {
          "$ref": "#/$defs/flag"
        },
        "reuse_right": {
          "type": "string",
          "enum": [
            "permitted",
            "prohibited"
          ]
        },
        "return_obligation": {
          "type": "string",
          "enum": [
            "identical_security_units",
            "equivalent_security_units"
          ]
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "agreement": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "agreement_id",
        "kind",
        "trade_ids",
        "party_ids",
        "execution",
        "effectiveness",
        "governing_laws",
        "opinion_ids",
        "termination",
        "closeout",
        "principal_terms",
        "settlement",
        "terms",
        "evidence"
      ],
      "properties": {
        "agreement_id": {
          "$ref": "#/$defs/id"
        },
        "kind": {
          "type": "string",
          "enum": [
            "asset_sale",
            "funding_TRS",
            "deployment_loan",
            "security",
            "netting_master",
            "CSA",
            "liquidity_facility",
            "CDS",
            "custody"
          ]
        },
        "trade_ids": {
          "$ref": "#/$defs/ids"
        },
        "party_ids": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/id"
          },
          "minItems": 2,
          "uniqueItems": true
        },
        "execution": {
          "$ref": "#/$defs/execution"
        },
        "effectiveness": {
          "$ref": "#/$defs/effectiveness"
        },
        "governing_laws": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/text"
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "opinion_ids": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/id"
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "termination": {
          "$ref": "#/$defs/termination"
        },
        "closeout": {
          "$ref": "#/$defs/closeout"
        },
        "principal_terms": {
          "type": "string",
          "enum": [
            "no_principal_exchange",
            "cash_advance",
            "sale_consideration",
            "conditional_draw",
            "no_cash_advance"
          ]
        },
        "settlement": {
          "$ref": "#/$defs/settlement_terms"
        },
        "terms": {
          "oneOf": [
            {
              "$ref": "#/$defs/sale_terms"
            },
            {
              "$ref": "#/$defs/trs_terms"
            },
            {
              "$ref": "#/$defs/loan_terms"
            },
            {
              "$ref": "#/$defs/security_terms"
            },
            {
              "$ref": "#/$defs/master_terms"
            },
            {
              "$ref": "#/$defs/csa_terms"
            },
            {
              "$ref": "#/$defs/facility_terms"
            },
            {
              "$ref": "#/$defs/cds_terms"
            },
            {
              "$ref": "#/$defs/custody_terms"
            }
          ]
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      },
      "allOf": [
        {
          "if": {
            "properties": {
              "kind": {
                "const": "asset_sale"
              }
            },
            "required": [
              "kind"
            ]
          },
          "then": {
            "properties": {
              "terms": {
                "$ref": "#/$defs/sale_terms"
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "kind": {
                "const": "funding_TRS"
              }
            },
            "required": [
              "kind"
            ]
          },
          "then": {
            "properties": {
              "terms": {
                "$ref": "#/$defs/trs_terms"
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "kind": {
                "const": "deployment_loan"
              }
            },
            "required": [
              "kind"
            ]
          },
          "then": {
            "properties": {
              "terms": {
                "$ref": "#/$defs/loan_terms"
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "kind": {
                "const": "security"
              }
            },
            "required": [
              "kind"
            ]
          },
          "then": {
            "properties": {
              "terms": {
                "$ref": "#/$defs/security_terms"
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "kind": {
                "const": "netting_master"
              }
            },
            "required": [
              "kind"
            ]
          },
          "then": {
            "properties": {
              "terms": {
                "$ref": "#/$defs/master_terms"
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "kind": {
                "const": "CSA"
              }
            },
            "required": [
              "kind"
            ]
          },
          "then": {
            "properties": {
              "terms": {
                "$ref": "#/$defs/csa_terms"
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "kind": {
                "const": "liquidity_facility"
              }
            },
            "required": [
              "kind"
            ]
          },
          "then": {
            "properties": {
              "terms": {
                "$ref": "#/$defs/facility_terms"
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "kind": {
                "const": "CDS"
              }
            },
            "required": [
              "kind"
            ]
          },
          "then": {
            "properties": {
              "terms": {
                "$ref": "#/$defs/cds_terms"
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "kind": {
                "const": "custody"
              }
            },
            "required": [
              "kind"
            ]
          },
          "then": {
            "properties": {
              "terms": {
                "$ref": "#/$defs/custody_terms"
              }
            }
          }
        }
      ]
    },
    "opinion": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "opinion_id",
        "author",
        "status",
        "issued_at",
        "reviewed_at",
        "valid_until",
        "agreement_ids",
        "party_ids",
        "jurisdictions_covered",
        "law_types",
        "conclusions",
        "assumptions",
        "qualifications",
        "conditions",
        "law_change_review",
        "evidence"
      ],
      "properties": {
        "opinion_id": {
          "$ref": "#/$defs/id"
        },
        "author": {
          "$ref": "#/$defs/text"
        },
        "status": {
          "type": "string",
          "enum": [
            "final_unqualified",
            "final_qualified",
            "draft"
          ]
        },
        "issued_at": {
          "$ref": "#/$defs/date"
        },
        "reviewed_at": {
          "$ref": "#/$defs/date"
        },
        "valid_until": {
          "$ref": "#/$defs/date"
        },
        "agreement_ids": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/id"
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "party_ids": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/id"
          },
          "minItems": 2,
          "uniqueItems": true
        },
        "jurisdictions_covered": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/text"
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "law_types": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "contract",
              "insolvency",
              "resolution",
              "security",
              "capacity",
              "accounting",
              "transfer_controls"
            ]
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "conclusions": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "capacity",
            "execution_authority",
            "enforceability",
            "closeout_netting",
            "security_perfection",
            "transfer_rights",
            "immunity_waiver"
          ],
          "properties": {
            "capacity": {
              "$ref": "#/$defs/flag"
            },
            "execution_authority": {
              "$ref": "#/$defs/flag"
            },
            "enforceability": {
              "$ref": "#/$defs/flag"
            },
            "closeout_netting": {
              "$ref": "#/$defs/flag"
            },
            "security_perfection": {
              "$ref": "#/$defs/flag"
            },
            "transfer_rights": {
              "$ref": "#/$defs/flag"
            },
            "immunity_waiver": {
              "$ref": "#/$defs/flag"
            }
          }
        },
        "assumptions": {
          "$ref": "#/$defs/texts"
        },
        "qualifications": {
          "$ref": "#/$defs/texts"
        },
        "conditions": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/condition"
          },
          "minItems": 0
        },
        "law_change_review": {
          "type": "string",
          "enum": [
            "no_change_known",
            "review_required"
          ]
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "trade": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "trade_id",
        "agreement_id",
        "kind",
        "party_ids",
        "netting_set_id",
        "start_date",
        "maturity_date",
        "currency",
        "evidence"
      ],
      "properties": {
        "trade_id": {
          "$ref": "#/$defs/id"
        },
        "agreement_id": {
          "$ref": "#/$defs/id"
        },
        "kind": {
          "type": "string",
          "enum": [
            "funding_TRS",
            "deployment_loan",
            "CDS",
            "comparison_TRS"
          ]
        },
        "party_ids": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/id"
          },
          "minItems": 2,
          "uniqueItems": true
        },
        "netting_set_id": {
          "$ref": "#/$defs/id"
        },
        "start_date": {
          "$ref": "#/$defs/date"
        },
        "maturity_date": {
          "$ref": "#/$defs/date"
        },
        "currency": {
          "$ref": "#/$defs/currency"
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "netting_set": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "netting_set_id",
        "party_ids",
        "trade_ids",
        "master_agreement_id",
        "enforceable",
        "opinion_ids",
        "CSA_status",
        "CSA_agreement_ids",
        "evidence"
      ],
      "properties": {
        "netting_set_id": {
          "$ref": "#/$defs/id"
        },
        "party_ids": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/id"
          },
          "minItems": 2,
          "uniqueItems": true
        },
        "trade_ids": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/id"
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "master_agreement_id": {
          "$ref": "#/$defs/id"
        },
        "enforceable": {
          "$ref": "#/$defs/flag"
        },
        "opinion_ids": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/id"
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "CSA_status": {
          "type": "string",
          "enum": [
            "none",
            "executed",
            "proposed"
          ]
        },
        "CSA_agreement_ids": {
          "$ref": "#/$defs/ids"
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "correlation": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "counterparty_id",
        "issuer_id",
        "same_issuer",
        "common_control",
        "material_positive_correlation",
        "assessment_basis",
        "as_of",
        "evidence"
      ],
      "properties": {
        "counterparty_id": {
          "$ref": "#/$defs/id"
        },
        "issuer_id": {
          "$ref": "#/$defs/id"
        },
        "same_issuer": {
          "$ref": "#/$defs/flag"
        },
        "common_control": {
          "$ref": "#/$defs/flag"
        },
        "material_positive_correlation": {
          "$ref": "#/$defs/flag"
        },
        "assessment_basis": {
          "$ref": "#/$defs/text"
        },
        "as_of": {
          "$ref": "#/$defs/date"
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "eligibility_attributes": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "book",
        "framework",
        "ratings_permitted",
        "issuer_kind",
        "issue_rating",
        "residual_years",
        "issued",
        "contract_accepted",
        "enforceable",
        "perfected",
        "same_currency",
        "market_liquid",
        "correlation",
        "rule_evidence"
      ],
      "properties": {
        "book": {
          "type": "string",
          "enum": [
            "banking",
            "trading"
          ]
        },
        "framework": {
          "const": "comprehensive"
        },
        "ratings_permitted": {
          "$ref": "#/$defs/flag"
        },
        "issuer_kind": {
          "type": "string",
          "enum": [
            "sovereign",
            "bank",
            "corporate",
            "not_a_security"
          ]
        },
        "issue_rating": {
          "$ref": "#/$defs/rating"
        },
        "residual_years": {
          "$ref": "#/$defs/nonnegative"
        },
        "issued": {
          "$ref": "#/$defs/flag"
        },
        "contract_accepted": {
          "$ref": "#/$defs/flag"
        },
        "enforceable": {
          "$ref": "#/$defs/flag"
        },
        "perfected": {
          "$ref": "#/$defs/flag"
        },
        "same_currency": {
          "$ref": "#/$defs/flag"
        },
        "market_liquid": {
          "$ref": "#/$defs/flag"
        },
        "correlation": {
          "$ref": "#/$defs/correlation"
        },
        "rule_evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "collateral_rights": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "owner_id",
        "provider_id",
        "secured_party_id",
        "security_agreement_id",
        "ownership_basis",
        "custodian_id",
        "custody_account_id",
        "custody_jurisdiction",
        "segregated",
        "reuse_right",
        "reuse_conditions",
        "withdrawal_right",
        "priority",
        "enforcement_business_days",
        "opinion_ids",
        "evidence"
      ],
      "properties": {
        "owner_id": {
          "$ref": "#/$defs/id"
        },
        "provider_id": {
          "$ref": "#/$defs/id"
        },
        "secured_party_id": {
          "$ref": "#/$defs/id"
        },
        "security_agreement_id": {
          "$ref": "#/$defs/id"
        },
        "ownership_basis": {
          "type": "string",
          "enum": [
            "pledge",
            "assignment",
            "title_transfer"
          ]
        },
        "custodian_id": {
          "$ref": "#/$defs/id"
        },
        "custody_account_id": {
          "$ref": "#/$defs/id"
        },
        "custody_jurisdiction": {
          "$ref": "#/$defs/text"
        },
        "segregated": {
          "$ref": "#/$defs/flag"
        },
        "reuse_right": {
          "type": "string",
          "enum": [
            "permitted",
            "prohibited",
            "conditional"
          ]
        },
        "reuse_conditions": {
          "$ref": "#/$defs/texts"
        },
        "withdrawal_right": {
          "type": "string",
          "enum": [
            "consent_required",
            "prohibited"
          ]
        },
        "priority": {
          "type": "string",
          "enum": [
            "first_ranking",
            "unsecured_promise"
          ]
        },
        "enforcement_business_days": {
          "$ref": "#/$defs/count"
        },
        "opinion_ids": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/id"
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "collateral_liquidity": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "market_id",
        "sale_settlement_business_days",
        "repo_settlement_business_days",
        "daily_capacity_units",
        "market_haircut",
        "repo_spread",
        "sale_fee",
        "evidence"
      ],
      "properties": {
        "market_id": {
          "$ref": "#/$defs/id"
        },
        "sale_settlement_business_days": {
          "$ref": "#/$defs/count"
        },
        "repo_settlement_business_days": {
          "$ref": "#/$defs/count"
        },
        "daily_capacity_units": {
          "$ref": "#/$defs/nonnegative"
        },
        "market_haircut": {
          "$ref": "#/$defs/ratio"
        },
        "repo_spread": {
          "$ref": "#/$defs/nonnegative"
        },
        "sale_fee": {
          "$ref": "#/$defs/nonnegative"
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "issued_collateral_asset": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "kind",
        "instrument_id",
        "quantity",
        "price_quote_ids",
        "liquidity"
      ],
      "properties": {
        "kind": {
          "const": "issued_security"
        },
        "instrument_id": {
          "$ref": "#/$defs/id"
        },
        "quantity": {
          "$ref": "#/$defs/positive"
        },
        "price_quote_ids": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/id"
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "liquidity": {
          "$ref": "#/$defs/collateral_liquidity"
        }
      }
    },
    "payment_collateral_asset": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "kind",
        "rights_id",
        "assigned_face",
        "collection_account_id",
        "instrument_status"
      ],
      "properties": {
        "kind": {
          "const": "future_payment_rights"
        },
        "rights_id": {
          "$ref": "#/$defs/id"
        },
        "assigned_face": {
          "$ref": "#/$defs/positive"
        },
        "collection_account_id": {
          "$ref": "#/$defs/id"
        },
        "instrument_status": {
          "const": "not_a_security"
        }
      }
    },
    "collateral": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "collateral_id",
        "purpose",
        "secured_trade_ids",
        "asset",
        "eligibility_attributes",
        "rights",
        "title_event_ids",
        "evidence"
      ],
      "properties": {
        "collateral_id": {
          "$ref": "#/$defs/id"
        },
        "purpose": {
          "type": "string",
          "enum": [
            "deployment_security",
            "action_inventory",
            "liquidity_inventory"
          ]
        },
        "secured_trade_ids": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/id"
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "asset": {
          "oneOf": [
            {
              "$ref": "#/$defs/issued_collateral_asset"
            },
            {
              "$ref": "#/$defs/payment_collateral_asset"
            }
          ]
        },
        "eligibility_attributes": {
          "$ref": "#/$defs/eligibility_attributes"
        },
        "rights": {
          "$ref": "#/$defs/collateral_rights"
        },
        "title_event_ids": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/id"
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "custody_account": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "account_id",
        "custodian_id",
        "legal_owner_id",
        "beneficial_owner_id",
        "jurisdiction",
        "segregated",
        "reuse_right",
        "agreement_id",
        "positions",
        "as_of",
        "evidence"
      ],
      "properties": {
        "account_id": {
          "$ref": "#/$defs/id"
        },
        "custodian_id": {
          "$ref": "#/$defs/id"
        },
        "legal_owner_id": {
          "$ref": "#/$defs/id"
        },
        "beneficial_owner_id": {
          "$ref": "#/$defs/id"
        },
        "jurisdiction": {
          "$ref": "#/$defs/text"
        },
        "segregated": {
          "$ref": "#/$defs/flag"
        },
        "reuse_right": {
          "type": "string",
          "enum": [
            "permitted",
            "prohibited"
          ]
        },
        "agreement_id": {
          "$ref": "#/$defs/id"
        },
        "positions": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "asset_id",
              "quantity",
              "encumbered"
            ],
            "properties": {
              "asset_id": {
                "$ref": "#/$defs/id"
              },
              "quantity": {
                "$ref": "#/$defs/nonnegative"
              },
              "encumbered": {
                "$ref": "#/$defs/flag"
              }
            }
          },
          "minItems": 0
        },
        "as_of": {
          "$ref": "#/$defs/instant"
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "cash_account": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "account_id",
        "owner_id",
        "bank_id",
        "currency",
        "snapshot_id",
        "opening_balance",
        "opening_at",
        "accessible",
        "segregated",
        "reuse_right",
        "access_conditions",
        "remuneration_curve_id",
        "evidence"
      ],
      "properties": {
        "account_id": {
          "$ref": "#/$defs/id"
        },
        "owner_id": {
          "$ref": "#/$defs/id"
        },
        "bank_id": {
          "$ref": "#/$defs/id"
        },
        "currency": {
          "$ref": "#/$defs/currency"
        },
        "snapshot_id": {
          "$ref": "#/$defs/id"
        },
        "opening_balance": {
          "$ref": "#/$defs/nonnegative"
        },
        "opening_at": {
          "$ref": "#/$defs/instant"
        },
        "accessible": {
          "$ref": "#/$defs/flag"
        },
        "segregated": {
          "$ref": "#/$defs/flag"
        },
        "reuse_right": {
          "type": "string",
          "enum": [
            "permitted",
            "prohibited"
          ]
        },
        "access_conditions": {
          "$ref": "#/$defs/texts"
        },
        "remuneration_curve_id": {
          "$ref": "#/$defs/id"
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "cash_amount": {
      "oneOf": [
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind",
            "amount"
          ],
          "properties": {
            "kind": {
              "const": "fixed"
            },
            "amount": {
              "$ref": "#/$defs/nonnegative"
            }
          }
        },
        {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind",
            "formula_id",
            "agreement_id",
            "period",
            "formula_evidence"
          ],
          "properties": {
            "kind": {
              "const": "contract_formula"
            },
            "formula_id": {
              "type": "string",
              "enum": [
                "TRS_quarterly_net",
                "TRS_final_net",
                "deployment_coupon",
                "deployment_principal",
                "legacy_coupon",
                "legacy_principal",
                "actual_deficit_funding",
                "ois_reinvestment",
                "ois_principal_return",
                "financing_principal_return"
              ]
            },
            "agreement_id": {
              "$ref": "#/$defs/id"
            },
            "period": {
              "type": "integer",
              "minimum": 1
            },
            "formula_evidence": {
              "$ref": "#/$defs/evidence_refs"
            }
          }
        }
      ]
    },
    "cash_event": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "cash_event_id",
        "snapshot_id",
        "scenario_id",
        "agreement_id",
        "payer_id",
        "payee_id",
        "account_id",
        "direction",
        "amount",
        "currency",
        "instructed_at",
        "due_at",
        "settlement",
        "purpose",
        "evidence"
      ],
      "properties": {
        "cash_event_id": {
          "$ref": "#/$defs/id"
        },
        "snapshot_id": {
          "$ref": "#/$defs/id"
        },
        "scenario_id": {
          "$ref": "#/$defs/id"
        },
        "agreement_id": {
          "$ref": "#/$defs/id"
        },
        "payer_id": {
          "$ref": "#/$defs/id"
        },
        "payee_id": {
          "$ref": "#/$defs/id"
        },
        "account_id": {
          "$ref": "#/$defs/id"
        },
        "direction": {
          "type": "string",
          "enum": [
            "in",
            "out"
          ]
        },
        "amount": {
          "$ref": "#/$defs/cash_amount"
        },
        "currency": {
          "$ref": "#/$defs/currency"
        },
        "instructed_at": {
          "$ref": "#/$defs/instant"
        },
        "due_at": {
          "$ref": "#/$defs/instant"
        },
        "settlement": {
          "oneOf": [
            {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "status",
                "settled_at"
              ],
              "properties": {
                "status": {
                  "const": "settled"
                },
                "settled_at": {
                  "$ref": "#/$defs/instant"
                }
              }
            },
            {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "status",
                "reason"
              ],
              "properties": {
                "status": {
                  "type": "string",
                  "enum": [
                    "scheduled",
                    "blocked",
                    "failed"
                  ]
                },
                "reason": {
                  "$ref": "#/$defs/text"
                }
              }
            }
          ]
        },
        "purpose": {
          "type": "string",
          "enum": [
            "sale_proceeds",
            "deployment_advance",
            "coupon",
            "principal",
            "total_return_net",
            "fee",
            "facility_draw",
            "blocked_collection",
            "branch_call",
            "conditional_recovery"
          ]
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "title_event": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "title_event_id",
        "asset_id",
        "asset_kind",
        "quantity",
        "agreement_id",
        "from_legal_owner",
        "to_legal_owner",
        "beneficial_owner_after",
        "from_custody_account",
        "to_custody_account",
        "right",
        "reuse_right_after",
        "at",
        "status",
        "evidence"
      ],
      "properties": {
        "title_event_id": {
          "$ref": "#/$defs/id"
        },
        "asset_id": {
          "$ref": "#/$defs/id"
        },
        "asset_kind": {
          "type": "string",
          "enum": [
            "issued_security",
            "payment_right"
          ]
        },
        "quantity": {
          "$ref": "#/$defs/positive"
        },
        "agreement_id": {
          "$ref": "#/$defs/id"
        },
        "from_legal_owner": {
          "$ref": "#/$defs/id"
        },
        "to_legal_owner": {
          "$ref": "#/$defs/id"
        },
        "beneficial_owner_after": {
          "$ref": "#/$defs/id"
        },
        "from_custody_account": {
          "$ref": "#/$defs/id"
        },
        "to_custody_account": {
          "$ref": "#/$defs/id"
        },
        "right": {
          "type": "string",
          "enum": [
            "title_transfer",
            "pledge_created",
            "assignment_created",
            "pledge_released"
          ]
        },
        "reuse_right_after": {
          "type": "string",
          "enum": [
            "permitted",
            "prohibited"
          ]
        },
        "at": {
          "$ref": "#/$defs/instant"
        },
        "status": {
          "type": "string",
          "enum": [
            "settled",
            "scheduled"
          ]
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "binding": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "binding_id",
        "parameter",
        "consumer",
        "evidence"
      ],
      "properties": {
        "binding_id": {
          "$ref": "#/$defs/id"
        },
        "parameter": {
          "$ref": "#/$defs/parameter_ref"
        },
        "consumer": {
          "$ref": "#/$defs/text"
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "snapshot": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "snapshot_id",
        "scope",
        "model_time_years",
        "separate_from_other_snapshots",
        "parameter_sections",
        "evidence"
      ],
      "properties": {
        "snapshot_id": {
          "$ref": "#/$defs/id"
        },
        "scope": {
          "type": "string",
          "enum": [
            "mark_only",
            "AAA_loss_cash",
            "capital_comparison",
            "AVA_controlled",
            "liquidity_branch",
            "base_cash",
            "reserve_divergence",
            "conditional_prefunding",
            "terminal_dispute",
            "allocation_7d",
            "decision_comparison"
          ]
        },
        "model_time_years": {
          "$ref": "#/$defs/nonnegative"
        },
        "separate_from_other_snapshots": {
          "const": true
        },
        "parameter_sections": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/parameter_ref"
          },
          "minItems": 1
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "classification": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "letter_id",
        "issued_at",
        "trade_id",
        "regulatory_unit",
        "primary_risk_class",
        "primary_risk_assessment",
        "credit_supervisory_delta",
        "full_reset_applies",
        "accounting_does_not_determine_regulatory_classification",
        "CVA_method",
        "SA_CVA_approval",
        "written_credit_notional_treatment",
        "ratings_permitted",
        "evidence"
      ],
      "properties": {
        "letter_id": {
          "$ref": "#/$defs/id"
        },
        "issued_at": {
          "$ref": "#/$defs/date"
        },
        "trade_id": {
          "$ref": "#/$defs/id"
        },
        "regulatory_unit": {
          "const": "legal_TRS_SA_CCR_with_separate_retained_asset_bridge"
        },
        "primary_risk_class": {
          "type": "string",
          "enum": [
            "credit",
            "interest_rate",
            "both"
          ]
        },
        "primary_risk_assessment": {
          "$ref": "#/$defs/text"
        },
        "credit_supervisory_delta": {
          "type": "string",
          "enum": [
            "-1",
            "1"
          ]
        },
        "full_reset_applies": {
          "$ref": "#/$defs/flag"
        },
        "accounting_does_not_determine_regulatory_classification": {
          "const": true
        },
        "CVA_method": {
          "type": "string",
          "enum": [
            "reduced_BA",
            "full_BA",
            "SA_approved"
          ]
        },
        "SA_CVA_approval": {
          "$ref": "#/$defs/flag"
        },
        "written_credit_notional_treatment": {
          "$ref": "#/$defs/text"
        },
        "ratings_permitted": {
          "$ref": "#/$defs/flag"
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "observability": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "unit_id",
        "input_id",
        "observable",
        "significant",
        "assessment_at",
        "evidence"
      ],
      "properties": {
        "unit_id": {
          "$ref": "#/$defs/id"
        },
        "input_id": {
          "$ref": "#/$defs/id"
        },
        "observable": {
          "$ref": "#/$defs/flag"
        },
        "significant": {
          "$ref": "#/$defs/flag"
        },
        "assessment_at": {
          "$ref": "#/$defs/date"
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "accounting_unit": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "unit_id",
        "agreements",
        "framework",
        "sale_derecognised",
        "retained_reference_asset",
        "financing_liability_recognised",
        "separate_statutory_derivative",
        "management_ledger_separate",
        "opinion_id",
        "transaction_price",
        "evidence"
      ],
      "properties": {
        "unit_id": {
          "$ref": "#/$defs/id"
        },
        "agreements": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/id"
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "framework": {
          "const": "IFRS9"
        },
        "sale_derecognised": {
          "$ref": "#/$defs/flag"
        },
        "retained_reference_asset": {
          "$ref": "#/$defs/flag"
        },
        "financing_liability_recognised": {
          "$ref": "#/$defs/flag"
        },
        "separate_statutory_derivative": {
          "$ref": "#/$defs/flag"
        },
        "management_ledger_separate": {
          "const": true
        },
        "opinion_id": {
          "$ref": "#/$defs/id"
        },
        "transaction_price": {
          "$ref": "#/$defs/decimal"
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "journal_line": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "account",
        "side",
        "amount"
      ],
      "properties": {
        "account": {
          "$ref": "#/$defs/text"
        },
        "side": {
          "type": "string",
          "enum": [
            "debit",
            "credit"
          ]
        },
        "amount": {
          "$ref": "#/$defs/nonnegative"
        }
      }
    },
    "journal_entry": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "entry_id",
        "posted_at",
        "snapshot_id",
        "purpose",
        "lines",
        "evidence"
      ],
      "properties": {
        "entry_id": {
          "$ref": "#/$defs/id"
        },
        "posted_at": {
          "$ref": "#/$defs/instant"
        },
        "snapshot_id": {
          "$ref": "#/$defs/id"
        },
        "purpose": {
          "$ref": "#/$defs/text"
        },
        "lines": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/journal_line"
          },
          "minItems": 2
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "bank": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "party_id",
        "classification",
        "capital_rulebook",
        "numerical_annex",
        "accounting_units",
        "observability",
        "day_one_policy",
        "reserve_policy",
        "AVA_annex",
        "historical_journal",
        "capital_snapshots",
        "allocation_parameters",
        "evidence"
      ],
      "properties": {
        "party_id": {
          "$ref": "#/$defs/id"
        },
        "classification": {
          "$ref": "#/$defs/classification"
        },
        "capital_rulebook": {
          "$ref": "#/$defs/evidence_refs"
        },
        "numerical_annex": {
          "$ref": "#/$defs/parameter_ref"
        },
        "accounting_units": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/accounting_unit"
          },
          "minItems": 1
        },
        "observability": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/observability"
          },
          "minItems": 1
        },
        "day_one_policy": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "management_deferral_basis",
            "release_triggers",
            "spread_tightening_is_release_trigger",
            "statutory_unit_assessed_first",
            "evidence"
          ],
          "properties": {
            "management_deferral_basis": {
              "const": "frozen_initial_annuity"
            },
            "release_triggers": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "priced_time",
                  "independent_observability"
                ]
              },
              "minItems": 1,
              "uniqueItems": true
            },
            "spread_tightening_is_release_trigger": {
              "const": false
            },
            "statutory_unit_assessed_first": {
              "const": true
            },
            "evidence": {
              "$ref": "#/$defs/evidence_refs"
            }
          }
        },
        "reserve_policy": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "remeasurement",
            "cash_borrowing_source",
            "conditional_prefunding",
            "expected_theta_in_PnL_once",
            "separate_funding_drag_line",
            "terminal_requires_all_obligations_settled",
            "evidence"
          ],
          "properties": {
            "remeasurement": {
              "const": "daily"
            },
            "cash_borrowing_source": {
              "const": "settled_cash_deficits_only"
            },
            "conditional_prefunding": {
              "$ref": "#/$defs/parameter_ref"
            },
            "expected_theta_in_PnL_once": {
              "const": true
            },
            "separate_funding_drag_line": {
              "const": true
            },
            "terminal_requires_all_obligations_settled": {
              "const": true
            },
            "evidence": {
              "$ref": "#/$defs/evidence_refs"
            }
          }
        },
        "AVA_annex": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "method",
            "scope",
            "parameter_ref",
            "source"
          ],
          "properties": {
            "method": {
              "const": "EU_core_model_risk_Method1"
            },
            "scope": {
              "const": "identified_recognised_FV_positions_only"
            },
            "parameter_ref": {
              "$ref": "#/$defs/parameter_ref"
            },
            "source": {
              "$ref": "#/$defs/evidence_refs"
            }
          }
        },
        "historical_journal": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/journal_entry"
          },
          "minItems": 1
        },
        "capital_snapshots": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/id"
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "allocation_parameters": {
          "$ref": "#/$defs/parameter_ref"
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "action": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "action_id",
        "kind",
        "quoted_at",
        "valid_until",
        "quote_status",
        "proposed_execution_at",
        "proposed_effective_at",
        "agreement_ids",
        "required_opinion_ids",
        "preconditions",
        "price_parameters",
        "cash_event_ids",
        "title_event_ids",
        "capacity_not_cash",
        "evidence"
      ],
      "properties": {
        "action_id": {
          "$ref": "#/$defs/id"
        },
        "kind": {
          "type": "string",
          "enum": [
            "execute_CSA",
            "substitute_collateral",
            "consolidate_netting",
            "buy_CDS",
            "hold_capital",
            "release_substitution"
          ]
        },
        "quoted_at": {
          "$ref": "#/$defs/instant"
        },
        "valid_until": {
          "$ref": "#/$defs/instant"
        },
        "quote_status": {
          "const": "firm_subject_to_documented_conditions"
        },
        "proposed_execution_at": {
          "$ref": "#/$defs/instant"
        },
        "proposed_effective_at": {
          "$ref": "#/$defs/instant"
        },
        "agreement_ids": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/id"
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "required_opinion_ids": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/id"
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "preconditions": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/condition"
          },
          "minItems": 0
        },
        "price_parameters": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/parameter_ref"
          },
          "minItems": 1
        },
        "cash_event_ids": {
          "$ref": "#/$defs/ids"
        },
        "title_event_ids": {
          "$ref": "#/$defs/ids"
        },
        "capacity_not_cash": {
          "const": true
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "curve_state": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "OIS_discount",
        "internal_AAA_mark",
        "own_unsecured_bond",
        "own_CDS",
        "provider_CDS",
        "reference_issuer_credit",
        "EM_deployment_credit",
        "hedge_provider_CDS",
        "eligible_collateral_credit"
      ],
      "properties": {
        "OIS_discount": {
          "$ref": "#/$defs/decimal"
        },
        "internal_AAA_mark": {
          "$ref": "#/$defs/decimal"
        },
        "own_unsecured_bond": {
          "$ref": "#/$defs/decimal"
        },
        "own_CDS": {
          "$ref": "#/$defs/decimal"
        },
        "provider_CDS": {
          "$ref": "#/$defs/decimal"
        },
        "reference_issuer_credit": {
          "$ref": "#/$defs/decimal"
        },
        "EM_deployment_credit": {
          "$ref": "#/$defs/decimal"
        },
        "hedge_provider_CDS": {
          "$ref": "#/$defs/decimal"
        },
        "eligible_collateral_credit": {
          "$ref": "#/$defs/decimal"
        }
      }
    },
    "default_state": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "borrower_default",
        "funding_provider_default",
        "reference_issuer_default",
        "collateral_issuer_default",
        "hedge_provider_default"
      ],
      "properties": {
        "borrower_default": {
          "$ref": "#/$defs/flag"
        },
        "funding_provider_default": {
          "$ref": "#/$defs/flag"
        },
        "reference_issuer_default": {
          "$ref": "#/$defs/flag"
        },
        "collateral_issuer_default": {
          "$ref": "#/$defs/flag"
        },
        "hedge_provider_default": {
          "$ref": "#/$defs/flag"
        }
      }
    },
    "scenario": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "scenario_id",
        "as_of",
        "kind",
        "curve_state",
        "defaults",
        "market_state",
        "quote_ids",
        "event_evidence"
      ],
      "properties": {
        "scenario_id": {
          "$ref": "#/$defs/id"
        },
        "as_of": {
          "$ref": "#/$defs/instant"
        },
        "kind": {
          "type": "string",
          "enum": [
            "inception",
            "counterfactual_panel",
            "selected_branch_event"
          ]
        },
        "curve_state": {
          "$ref": "#/$defs/curve_state"
        },
        "defaults": {
          "$ref": "#/$defs/default_state"
        },
        "market_state": {
          "type": "string",
          "enum": [
            "open",
            "closed",
            "default_distress",
            "transfer_blocked"
          ]
        },
        "quote_ids": {
          "$ref": "#/$defs/ids"
        },
        "event_evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "cash_call": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "cash_event_id",
        "due_at",
        "amount",
        "payee_id",
        "account_id",
        "evidence"
      ],
      "properties": {
        "cash_event_id": {
          "$ref": "#/$defs/id"
        },
        "due_at": {
          "$ref": "#/$defs/instant"
        },
        "amount": {
          "$ref": "#/$defs/cash_amount"
        },
        "payee_id": {
          "$ref": "#/$defs/id"
        },
        "account_id": {
          "$ref": "#/$defs/id"
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "payment_rights": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "rights_id",
        "originator_id",
        "payment_obligor_ids",
        "assigned_currencies",
        "face_amount",
        "collection_account_id",
        "correspondent_bank_id",
        "collection_contract_id",
        "assignment_opinion_id",
        "priority",
        "collection_schedule",
        "waterfall",
        "convertibility_required",
        "sovereign_transfer_power",
        "evidence"
      ],
      "properties": {
        "rights_id": {
          "$ref": "#/$defs/id"
        },
        "originator_id": {
          "$ref": "#/$defs/id"
        },
        "payment_obligor_ids": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/id"
          },
          "minItems": 2,
          "uniqueItems": true
        },
        "assigned_currencies": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/currency"
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "face_amount": {
          "$ref": "#/$defs/positive"
        },
        "collection_account_id": {
          "$ref": "#/$defs/id"
        },
        "correspondent_bank_id": {
          "$ref": "#/$defs/id"
        },
        "collection_contract_id": {
          "$ref": "#/$defs/id"
        },
        "assignment_opinion_id": {
          "$ref": "#/$defs/id"
        },
        "priority": {
          "const": "first_ranking"
        },
        "collection_schedule": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "due_at",
              "amount",
              "obligor_id"
            ],
            "properties": {
              "due_at": {
                "$ref": "#/$defs/instant"
              },
              "amount": {
                "$ref": "#/$defs/positive"
              },
              "obligor_id": {
                "$ref": "#/$defs/id"
              }
            }
          },
          "minItems": 1
        },
        "waterfall": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/text"
          },
          "minItems": 2
        },
        "convertibility_required": {
          "$ref": "#/$defs/flag"
        },
        "sovereign_transfer_power": {
          "$ref": "#/$defs/flag"
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "event_W1_issued": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "event_id",
        "scenario_id",
        "event_at",
        "decision_at",
        "settlement_cutoff",
        "borrower_id",
        "funding_provider_id",
        "defaults",
        "free_cash_account_id",
        "available_facility_ids",
        "cash_calls",
        "opinion_ids",
        "evidence",
        "kind",
        "instrument_id",
        "collateral_id",
        "predefault_quote_id",
        "conditional_bid_price_per_unit",
        "conditional_quote_id",
        "security_exists_before_default",
        "default_realisation_assumption",
        "legal_form"
      ],
      "properties": {
        "event_id": {
          "$ref": "#/$defs/id"
        },
        "scenario_id": {
          "$ref": "#/$defs/id"
        },
        "event_at": {
          "$ref": "#/$defs/instant"
        },
        "decision_at": {
          "$ref": "#/$defs/instant"
        },
        "settlement_cutoff": {
          "$ref": "#/$defs/instant"
        },
        "borrower_id": {
          "$ref": "#/$defs/id"
        },
        "funding_provider_id": {
          "$ref": "#/$defs/id"
        },
        "defaults": {
          "$ref": "#/$defs/default_state"
        },
        "free_cash_account_id": {
          "$ref": "#/$defs/id"
        },
        "available_facility_ids": {
          "$ref": "#/$defs/ids"
        },
        "cash_calls": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/cash_call"
          },
          "minItems": 1
        },
        "opinion_ids": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/id"
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        },
        "kind": {
          "const": "W1_issued"
        },
        "instrument_id": {
          "$ref": "#/$defs/id"
        },
        "collateral_id": {
          "$ref": "#/$defs/id"
        },
        "predefault_quote_id": {
          "$ref": "#/$defs/id"
        },
        "conditional_bid_price_per_unit": {
          "const": "0"
        },
        "conditional_quote_id": {
          "$ref": "#/$defs/id"
        },
        "security_exists_before_default": {
          "const": true
        },
        "default_realisation_assumption": {
          "const": "selected_joint_default_zero_bid"
        },
        "legal_form": {
          "const": "secured_loan_with_issued_bond_pledge"
        }
      }
    },
    "event_W1_contingent": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "event_id",
        "scenario_id",
        "event_at",
        "decision_at",
        "settlement_cutoff",
        "borrower_id",
        "funding_provider_id",
        "defaults",
        "free_cash_account_id",
        "available_facility_ids",
        "cash_calls",
        "opinion_ids",
        "evidence",
        "kind",
        "obligation_id",
        "security_exists_before_default",
        "issuance_trigger",
        "issuance_window_business_days",
        "new_identifier_status",
        "post_trigger_issuance_completed",
        "post_trigger_market_capacity",
        "preissue_market_value_status",
        "legal_form",
        "preconditions"
      ],
      "properties": {
        "event_id": {
          "$ref": "#/$defs/id"
        },
        "scenario_id": {
          "$ref": "#/$defs/id"
        },
        "event_at": {
          "$ref": "#/$defs/instant"
        },
        "decision_at": {
          "$ref": "#/$defs/instant"
        },
        "settlement_cutoff": {
          "$ref": "#/$defs/instant"
        },
        "borrower_id": {
          "$ref": "#/$defs/id"
        },
        "funding_provider_id": {
          "$ref": "#/$defs/id"
        },
        "defaults": {
          "$ref": "#/$defs/default_state"
        },
        "free_cash_account_id": {
          "$ref": "#/$defs/id"
        },
        "available_facility_ids": {
          "$ref": "#/$defs/ids"
        },
        "cash_calls": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/cash_call"
          },
          "minItems": 1
        },
        "opinion_ids": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/id"
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        },
        "kind": {
          "const": "W1_contingent"
        },
        "obligation_id": {
          "$ref": "#/$defs/id"
        },
        "security_exists_before_default": {
          "const": false
        },
        "issuance_trigger": {
          "const": "borrower_default"
        },
        "issuance_window_business_days": {
          "$ref": "#/$defs/count"
        },
        "new_identifier_status": {
          "const": "not_allocated_before_issuance"
        },
        "post_trigger_issuance_completed": {
          "$ref": "#/$defs/flag"
        },
        "post_trigger_market_capacity": {
          "const": "0"
        },
        "preissue_market_value_status": {
          "const": "not_a_security_no_traded_mark"
        },
        "legal_form": {
          "const": "secured_loan_with_contingent_issuance_promise"
        },
        "preconditions": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/condition"
          },
          "minItems": 1
        }
      }
    },
    "event_W2": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "event_id",
        "scenario_id",
        "event_at",
        "decision_at",
        "settlement_cutoff",
        "borrower_id",
        "funding_provider_id",
        "defaults",
        "free_cash_account_id",
        "available_facility_ids",
        "cash_calls",
        "opinion_ids",
        "evidence",
        "kind",
        "legal_form",
        "collateral_id",
        "payment_rights",
        "transfer_ban",
        "collected_but_blocked"
      ],
      "properties": {
        "event_id": {
          "$ref": "#/$defs/id"
        },
        "scenario_id": {
          "$ref": "#/$defs/id"
        },
        "event_at": {
          "$ref": "#/$defs/instant"
        },
        "decision_at": {
          "$ref": "#/$defs/instant"
        },
        "settlement_cutoff": {
          "$ref": "#/$defs/instant"
        },
        "borrower_id": {
          "$ref": "#/$defs/id"
        },
        "funding_provider_id": {
          "$ref": "#/$defs/id"
        },
        "defaults": {
          "$ref": "#/$defs/default_state"
        },
        "free_cash_account_id": {
          "$ref": "#/$defs/id"
        },
        "available_facility_ids": {
          "$ref": "#/$defs/ids"
        },
        "cash_calls": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/cash_call"
          },
          "minItems": 1
        },
        "opinion_ids": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/id"
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        },
        "kind": {
          "const": "W2"
        },
        "legal_form": {
          "const": "secured_loan_assigned_future_payments"
        },
        "collateral_id": {
          "$ref": "#/$defs/id"
        },
        "payment_rights": {
          "$ref": "#/$defs/payment_rights"
        },
        "transfer_ban": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "authority_id",
            "effective_at",
            "expires_at",
            "scope",
            "local_collection_continues",
            "blocked_cash_event_id",
            "licence_granted",
            "evidence"
          ],
          "properties": {
            "authority_id": {
              "$ref": "#/$defs/id"
            },
            "effective_at": {
              "$ref": "#/$defs/instant"
            },
            "expires_at": {
              "$ref": "#/$defs/instant"
            },
            "scope": {
              "const": "cross_border_USD_remittance"
            },
            "local_collection_continues": {
              "const": true
            },
            "blocked_cash_event_id": {
              "$ref": "#/$defs/id"
            },
            "licence_granted": {
              "const": false
            },
            "evidence": {
              "$ref": "#/$defs/evidence_refs"
            }
          }
        },
        "collected_but_blocked": {
          "$ref": "#/$defs/nonnegative"
        }
      }
    },
    "event_W3": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "event_id",
        "scenario_id",
        "event_at",
        "decision_at",
        "settlement_cutoff",
        "borrower_id",
        "funding_provider_id",
        "defaults",
        "free_cash_account_id",
        "available_facility_ids",
        "cash_calls",
        "opinion_ids",
        "evidence",
        "kind",
        "collateral_id",
        "instrument_id",
        "before_state",
        "after_state",
        "joint_shocks",
        "cash_settlement",
        "quarterly_period",
        "loan_mark_convention",
        "EM_mark_settled_in_cash"
      ],
      "properties": {
        "event_id": {
          "$ref": "#/$defs/id"
        },
        "scenario_id": {
          "$ref": "#/$defs/id"
        },
        "event_at": {
          "$ref": "#/$defs/instant"
        },
        "decision_at": {
          "$ref": "#/$defs/instant"
        },
        "settlement_cutoff": {
          "$ref": "#/$defs/instant"
        },
        "borrower_id": {
          "$ref": "#/$defs/id"
        },
        "funding_provider_id": {
          "$ref": "#/$defs/id"
        },
        "defaults": {
          "$ref": "#/$defs/default_state"
        },
        "free_cash_account_id": {
          "$ref": "#/$defs/id"
        },
        "available_facility_ids": {
          "$ref": "#/$defs/ids"
        },
        "cash_calls": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/cash_call"
          },
          "minItems": 1
        },
        "opinion_ids": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/id"
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        },
        "kind": {
          "const": "W3"
        },
        "collateral_id": {
          "$ref": "#/$defs/id"
        },
        "instrument_id": {
          "$ref": "#/$defs/id"
        },
        "before_state": {
          "$ref": "#/$defs/curve_state"
        },
        "after_state": {
          "$ref": "#/$defs/curve_state"
        },
        "joint_shocks": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "funding_mark_move",
            "AAA_reference_credit_move",
            "own_bond_move",
            "provider_CDS_move",
            "EM_credit_move"
          ],
          "properties": {
            "funding_mark_move": {
              "$ref": "#/$defs/decimal"
            },
            "AAA_reference_credit_move": {
              "$ref": "#/$defs/decimal"
            },
            "own_bond_move": {
              "$ref": "#/$defs/decimal"
            },
            "provider_CDS_move": {
              "$ref": "#/$defs/decimal"
            },
            "EM_credit_move": {
              "$ref": "#/$defs/decimal"
            }
          }
        },
        "cash_settlement": {
          "const": "quarterly_contractual_return_not_EM_mark"
        },
        "quarterly_period": {
          "type": "integer",
          "minimum": 1
        },
        "loan_mark_convention": {
          "const": "locked_coupon_discounted_at_OIS_plus_current_EM_spread"
        },
        "EM_mark_settled_in_cash": {
          "const": false
        }
      }
    },
    "event_W4": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "event_id",
        "scenario_id",
        "event_at",
        "decision_at",
        "settlement_cutoff",
        "borrower_id",
        "funding_provider_id",
        "defaults",
        "free_cash_account_id",
        "available_facility_ids",
        "cash_calls",
        "opinion_ids",
        "evidence",
        "kind",
        "collateral_id",
        "instrument_id",
        "price_quote_id",
        "market_closure",
        "legal_sale_right_survives",
        "credit_default_is_trigger"
      ],
      "properties": {
        "event_id": {
          "$ref": "#/$defs/id"
        },
        "scenario_id": {
          "$ref": "#/$defs/id"
        },
        "event_at": {
          "$ref": "#/$defs/instant"
        },
        "decision_at": {
          "$ref": "#/$defs/instant"
        },
        "settlement_cutoff": {
          "$ref": "#/$defs/instant"
        },
        "borrower_id": {
          "$ref": "#/$defs/id"
        },
        "funding_provider_id": {
          "$ref": "#/$defs/id"
        },
        "defaults": {
          "$ref": "#/$defs/default_state"
        },
        "free_cash_account_id": {
          "$ref": "#/$defs/id"
        },
        "available_facility_ids": {
          "$ref": "#/$defs/ids"
        },
        "cash_calls": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/cash_call"
          },
          "minItems": 1
        },
        "opinion_ids": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/id"
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        },
        "kind": {
          "const": "W4"
        },
        "collateral_id": {
          "$ref": "#/$defs/id"
        },
        "instrument_id": {
          "$ref": "#/$defs/id"
        },
        "price_quote_id": {
          "$ref": "#/$defs/id"
        },
        "market_closure": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "market_id",
            "closed_at",
            "reopens_at",
            "sale_capacity_during_closure",
            "repo_capacity_during_closure",
            "first_trade_at",
            "first_settlement_at",
            "reopening_bid_per_unit",
            "evidence"
          ],
          "properties": {
            "market_id": {
              "$ref": "#/$defs/id"
            },
            "closed_at": {
              "$ref": "#/$defs/instant"
            },
            "reopens_at": {
              "$ref": "#/$defs/instant"
            },
            "sale_capacity_during_closure": {
              "const": "0"
            },
            "repo_capacity_during_closure": {
              "const": "0"
            },
            "first_trade_at": {
              "$ref": "#/$defs/instant"
            },
            "first_settlement_at": {
              "$ref": "#/$defs/instant"
            },
            "reopening_bid_per_unit": {
              "$ref": "#/$defs/nonnegative"
            },
            "evidence": {
              "$ref": "#/$defs/evidence_refs"
            }
          }
        },
        "legal_sale_right_survives": {
          "const": true
        },
        "credit_default_is_trigger": {
          "const": false
        }
      }
    },
    "branch_event": {
      "oneOf": [
        {
          "$ref": "#/$defs/event_W1_issued"
        },
        {
          "$ref": "#/$defs/event_W1_contingent"
        },
        {
          "$ref": "#/$defs/event_W2"
        },
        {
          "$ref": "#/$defs/event_W3"
        },
        {
          "$ref": "#/$defs/event_W4"
        }
      ]
    },
    "book": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "bank_id",
        "provider_id",
        "borrower_id",
        "reference_id",
        "sale_agreement_id",
        "funding_agreement_id",
        "deployment_agreement_id",
        "notional",
        "reference_quantity",
        "funding_start_date",
        "funding_maturity_date",
        "deployment_start_date",
        "deployment_maturity_date",
        "funding_principal_source",
        "TRS_has_no_principal_exchange",
        "year5_reinvestment",
        "cash_funding_policy",
        "evidence"
      ],
      "properties": {
        "bank_id": {
          "$ref": "#/$defs/id"
        },
        "provider_id": {
          "$ref": "#/$defs/id"
        },
        "borrower_id": {
          "$ref": "#/$defs/id"
        },
        "reference_id": {
          "$ref": "#/$defs/id"
        },
        "sale_agreement_id": {
          "$ref": "#/$defs/id"
        },
        "funding_agreement_id": {
          "$ref": "#/$defs/id"
        },
        "deployment_agreement_id": {
          "$ref": "#/$defs/id"
        },
        "notional": {
          "$ref": "#/$defs/parameter_ref"
        },
        "reference_quantity": {
          "$ref": "#/$defs/parameter_ref"
        },
        "funding_start_date": {
          "$ref": "#/$defs/date"
        },
        "funding_maturity_date": {
          "$ref": "#/$defs/date"
        },
        "deployment_start_date": {
          "$ref": "#/$defs/date"
        },
        "deployment_maturity_date": {
          "$ref": "#/$defs/date"
        },
        "funding_principal_source": {
          "const": "identified_asset_sale"
        },
        "TRS_has_no_principal_exchange": {
          "const": true
        },
        "year5_reinvestment": {
          "const": "OIS_cash"
        },
        "cash_funding_policy": {
          "const": "actual_cash_deficit_not_noncash_reserve"
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "pricing": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "discount_curve_id",
        "curve_bindings",
        "replacement_quote",
        "contract",
        "quarterly_schedule",
        "integration",
        "day_count",
        "reference_distribution_rule",
        "default_model",
        "reporting_units",
        "evidence"
      ],
      "properties": {
        "discount_curve_id": {
          "$ref": "#/$defs/id"
        },
        "curve_bindings": {
          "$ref": "#/$defs/curve_bindings"
        },
        "replacement_quote": {
          "$ref": "#/$defs/parameter_ref"
        },
        "contract": {
          "$ref": "#/$defs/parameter_ref"
        },
        "quarterly_schedule": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/period"
          },
          "minItems": 80
        },
        "integration": {
          "const": "quarter_grid_end_payment"
        },
        "day_count": {
          "const": "synthetic_equal_quarters_ACT365F_separate_dates"
        },
        "reference_distribution_rule": {
          "const": "coupon_once_redemption_in_final_distribution_and_ex_price_zero"
        },
        "default_model": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "hazard",
            "provider_curve_id",
            "recovery_parameter",
            "default_timing",
            "conditional_market_state",
            "source"
          ],
          "properties": {
            "hazard": {
              "const": "CDS_divided_by_LGD"
            },
            "provider_curve_id": {
              "$ref": "#/$defs/id"
            },
            "recovery_parameter": {
              "$ref": "#/$defs/parameter_ref"
            },
            "default_timing": {
              "const": "quarter_end_after_scheduled_settlement"
            },
            "conditional_market_state": {
              "const": "case_scenario_constant_spread_shift"
            },
            "source": {
              "$ref": "#/$defs/evidence_refs"
            }
          }
        },
        "reporting_units": {
          "const": "USD_exact_decimal"
        },
        "evidence": {
          "$ref": "#/$defs/evidence_refs"
        }
      }
    },
    "reporting_panel": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "panel_id",
        "obligation",
        "report_fields",
        "evidence_array",
        "snapshot_id",
        "scenario_ids",
        "model_time_years",
        "elapsed_interval_years",
        "parameter_refs",
        "case_agreement_ids",
        "legal_scope",
        "selection_rule",
        "required_evidence",
        "not_additive_with_other_panels"
      ],
      "properties": {
        "panel_id": {
          "$ref": "#/$defs/id"
        },
        "obligation": {
          "type": "string",
          "enum": [
            "O1",
            "O2",
            "O3",
            "O4",
            "O5",
            "O6",
            "O7",
            "O8"
          ]
        },
        "report_fields": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/pointer"
          },
          "minItems": 1
        },
        "evidence_array": {
          "type": "string",
          "enum": [
            "/rates/evidence",
            "/credit_xva/evidence",
            "/capital/evidence",
            "/liquidity/evidence",
            "/accounting/evidence"
          ]
        },
        "snapshot_id": {
          "$ref": "#/$defs/id"
        },
        "scenario_ids": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/id"
          },
          "minItems": 1
        },
        "model_time_years": {
          "$ref": "#/$defs/nonnegative"
        },
        "elapsed_interval_years": {
          "$ref": "#/$defs/nonnegative"
        },
        "parameter_refs": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/parameter_ref"
          },
          "minItems": 1
        },
        "case_agreement_ids": {
          "$ref": "#/$defs/ids"
        },
        "legal_scope": {
          "type": "string",
          "enum": [
            "case_legal_objects",
            "standalone_fictional_comparator"
          ]
        },
        "selection_rule": {
          "$ref": "#/$defs/text"
        },
        "required_evidence": {
          "$ref": "#/$defs/evidence_refs"
        },
        "not_additive_with_other_panels": {
          "const": true
        }
      }
    },
    "institutional_reporting_panel": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "panel_id",
        "obligation",
        "report_fields",
        "snapshot_id",
        "scenario_ids",
        "model_time_years",
        "elapsed_interval_years",
        "parameter_refs",
        "case_agreement_ids",
        "legal_scope",
        "selection_rule",
        "required_evidence",
        "not_additive_with_other_panels"
      ],
      "properties": {
        "panel_id": {
          "type": "string",
          "pattern": "^[A-Z][A-Z0-9_]*(?![\\s\\S])"
        },
        "obligation": {
          "type": "string",
          "enum": [
            "O9",
            "O10",
            "O11",
            "O12"
          ]
        },
        "report_fields": {
          "type": "array",
          "items": {
            "enum": [
              "/legal",
              "/compliance",
              "/structure",
              "/recommendation"
            ]
          },
          "minItems": 1,
          "maxItems": 1
        },
        "snapshot_id": {
          "$ref": "#/$defs/id"
        },
        "scenario_ids": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/id"
          },
          "minItems": 1
        },
        "model_time_years": {
          "$ref": "#/$defs/nonnegative"
        },
        "elapsed_interval_years": {
          "$ref": "#/$defs/nonnegative"
        },
        "parameter_refs": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/parameter_ref"
          },
          "minItems": 1
        },
        "case_agreement_ids": {
          "$ref": "#/$defs/ids"
        },
        "legal_scope": {
          "type": "string",
          "enum": [
            "case_legal_objects",
            "standalone_fictional_comparator"
          ]
        },
        "selection_rule": {
          "$ref": "#/$defs/text"
        },
        "required_evidence": {
          "$ref": "#/$defs/evidence_refs"
        },
        "not_additive_with_other_panels": {
          "const": true
        }
      }
    },
    "reporting_panels": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "rates_inception",
        "credit_inception",
        "actual_cash_stress",
        "mark_only_cash",
        "conditional_prefunding",
        "funding_capital_inception",
        "collateral_controlled",
        "protection_controlled",
        "capacity_controlled",
        "capital_cost_component",
        "capital_decision",
        "allocation_7d",
        "branch_liquidity",
        "recognition_inception",
        "reserve_divergence",
        "prudent_valuation",
        "legal",
        "compliance",
        "structure",
        "recommendation",
        "terminal_settlement"
      ],
      "properties": {
        "rates_inception": {
          "$ref": "#/$defs/reporting_panel"
        },
        "credit_inception": {
          "$ref": "#/$defs/reporting_panel"
        },
        "actual_cash_stress": {
          "$ref": "#/$defs/reporting_panel"
        },
        "mark_only_cash": {
          "$ref": "#/$defs/reporting_panel"
        },
        "conditional_prefunding": {
          "$ref": "#/$defs/reporting_panel"
        },
        "funding_capital_inception": {
          "$ref": "#/$defs/reporting_panel"
        },
        "collateral_controlled": {
          "$ref": "#/$defs/reporting_panel"
        },
        "protection_controlled": {
          "$ref": "#/$defs/reporting_panel"
        },
        "capacity_controlled": {
          "$ref": "#/$defs/reporting_panel"
        },
        "capital_cost_component": {
          "$ref": "#/$defs/reporting_panel"
        },
        "capital_decision": {
          "$ref": "#/$defs/reporting_panel"
        },
        "allocation_7d": {
          "$ref": "#/$defs/reporting_panel"
        },
        "branch_liquidity": {
          "$ref": "#/$defs/reporting_panel"
        },
        "recognition_inception": {
          "$ref": "#/$defs/reporting_panel"
        },
        "reserve_divergence": {
          "$ref": "#/$defs/reporting_panel"
        },
        "prudent_valuation": {
          "$ref": "#/$defs/reporting_panel"
        },
        "legal": {
          "$ref": "#/$defs/institutional_reporting_panel",
          "properties": {
            "panel_id": {
              "const": "LEGAL"
            },
            "obligation": {
              "const": "O9"
            },
            "report_fields": {
              "const": ["/legal"]
            }
          }
        },
        "compliance": {
          "$ref": "#/$defs/institutional_reporting_panel",
          "properties": {
            "panel_id": {
              "const": "COMPLIANCE"
            },
            "obligation": {
              "const": "O10"
            },
            "report_fields": {
              "const": ["/compliance"]
            }
          }
        },
        "structure": {
          "$ref": "#/$defs/institutional_reporting_panel",
          "properties": {
            "panel_id": {
              "const": "STRUCTURE"
            },
            "obligation": {
              "const": "O11"
            },
            "report_fields": {
              "const": ["/structure"]
            }
          }
        },
        "recommendation": {
          "$ref": "#/$defs/institutional_reporting_panel",
          "properties": {
            "panel_id": {
              "const": "RECOMMENDATION"
            },
            "obligation": {
              "const": "O12"
            },
            "report_fields": {
              "const": ["/recommendation"]
            }
          }
        },
        "terminal_settlement": {
          "$ref": "#/$defs/reporting_panel"
        }
      }
    },
    "desk_snapshot": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "day",
        "parent_state_hash",
        "run_prefix_hash"
      ],
      "properties": {
        "day": {
          "type": "integer",
          "minimum": 1
        },
        "parent_state_hash": {
          "type": "string",
          "pattern": "^[0-9a-f]{64}$"
        },
        "run_prefix_hash": {
          "type": "string",
          "pattern": "^[0-9a-f]{64}$"
        }
      }
    }
  }
}
