{
  "openapi": "3.1.0",
  "info": {
    "title": "Hoist API",
    "description": "Australian register-data and due-diligence workflows for AI agents. PPSR subject, preview, and confirmation mechanics are documented but not currently customer-accessible. Preview requests fail closed with 503, no price, and no register dispatch; paid PPSR searches and pricing are unavailable through Hoist. OAuth, an API key, or an account does not unlock PPSR. Org-only scope: no individual-grantor searches.",
    "version": "1.0.0",
    "termsOfService": "https://hoistai.com/terms/",
    "contact": {
      "name": "Hoist API access",
      "url": "https://hoistai.com/contact/"
    },
    "license": {
      "name": "Proprietary",
      "url": "https://hoistai.com/terms/"
    }
  },
  "servers": [
    {
      "url": "https://api.hoistai.com/v1",
      "description": "Published v1 contract and reachability host. Health/auth responses confirm setup only. PPSR preview and paid search are not currently customer-accessible; preview fails closed without a price or register dispatch."
    }
  ],
  "components": {
    "schemas": {
      "EvidencePackError": {
        "type": "object",
        "required": [
          "ok",
          "code",
          "message"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "const": false,
            "description": "Always false on a non-2xx response"
          },
          "code": {
            "type": "string",
            "enum": [
              "invalid_input",
              "authentication_required",
              "invalid_id",
              "not_found",
              "legacy_artifact_unavailable",
              "r2_unavailable",
              "pdf_render_error",
              "upstream_error"
            ]
          },
          "message": {
            "type": "string"
          }
        }
      },
      "AssetInvoiceCanonicalIdentifier": {
        "type": "object",
        "required": [
          "kind",
          "raw",
          "canonical",
          "display"
        ],
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "vin",
              "chassis_number",
              "engine_number",
              "serial_number"
            ]
          },
          "raw": {
            "type": "string"
          },
          "canonical": {
            "type": "string"
          },
          "display": {
            "type": "string"
          }
        }
      },
      "EvidencePackSubject": {
        "type": "object",
        "required": [
          "abn",
          "vin",
          "purpose"
        ],
        "properties": {
          "abn": {
            "type": [
              "string",
              "null"
            ]
          },
          "vin": {
            "type": [
              "string",
              "null"
            ]
          },
          "purpose": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "EvidencePackSourceTrust": {
        "type": "object",
        "description": "Additive source-trust metadata. Source-backed rows project the exact static source manifest entry; prelaunch sample rows use an explicit Hoist fixture/unsearched identity and never borrow an upstream register owner, cadence, parser, or source ID. Does not include credentials, raw queries, query hashes, raw payload refs, or Evidence Pack internals.",
        "required": [
          "source_id",
          "owner",
          "detail",
          "freshness",
          "snapshot",
          "parser",
          "limitations"
        ],
        "properties": {
          "source_id": {
            "type": "string",
            "description": "Exact manifest source ID for a source-backed check, or an explicit `hoist-fixture-unsearched-*` ID for a sample row. PPSR fixture aliases never map to or impersonate `afsa-ppsr`."
          },
          "owner": {
            "type": "object",
            "required": [
              "name",
              "kind",
              "jurisdiction",
              "website"
            ],
            "properties": {
              "name": {
                "type": "string"
              },
              "kind": {
                "type": "string",
                "enum": [
                  "hoist",
                  "government",
                  "regulator",
                  "intergovernmental"
                ]
              },
              "jurisdiction": {
                "type": "string"
              },
              "website": {
                "type": "string",
                "format": "uri"
              }
            }
          },
          "detail": {
            "type": "string",
            "description": "How Hoist obtains or snapshots the source without exposing credentials."
          },
          "freshness": {
            "type": "object",
            "required": [
              "cadence"
            ],
            "properties": {
              "cadence": {
                "type": "string"
              }
            }
          },
          "snapshot": {
            "type": "object",
            "required": [
              "source_version"
            ],
            "properties": {
              "source_version": {
                "type": "string"
              }
            }
          },
          "parser": {
            "type": "object",
            "required": [
              "parser_version",
              "notes"
            ],
            "properties": {
              "parser_version": {
                "type": "string"
              },
              "notes": {
                "type": "string"
              }
            }
          },
          "limitations": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "EvidencePackSourceCheck": {
        "type": "object",
        "description": "Source-check projection. In the prelaunch create_evidence_pack and legacy asset-finance sample exports, every ABR, GST, VIN, and PPSR row is fixture or unsearched, never a current register result.",
        "required": [
          "source",
          "verdict",
          "freshness",
          "certificate_sha256",
          "source_snapshot_id"
        ],
        "properties": {
          "source": {
            "type": "string"
          },
          "verdict": {
            "type": "string"
          },
          "freshness": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "Source-observation time. Null for every current unsearched fixture row; assembly time is reported separately."
          },
          "certificate_sha256": {
            "type": [
              "string",
              "null"
            ]
          },
          "source_trust": {
            "$ref": "#/components/schemas/EvidencePackSourceTrust"
          },
          "source_snapshot_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "Stable source snapshot identifier only when a source was actually queried and publishes one. Null for every current unsearched fixture row."
          }
        }
      },
      "EvidencePackRiskFlag": {
        "type": "object",
        "required": [
          "code",
          "category",
          "severity",
          "message",
          "confidence",
          "evidence_refs",
          "source_refs",
          "source_backing",
          "recommended_next_check"
        ],
        "properties": {
          "code": {
            "type": "string"
          },
          "category": {
            "type": "string",
            "enum": [
              "identity_risk",
              "licence_risk",
              "asset_encumbrance_risk",
              "sanctions_risk",
              "insolvency_risk",
              "address_risk",
              "charity_status_risk",
              "procurement_risk",
              "director_or_control_risk",
              "source_conflict_risk"
            ],
            "description": "Typed risk ontology category for source interpretation."
          },
          "severity": {
            "type": "string",
            "enum": [
              "info",
              "low",
              "medium",
              "high",
              "critical"
            ]
          },
          "message": {
            "type": "string"
          },
          "confidence": {
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "evidence_refs": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "source_refs": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "source_backing": {
            "type": "string",
            "description": "Plain-language source backing for the flag. This is evidence wording, not a clearance claim."
          },
          "recommended_next_check": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "EvidencePackEnvelope": {
        "type": "object",
        "required": [
          "ok",
          "export_id",
          "contract_version",
          "download_url",
          "assembled_at",
          "generated_at",
          "freshness",
          "partial",
          "data_mode",
          "field_origins",
          "verdict",
          "subject",
          "source_checks",
          "risk_flags",
          "recommended_next_check",
          "risk_explanation",
          "risk_score",
          "human_review_items",
          "machine_pack",
          "human_pack"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "const": true
          },
          "export_id": {
            "type": "string",
            "description": "Canonical pack identifier (UUID v4)."
          },
          "contract_version": {
            "type": "string",
            "const": "fixture-machine-truth-v2",
            "description": "Truth-contract stamp. Clients must not replay or treat older unstamped artifacts as this response shape."
          },
          "download_url": {
            "type": "string",
            "description": "Absolute canonical API URL for retrieving the truth-stamped prelaunch fixture PDF (GET https://api.hoistai.com/v1/exports/{id})."
          },
          "assembled_at": {
            "type": "string",
            "format": "date-time",
            "description": "Time Hoist assembled the fixture sample; not a source-observation or source-effective time."
          },
          "generated_at": {
            "type": "string",
            "format": "date-time",
            "description": "Legacy alias for assembled_at; never source freshness."
          },
          "freshness": {
            "type": "null",
            "description": "Always null because this route performs no source query."
          },
          "partial": {
            "type": "boolean",
            "const": true,
            "description": "Always true because no current source result is included."
          },
          "data_mode": {
            "type": "string",
            "const": "synthetic_fixture_unsearched"
          },
          "field_origins": {
            "type": "object",
            "required": [
              "subject",
              "source_checks",
              "risk_outputs"
            ],
            "properties": {
              "subject": {
                "type": "string",
                "const": "caller_input_unverified"
              },
              "source_checks": {
                "type": "string",
                "const": "synthetic_fixture_unsearched"
              },
              "risk_outputs": {
                "type": "string",
                "const": "derived_from_unsearched_fixture_rows"
              }
            },
            "additionalProperties": false
          },
          "verdict": {
            "type": "string"
          },
          "subject": {
            "$ref": "#/components/schemas/EvidencePackSubject"
          },
          "source_checks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EvidencePackSourceCheck"
            }
          },
          "risk_flags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EvidencePackRiskFlag"
            }
          },
          "human_review_items": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "machine_pack": {
            "$ref": "#/components/schemas/EvidencePackMachinePack"
          },
          "human_pack": {
            "$ref": "#/components/schemas/EvidencePackHumanPack"
          },
          "risk_score": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100,
            "description": "0-100 source-interpretation risk score computed from typed risk flags."
          },
          "risk_explanation": {
            "$ref": "#/components/schemas/EvidencePackRiskExplanation"
          },
          "recommended_next_check": {
            "type": "string",
            "description": "Next source-cited check or review action recommended by the risk ontology."
          }
        }
      },
      "AssetFinanceEvidencePackEnvelope": {
        "allOf": [
          {
            "$ref": "#/components/schemas/EvidencePackEnvelope"
          },
          {
            "type": "object",
            "required": [
              "legacy_alias"
            ],
            "properties": {
              "legacy_alias": {
                "type": "object",
                "required": [
                  "status",
                  "tool",
                  "replacement_tool",
                  "ignored_fields",
                  "note"
                ],
                "properties": {
                  "status": {
                    "type": "string",
                    "const": "retired_alias"
                  },
                  "tool": {
                    "type": "string",
                    "const": "create_asset_finance_evidence_pack"
                  },
                  "replacement_tool": {
                    "type": "string",
                    "const": "create_evidence_pack"
                  },
                  "ignored_fields": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "note": {
                    "type": "string"
                  }
                },
                "additionalProperties": false
              }
            }
          }
        ]
      },
      "AbnLookupError": {
        "type": "object",
        "required": [
          "ok",
          "code",
          "message"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "const": false,
            "description": "Always false on a non-2xx response"
          },
          "code": {
            "type": "string",
            "enum": [
              "invalid_abn",
              "abn_not_found",
              "rate_limited",
              "upstream_error",
              "network_error",
              "parse_error"
            ],
            "description": "Stable error sentinel. Clients should branch on this rather than parsing message."
          },
          "message": {
            "type": "string",
            "description": "Human-readable error message. May change between releases \u2014 do not parse."
          }
        }
      },
      "AddressLookupError": {
        "type": "object",
        "required": [
          "ok",
          "code",
          "message"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "const": false
          },
          "code": {
            "type": "string",
            "enum": [
              "invalid_input",
              "invalid_source_version",
              "incomplete_address",
              "invalid_state",
              "invalid_postcode",
              "unsupported_street_type",
              "shard_read_failed",
              "unauthorized"
            ],
            "description": "Stable error sentinel. Clients should branch on this rather than parsing message."
          },
          "message": {
            "type": "string",
            "description": "Human-readable error message. May change between releases - do not parse."
          }
        }
      },
      "AddressLookupRequest": {
        "type": "object",
        "required": [
          "source_version",
          "raw_address"
        ],
        "properties": {
          "source_version": {
            "type": "string",
            "minLength": 1,
            "description": "G-NAF source snapshot version to query.",
            "example": "GNAF-2026-05"
          },
          "raw_address": {
            "type": "string",
            "minLength": 1,
            "description": "Single-line Australian address. Parsed by the shared address normalizer before lookup.",
            "example": "10 Main St, Sydney NSW 2000"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 25,
            "default": 10,
            "description": "Maximum candidate count. Values above 25 are capped by the service."
          }
        },
        "additionalProperties": false
      },
      "AddressLookupMismatchFlag": {
        "type": "object",
        "required": [
          "severity",
          "code",
          "message"
        ],
        "properties": {
          "severity": {
            "type": "string",
            "enum": [
              "low",
              "medium"
            ]
          },
          "code": {
            "type": "string",
            "enum": [
              "fuzzy_street_name",
              "suburb_mismatch",
              "postcode_mismatch",
              "state_mismatch",
              "ambiguous_match"
            ]
          },
          "message": {
            "type": "string"
          },
          "input_component": {
            "type": "string"
          },
          "candidate_component": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "AddressLookupCandidate": {
        "type": "object",
        "required": [
          "gnaf_pid",
          "full_address",
          "locality",
          "state",
          "postcode",
          "latitude",
          "longitude",
          "geocode_type",
          "source",
          "evidence",
          "match"
        ],
        "properties": {
          "gnaf_pid": {
            "type": "string"
          },
          "full_address": {
            "type": "string"
          },
          "locality": {
            "type": "string"
          },
          "state": {
            "type": "string",
            "enum": [
              "ACT",
              "NSW",
              "NT",
              "QLD",
              "SA",
              "TAS",
              "VIC",
              "WA"
            ]
          },
          "postcode": {
            "type": "string",
            "pattern": "^[0-9]{4}$"
          },
          "latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "geocode_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "source": {
            "type": "object",
            "required": [
              "source_id",
              "source_version",
              "source_kind",
              "registry_truth",
              "snapshot_backed"
            ],
            "properties": {
              "source_id": {
                "type": "string",
                "const": "gnaf"
              },
              "source_version": {
                "type": "string"
              },
              "source_kind": {
                "type": "string",
                "const": "versioned_snapshot"
              },
              "registry_truth": {
                "type": "string",
                "const": "snapshot_not_realtime"
              },
              "snapshot_backed": {
                "type": "boolean",
                "const": true
              }
            },
            "additionalProperties": false
          },
          "evidence": {
            "type": "object",
            "required": [
              "r2_shard_key",
              "row_offset"
            ],
            "properties": {
              "r2_shard_key": {
                "type": "string"
              },
              "row_offset": {
                "type": "integer",
                "minimum": 0
              }
            },
            "additionalProperties": false
          },
          "match": {
            "type": "object",
            "required": [
              "method",
              "confidence",
              "component_scores",
              "mismatch_flags"
            ],
            "properties": {
              "method": {
                "type": "string",
                "enum": [
                  "exact_normalized",
                  "fuzzy_components"
                ]
              },
              "confidence": {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              },
              "component_scores": {
                "type": "object",
                "required": [
                  "street_number",
                  "street_name",
                  "street_type",
                  "suburb",
                  "state",
                  "postcode"
                ],
                "properties": {
                  "street_number": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1
                  },
                  "street_name": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1
                  },
                  "street_type": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1
                  },
                  "suburb": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1
                  },
                  "state": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1
                  },
                  "postcode": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1
                  }
                },
                "additionalProperties": false
              },
              "mismatch_flags": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/AddressLookupMismatchFlag"
                }
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "AddressLookupPropertyEvidenceSubject": {
        "type": "object",
        "required": [
          "kind",
          "normalized_address_key",
          "matched_address",
          "gnaf_pid",
          "jurisdiction",
          "locality",
          "postcode",
          "latitude",
          "longitude"
        ],
        "properties": {
          "kind": {
            "type": "string",
            "const": "property"
          },
          "normalized_address_key": {
            "type": "string"
          },
          "matched_address": {
            "type": [
              "string",
              "null"
            ]
          },
          "gnaf_pid": {
            "type": [
              "string",
              "null"
            ]
          },
          "jurisdiction": {
            "type": [
              "string",
              "null"
            ]
          },
          "locality": {
            "type": [
              "string",
              "null"
            ]
          },
          "postcode": {
            "type": [
              "string",
              "null"
            ]
          },
          "latitude": {
            "type": [
              "number",
              "null"
            ]
          },
          "longitude": {
            "type": [
              "number",
              "null"
            ]
          }
        },
        "additionalProperties": false
      },
      "AddressLookupPropertyEvidenceSourceCheck": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "source",
              "source_id",
              "applies",
              "status",
              "result",
              "source_version",
              "source_kind",
              "confidence",
              "evidence_ref",
              "limitations"
            ],
            "properties": {
              "source": {
                "type": "string",
                "const": "G-NAF"
              },
              "source_id": {
                "type": "string",
                "const": "gnaf"
              },
              "applies": {
                "type": "boolean",
                "const": true
              },
              "status": {
                "type": "string",
                "enum": [
                  "matched",
                  "needs_review",
                  "no_match"
                ]
              },
              "result": {
                "type": "string"
              },
              "source_version": {
                "type": "string"
              },
              "source_kind": {
                "type": "string",
                "const": "versioned_snapshot"
              },
              "confidence": {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              },
              "evidence_ref": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "limitations": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "source",
              "source_id",
              "applies",
              "status",
              "result",
              "source_version",
              "source_kind",
              "confidence",
              "evidence_ref",
              "owner",
              "source_url",
              "licence",
              "access_mode",
              "credential_requirement",
              "request_shape",
              "response_shape",
              "cadence",
              "join_keys",
              "date_range",
              "attribution",
              "fields",
              "pii_handling",
              "records",
              "limitations"
            ],
            "properties": {
              "source": {
                "type": "string",
                "const": "NSW Planning Portal Online DA"
              },
              "source_id": {
                "type": "string",
                "const": "nsw-planning-portal-online-da"
              },
              "applies": {
                "type": "boolean",
                "const": true
              },
              "status": {
                "type": "string",
                "enum": [
                  "matched",
                  "no_match",
                  "source_unavailable"
                ]
              },
              "result": {
                "type": "string"
              },
              "source_version": {
                "type": "string"
              },
              "source_kind": {
                "type": "string",
                "const": "planning_application_context"
              },
              "confidence": {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              },
              "evidence_ref": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "owner": {
                "type": "string"
              },
              "source_url": {
                "type": "string",
                "format": "uri"
              },
              "licence": {
                "type": "string"
              },
              "access_mode": {
                "type": "string"
              },
              "credential_requirement": {
                "type": "string"
              },
              "request_shape": {
                "type": "string"
              },
              "response_shape": {
                "type": "string"
              },
              "cadence": {
                "type": "string"
              },
              "join_keys": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "date_range": {
                "type": "object",
                "required": [
                  "lodgement_from",
                  "lodgement_to"
                ],
                "properties": {
                  "lodgement_from": {
                    "type": "string"
                  },
                  "lodgement_to": {
                    "type": "string"
                  }
                },
                "additionalProperties": false
              },
              "attribution": {
                "type": "string"
              },
              "fields": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "pii_handling": {
                "type": "string"
              },
              "records": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "planning_portal_application_number",
                    "council_application_number",
                    "application_type",
                    "application_status",
                    "development_category",
                    "development_type",
                    "full_address",
                    "council_name",
                    "lodgement_date",
                    "determination_date",
                    "determination_authority",
                    "assessment_exhibition_start_date",
                    "assessment_exhibition_end_date",
                    "cost_of_development",
                    "lot",
                    "plan_label",
                    "section",
                    "suburb",
                    "postcode",
                    "state",
                    "x",
                    "y"
                  ],
                  "properties": {
                    "planning_portal_application_number": {
                      "type": "string"
                    },
                    "council_application_number": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "application_type": {
                      "type": "string"
                    },
                    "application_status": {
                      "type": "string"
                    },
                    "development_category": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "development_type": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "full_address": {
                      "type": "string"
                    },
                    "council_name": {
                      "type": "string"
                    },
                    "lodgement_date": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "determination_date": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "determination_authority": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "assessment_exhibition_start_date": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "assessment_exhibition_end_date": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "cost_of_development": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "lot": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "plan_label": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "section": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "suburb": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "postcode": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "state": {
                      "type": "string",
                      "const": "NSW"
                    },
                    "x": {
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "y": {
                      "type": [
                        "number",
                        "null"
                      ]
                    }
                  },
                  "additionalProperties": false
                }
              },
              "limitations": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "source",
              "source_id",
              "applies",
              "status",
              "result",
              "source_version",
              "source_kind",
              "confidence",
              "evidence_ref",
              "owner",
              "source_url",
              "access_mode",
              "credential_requirement",
              "request_shape",
              "response_shape",
              "cadence",
              "join_keys",
              "date_range",
              "attribution",
              "limitations"
            ],
            "properties": {
              "source": {
                "type": "string",
                "enum": [
                  "SILO Data Drill",
                  "BoM Climate Data Online"
                ]
              },
              "source_id": {
                "type": "string",
                "enum": [
                  "silo-data-drill",
                  "bom-climate-data-online"
                ]
              },
              "applies": {
                "type": "boolean",
                "const": true
              },
              "status": {
                "type": "string",
                "enum": [
                  "climate_context_available",
                  "source_unavailable"
                ]
              },
              "result": {
                "type": "string"
              },
              "source_version": {
                "type": "string"
              },
              "source_kind": {
                "type": "string",
                "const": "observed_climate_context"
              },
              "confidence": {
                "type": "number",
                "minimum": 0,
                "maximum": 1
              },
              "evidence_ref": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "owner": {
                "type": "string"
              },
              "source_url": {
                "type": "string",
                "format": "uri"
              },
              "access_mode": {
                "type": "string"
              },
              "credential_requirement": {
                "type": "string"
              },
              "request_shape": {
                "type": "string"
              },
              "response_shape": {
                "type": "string"
              },
              "cadence": {
                "type": "string"
              },
              "join_keys": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "date_range": {
                "type": "object",
                "required": [
                  "start",
                  "finish"
                ],
                "properties": {
                  "start": {
                    "type": "string"
                  },
                  "finish": {
                    "type": "string"
                  }
                },
                "additionalProperties": false
              },
              "attribution": {
                "type": "string"
              },
              "limitations": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              }
            },
            "additionalProperties": false
          }
        ]
      },
      "AddressLookupPropertyEvidenceNotChecked": {
        "type": "object",
        "required": [
          "source",
          "applies",
          "status",
          "result"
        ],
        "properties": {
          "source": {
            "type": "string",
            "enum": [
              "Title ownership",
              "Mortgage or encumbrance",
              "Valuation or sales history",
              "Planning applications",
              "Hazard context"
            ]
          },
          "applies": {
            "type": "boolean",
            "const": false
          },
          "status": {
            "type": "string",
            "const": "not_checked"
          },
          "result": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "AddressLookupPropertyEvidence": {
        "type": "object",
        "required": [
          "verdict",
          "headline",
          "subject",
          "source_checks",
          "not_checked",
          "recommended_next_action",
          "limitations"
        ],
        "properties": {
          "verdict": {
            "type": "string",
            "enum": [
              "matched",
              "needs_review",
              "not_found"
            ]
          },
          "headline": {
            "type": "string"
          },
          "subject": {
            "$ref": "#/components/schemas/AddressLookupPropertyEvidenceSubject"
          },
          "source_checks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AddressLookupPropertyEvidenceSourceCheck"
            }
          },
          "not_checked": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AddressLookupPropertyEvidenceNotChecked"
            }
          },
          "recommended_next_action": {
            "type": "string"
          },
          "limitations": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "AddressLookupResponse": {
        "type": "object",
        "required": [
          "ok",
          "tool",
          "status",
          "matched_on",
          "normalized_address_key",
          "confidence",
          "mismatch_flags",
          "candidate_count",
          "candidates",
          "property_evidence"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "const": true
          },
          "tool": {
            "type": "string",
            "const": "address_lookup"
          },
          "status": {
            "type": "string",
            "enum": [
              "exact_match",
              "fuzzy_match",
              "ambiguous",
              "no_match"
            ]
          },
          "matched_on": {
            "type": "string",
            "enum": [
              "normalized_full_address",
              "address_components",
              "none"
            ]
          },
          "normalized_address_key": {
            "type": "string"
          },
          "confidence": {
            "type": "number",
            "minimum": 0,
            "maximum": 1
          },
          "mismatch_flags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AddressLookupMismatchFlag"
            }
          },
          "candidate_count": {
            "type": "integer",
            "minimum": 0
          },
          "candidates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AddressLookupCandidate"
            }
          },
          "property_evidence": {
            "$ref": "#/components/schemas/AddressLookupPropertyEvidence"
          }
        },
        "additionalProperties": false
      },
      "WhatChangedError": {
        "type": "object",
        "required": [
          "ok",
          "code",
          "message"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "const": false
          },
          "code": {
            "type": "string",
            "enum": [
              "invalid_input",
              "snapshot_not_found",
              "snapshot_mismatch",
              "ambiguous_target",
              "storage_error",
              "unauthorized"
            ],
            "description": "Stable error sentinel. Clients should branch on this rather than parsing message."
          },
          "message": {
            "type": "string",
            "description": "Human-readable error message. May change between releases - do not parse."
          }
        },
        "additionalProperties": false
      },
      "WhatChangedRequest": {
        "type": "object",
        "required": [
          "tenant_id",
          "account_id"
        ],
        "oneOf": [
          {
            "required": [
              "previous_pack_id",
              "current_pack_id"
            ]
          },
          {
            "required": [
              "target_type",
              "target_hash",
              "from",
              "to"
            ]
          }
        ],
        "properties": {
          "tenant_id": {
            "type": "string",
            "minLength": 1,
            "description": "Tenant scope for the monitor evidence snapshots."
          },
          "account_id": {
            "type": "string",
            "minLength": 1,
            "description": "Account scope for the monitor evidence snapshots."
          },
          "previous_pack_id": {
            "type": "string",
            "minLength": 1,
            "description": "Evidence pack ID for the earlier snapshot.",
            "example": "pack_previous"
          },
          "current_pack_id": {
            "type": "string",
            "minLength": 1,
            "description": "Evidence pack ID for the later snapshot.",
            "example": "pack_current"
          },
          "target_type": {
            "type": "string",
            "enum": [
              "ABN",
              "ACN",
              "VIN",
              "address"
            ],
            "description": "Monitor target type for a target/time-range comparison."
          },
          "target_hash": {
            "type": "string",
            "minLength": 1,
            "description": "Privacy-preserving monitor target hash. Raw address input is never accepted here."
          },
          "subscription_id": {
            "type": "string",
            "minLength": 1,
            "description": "Optional monitor subscription ID used to disambiguate duplicate target monitors."
          },
          "from": {
            "type": "integer",
            "minimum": 1,
            "description": "Inclusive created_at lower bound in epoch milliseconds."
          },
          "to": {
            "type": "integer",
            "minimum": 1,
            "description": "Inclusive created_at upper bound in epoch milliseconds."
          }
        },
        "additionalProperties": false
      },
      "WhatChangedSourceVersion": {
        "type": "object",
        "required": [
          "source_id",
          "source_version",
          "observed_at"
        ],
        "properties": {
          "source_id": {
            "type": "string"
          },
          "source_version": {
            "type": "string"
          },
          "observed_at": {
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "WhatChangedRiskFlag": {
        "type": "object",
        "required": [
          "code",
          "severity"
        ],
        "properties": {
          "code": {
            "type": "string"
          },
          "severity": {
            "type": "string",
            "enum": [
              "info",
              "low",
              "medium",
              "high"
            ]
          },
          "evidence_ref": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "WhatChangedSnapshotRef": {
        "type": "object",
        "required": [
          "snapshot_id",
          "subscription_id",
          "role",
          "evidence_pack_id",
          "evidence_pack_ref",
          "target_type",
          "target_hash",
          "created_at",
          "source_observed_at",
          "source_versions",
          "risk_flags"
        ],
        "properties": {
          "snapshot_id": {
            "type": "string"
          },
          "subscription_id": {
            "type": "string"
          },
          "role": {
            "type": "string",
            "enum": [
              "baseline",
              "check"
            ]
          },
          "evidence_pack_id": {
            "type": "string"
          },
          "evidence_pack_ref": {
            "type": [
              "string",
              "null"
            ]
          },
          "target_type": {
            "type": "string",
            "enum": [
              "ABN",
              "ACN",
              "VIN",
              "address"
            ]
          },
          "target_hash": {
            "type": "string"
          },
          "created_at": {
            "type": "integer"
          },
          "source_observed_at": {
            "type": "integer"
          },
          "source_versions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WhatChangedSourceVersion"
            }
          },
          "risk_flags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WhatChangedRiskFlag"
            }
          }
        },
        "additionalProperties": false
      },
      "WhatChangedEvidenceRef": {
        "type": "object",
        "required": [
          "snapshot_id",
          "evidence_pack_id",
          "evidence_pack_ref"
        ],
        "properties": {
          "snapshot_id": {
            "type": "string"
          },
          "evidence_pack_id": {
            "type": "string"
          },
          "evidence_pack_ref": {
            "type": [
              "string",
              "null"
            ]
          },
          "fact_evidence_ref": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "WhatChangedStructuredDiff": {
        "type": "object",
        "required": [
          "kind",
          "severity",
          "field",
          "old_value",
          "new_value",
          "old_hash",
          "new_hash",
          "evidence"
        ],
        "properties": {
          "kind": {
            "type": "string",
            "enum": [
              "identity",
              "registration",
              "status",
              "address",
              "risk",
              "source_version",
              "unknown"
            ]
          },
          "severity": {
            "type": "string",
            "enum": [
              "info",
              "low",
              "medium",
              "high"
            ]
          },
          "field": {
            "type": "string"
          },
          "old_value": {
            "type": [
              "string",
              "null"
            ]
          },
          "new_value": {
            "type": [
              "string",
              "null"
            ]
          },
          "old_hash": {
            "type": [
              "string",
              "null"
            ]
          },
          "new_hash": {
            "type": [
              "string",
              "null"
            ]
          },
          "evidence": {
            "type": "object",
            "required": [
              "previous",
              "current"
            ],
            "properties": {
              "previous": {
                "$ref": "#/components/schemas/WhatChangedEvidenceRef"
              },
              "current": {
                "$ref": "#/components/schemas/WhatChangedEvidenceRef"
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "WhatChangedResponse": {
        "type": "object",
        "required": [
          "ok",
          "tool",
          "selector",
          "outcome",
          "severity",
          "target",
          "previous_snapshot",
          "current_snapshot",
          "change_count",
          "changes",
          "generated_at"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "const": true
          },
          "tool": {
            "type": "string",
            "const": "what_changed"
          },
          "selector": {
            "type": "string",
            "enum": [
              "pack_pair",
              "target_window"
            ]
          },
          "outcome": {
            "type": "string",
            "enum": [
              "no_change",
              "changed"
            ]
          },
          "severity": {
            "type": "string",
            "enum": [
              "info",
              "low",
              "medium",
              "high"
            ]
          },
          "target": {
            "type": "object",
            "required": [
              "type",
              "hash"
            ],
            "properties": {
              "type": {
                "type": "string",
                "enum": [
                  "ABN",
                  "ACN",
                  "VIN",
                  "address"
                ]
              },
              "hash": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "previous_snapshot": {
            "$ref": "#/components/schemas/WhatChangedSnapshotRef"
          },
          "current_snapshot": {
            "$ref": "#/components/schemas/WhatChangedSnapshotRef"
          },
          "change_count": {
            "type": "integer",
            "minimum": 0
          },
          "changes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WhatChangedStructuredDiff"
            }
          },
          "generated_at": {
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "ConfirmNoChangesError": {
        "type": "object",
        "required": [
          "ok",
          "code",
          "message"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "const": false
          },
          "code": {
            "type": "string",
            "enum": [
              "invalid_input",
              "unauthorized",
              "monitor_not_found",
              "baseline_not_captured",
              "baseline_mismatch",
              "recheck_failed"
            ]
          },
          "message": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "ConfirmNoChangesComparisonFact": {
        "type": "object",
        "required": [
          "field",
          "value_hash"
        ],
        "properties": {
          "field": {
            "type": "string"
          },
          "value_hash": {
            "type": "string"
          },
          "normalized_value": {
            "type": "string"
          },
          "evidence_ref": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "ConfirmNoChangesComparison": {
        "type": "object",
        "required": [
          "fingerprint",
          "fact_hashes"
        ],
        "properties": {
          "fingerprint": {
            "type": "string"
          },
          "fact_hashes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "facts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ConfirmNoChangesComparisonFact"
            }
          }
        },
        "additionalProperties": false
      },
      "ConfirmNoChangesCurrentEvidence": {
        "type": "object",
        "required": [
          "evidence_pack_id",
          "comparison",
          "source_versions",
          "source_observed_at"
        ],
        "properties": {
          "evidence_pack_id": {
            "type": "string",
            "minLength": 1
          },
          "evidence_pack_ref": {
            "type": "string"
          },
          "comparison": {
            "$ref": "#/components/schemas/ConfirmNoChangesComparison"
          },
          "source_versions": {
            "type": "array",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/WhatChangedSourceVersion"
            }
          },
          "source_observed_at": {
            "type": "integer",
            "minimum": 1
          },
          "risk_flags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WhatChangedRiskFlag"
            }
          }
        },
        "additionalProperties": false
      },
      "ConfirmNoChangesRequest": {
        "type": "object",
        "required": [
          "tenant_id",
          "account_id",
          "subscription_id",
          "baseline_evidence_pack_id",
          "current_evidence"
        ],
        "properties": {
          "tenant_id": {
            "type": "string",
            "minLength": 1
          },
          "account_id": {
            "type": "string",
            "minLength": 1
          },
          "subscription_id": {
            "type": "string",
            "minLength": 1
          },
          "baseline_evidence_pack_id": {
            "type": "string",
            "minLength": 1
          },
          "idempotency_key": {
            "type": "string",
            "minLength": 1
          },
          "current_evidence": {
            "$ref": "#/components/schemas/ConfirmNoChangesCurrentEvidence"
          }
        },
        "additionalProperties": false
      },
      "ConfirmNoChangesCheckRef": {
        "type": "object",
        "required": [
          "check_id",
          "status",
          "trigger",
          "baseline_snapshot_id",
          "result_snapshot_id",
          "evidence_pack_id",
          "audit_correlation_id",
          "completed_at"
        ],
        "properties": {
          "check_id": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "queued",
              "running",
              "no_change",
              "changed",
              "failed"
            ]
          },
          "trigger": {
            "type": "string",
            "const": "before_funding"
          },
          "baseline_snapshot_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "result_snapshot_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "evidence_pack_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "audit_correlation_id": {
            "type": "string"
          },
          "completed_at": {
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "additionalProperties": false
      },
      "ConfirmNoChangesSnapshotRef": {
        "type": "object",
        "required": [
          "snapshot_id",
          "evidence_pack_id",
          "evidence_pack_ref",
          "source_versions",
          "source_observed_at",
          "created_at"
        ],
        "properties": {
          "snapshot_id": {
            "type": "string"
          },
          "evidence_pack_id": {
            "type": "string"
          },
          "evidence_pack_ref": {
            "type": [
              "string",
              "null"
            ]
          },
          "source_versions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WhatChangedSourceVersion"
            }
          },
          "source_observed_at": {
            "type": "integer"
          },
          "created_at": {
            "type": "integer"
          }
        },
        "additionalProperties": false
      },
      "ConfirmNoChangesResponse": {
        "type": "object",
        "required": [
          "ok",
          "tool",
          "outcome",
          "subscription_id",
          "check",
          "baseline_snapshot",
          "current_snapshot",
          "change_count",
          "severity",
          "changes",
          "generated_at"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "const": true
          },
          "tool": {
            "type": "string",
            "const": "confirm_no_changes"
          },
          "outcome": {
            "type": "string",
            "enum": [
              "no_changes",
              "changes_detected"
            ]
          },
          "subscription_id": {
            "type": "string"
          },
          "check": {
            "$ref": "#/components/schemas/ConfirmNoChangesCheckRef"
          },
          "baseline_snapshot": {
            "$ref": "#/components/schemas/ConfirmNoChangesSnapshotRef"
          },
          "current_snapshot": {
            "$ref": "#/components/schemas/ConfirmNoChangesSnapshotRef"
          },
          "change_count": {
            "type": "integer",
            "minimum": 0
          },
          "severity": {
            "type": "string",
            "enum": [
              "info",
              "low",
              "medium",
              "high"
            ]
          },
          "changes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WhatChangedStructuredDiff"
            }
          },
          "generated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "additionalProperties": false
      },
      "MonitorOwner": {
        "type": "object",
        "required": [
          "tenant_id",
          "account_id"
        ],
        "properties": {
          "tenant_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "account_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "user_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "oauth_grant_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          }
        },
        "additionalProperties": false
      },
      "MonitorTarget": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "type",
              "abn"
            ],
            "properties": {
              "type": {
                "type": "string",
                "const": "ABN"
              },
              "abn": {
                "type": "string",
                "minLength": 1,
                "maxLength": 32
              }
            },
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "type",
              "acn"
            ],
            "properties": {
              "type": {
                "type": "string",
                "const": "ACN"
              },
              "acn": {
                "type": "string",
                "minLength": 1,
                "maxLength": 32
              }
            },
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "type",
              "vin"
            ],
            "properties": {
              "type": {
                "type": "string",
                "const": "VIN"
              },
              "vin": {
                "type": "string",
                "minLength": 1,
                "maxLength": 64
              }
            },
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "type",
              "address_hash"
            ],
            "properties": {
              "type": {
                "type": "string",
                "const": "address"
              },
              "address_hash": {
                "type": "string",
                "minLength": 1,
                "maxLength": 256
              },
              "gnaf_pid": {
                "type": "string",
                "minLength": 1,
                "maxLength": 128
              },
              "locality": {
                "type": "string",
                "minLength": 1,
                "maxLength": 128
              },
              "state": {
                "type": "string",
                "enum": [
                  "ACT",
                  "NSW",
                  "NT",
                  "QLD",
                  "SA",
                  "TAS",
                  "VIC",
                  "WA"
                ]
              },
              "postcode": {
                "type": "string",
                "minLength": 1,
                "maxLength": 16
              }
            },
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "kind"
            ],
            "properties": {
              "kind": {
                "type": "string",
                "const": "banned_disqualified_person",
                "description": "Verify against ASIC Banned and Disqualified Persons public snapshot."
              },
              "document_number": {
                "type": "string",
                "minLength": 1,
                "description": "ASIC source document number where available. Matches still require independent identity review."
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Person name. Same-name matches require manual review and do not prove identity."
              }
            },
            "anyOf": [
              {
                "required": [
                  "document_number"
                ]
              },
              {
                "required": [
                  "name"
                ]
              }
            ],
            "additionalProperties": false
          }
        ]
      },
      "MonitorNotificationPreference": {
        "type": "object",
        "required": [
          "channel",
          "destination_ref",
          "triggers"
        ],
        "properties": {
          "channel": {
            "type": "string",
            "enum": [
              "connector",
              "email",
              "webhook"
            ]
          },
          "destination_ref": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512
          },
          "triggers": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "any_change",
                "risk_change",
                "check_failed"
              ]
            },
            "minItems": 1,
            "maxItems": 8
          }
        },
        "additionalProperties": false
      },
      "MonitorCreateRequest": {
        "type": "object",
        "required": [
          "tenant_id",
          "account_id",
          "target",
          "interval"
        ],
        "properties": {
          "tenant_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "account_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "oauth_grant_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "target": {
            "$ref": "#/components/schemas/MonitorTarget"
          },
          "interval": {
            "type": "string",
            "enum": [
              "daily",
              "weekly",
              "monthly",
              "before_funding"
            ]
          },
          "next_check_not_before": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0
          },
          "idempotency_key": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256
          },
          "notification_preferences": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MonitorNotificationPreference"
            },
            "maxItems": 16
          }
        },
        "additionalProperties": false
      },
      "MonitorRevokeRequest": {
        "type": "object",
        "required": [
          "tenant_id",
          "account_id",
          "cancellation_reason",
          "cancellation_audit_reason"
        ],
        "properties": {
          "tenant_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "account_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "oauth_grant_id": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "cancellation_reason": {
            "type": "string",
            "enum": [
              "user_revoked",
              "grant_revoked",
              "billing_ended",
              "tenant_deleted",
              "operator_disabled"
            ]
          },
          "cancellation_audit_reason": {
            "type": "string",
            "minLength": 1,
            "maxLength": 512
          }
        },
        "additionalProperties": false
      },
      "MonitorSubscription": {
        "type": "object",
        "required": [
          "subscription_id",
          "scope",
          "owner",
          "target",
          "cadence",
          "status",
          "baseline",
          "notifications",
          "privacy",
          "created_at",
          "updated_at"
        ],
        "properties": {
          "subscription_id": {
            "type": "string"
          },
          "scope": {
            "type": "string",
            "const": "assets:monitor"
          },
          "owner": {
            "$ref": "#/components/schemas/MonitorOwner"
          },
          "target": {
            "$ref": "#/components/schemas/MonitorTarget"
          },
          "cadence": {
            "type": "object",
            "required": [
              "interval",
              "next_check_not_before"
            ],
            "properties": {
              "interval": {
                "type": "string",
                "enum": [
                  "daily",
                  "weekly",
                  "monthly",
                  "before_funding"
                ]
              },
              "next_check_not_before": {
                "type": [
                  "integer",
                  "null"
                ],
                "minimum": 0
              }
            },
            "additionalProperties": false
          },
          "status": {
            "type": "object",
            "required": [
              "state",
              "since"
            ],
            "properties": {
              "state": {
                "type": "string",
                "enum": [
                  "pending_baseline",
                  "active",
                  "paused",
                  "canceled",
                  "failed"
                ]
              },
              "since": {
                "type": "integer",
                "minimum": 0
              },
              "next_check_not_before": {
                "type": "integer",
                "minimum": 0
              },
              "pause_reason": {
                "type": "string",
                "enum": [
                  "user_paused",
                  "billing_hold",
                  "operator_hold"
                ]
              },
              "resume_not_before": {
                "type": "integer",
                "minimum": 0
              },
              "canceled_at": {
                "type": "integer",
                "minimum": 0
              },
              "cancellation": {
                "type": "object",
                "required": [
                  "reason",
                  "audit_reason"
                ],
                "properties": {
                  "reason": {
                    "type": "string",
                    "enum": [
                      "user_revoked",
                      "grant_revoked",
                      "billing_ended",
                      "tenant_deleted",
                      "operator_disabled"
                    ]
                  },
                  "audit_reason": {
                    "type": "string"
                  }
                },
                "additionalProperties": false
              },
              "failure_code": {
                "type": "string"
              },
              "retryable": {
                "type": "boolean"
              },
              "retry_after_ms": {
                "type": "integer",
                "minimum": 0
              }
            },
            "additionalProperties": false
          },
          "baseline": {
            "type": "object",
            "required": [
              "status"
            ],
            "properties": {
              "status": {
                "type": "string",
                "enum": [
                  "pending",
                  "captured",
                  "failed"
                ]
              },
              "requested_at": {
                "type": "integer",
                "minimum": 0
              },
              "snapshot": {
                "type": "object",
                "additionalProperties": true
              },
              "failed_at": {
                "type": "integer",
                "minimum": 0
              },
              "failure_code": {
                "type": "string"
              },
              "retry_after_ms": {
                "type": "integer",
                "minimum": 0
              }
            },
            "additionalProperties": false
          },
          "notifications": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MonitorNotificationPreference"
            }
          },
          "privacy": {
            "type": "object",
            "required": [
              "user_query_stored",
              "address_input_stored",
              "individual_grantor_allowed",
              "stores_free_text_as_hash_only"
            ],
            "properties": {
              "user_query_stored": {
                "type": "boolean",
                "const": false
              },
              "address_input_stored": {
                "type": "boolean",
                "const": false
              },
              "individual_grantor_allowed": {
                "type": "boolean",
                "const": false
              },
              "stores_free_text_as_hash_only": {
                "type": "boolean",
                "const": true
              }
            },
            "additionalProperties": false
          },
          "created_at": {
            "type": "integer",
            "minimum": 0
          },
          "updated_at": {
            "type": "integer",
            "minimum": 0
          }
        },
        "additionalProperties": false
      },
      "MonitorResponse": {
        "type": "object",
        "required": [
          "ok",
          "monitor",
          "audit",
          "evidence"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "const": true
          },
          "monitor": {
            "$ref": "#/components/schemas/MonitorSubscription"
          },
          "audit": {
            "type": "object",
            "required": [
              "monitor_id",
              "correlation_id"
            ],
            "properties": {
              "monitor_id": {
                "type": "string"
              },
              "correlation_id": {
                "type": "string"
              },
              "last_event": {
                "type": "string",
                "enum": [
                  "monitor_created",
                  "monitor_revoked"
                ]
              }
            },
            "additionalProperties": false
          },
          "evidence": {
            "type": "object",
            "required": [
              "baseline_status"
            ],
            "properties": {
              "baseline_status": {
                "type": "string",
                "enum": [
                  "pending",
                  "captured",
                  "failed"
                ]
              },
              "snapshot_id": {
                "type": "string"
              },
              "evidence_pack_id": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "MonitorListResponse": {
        "type": "object",
        "required": [
          "ok",
          "monitors",
          "count"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "const": true
          },
          "monitors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/MonitorResponse"
            }
          },
          "count": {
            "type": "integer",
            "minimum": 0
          }
        },
        "additionalProperties": false
      },
      "MonitorError": {
        "type": "object",
        "required": [
          "ok",
          "code",
          "message"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "const": false
          },
          "code": {
            "type": "string",
            "enum": [
              "invalid_input",
              "invalid_owner",
              "invalid_target",
              "invalid_interval",
              "invalid_cancellation_reason",
              "monitor_not_found",
              "monitor_forbidden",
              "monitor_terminal",
              "unauthorized",
              "monitor_operation_failed"
            ]
          },
          "message": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "PpsrSearchError": {
        "type": "object",
        "required": [
          "ok",
          "code",
          "message"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "const": false,
            "description": "Always false on a non-2xx response"
          },
          "code": {
            "type": "string",
            "enum": [
              "invalid_input",
              "invalid_idempotency_key",
              "not_found",
              "rate_limited",
              "upstream_error",
              "network_error",
              "audit_persist_failed",
              "unauthorized"
            ],
            "description": "Stable error sentinel. Clients should branch on this rather than parsing message."
          },
          "message": {
            "type": "string",
            "description": "Human-readable error message. May change between releases \u2014 do not parse."
          }
        }
      },
      "PpsrSearchRequest": {
        "type": "object",
        "required": [
          "subject_kind"
        ],
        "description": "Future PPSR preview contract only. This shape is retained for compatibility, but preview is not currently customer-accessible: every request fails closed without a price, audit event, certificate write, or register dispatch. Supplying these fields, a credential, an OAuth scope, an account, or a plan does not unlock it.",
        "properties": {
          "subject_kind": {
            "type": "string",
            "enum": [
              "organisation",
              "serial_number"
            ],
            "description": "Future contract discriminator only; no organisation or serial-number PPSR preview currently runs through Hoist."
          },
          "acn": {
            "type": "string",
            "description": "Future contract field for an organisation subject. Supplying an ACN does not trigger or unlock a current PPSR preview.",
            "pattern": "^[0-9 -]{9,11}$",
            "example": "123 456 789"
          },
          "purpose": {
            "type": "string",
            "description": "Future contract metadata only. No current Hoist PPSR preview or search is recorded or dispatched.",
            "maxLength": 256
          },
          "serial": {
            "type": "string",
            "description": "Future contract field for a serial-number subject. Supplying it does not trigger or unlock a current PPSR preview.",
            "minLength": 3,
            "maxLength": 32,
            "example": "VIN1234567890ABCD"
          },
          "type": {
            "type": "string",
            "enum": [
              "vin",
              "motor",
              "aircraft",
              "watercraft"
            ],
            "description": "Future contract discriminator only; no serial-number PPSR preview currently runs through Hoist."
          }
        }
      },
      "PpsrPaidSearchRequest": {
        "description": "Future paid-PPSR request contract only. Paid searches and pricing are not currently available through Hoist; submitting this shape fails closed with no provider call, price, billing action, certificate write, or audit event. Fields, credentials, OAuth scopes, accounts, plans, and confirmations do not unlock it.",
        "oneOf": [
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "subject_kind",
              "acn"
            ],
            "properties": {
              "subject_kind": {
                "type": "string",
                "enum": [
                  "organisation"
                ],
                "description": "Future organisation-search discriminator only; no current PPSR search is dispatched."
              },
              "acn": {
                "type": "string",
                "description": "Future contract field only. Supplying an ACN does not trigger or unlock a current PPSR search.",
                "pattern": "^[0-9 -]{9,11}$",
                "example": "123 456 789"
              },
              "purpose": {
                "type": "string",
                "description": "Future contract metadata only. No current Hoist PPSR search is recorded or dispatched.",
                "maxLength": 256
              }
            }
          },
          {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "subject_kind",
              "serial",
              "type"
            ],
            "properties": {
              "subject_kind": {
                "type": "string",
                "enum": [
                  "serial_number"
                ],
                "description": "Future serial-search discriminator only; no current PPSR search is dispatched."
              },
              "serial": {
                "type": "string",
                "description": "Future contract field only. Supplying a serial number does not trigger or unlock a current PPSR search.",
                "minLength": 3,
                "maxLength": 32,
                "example": "VIN1234567890ABCD"
              },
              "type": {
                "type": "string",
                "enum": [
                  "vin",
                  "motor",
                  "aircraft",
                  "watercraft"
                ],
                "description": "Future contract discriminator only; no serial-number PPSR search currently runs through Hoist."
              }
            }
          }
        ]
      },
      "CoverageUpgradePrompt": {
        "type": "object",
        "description": "Optional free-plan prompt shown only when the caller has no active paid plan and gated sources would improve the verification.",
        "required": [
          "subject_type",
          "summary",
          "signup_url",
          "purchase_plan_url",
          "important_sources",
          "prompt"
        ],
        "properties": {
          "subject_type": {
            "type": "string",
            "enum": [
              "business",
              "asset",
              "person"
            ]
          },
          "summary": {
            "type": "string"
          },
          "signup_url": {
            "type": "string",
            "format": "uri",
            "const": "https://hoistai.com/pricing"
          },
          "purchase_plan_url": {
            "type": "string",
            "format": "uri",
            "const": "https://hoistai.com/pricing"
          },
          "important_sources": {
            "type": "array",
            "description": "Relevant gated sources for this subject type only. Business prompts must not list asset-only sources; asset prompts must not list business/person-only sources.",
            "items": {
              "type": "string"
            }
          },
          "prompt": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "AsicLicenceLookupRequest": {
        "type": "object",
        "required": [
          "licence_number"
        ],
        "additionalProperties": false,
        "properties": {
          "licence_number": {
            "type": "string",
            "description": "Six-digit AFSL/ACL number. AFSL/ACL prefixes and spaces are accepted."
          },
          "licence_type": {
            "type": "string",
            "enum": [
              "afsl",
              "acl"
            ],
            "description": "Optional ASIC licence type filter."
          }
        }
      },
      "AsicLicenceRecord": {
        "type": "object",
        "required": [
          "licence_number",
          "licence_type",
          "status",
          "holder_name",
          "holder_acn",
          "holder_abn",
          "authorised_services",
          "issued_on",
          "expires_on",
          "cancelled_on",
          "source",
          "source_version",
          "snapshot_id",
          "source_effective_date",
          "source_url",
          "source_reference"
        ],
        "properties": {
          "licence_number": {
            "type": "string"
          },
          "licence_type": {
            "type": "string",
            "enum": [
              "afsl",
              "acl"
            ]
          },
          "status": {
            "type": "string",
            "enum": [
              "current",
              "expired",
              "cancelled"
            ]
          },
          "holder_name": {
            "type": "string"
          },
          "holder_acn": {
            "type": [
              "string",
              "null"
            ]
          },
          "holder_abn": {
            "type": [
              "string",
              "null"
            ]
          },
          "authorised_services": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "issued_on": {
            "type": "string",
            "format": "date"
          },
          "expires_on": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "cancelled_on": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "source": {
            "type": "string",
            "enum": [
              "asic-fixture",
              "asic-credit-licensees"
            ]
          },
          "source_version": {
            "type": "string"
          },
          "source_url": {
            "type": "string",
            "format": "uri"
          },
          "source_reference": {
            "type": "string"
          },
          "snapshot_id": {
            "type": "string"
          },
          "source_effective_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          }
        }
      },
      "AsicLicenceLookupResponse": {
        "type": "object",
        "required": [
          "ok",
          "tool",
          "status",
          "licence",
          "source_citation",
          "plain_english_answer",
          "live_search_dispatched",
          "pending_confirmation",
          "confidence",
          "data_mode",
          "snapshot_date"
        ],
        "additionalProperties": false,
        "properties": {
          "ok": {
            "type": "boolean",
            "const": true
          },
          "tool": {
            "type": "string",
            "const": "lookup_licence"
          },
          "status": {
            "type": "string",
            "const": "found"
          },
          "licence": {
            "$ref": "#/components/schemas/AsicLicenceRecord"
          },
          "source_citation": {
            "type": "string"
          },
          "plain_english_answer": {
            "type": "string",
            "description": "Plain-English answer for either AFSL fixture compatibility data or source-backed ACL data from an exact trusted snapshot; neither path is a live/current ASIC extract."
          },
          "live_search_dispatched": {
            "type": "boolean",
            "const": false
          },
          "pending_confirmation": {
            "type": "null"
          },
          "confidence": {
            "type": "number",
            "description": "Fixture results are below full confidence; source-backed ACL results carry higher confidence without becoming live/current-extract data."
          },
          "data_mode": {
            "type": "string",
            "enum": [
              "fixture",
              "source_backed"
            ]
          },
          "snapshot_date": {
            "type": "string",
            "format": "date"
          },
          "snapshot_id": {
            "type": "string",
            "description": "Trusted source snapshot identifier; present for source-backed ACL responses."
          },
          "source_version": {
            "type": "string",
            "description": "Trusted source version; present for source-backed ACL responses."
          },
          "source_effective_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date",
            "description": "Date represented by the trusted source snapshot; present for source-backed ACL responses."
          }
        }
      },
      "AsicLicenceLookupError": {
        "type": "object",
        "required": [
          "ok",
          "code",
          "message"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "const": false
          },
          "code": {
            "type": "string",
            "enum": [
              "invalid_input",
              "licence_not_found",
              "paid_source_unavailable",
              "source_unavailable",
              "unauthorized"
            ]
          },
          "message": {
            "type": "string"
          }
        }
      },
      "VerifyProfessionalRequest": {
        "oneOf": [
          {
            "type": "object",
            "required": [
              "kind"
            ],
            "properties": {
              "kind": {
                "type": "string",
                "const": "liquidator",
                "description": "Verify against ASIC Registered and Official Liquidators."
              },
              "registered_liquidator_number": {
                "type": "string",
                "minLength": 1,
                "description": "ASIC Registered Liquidator number, spaces optional."
              },
              "official_liquidator_number": {
                "type": "string",
                "minLength": 1,
                "description": "ASIC Official Liquidator number, spaces optional."
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Liquidator name. Same-name matches require manual review."
              }
            },
            "anyOf": [
              {
                "required": [
                  "registered_liquidator_number"
                ]
              },
              {
                "required": [
                  "official_liquidator_number"
                ]
              },
              {
                "required": [
                  "name"
                ]
              }
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "kind"
            ],
            "properties": {
              "kind": {
                "type": "string",
                "const": "banned_disqualified_person",
                "description": "Verify against ASIC Banned and Disqualified Persons public snapshot."
              },
              "document_number": {
                "type": "string",
                "minLength": 1,
                "description": "ASIC source document number where available. Matches still require independent identity review."
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Person name. Same-name matches require manual review and do not prove identity."
              }
            },
            "anyOf": [
              {
                "required": [
                  "document_number"
                ]
              },
              {
                "required": [
                  "name"
                ]
              }
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "kind"
            ],
            "properties": {
              "kind": {
                "type": "string",
                "const": "financial_adviser",
                "description": "Verify against the ASIC Financial Advisers Register public snapshot."
              },
              "adviser_number": {
                "type": "string",
                "minLength": 1,
                "description": "ASIC Financial Advisers Register adviser number, leading zeroes preserved."
              },
              "financial_adviser_number": {
                "type": "string",
                "minLength": 1,
                "description": "Alias for adviser_number."
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Adviser name. Same-name matches require manual review."
              }
            },
            "anyOf": [
              {
                "required": [
                  "adviser_number"
                ]
              },
              {
                "required": [
                  "financial_adviser_number"
                ]
              },
              {
                "required": [
                  "name"
                ]
              }
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "kind"
            ],
            "properties": {
              "kind": {
                "type": "string",
                "const": "afs_representative",
                "description": "Verify against ASIC AFS Representatives public snapshot."
              },
              "representative_number": {
                "type": "string",
                "minLength": 1,
                "description": "ASIC AFS representative number, leading zeroes preserved."
              },
              "afs_representative_number": {
                "type": "string",
                "minLength": 1,
                "description": "Alias for representative_number."
              },
              "licence_number": {
                "type": "string",
                "minLength": 1,
                "description": "Linked AFSL number."
              },
              "afs_licence_number": {
                "type": "string",
                "minLength": 1,
                "description": "Alias for licence_number."
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Representative name. Same-name matches require manual review."
              },
              "abn": {
                "type": "string",
                "minLength": 1,
                "description": "Representative ABN, spaces optional."
              },
              "acn": {
                "type": "string",
                "minLength": 1,
                "description": "Representative ACN, spaces optional."
              }
            },
            "anyOf": [
              {
                "required": [
                  "representative_number"
                ]
              },
              {
                "required": [
                  "afs_representative_number"
                ]
              },
              {
                "required": [
                  "licence_number"
                ]
              },
              {
                "required": [
                  "afs_licence_number"
                ]
              },
              {
                "required": [
                  "name"
                ]
              },
              {
                "required": [
                  "abn"
                ]
              },
              {
                "required": [
                  "acn"
                ]
              }
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "kind"
            ],
            "properties": {
              "kind": {
                "type": "string",
                "const": "credit_representative",
                "description": "Verify against ASIC Credit Representatives public snapshot."
              },
              "representative_number": {
                "type": "string",
                "minLength": 1,
                "description": "ASIC credit representative number."
              },
              "credit_representative_number": {
                "type": "string",
                "minLength": 1,
                "description": "Alias for representative_number."
              },
              "licence_number": {
                "type": "string",
                "minLength": 1,
                "description": "Linked credit licence number."
              },
              "credit_licence_number": {
                "type": "string",
                "minLength": 1,
                "description": "Alias for licence_number."
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Representative name. Same-name matches require manual review."
              },
              "abn": {
                "type": "string",
                "minLength": 1,
                "description": "Representative ABN, spaces optional."
              },
              "acn": {
                "type": "string",
                "minLength": 1,
                "description": "Representative ACN, spaces optional."
              },
              "representative_identifier": {
                "type": "string",
                "minLength": 1,
                "description": "Representative ABN/ACN-style identifier from the source row."
              }
            },
            "anyOf": [
              {
                "required": [
                  "representative_number"
                ]
              },
              {
                "required": [
                  "credit_representative_number"
                ]
              },
              {
                "required": [
                  "licence_number"
                ]
              },
              {
                "required": [
                  "credit_licence_number"
                ]
              },
              {
                "required": [
                  "name"
                ]
              },
              {
                "required": [
                  "abn"
                ]
              },
              {
                "required": [
                  "acn"
                ]
              },
              {
                "required": [
                  "representative_identifier"
                ]
              }
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "kind"
            ],
            "properties": {
              "kind": {
                "type": "string",
                "const": "registered_auditor",
                "description": "Verify against ASIC Registered Auditors public snapshot."
              },
              "auditor_number": {
                "type": "string",
                "minLength": 1,
                "description": "ASIC Registered Auditor number."
              },
              "registered_auditor_number": {
                "type": "string",
                "minLength": 1,
                "description": "Alias for auditor_number."
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "Auditor name. Same-name matches require manual review."
              },
              "acn": {
                "type": "string",
                "minLength": 1,
                "description": "Registered auditor firm ACN, spaces optional."
              }
            },
            "anyOf": [
              {
                "required": [
                  "auditor_number"
                ]
              },
              {
                "required": [
                  "registered_auditor_number"
                ]
              },
              {
                "required": [
                  "name"
                ]
              },
              {
                "required": [
                  "acn"
                ]
              }
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "required": [
              "kind"
            ],
            "properties": {
              "kind": {
                "type": "string",
                "const": "smsf_auditor",
                "description": "Verify against ASIC SMSF Auditors public snapshot."
              },
              "auditor_number": {
                "type": "string",
                "minLength": 1,
                "description": "ASIC SMSF Auditor number."
              },
              "smsf_auditor_number": {
                "type": "string",
                "minLength": 1,
                "description": "Alias for auditor_number."
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "SMSF auditor name. Same-name matches require manual review."
              },
              "abn": {
                "type": "string",
                "minLength": 1,
                "description": "SMSF auditor person ABN, spaces optional."
              }
            },
            "anyOf": [
              {
                "required": [
                  "auditor_number"
                ]
              },
              {
                "required": [
                  "smsf_auditor_number"
                ]
              },
              {
                "required": [
                  "name"
                ]
              },
              {
                "required": [
                  "abn"
                ]
              }
            ],
            "additionalProperties": false
          }
        ]
      },
      "VerifyProfessionalAddress": {
        "type": "object",
        "required": [
          "town",
          "state",
          "postcode",
          "country"
        ],
        "properties": {
          "town": {
            "type": [
              "string",
              "null"
            ]
          },
          "state": {
            "type": [
              "string",
              "null"
            ]
          },
          "postcode": {
            "type": [
              "string",
              "null"
            ]
          },
          "country": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": false
      },
      "VerifyProfessionalMatch": {
        "oneOf": [
          {
            "$ref": "#/components/schemas/VerifyProfessionalLiquidatorMatch"
          },
          {
            "$ref": "#/components/schemas/VerifyProfessionalFinancialAdviserMatch"
          },
          {
            "$ref": "#/components/schemas/VerifyProfessionalBannedDisqualifiedPersonMatch"
          },
          {
            "$ref": "#/components/schemas/VerifyProfessionalAfsRepresentativeMatch"
          },
          {
            "$ref": "#/components/schemas/VerifyProfessionalCreditRepresentativeMatch"
          },
          {
            "$ref": "#/components/schemas/VerifyProfessionalRegisteredAuditorMatch"
          },
          {
            "$ref": "#/components/schemas/VerifyProfessionalSmsfAuditorMatch"
          }
        ]
      },
      "VerifyProfessionalEvidence": {
        "type": "object",
        "required": [
          "evidence_id",
          "raw_payload_ref",
          "source_id",
          "source_version",
          "fetched_at",
          "source_effective_date",
          "certificate_sha256",
          "cost_cents",
          "result_summary"
        ],
        "properties": {
          "evidence_id": {
            "type": "string"
          },
          "raw_payload_ref": {
            "type": "string"
          },
          "source_id": {
            "type": "string",
            "enum": [
              "asic-liquidators",
              "asic-financial-advisers",
              "asic-banned-disqualified",
              "asic-afs-licensees",
              "asic-credit-licensees",
              "asic-auditors"
            ]
          },
          "source_version": {
            "type": "string"
          },
          "fetched_at": {
            "type": "integer"
          },
          "source_effective_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "certificate_sha256": {
            "type": "string",
            "pattern": "^[0-9a-f]{64}$"
          },
          "cost_cents": {
            "type": "integer",
            "minimum": 0
          },
          "result_summary": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "VerifyProfessionalResponse": {
        "type": "object",
        "required": [
          "ok",
          "status",
          "source_id",
          "source_version",
          "source_effective_date",
          "matches",
          "evidence",
          "summary",
          "manual_review_required",
          "answer_card"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "const": true
          },
          "status": {
            "type": "string",
            "enum": [
              "source_backed_match",
              "not_found"
            ]
          },
          "source_id": {
            "type": "string",
            "enum": [
              "asic-liquidators",
              "asic-financial-advisers",
              "asic-banned-disqualified",
              "asic-afs-licensees",
              "asic-credit-licensees",
              "asic-auditors"
            ]
          },
          "source_version": {
            "type": "string"
          },
          "source_effective_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "matches": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VerifyProfessionalMatch"
            }
          },
          "evidence": {
            "$ref": "#/components/schemas/VerifyProfessionalEvidence"
          },
          "summary": {
            "type": "string"
          },
          "manual_review_required": {
            "type": "boolean"
          },
          "answer_card": {
            "type": "object",
            "description": "Human-facing answer shape for LLM clients. Start with summary_result, then render detail_table. Includes only the applicable professional/person source checked in this response.",
            "required": [
              "summary_result",
              "plain_english_answer",
              "answer_instructions",
              "detail_table",
              "caveats",
              "next_actions",
              "evidence"
            ],
            "properties": {
              "summary_result": {
                "type": "string"
              },
              "plain_english_answer": {
                "type": "string"
              },
              "answer_instructions": {
                "type": "string"
              },
              "detail_table": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "data_source",
                    "source_id",
                    "check",
                    "status",
                    "result",
                    "details",
                    "source_effective_date"
                  ],
                  "properties": {
                    "data_source": {
                      "type": "string"
                    },
                    "source_id": {
                      "type": "string"
                    },
                    "check": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "clear",
                        "review",
                        "not_clear"
                      ]
                    },
                    "result": {
                      "type": "string"
                    },
                    "details": {
                      "type": "string"
                    },
                    "source_effective_date": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "evidence_sha256": {
                      "type": "string",
                      "pattern": "^[0-9a-f]{64}$"
                    }
                  }
                }
              },
              "caveats": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "next_actions": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "evidence": {
                "type": "object",
                "required": [
                  "source_id",
                  "source_version",
                  "source_effective_date"
                ],
                "properties": {
                  "source_id": {
                    "type": "string"
                  },
                  "source_version": {
                    "type": "string"
                  },
                  "source_effective_date": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "certificate_sha256": {
                    "type": "string",
                    "pattern": "^[0-9a-f]{64}$"
                  }
                },
                "additionalProperties": false
              },
              "coverage_upgrade": {
                "$ref": "#/components/schemas/CoverageUpgradePrompt"
              }
            },
            "additionalProperties": false
          }
        },
        "additionalProperties": false
      },
      "VerifyProfessionalError": {
        "type": "object",
        "required": [
          "ok",
          "code",
          "message"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "const": false
          },
          "code": {
            "type": "string",
            "enum": [
              "invalid_input",
              "source_unavailable",
              "unauthorized"
            ]
          },
          "message": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "VerifyProfessionalFinancialAdviserAddress": {
        "type": "object",
        "required": [
          "locality",
          "state",
          "postcode",
          "country"
        ],
        "properties": {
          "locality": {
            "type": [
              "string",
              "null"
            ]
          },
          "state": {
            "type": [
              "string",
              "null"
            ]
          },
          "postcode": {
            "type": [
              "string",
              "null"
            ]
          },
          "country": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": false
      },
      "VerifyProfessionalFinancialAdviserLicence": {
        "type": "object",
        "required": [
          "name",
          "number",
          "abn",
          "controlled_by"
        ],
        "properties": {
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "number": {
            "type": [
              "string",
              "null"
            ]
          },
          "abn": {
            "type": [
              "string",
              "null"
            ]
          },
          "controlled_by": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "VerifyProfessionalFinancialAdviserRepresentative": {
        "type": "object",
        "required": [
          "name",
          "number",
          "abn"
        ],
        "properties": {
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "number": {
            "type": [
              "string",
              "null"
            ]
          },
          "abn": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": false
      },
      "VerifyProfessionalFinancialAdviserDisciplinaryAction": {
        "type": "object",
        "required": [
          "start_date",
          "end_date",
          "type",
          "description"
        ],
        "properties": {
          "start_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "end_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "type": {
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": false
      },
      "VerifyProfessionalLiquidatorMatch": {
        "type": "object",
        "required": [
          "source_id",
          "register_name",
          "liquidator_name",
          "registered_liquidator_number",
          "official_liquidator_number",
          "registered_liquidator_start_date",
          "official_liquidator_start_date",
          "status",
          "suspension_date",
          "principal_business_address",
          "firm_membership",
          "record_key"
        ],
        "properties": {
          "source_id": {
            "type": "string",
            "const": "asic-liquidators"
          },
          "register_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "liquidator_name": {
            "type": "string"
          },
          "registered_liquidator_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "official_liquidator_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "registered_liquidator_start_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "official_liquidator_start_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "type": [
              "string",
              "null"
            ]
          },
          "suspension_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "principal_business_address": {
            "$ref": "#/components/schemas/VerifyProfessionalAddress"
          },
          "firm_membership": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "record_key": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "VerifyProfessionalFinancialAdviserMatch": {
        "type": "object",
        "required": [
          "source_id",
          "register_name",
          "adviser_name",
          "adviser_number",
          "adviser_role",
          "adviser_sub_type",
          "adviser_role_status",
          "adviser_abn",
          "first_provided_advice_year",
          "licence",
          "adviser_start_date",
          "adviser_end_date",
          "overall_registration_status",
          "registration_status_under_afsl",
          "registration_start_date_under_afsl",
          "registration_end_date_under_afsl",
          "cpd_failure_year",
          "principal_business_address",
          "appointing_representative",
          "disciplinary_action",
          "product_authorisations",
          "able_to_provide_tfas",
          "qualifications_and_training",
          "memberships",
          "further_restrictions",
          "record_key"
        ],
        "properties": {
          "source_id": {
            "type": "string",
            "const": "asic-financial-advisers"
          },
          "register_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "adviser_name": {
            "type": "string"
          },
          "adviser_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "adviser_role": {
            "type": [
              "string",
              "null"
            ]
          },
          "adviser_sub_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "adviser_role_status": {
            "type": [
              "string",
              "null"
            ]
          },
          "adviser_abn": {
            "type": [
              "string",
              "null"
            ]
          },
          "first_provided_advice_year": {
            "type": [
              "string",
              "null"
            ]
          },
          "licence": {
            "$ref": "#/components/schemas/VerifyProfessionalFinancialAdviserLicence"
          },
          "adviser_start_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "adviser_end_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "overall_registration_status": {
            "type": [
              "string",
              "null"
            ]
          },
          "registration_status_under_afsl": {
            "type": [
              "string",
              "null"
            ]
          },
          "registration_start_date_under_afsl": {
            "type": [
              "string",
              "null"
            ]
          },
          "registration_end_date_under_afsl": {
            "type": [
              "string",
              "null"
            ]
          },
          "cpd_failure_year": {
            "type": [
              "string",
              "null"
            ]
          },
          "principal_business_address": {
            "$ref": "#/components/schemas/VerifyProfessionalFinancialAdviserAddress"
          },
          "appointing_representative": {
            "$ref": "#/components/schemas/VerifyProfessionalFinancialAdviserRepresentative"
          },
          "disciplinary_action": {
            "$ref": "#/components/schemas/VerifyProfessionalFinancialAdviserDisciplinaryAction"
          },
          "product_authorisations": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "able_to_provide_tfas": {
            "type": [
              "string",
              "null"
            ]
          },
          "qualifications_and_training": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "memberships": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "further_restrictions": {
            "type": [
              "string",
              "null"
            ]
          },
          "record_key": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "VerifyProfessionalBannedDisqualifiedPersonMatch": {
        "type": "object",
        "required": [
          "source_id",
          "register_name",
          "person_name",
          "banning_type",
          "document_number",
          "start_date",
          "end_date",
          "address",
          "comments",
          "record_key"
        ],
        "properties": {
          "source_id": {
            "type": "string",
            "const": "asic-banned-disqualified"
          },
          "register_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "person_name": {
            "type": "string"
          },
          "banning_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "document_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "start_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "end_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "address": {
            "$ref": "#/components/schemas/VerifyProfessionalFinancialAdviserAddress"
          },
          "comments": {
            "type": [
              "string",
              "null"
            ]
          },
          "record_key": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "VerifyProfessionalAfsRepresentativeMatch": {
        "type": "object",
        "required": [
          "source_id",
          "register_name",
          "representative_number",
          "licence_number",
          "representative_name",
          "representative_abn",
          "representative_acn",
          "other_role",
          "start_date",
          "status",
          "end_date",
          "principal_business_address",
          "cross_endorse",
          "may_appoint",
          "appointed_by",
          "authorisations",
          "same_auth",
          "related_business_names",
          "record_key"
        ],
        "properties": {
          "source_id": {
            "type": "string",
            "const": "asic-afs-licensees"
          },
          "register_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "representative_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "licence_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "representative_name": {
            "type": "string"
          },
          "representative_abn": {
            "type": [
              "string",
              "null"
            ]
          },
          "representative_acn": {
            "type": [
              "string",
              "null"
            ]
          },
          "other_role": {
            "type": [
              "string",
              "null"
            ]
          },
          "start_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "type": [
              "string",
              "null"
            ]
          },
          "end_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "principal_business_address": {
            "$ref": "#/components/schemas/VerifyProfessionalFinancialAdviserAddress"
          },
          "cross_endorse": {
            "type": [
              "string",
              "null"
            ]
          },
          "may_appoint": {
            "type": [
              "string",
              "null"
            ]
          },
          "appointed_by": {
            "type": [
              "string",
              "null"
            ]
          },
          "authorisations": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "same_auth": {
            "type": [
              "string",
              "null"
            ]
          },
          "related_business_names": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "record_key": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "VerifyProfessionalCreditRepresentativeAddress": {
        "type": "object",
        "required": [
          "locality",
          "state",
          "postcode"
        ],
        "properties": {
          "locality": {
            "type": [
              "string",
              "null"
            ]
          },
          "state": {
            "type": [
              "string",
              "null"
            ]
          },
          "postcode": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": false
      },
      "VerifyProfessionalCreditRepresentativeMatch": {
        "type": "object",
        "required": [
          "source_id",
          "register_name",
          "representative_number",
          "licence_number",
          "representative_name",
          "representative_identifier",
          "start_date",
          "end_date",
          "principal_business_address",
          "edrs",
          "authorisations",
          "cross_endorse",
          "record_key"
        ],
        "properties": {
          "source_id": {
            "type": "string",
            "const": "asic-credit-licensees"
          },
          "register_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "representative_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "licence_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "representative_name": {
            "type": "string"
          },
          "representative_identifier": {
            "type": [
              "string",
              "null"
            ]
          },
          "start_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "end_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "principal_business_address": {
            "$ref": "#/components/schemas/VerifyProfessionalCreditRepresentativeAddress"
          },
          "edrs": {
            "type": [
              "string",
              "null"
            ]
          },
          "authorisations": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "cross_endorse": {
            "type": [
              "string",
              "null"
            ]
          },
          "record_key": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "VerifyProfessionalRegisteredAuditorAddress": {
        "type": "object",
        "required": [
          "locality",
          "state",
          "postcode",
          "country"
        ],
        "properties": {
          "locality": {
            "type": [
              "string",
              "null"
            ]
          },
          "state": {
            "type": [
              "string",
              "null"
            ]
          },
          "postcode": {
            "type": [
              "string",
              "null"
            ]
          },
          "country": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": false
      },
      "VerifyProfessionalSmsfAuditorAddress": {
        "type": "object",
        "required": [
          "locality",
          "state",
          "postcode"
        ],
        "properties": {
          "locality": {
            "type": [
              "string",
              "null"
            ]
          },
          "state": {
            "type": [
              "string",
              "null"
            ]
          },
          "postcode": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": false
      },
      "VerifyProfessionalRegisteredAuditorMatch": {
        "type": "object",
        "required": [
          "source_id",
          "register_name",
          "auditor_number",
          "auditor_name",
          "auditor_acn",
          "start_date",
          "status",
          "suspension_date",
          "principal_business_address",
          "record_key"
        ],
        "properties": {
          "source_id": {
            "type": "string",
            "const": "asic-auditors"
          },
          "register_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "auditor_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "auditor_name": {
            "type": "string"
          },
          "auditor_acn": {
            "type": [
              "string",
              "null"
            ]
          },
          "start_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "type": [
              "string",
              "null"
            ]
          },
          "suspension_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "principal_business_address": {
            "$ref": "#/components/schemas/VerifyProfessionalRegisteredAuditorAddress"
          },
          "record_key": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "VerifyProfessionalSmsfAuditorCondition": {
        "type": "object",
        "required": [
          "attribute_type",
          "capacity",
          "condition_number",
          "capacity_firm_name",
          "capacity_start_date",
          "condition",
          "condition_detail",
          "condition_start_date"
        ],
        "properties": {
          "attribute_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "capacity": {
            "type": [
              "string",
              "null"
            ]
          },
          "condition_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "capacity_firm_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "capacity_start_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "condition": {
            "type": [
              "string",
              "null"
            ]
          },
          "condition_detail": {
            "type": [
              "string",
              "null"
            ]
          },
          "condition_start_date": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": false
      },
      "VerifyProfessionalSmsfAuditorMatch": {
        "type": "object",
        "required": [
          "source_id",
          "register_name",
          "auditor_number",
          "auditor_name",
          "status",
          "person_abn",
          "registration_date",
          "suspension_start_date",
          "suspension_end_date",
          "principal_business_address",
          "conditions",
          "record_key"
        ],
        "properties": {
          "source_id": {
            "type": "string",
            "const": "asic-auditors"
          },
          "register_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "auditor_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "auditor_name": {
            "type": "string"
          },
          "status": {
            "type": [
              "string",
              "null"
            ]
          },
          "person_abn": {
            "type": [
              "string",
              "null"
            ]
          },
          "registration_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "suspension_start_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "suspension_end_date": {
            "type": [
              "string",
              "null"
            ]
          },
          "principal_business_address": {
            "$ref": "#/components/schemas/VerifyProfessionalSmsfAuditorAddress"
          },
          "conditions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VerifyProfessionalSmsfAuditorCondition"
            }
          },
          "record_key": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "EvidencePackMachinePack": {
        "type": "object",
        "description": "Machine-readable fixture contract. It contains no canonical signed EvidencePack, evidence items, findings, source payloads, or source snapshots because no source was queried.",
        "required": [
          "format",
          "contract_version",
          "data_mode",
          "assembled_at",
          "source_freshness",
          "partial",
          "source_fetch_count",
          "signing_status",
          "pack",
          "evidence_item_count",
          "finding_count"
        ],
        "properties": {
          "format": {
            "type": "string",
            "const": "fixture_evidence_pack_v1"
          },
          "contract_version": {
            "type": "string",
            "const": "fixture-machine-truth-v2"
          },
          "data_mode": {
            "type": "string",
            "const": "synthetic_fixture_unsearched"
          },
          "assembled_at": {
            "type": "string",
            "format": "date-time",
            "description": "Fixture assembly time; never source freshness."
          },
          "source_freshness": {
            "type": "null"
          },
          "partial": {
            "type": "boolean",
            "const": true
          },
          "source_fetch_count": {
            "type": "integer",
            "const": 0
          },
          "signing_status": {
            "type": "string",
            "const": "not_applicable"
          },
          "pack": {
            "type": "null",
            "description": "Always null: a zero-source fixture must not be minted as a signed evidence object."
          },
          "evidence_item_count": {
            "type": "integer",
            "const": 0
          },
          "finding_count": {
            "type": "integer",
            "const": 0
          }
        },
        "additionalProperties": false
      },
      "EvidencePackHumanPack": {
        "type": "object",
        "required": [
          "format",
          "contract_version",
          "report_title",
          "content_type",
          "page_count",
          "sha256",
          "download_url",
          "generated_at"
        ],
        "properties": {
          "format": {
            "type": "string",
            "const": "prelaunch_fixture_evidence_pack_pdf_v1"
          },
          "contract_version": {
            "type": "string",
            "const": "fixture-machine-truth-v2"
          },
          "report_title": {
            "type": "string",
            "const": "Prelaunch Fixture Evidence Pack"
          },
          "content_type": {
            "type": "string",
            "const": "application/pdf"
          },
          "page_count": {
            "type": "integer",
            "minimum": 1
          },
          "sha256": {
            "type": "string",
            "pattern": "^[a-f0-9]{64}$"
          },
          "download_url": {
            "type": "string"
          },
          "generated_at": {
            "type": "string",
            "format": "date-time",
            "description": "Legacy assembly-time field; not source freshness."
          }
        },
        "additionalProperties": false
      },
      "EvidencePackRiskCategorySummary": {
        "type": "object",
        "required": [
          "category",
          "severity",
          "flag_count",
          "summary"
        ],
        "properties": {
          "category": {
            "$ref": "#/components/schemas/EvidencePackRiskFlag/properties/category"
          },
          "severity": {
            "$ref": "#/components/schemas/EvidencePackRiskFlag/properties/severity"
          },
          "flag_count": {
            "type": "integer",
            "minimum": 0
          },
          "summary": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "EvidencePackRiskExplanation": {
        "type": "object",
        "required": [
          "summary",
          "category_summaries",
          "scoring_model"
        ],
        "properties": {
          "summary": {
            "type": "string",
            "description": "Source-cited risk interpretation summary. Avoids legal/commercial clearance wording."
          },
          "category_summaries": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EvidencePackRiskCategorySummary"
            }
          },
          "scoring_model": {
            "type": "string",
            "enum": [
              "max_severity_weighted_by_confidence_v1"
            ]
          }
        },
        "additionalProperties": false
      },
      "VerificationPolicyRequirements": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "gst_required": {
            "type": "boolean"
          },
          "licence_required": {
            "type": "boolean"
          },
          "charity_status_required": {
            "type": "boolean"
          }
        }
      },
      "VerificationPolicyEvidenceSubject": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "abn": {
            "type": "string",
            "nullable": true
          },
          "acn": {
            "type": "string",
            "nullable": true
          },
          "vin": {
            "type": "string",
            "nullable": true
          },
          "amount_cents": {
            "type": "integer",
            "nullable": true,
            "minimum": 0
          }
        }
      },
      "VerificationPolicyEvidenceSourceCheck": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "source",
          "verdict"
        ],
        "properties": {
          "source": {
            "type": "string"
          },
          "verdict": {
            "type": "string"
          },
          "freshness": {
            "type": "string",
            "nullable": true
          },
          "source_snapshot_id": {
            "type": "string",
            "nullable": true
          },
          "raw_artifact_ref": {
            "type": "string",
            "nullable": true
          }
        }
      },
      "VerificationPolicyEvidence": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "pack_id": {
            "type": "string",
            "nullable": true
          },
          "subject": {
            "$ref": "#/components/schemas/VerificationPolicyEvidenceSubject"
          },
          "source_checks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VerificationPolicyEvidenceSourceCheck"
            }
          },
          "risk_flags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/EvidencePackRiskFlag"
            }
          },
          "risk_score": {
            "type": "integer",
            "nullable": true,
            "minimum": 0,
            "maximum": 100
          }
        }
      },
      "VerificationPolicyEvaluateRequest": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "evidence"
        ],
        "properties": {
          "policy_template": {
            "type": "string",
            "enum": [
              "asset_finance_under_50k_v1",
              "supplier_onboarding_v1"
            ],
            "default": "asset_finance_under_50k_v1"
          },
          "organization_id": {
            "type": "string",
            "nullable": true
          },
          "policy_id": {
            "type": "string",
            "nullable": true
          },
          "policy_version": {
            "type": "string",
            "nullable": true
          },
          "requirements": {
            "$ref": "#/components/schemas/VerificationPolicyRequirements"
          },
          "evidence": {
            "$ref": "#/components/schemas/VerificationPolicyEvidence"
          }
        }
      },
      "VerificationPolicyRuleResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "rule_id",
          "status",
          "severity",
          "message",
          "source_refs",
          "evidence_refs",
          "recommended_next_action"
        ],
        "properties": {
          "rule_id": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "satisfied",
              "failed",
              "needs_review",
              "missing_evidence"
            ]
          },
          "severity": {
            "type": "string",
            "enum": [
              "info",
              "review",
              "blocking"
            ]
          },
          "message": {
            "type": "string"
          },
          "source_refs": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "evidence_refs": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "recommended_next_action": {
            "type": "string"
          }
        }
      },
      "VerificationPolicyEnvelope": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "ok",
          "schema_version",
          "policy",
          "outcome",
          "summary",
          "rule_results",
          "missing_evidence",
          "review_items",
          "failure_reasons",
          "recommended_next_action"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "enum": [
              true
            ]
          },
          "schema_version": {
            "type": "string",
            "enum": [
              "1.0.0"
            ]
          },
          "policy": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "template_id",
              "policy_version",
              "organization_id",
              "policy_id"
            ],
            "properties": {
              "template_id": {
                "type": "string",
                "enum": [
                  "asset_finance_under_50k_v1",
                  "supplier_onboarding_v1"
                ]
              },
              "policy_version": {
                "type": "string"
              },
              "organization_id": {
                "type": "string",
                "nullable": true
              },
              "policy_id": {
                "type": "string",
                "nullable": true
              }
            }
          },
          "outcome": {
            "type": "string",
            "enum": [
              "pass",
              "fail",
              "needs_review",
              "missing_evidence"
            ]
          },
          "summary": {
            "type": "string"
          },
          "rule_results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VerificationPolicyRuleResult"
            }
          },
          "missing_evidence": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VerificationPolicyRuleResult"
            }
          },
          "review_items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VerificationPolicyRuleResult"
            }
          },
          "failure_reasons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VerificationPolicyRuleResult"
            }
          },
          "recommended_next_action": {
            "type": "string"
          }
        }
      },
      "VerificationPolicyError": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "ok",
          "code",
          "message"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "enum": [
              false
            ]
          },
          "code": {
            "type": "string",
            "enum": [
              "invalid_input",
              "unknown_policy_template"
            ]
          },
          "message": {
            "type": "string"
          }
        }
      },
      "DecisionMemoryOutcome": {
        "type": "string",
        "enum": [
          "accepted",
          "rejected",
          "needs_review",
          "false_positive",
          "resolved_manually",
          "escalated",
          "approved_despite_risk"
        ]
      },
      "DecisionMemorySubjectType": {
        "type": "string",
        "enum": [
          "evidence_pack",
          "risk_flag",
          "source_assertion",
          "source_match",
          "policy_evaluation"
        ]
      },
      "DecisionMemoryEvent": {
        "type": "object",
        "required": [
          "decision_id",
          "org_id",
          "reviewer_user_id",
          "outcome",
          "subject_type",
          "evidence_pack_id",
          "policy_id",
          "policy_version",
          "policy_evaluation_id",
          "risk_flag_code",
          "risk_flag_ref",
          "source_assertion_id",
          "source_match_ref",
          "reviewer_action_refs",
          "reason_codes",
          "notes",
          "metadata",
          "schema_version",
          "created_at"
        ],
        "properties": {
          "decision_id": {
            "type": "string"
          },
          "org_id": {
            "type": "string"
          },
          "reviewer_user_id": {
            "type": "string",
            "description": "Server-trusted reviewer id from the authenticated bearer context."
          },
          "outcome": {
            "$ref": "#/components/schemas/DecisionMemoryOutcome"
          },
          "subject_type": {
            "$ref": "#/components/schemas/DecisionMemorySubjectType"
          },
          "evidence_pack_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "policy_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "policy_version": {
            "type": [
              "string",
              "null"
            ]
          },
          "policy_evaluation_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "risk_flag_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "risk_flag_ref": {
            "type": [
              "string",
              "null"
            ]
          },
          "source_assertion_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "source_match_ref": {
            "type": [
              "string",
              "null"
            ]
          },
          "reviewer_action_refs": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "reason_codes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "notes": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 2000
          },
          "metadata": {
            "type": "object",
            "additionalProperties": true
          },
          "schema_version": {
            "type": "string",
            "const": "1.0.0"
          },
          "created_at": {
            "type": "integer",
            "description": "Unix epoch milliseconds."
          }
        },
        "additionalProperties": false
      },
      "DecisionMemoryRecordRequest": {
        "type": "object",
        "required": [
          "org_id",
          "outcome",
          "subject_type"
        ],
        "properties": {
          "decision_id": {
            "type": "string"
          },
          "org_id": {
            "type": "string"
          },
          "outcome": {
            "$ref": "#/components/schemas/DecisionMemoryOutcome"
          },
          "subject_type": {
            "$ref": "#/components/schemas/DecisionMemorySubjectType"
          },
          "evidence_pack_id": {
            "type": "string"
          },
          "policy_id": {
            "type": "string"
          },
          "policy_version": {
            "type": "string"
          },
          "policy_evaluation_id": {
            "type": "string"
          },
          "risk_flag_code": {
            "type": "string"
          },
          "risk_flag_ref": {
            "type": "string"
          },
          "source_assertion_id": {
            "type": "string"
          },
          "source_match_ref": {
            "type": "string"
          },
          "reviewer_action_refs": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "reason_codes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "notes": {
            "type": "string",
            "maxLength": 2000
          },
          "metadata": {
            "type": "object",
            "additionalProperties": true
          }
        },
        "additionalProperties": false,
        "description": "Record append-only reviewer feedback. reviewer_user_id is resolved from bearer authentication and is not accepted in the request body."
      },
      "DecisionMemoryRecordEnvelope": {
        "type": "object",
        "required": [
          "ok",
          "event"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "const": true
          },
          "event": {
            "$ref": "#/components/schemas/DecisionMemoryEvent"
          }
        }
      },
      "DecisionMemoryListEnvelope": {
        "type": "object",
        "required": [
          "ok",
          "events",
          "count"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "const": true
          },
          "events": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DecisionMemoryEvent"
            }
          },
          "count": {
            "type": "integer"
          }
        }
      },
      "DecisionMemoryError": {
        "type": "object",
        "required": [
          "ok",
          "code",
          "message"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "const": false
          },
          "code": {
            "type": "string",
            "enum": [
              "invalid_input",
              "unauthorized",
              "duplicate_decision",
              "decision_memory_operation_failed"
            ]
          },
          "message": {
            "type": "string"
          }
        }
      },
      "DueDiligenceReceiptSearchSummary": {
        "type": "object",
        "description": "Search-level summary for available business-source receipts and compatible historical/future records. No current Hoist PPSR success, price, certificate, clearance, or completed PPSR receipt exists.",
        "required": [
          "search_id",
          "register",
          "lifecycle_status",
          "latest_event_at",
          "event_count",
          "certificate",
          "human_summary",
          "next_action"
        ],
        "properties": {
          "search_id": {
            "type": "string"
          },
          "register": {
            "type": "string"
          },
          "lifecycle_status": {
            "type": "string",
            "enum": [
              "initiated",
              "completed",
              "failed"
            ]
          },
          "subject_kind": {
            "type": "string"
          },
          "initiated_at": {
            "type": "number"
          },
          "completed_at": {
            "type": "number"
          },
          "failed_at": {
            "type": "number"
          },
          "latest_event_at": {
            "type": "number"
          },
          "event_count": {
            "type": "integer",
            "minimum": 1
          },
          "cost_cents": {
            "type": "number"
          },
          "cost_aud": {
            "type": "string"
          },
          "certificate": {
            "type": "object",
            "required": [
              "status",
              "note"
            ],
            "properties": {
              "status": {
                "type": "string",
                "enum": [
                  "available",
                  "not_recorded"
                ]
              },
              "sha256": {
                "type": "string",
                "pattern": "^[0-9a-f]{64}$"
              },
              "note": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "human_summary": {
            "type": "string"
          },
          "next_action": {
            "type": "string"
          }
        },
        "additionalProperties": false
      },
      "DueDiligenceReceiptAnswerCard": {
        "type": "object",
        "description": "Human-facing receipt summary for available business-source audit records. It must not imply a current Hoist PPSR result or completed PPSR receipt.",
        "required": [
          "headline",
          "summary_result",
          "plain_english_answer",
          "answer_instructions",
          "detail_table",
          "how_to_read",
          "record_count",
          "search_count",
          "partial",
          "next_actions"
        ],
        "properties": {
          "headline": {
            "type": "string"
          },
          "summary_result": {
            "type": "string"
          },
          "plain_english_answer": {
            "type": "string"
          },
          "answer_instructions": {
            "type": "string"
          },
          "detail_table": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "label",
                "value"
              ],
              "properties": {
                "label": {
                  "type": "string"
                },
                "value": {
                  "type": "string"
                }
              },
              "additionalProperties": false
            }
          },
          "how_to_read": {
            "type": "string"
          },
          "record_count": {
            "type": "integer",
            "minimum": 0
          },
          "search_count": {
            "type": "integer",
            "minimum": 0
          },
          "search_id_filter": {
            "type": "string"
          },
          "partial": {
            "type": "boolean"
          },
          "next_actions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      },
      "DueDiligenceReceiptEntityFilter": {
        "type": "object",
        "required": [
          "requested",
          "status",
          "requested_fields",
          "matched_search_count",
          "omitted_search_count",
          "non_matching_comparable_search_count",
          "not_provable_search_count",
          "omitted_event_count",
          "note"
        ],
        "properties": {
          "requested": {
            "type": "boolean"
          },
          "status": {
            "type": "string",
            "enum": [
              "not_requested",
              "applied"
            ]
          },
          "requested_fields": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "business_name",
                "abn",
                "acn"
              ]
            }
          },
          "matched_search_count": {
            "type": "integer",
            "minimum": 0
          },
          "omitted_search_count": {
            "type": "integer",
            "minimum": 0
          },
          "non_matching_comparable_search_count": {
            "type": "integer",
            "minimum": 0
          },
          "not_provable_search_count": {
            "type": "integer",
            "minimum": 0
          },
          "omitted_event_count": {
            "type": "integer",
            "minimum": 0
          },
          "note": {
            "type": "string",
            "description": "Plain-English explanation of how the privacy-preserving entity filter was applied and whether historic rows could not be proven because no comparable derived fingerprint was recorded."
          }
        },
        "additionalProperties": false
      },
      "FairUseRateLimitedError": {
        "type": "object",
        "required": [
          "ok",
          "code",
          "message",
          "retry_after_seconds"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "const": false
          },
          "code": {
            "type": "string",
            "const": "rate_limited"
          },
          "message": {
            "type": "string"
          },
          "retry_after_seconds": {
            "type": "integer",
            "minimum": 1
          }
        },
        "additionalProperties": false
      },
      "FairUseUnavailableError": {
        "type": "object",
        "required": [
          "ok",
          "code",
          "message"
        ],
        "properties": {
          "ok": {
            "type": "boolean",
            "const": false
          },
          "code": {
            "type": "string",
            "const": "rate_limit_unavailable"
          },
          "message": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "API-Key"
      },
      "oauth2": {
        "type": "oauth2",
        "x-issuer": "https://mcp.hoistai.com",
        "x-authorization-server-metadata-url": "https://mcp.hoistai.com/.well-known/oauth-authorization-server",
        "x-protected-resource-metadata-url": "https://mcp.hoistai.com/.well-known/oauth-protected-resource",
        "x-resource": "https://mcp.hoistai.com/mcp",
        "x-registration-url": "https://mcp.hoistai.com/oauth/register",
        "x-revocation-url": "https://mcp.hoistai.com/oauth/revoke",
        "flows": {
          "authorizationCode": {
            "authorizationUrl": "https://mcp.hoistai.com/oauth/authorize",
            "tokenUrl": "https://mcp.hoistai.com/oauth/token",
            "scopes": {
              "abn:lookup": "Run ABN and business-name lookups",
              "gst:status": "Read GST registration status",
              "assets:receipts": "Read Due Diligence Records and evidence receipts",
              "exports:write": "Create Evidence Pack exports and audit artifacts",
              "opportunities:read": "Read official-source tenders, grants, forecasts, awards, and incumbent context",
              "opportunities:write": "Create and mutate opportunity pipelines, pursuits, notes, and outcomes",
              "mcp:account.receipts": "Read session-scoped MCP account receipts"
            }
          }
        }
      }
    },
    "headers": {
      "FairUseRetryAfter": {
        "description": "Integer seconds before retrying a rate-limited request.",
        "schema": {
          "type": "integer",
          "minimum": 1
        }
      },
      "FairUseUnavailableRetryAfter": {
        "description": "Fixed retry delay when fair-use state is unavailable.",
        "schema": {
          "type": "integer",
          "const": 30
        }
      },
      "FairUseCacheControlNoStore": {
        "description": "Fair-use responses are not cacheable.",
        "schema": {
          "type": "string",
          "const": "no-store"
        }
      }
    },
    "responses": {
      "FairUseRateLimited": {
        "description": "Account-wide fair-use limit reached across the caller's API keys and OAuth grants.",
        "headers": {
          "Retry-After": {
            "description": "Integer seconds before retrying.",
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          "Cache-Control": {
            "description": "Rate-limit responses are not cacheable.",
            "schema": {
              "type": "string",
              "const": "no-store"
            }
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/FairUseRateLimitedError"
            }
          }
        }
      },
      "FairUseUnavailable": {
        "description": "The account-wide fair-use state could not be verified; request denied conservatively.",
        "headers": {
          "Retry-After": {
            "description": "Fixed retry delay.",
            "schema": {
              "type": "integer",
              "const": 30
            }
          },
          "Cache-Control": {
            "description": "Unavailable responses are not cacheable.",
            "schema": {
              "type": "string",
              "const": "no-store"
            }
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/FairUseUnavailableError"
            }
          }
        }
      }
    }
  },
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "paths": {
    "/_health": {
      "get": {
        "operationId": "getHealth",
        "summary": "Liveness probe",
        "description": "Returns a public health envelope confirming API reachability. No authentication required. This is a setup signal only; it is not a claim that production source endpoints or paid operations are open.",
        "security": [],
        "responses": {
          "200": {
            "description": "API is healthy",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "ok",
                    "version",
                    "time"
                  ],
                  "properties": {
                    "ok": {
                      "type": "boolean",
                      "const": true,
                      "description": "Always true on a 200 response"
                    },
                    "version": {
                      "type": "string",
                      "description": "Worker package version (semver)",
                      "example": "0.0.700"
                    },
                    "time": {
                      "type": "string",
                      "format": "date-time",
                      "description": "ISO 8601 timestamp of the probe",
                      "example": "2026-05-20T12:00:00.000Z"
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/ppsr/preview": {
      "post": {
        "operationId": "ppsrPreview",
        "x-hoist-capability-status": "unavailable",
        "x-hoist-dispatch-enabled": false,
        "summary": "PPSR preview contract (currently unavailable)",
        "description": "The organisation-grantor and serial-number preview mechanics are implemented but not currently customer-accessible. Current requests fail closed with 503, return no price, emit no audit event, write no certificate object, and do not hit the register. Paid PPSR searches and pricing are not currently available through Hoist. A bearer credential, OAuth scope, account, plan, subscription, billing setup, or B2G status does not unlock this route.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PpsrSearchRequest"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Malformed contract input. A valid request still receives the hard-closed 503 response; request shape does not unlock access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PpsrSearchError"
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required to reach the protected route. Authentication does not unlock current PPSR preview access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PpsrSearchError"
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/FairUseRateLimited"
          },
          "503": {
            "description": "Paid PPSR searches are not currently available; no price is returned and no register dispatch occurs.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/FairUseUnavailableRetryAfter"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/FairUseCacheControlNoStore"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/PpsrSearchError"
                    },
                    {
                      "$ref": "#/components/schemas/FairUseUnavailableError"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/ppsr/search": {
      "post": {
        "operationId": "ppsrSearch",
        "x-hoist-capability-status": "unavailable",
        "x-hoist-dispatch-enabled": false,
        "summary": "Request a PPSR organisation or serial-number search (currently unavailable)",
        "description": "Future paid-PPSR contract only (organisation-grantor by ACN or serial-number by VIN, motor, aircraft, or watercraft). Paid searches and pricing are not currently available through Hoist. A well-formed request with a missing or malformed Idempotency-Key returns 400 invalid_idempotency_key before launch readiness, billing, or provider work; a request with a valid key fails closed with 503 and no provider call, price, billing action, certificate write, successful receipt, or audit event. A bearer credential, OAuth scope, account, plan, subscription, billing setup, confirmation, or B2G status does not unlock this route. Use the official AFSA PPSR service outside Hoist for a current search.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": true,
            "description": "Required caller-supplied retry key. Every paid PPSR request must carry this key; malformed requests are rejected before any launch-readiness, billing, or provider work. The server never substitutes a random key. Paid searches may still be unavailable, but missing or malformed keys return 400 invalid_idempotency_key. 8-200 characters of [A-Za-z0-9:_.-].",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9:_.-]{8,200}$",
              "example": "ppsr:123456789:2026-07-04T00:00:00Z"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PpsrPaidSearchRequest"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Malformed contract input or missing/malformed required Idempotency-Key. Missing or malformed keys return 400 invalid_idempotency_key. A valid request still receives the hard-closed 503 response; request shape does not unlock access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PpsrSearchError"
                }
              }
            }
          },
          "401": {
            "description": "Authentication is required to reach the protected route. Authentication does not unlock current PPSR search access.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PpsrSearchError"
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/FairUseRateLimited"
          },
          "503": {
            "description": "Paid PPSR searches are not currently available, or account fair-use state could not be verified; no provider dispatch occurs on unavailable state.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/FairUseUnavailableRetryAfter"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/FairUseCacheControlNoStore"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/PpsrSearchError"
                    },
                    {
                      "$ref": "#/components/schemas/FairUseUnavailableError"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/asic/company/lookup": {
      "post": {
        "operationId": "lookupCompany",
        "summary": "ASIC company lookup contract (currently unavailable)",
        "description": "Currently launch-quarantined: this route returns source_unavailable because the multi-million-row production ingest path has not passed its operational release gate. The future contract uses exactly one identifier: checksum-valid ACN, checksum-valid ABN, or a 1-200 character exact normalised company name. No completed, legacy, fixture, or merely registered snapshot row is returned as customer evidence; deterministic fixtures are never returned as ASIC source evidence. No live or paid ASIC search is dispatched.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "acn": {
                    "type": "string",
                    "minLength": 1,
                    "description": "Checksum-valid Australian Company Number, spaces or hyphens accepted. Use exactly one identifier."
                  },
                  "abn": {
                    "type": "string",
                    "minLength": 1,
                    "description": "Checksum-valid Australian Business Number, spaces or hyphens accepted. Use exactly one identifier."
                  },
                  "company_name": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 200,
                    "description": "1-200 character exact company name matched after deterministic normalisation. Use exactly one identifier."
                  }
                },
                "oneOf": [
                  {
                    "required": [
                      "acn"
                    ]
                  },
                  {
                    "required": [
                      "abn"
                    ]
                  },
                  {
                    "required": [
                      "company_name"
                    ]
                  }
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Future success response contract after the ASIC Companies path passes its operational release gate; this response is not currently available.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "ok",
                    "tool",
                    "status",
                    "company",
                    "matched_on",
                    "source",
                    "source_citation",
                    "plain_english_answer",
                    "data_mode",
                    "generated_at"
                  ],
                  "properties": {
                    "ok": {
                      "type": "boolean",
                      "const": true
                    },
                    "tool": {
                      "type": "string",
                      "const": "company_lookup"
                    },
                    "status": {
                      "type": "string",
                      "const": "found"
                    },
                    "company": {
                      "type": "object",
                      "required": [
                        "acn",
                        "abn",
                        "name",
                        "status",
                        "entity_type",
                        "registered_at",
                        "deregistered_at",
                        "current_name",
                        "current_legal_name",
                        "state_registration_number",
                        "previous_state_of_registration",
                        "risk_flags"
                      ],
                      "properties": {
                        "acn": {
                          "type": "string"
                        },
                        "abn": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "name": {
                          "type": "string",
                          "maxLength": 200
                        },
                        "status": {
                          "type": "string",
                          "description": "ASIC publishes a broader company-status code set. REGD/Registered and DRGD/Deregistered are represented; other ASIC source status codes fail closed rather than being coerced. Registered rows must not carry a deregistration date; deregistered rows must carry one that is not before registration.",
                          "enum": [
                            "registered",
                            "deregistered"
                          ]
                        },
                        "entity_type": {
                          "type": "string"
                        },
                        "registered_at": {
                          "type": "string",
                          "format": "date"
                        },
                        "deregistered_at": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "format": "date"
                        },
                        "current_name": {
                          "type": [
                            "boolean",
                            "null"
                          ],
                          "description": "Historical-name matches are labelled: true identifies the ASIC current-name row, false identifies a historical-name row whose Current Name field supplies current_legal_name, and null is used only when the snapshot cannot establish name currency."
                        },
                        "current_legal_name": {
                          "type": [
                            "string",
                            "null"
                          ],
                          "maxLength": 200,
                          "description": "The current legal company name published on an ASIC historical-name row; null for a current-name row or when the source does not establish it."
                        },
                        "state_registration_number": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "previous_state_of_registration": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "risk_flags": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "matched_on": {
                      "type": "string",
                      "enum": [
                        "acn",
                        "abn",
                        "company_name"
                      ]
                    },
                    "source": {
                      "type": "object",
                      "required": [
                        "provider",
                        "dataset",
                        "url",
                        "resource_id",
                        "extract_date",
                        "source_version",
                        "licence",
                        "limitations",
                        "live_search_dispatched",
                        "paid_searches_dispatched"
                      ],
                      "properties": {
                        "provider": {
                          "type": "string",
                          "const": "asic-data-gov"
                        },
                        "dataset": {
                          "type": "string",
                          "const": "ASIC Company Dataset"
                        },
                        "url": {
                          "type": "string",
                          "const": "https://data.gov.au/data/dataset/asic-companies"
                        },
                        "resource_id": {
                          "type": "string"
                        },
                        "extract_date": {
                          "type": "string",
                          "format": "date"
                        },
                        "source_version": {
                          "type": "string",
                          "minLength": 1
                        },
                        "licence": {
                          "type": "string",
                          "const": "CC BY 3.0 AU"
                        },
                        "limitations": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "live_search_dispatched": {
                          "type": "boolean",
                          "const": false
                        },
                        "paid_searches_dispatched": {
                          "type": "boolean",
                          "const": false
                        }
                      }
                    },
                    "source_citation": {
                      "type": "string"
                    },
                    "plain_english_answer": {
                      "type": "string"
                    },
                    "data_mode": {
                      "type": "string",
                      "const": "snapshot",
                      "description": "A completed server-owned ASIC public-source snapshot row matched. Customer responses never fall back to deterministic fixtures."
                    },
                    "generated_at": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid input.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "ok",
                    "code",
                    "message"
                  ],
                  "properties": {
                    "ok": {
                      "type": "boolean",
                      "const": false
                    },
                    "code": {
                      "type": "string",
                      "const": "invalid_input"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "ok",
                    "code",
                    "message"
                  ],
                  "properties": {
                    "ok": {
                      "type": "boolean",
                      "const": false
                    },
                    "code": {
                      "type": "string",
                      "const": "unauthorized"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Future no-match response contract after operational release; this response is not currently available.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "ok",
                    "code",
                    "message"
                  ],
                  "properties": {
                    "ok": {
                      "type": "boolean",
                      "const": false
                    },
                    "code": {
                      "type": "string",
                      "const": "not_found"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Future ambiguous-match response contract after operational release; no company status or source citation is returned.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "ok",
                    "code",
                    "message"
                  ],
                  "properties": {
                    "ok": {
                      "type": "boolean",
                      "const": false
                    },
                    "code": {
                      "type": "string",
                      "const": "ambiguous_match"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/FairUseRateLimited"
          },
          "503": {
            "description": "Current response while ASIC Companies ingestion is launch-quarantined. The route fails closed without snapshot, fixture, or live-search fallback.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/FairUseUnavailableRetryAfter"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/FairUseCacheControlNoStore"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "object",
                      "required": [
                        "ok",
                        "code",
                        "message"
                      ],
                      "properties": {
                        "ok": {
                          "type": "boolean",
                          "const": false
                        },
                        "code": {
                          "type": "string",
                          "const": "source_unavailable"
                        },
                        "message": {
                          "type": "string"
                        }
                      }
                    },
                    {
                      "$ref": "#/components/schemas/FairUseUnavailableError"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/address/lookup": {
      "post": {
        "operationId": "addressLookup",
        "summary": "Future G-NAF address-lookup contract (currently unavailable)",
        "description": "Customer address lookup is unavailable until Hoist proves a complete server-owned G-NAF snapshot. The current adapter contains representative fixtures only. Every call fails closed with source_unavailable before parsing input or reading a source; no fixture candidate, confidence score, G-NAF PID, or official-source citation is returned. This request shape is future contract documentation, not invocation guidance.",
        "x-hoist-capability-status": "unavailable",
        "x-hoist-dispatch-enabled": false,
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddressLookupRequest"
              }
            }
          }
        },
        "responses": {
          "401": {
            "description": "Missing or invalid bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AddressLookupError"
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/FairUseRateLimited"
          },
          "503": {
            "description": "G-NAF customer lookup is unavailable; no fixture row or source result is returned.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/FairUseUnavailableRetryAfter"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/FairUseCacheControlNoStore"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/AddressLookupError"
                    },
                    {
                      "$ref": "#/components/schemas/FairUseUnavailableError"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/what-changed": {
      "post": {
        "operationId": "whatChanged",
        "x-hoist-capability-status": "unavailable",
        "x-hoist-dispatch-enabled": false,
        "summary": "Entity or asset snapshot comparison contract (currently unavailable)",
        "description": "what_changed is currently unavailable. Hoist does not have an operational server-owned source fetcher and queued consumer for entity or asset monitoring, so caller-supplied snapshots cannot establish a source-backed change. Every current request fails closed without a comparison, subscription, automatic recheck or alert. run_opportunity_monitor is separate: it returns an on-demand, read-only opportunity delta report and is not a monitoring subscription.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/WhatChangedRequest"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Invalid request body, selector, or non-comparable snapshots.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WhatChangedError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WhatChangedError"
                }
              }
            }
          },
          "404": {
            "description": "No owned monitor evidence snapshots matched the requested selector.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WhatChangedError"
                }
              }
            }
          },
          "409": {
            "description": "Target/time-range selector matched multiple monitor subscriptions and needs subscription_id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WhatChangedError"
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/FairUseRateLimited"
          },
          "503": {
            "description": "Entity and asset snapshot comparison is unavailable; no source-backed comparison, subscription, automatic recheck or alert occurs.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/FairUseUnavailableRetryAfter"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/FairUseCacheControlNoStore"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/WhatChangedError"
                    },
                    {
                      "$ref": "#/components/schemas/FairUseUnavailableError"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/recheck-before-funding": {
      "post": {
        "operationId": "confirmNoChanges",
        "x-hoist-capability-status": "unavailable",
        "x-hoist-dispatch-enabled": false,
        "summary": "Entity or asset recheck contract (currently unavailable)",
        "description": "confirm_no_changes is currently unavailable. Hoist does not have an operational server-owned source fetcher and queued consumer for entity or asset monitoring, so caller-supplied current evidence cannot prove that a source did not change. Every current request fails closed without a recheck, subscription, automatic schedule or alert.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConfirmNoChangesRequest"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Invalid request body or current evidence payload.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConfirmNoChangesError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConfirmNoChangesError"
                }
              }
            }
          },
          "404": {
            "description": "No owned monitor subscription matched the requested subscription ID.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConfirmNoChangesError"
                }
              }
            }
          },
          "409": {
            "description": "Captured baseline is missing or does not match the expected baseline evidence pack ID.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConfirmNoChangesError"
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/FairUseRateLimited"
          },
          "503": {
            "description": "Entity and asset rechecks are unavailable; no source fetch, comparison, subscription, automatic recheck or alert occurs.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/FairUseUnavailableRetryAfter"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/FairUseCacheControlNoStore"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/ConfirmNoChangesError"
                    },
                    {
                      "$ref": "#/components/schemas/FairUseUnavailableError"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/monitors": {
      "post": {
        "operationId": "monitorEntityOrAsset",
        "x-hoist-capability-status": "unavailable",
        "x-hoist-dispatch-enabled": false,
        "summary": "Entity or asset monitor subscription contract (currently unavailable)",
        "description": "monitor_entity_or_asset is currently unavailable. Hoist does not have an operational server-owned source fetcher and queued consumer for entity or asset monitoring. Every current request fails closed without creating a subscription, storing an active or pending monitor, scheduling an automatic recheck or sending an alert.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MonitorCreateRequest"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Invalid owner, target, interval, or request body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MonitorError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MonitorError"
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/FairUseRateLimited"
          },
          "503": {
            "description": "Entity and asset monitor subscriptions are unavailable; no monitor is stored, queued, scheduled or alerted.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/FairUseUnavailableRetryAfter"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/FairUseCacheControlNoStore"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/MonitorError"
                    },
                    {
                      "$ref": "#/components/schemas/FairUseUnavailableError"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "get": {
        "operationId": "listMonitors",
        "x-hoist-capability-status": "unavailable",
        "x-hoist-dispatch-enabled": false,
        "summary": "Entity or asset monitor listing contract (currently unavailable)",
        "description": "Entity and asset monitor subscriptions are currently unavailable. This contract is retained for compatibility only and does not expose active, pending or historical subscriptions.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "tenant_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            }
          },
          {
            "name": "account_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            }
          },
          {
            "name": "status",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "pending_baseline",
                "active",
                "paused",
                "canceled",
                "failed"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Invalid owner or limit.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MonitorError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MonitorError"
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/FairUseRateLimited"
          },
          "503": {
            "description": "Entity and asset monitor subscriptions are unavailable; no active or pending monitor list is returned.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/FairUseUnavailableRetryAfter"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/FairUseCacheControlNoStore"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/MonitorError"
                    },
                    {
                      "$ref": "#/components/schemas/FairUseUnavailableError"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/monitors/{id}": {
      "get": {
        "operationId": "getMonitorStatus",
        "x-hoist-capability-status": "unavailable",
        "x-hoist-dispatch-enabled": false,
        "summary": "Entity or asset monitor status contract (currently unavailable)",
        "description": "Entity and asset monitor subscriptions are currently unavailable. This contract is retained for compatibility only and does not return an active, pending or historical subscription.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1
            }
          },
          {
            "name": "tenant_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            }
          },
          {
            "name": "account_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1,
              "maxLength": 128
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Invalid owner or monitor id.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MonitorError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MonitorError"
                }
              }
            }
          },
          "403": {
            "description": "Monitor belongs to a different authenticated user or owner context.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MonitorError"
                }
              }
            }
          },
          "404": {
            "description": "Monitor not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MonitorError"
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/FairUseRateLimited"
          },
          "503": {
            "description": "Entity and asset monitor subscriptions are unavailable; no monitor status is returned.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/FairUseUnavailableRetryAfter"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/FairUseCacheControlNoStore"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/MonitorError"
                    },
                    {
                      "$ref": "#/components/schemas/FairUseUnavailableError"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "delete": {
        "operationId": "revokeMonitor",
        "x-hoist-capability-status": "unavailable",
        "x-hoist-dispatch-enabled": false,
        "summary": "Entity or asset monitor revocation contract (currently unavailable)",
        "description": "Entity and asset monitor subscriptions are currently unavailable. This compatibility contract cannot revoke a subscription because no active or pending subscription is created.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MonitorRevokeRequest"
              }
            }
          }
        },
        "responses": {
          "400": {
            "description": "Invalid owner, monitor id, or revocation reason.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MonitorError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer token.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MonitorError"
                }
              }
            }
          },
          "403": {
            "description": "Monitor belongs to a different authenticated user or owner context.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MonitorError"
                }
              }
            }
          },
          "404": {
            "description": "Monitor not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MonitorError"
                }
              }
            }
          },
          "409": {
            "description": "Monitor is already terminal and cannot be revoked again.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MonitorError"
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/FairUseRateLimited"
          },
          "503": {
            "description": "Entity and asset monitor subscriptions are unavailable; no revocation or other monitor write occurs.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/FairUseUnavailableRetryAfter"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/FairUseCacheControlNoStore"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/MonitorError"
                    },
                    {
                      "$ref": "#/components/schemas/FairUseUnavailableError"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/asic/business-name/lookup": {
      "post": {
        "operationId": "verifyBusinessNameRegistration",
        "summary": "ASIC business-name lookup contract (currently unavailable)",
        "description": "Currently launch-quarantined: this route returns source_unavailable because the multi-million-row production ingest path has not passed its operational release gate. The future contract uses a 3-200 character exact deterministic normalised-name match, optionally constrained by a checksum-valid ABN. No completed, legacy, fixture, or merely registered snapshot row is returned as customer evidence; deterministic fixtures are never returned as ASIC source evidence. No live or paid ASIC search is dispatched.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "business_name"
                ],
                "properties": {
                  "business_name": {
                    "type": "string",
                    "minLength": 3,
                    "maxLength": 200,
                    "description": "3-200 character business name matched exactly after deterministic normalisation against the ASIC Business Names public snapshot."
                  },
                  "abn": {
                    "type": "string",
                    "description": "Optional checksum-valid 11-digit ABN to constrain the source snapshot match."
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Future success response contract after the ASIC Business Names path passes its operational release gate; this response is not currently available.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "ok",
                    "tool",
                    "business_name",
                    "status",
                    "registered_at",
                    "cancelled_at",
                    "state_of_registration",
                    "abn",
                    "bn_state_number",
                    "match",
                    "source",
                    "raw",
                    "source_citation",
                    "plain_english_answer",
                    "risk_flags",
                    "live_search_dispatched",
                    "paid_searches_dispatched",
                    "data_mode",
                    "generated_at"
                  ],
                  "properties": {
                    "ok": {
                      "type": "boolean",
                      "const": true
                    },
                    "tool": {
                      "type": "string",
                      "const": "lookup_business_name"
                    },
                    "business_name": {
                      "type": "string",
                      "maxLength": 200
                    },
                    "status": {
                      "type": "string",
                      "description": "ASIC Registered source rows are represented as registered and Cancelled source rows as cancelled. Unknown source statuses, status-inconsistent cancellation dates, and cancellation dates before registration fail closed.",
                      "enum": [
                        "registered",
                        "cancelled"
                      ]
                    },
                    "registered_at": {
                      "type": "string",
                      "format": "date"
                    },
                    "cancelled_at": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "date"
                    },
                    "state_of_registration": {
                      "type": "string"
                    },
                    "abn": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "bn_state_number": {
                      "type": "string"
                    },
                    "match": {
                      "type": "object",
                      "required": [
                        "method",
                        "confidence",
                        "query",
                        "matched_name"
                      ],
                      "properties": {
                        "method": {
                          "type": "string",
                          "enum": [
                            "exact_normalised"
                          ]
                        },
                        "confidence": {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 1
                        },
                        "query": {
                          "type": "string"
                        },
                        "matched_name": {
                          "type": "string"
                        }
                      }
                    },
                    "source": {
                      "type": "object",
                      "description": "ASIC data.gov.au snapshot provenance. `source_version` is present for completed server-owned public snapshots.",
                      "required": [
                        "provider",
                        "dataset",
                        "url",
                        "resource_id",
                        "extract_date",
                        "source_version",
                        "licence"
                      ],
                      "properties": {
                        "provider": {
                          "type": "string",
                          "const": "asic-data-gov"
                        },
                        "dataset": {
                          "type": "string",
                          "const": "ASIC Business Names Dataset"
                        },
                        "url": {
                          "type": "string",
                          "const": "https://data.gov.au/data/dataset/asic-business-names"
                        },
                        "resource_id": {
                          "type": "string",
                          "const": "55ad4b1c-5eeb-44ea-8b29-d410da431be3"
                        },
                        "extract_date": {
                          "type": "string",
                          "format": "date"
                        },
                        "source_version": {
                          "type": "string",
                          "minLength": 1
                        },
                        "licence": {
                          "type": "string",
                          "const": "CC BY 3.0 AU"
                        }
                      }
                    },
                    "raw": {
                      "type": "object",
                      "description": "ASIC Business Names source fields as stored for the matched snapshot row; BN_ABN is returned in canonical digit-only form when present.",
                      "required": [
                        "REGISTER_NAME",
                        "BN_NAME",
                        "BN_STATUS",
                        "BN_REG_DT",
                        "BN_CANCEL_DT",
                        "BN_STATE_NUM",
                        "BN_STATE_OF_REG",
                        "BN_ABN"
                      ],
                      "properties": {
                        "REGISTER_NAME": {
                          "type": "string"
                        },
                        "BN_NAME": {
                          "type": "string"
                        },
                        "BN_STATUS": {
                          "type": "string",
                          "enum": [
                            "Registered",
                            "Cancelled"
                          ]
                        },
                        "BN_REG_DT": {
                          "type": "string"
                        },
                        "BN_CANCEL_DT": {
                          "type": "string"
                        },
                        "BN_STATE_NUM": {
                          "type": "string"
                        },
                        "BN_STATE_OF_REG": {
                          "type": "string"
                        },
                        "BN_ABN": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    },
                    "source_citation": {
                      "type": "string"
                    },
                    "plain_english_answer": {
                      "type": "string"
                    },
                    "risk_flags": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "severity",
                          "code",
                          "message"
                        ],
                        "properties": {
                          "severity": {
                            "type": "string",
                            "enum": [
                              "medium"
                            ]
                          },
                          "code": {
                            "type": "string"
                          },
                          "message": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "live_search_dispatched": {
                      "type": "boolean",
                      "const": false
                    },
                    "paid_searches_dispatched": {
                      "type": "boolean",
                      "const": false
                    },
                    "data_mode": {
                      "type": "string",
                      "const": "snapshot",
                      "description": "A completed server-owned ASIC public-source snapshot row matched. Customer responses never fall back to deterministic fixtures."
                    },
                    "generated_at": {
                      "type": "string",
                      "format": "date-time"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid input or malformed JSON.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "ok",
                    "code",
                    "message"
                  ],
                  "properties": {
                    "ok": {
                      "type": "boolean",
                      "const": false
                    },
                    "code": {
                      "type": "string",
                      "enum": [
                        "invalid_input"
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer identity.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "ok",
                    "code",
                    "message"
                  ],
                  "properties": {
                    "ok": {
                      "type": "boolean",
                      "const": false
                    },
                    "code": {
                      "type": "string",
                      "enum": [
                        "unauthorized"
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "Future no-match response contract after operational release; this response is not currently available.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "ok",
                    "code",
                    "message"
                  ],
                  "properties": {
                    "ok": {
                      "type": "boolean",
                      "const": false
                    },
                    "code": {
                      "type": "string",
                      "enum": [
                        "business_name_not_found"
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "409": {
            "description": "Future ambiguous-match response contract after operational release; no status or source citation is returned.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "ok",
                    "code",
                    "message"
                  ],
                  "properties": {
                    "ok": {
                      "type": "boolean",
                      "const": false
                    },
                    "code": {
                      "type": "string",
                      "const": "ambiguous_match"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/FairUseRateLimited"
          },
          "503": {
            "description": "Current response while ASIC Business Names ingestion is launch-quarantined. The route fails closed without snapshot, fixture, or live-search fallback.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/FairUseUnavailableRetryAfter"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/FairUseCacheControlNoStore"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "object",
                      "required": [
                        "ok",
                        "code",
                        "message"
                      ],
                      "properties": {
                        "ok": {
                          "type": "boolean",
                          "const": false
                        },
                        "code": {
                          "type": "string",
                          "const": "source_unavailable"
                        },
                        "message": {
                          "type": "string"
                        }
                      }
                    },
                    {
                      "$ref": "#/components/schemas/FairUseUnavailableError"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/verify-payment-or-invoice": {
      "post": {
        "operationId": "verifyPaymentOrInvoice",
        "summary": "Verify an invoice or payment before sending money",
        "description": "Check an invoice, quote, or supplier payment instruction for deterministic consistency signals before the user pays. Parses untrusted invoice text locally, extracts ABN/ACN/business/payment fields, and returns a compact card with hard limitation language. Bank account ownership is NOT independently verified; callers must confirm payment details through a known independent channel. This route never previews, prices, confirms, or dispatches a PPSR search: Hoist PPSR is currently unavailable, and a credential, OAuth scope, account, or plan does not unlock it. Auth: bearer credential; the authenticated userId is derived from the bearer, not from the request body.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Provide `document_text` or at least one structured invoice/payment field. All fields are flat primitives; nested objects and arrays are rejected by the service.",
                "properties": {
                  "document_text": {
                    "type": "string",
                    "maxLength": 100000,
                    "description": "Raw invoice/payment text from paste or OCR. Treated as untrusted input and never reflected verbatim."
                  },
                  "supplier_name": {
                    "type": "string",
                    "maxLength": 240,
                    "description": "Untrusted supplier name from the caller or parsed document; returned as data, never as a verification claim or instruction."
                  },
                  "business_name": {
                    "type": "string",
                    "maxLength": 240,
                    "description": "Untrusted business name from the caller or parsed document."
                  },
                  "abn": {
                    "type": "string",
                    "maxLength": 20,
                    "pattern": "^(?: *[0-9]){11} *$",
                    "description": "Australian Business Number (11 digits, spaces optional)."
                  },
                  "acn": {
                    "type": "string",
                    "maxLength": 20,
                    "pattern": "^(?: *[0-9]){9} *$",
                    "description": "Australian Company Number (9 digits, spaces optional)."
                  },
                  "invoice_number": {
                    "type": "string",
                    "maxLength": 80
                  },
                  "invoice_amount": {
                    "oneOf": [
                      {
                        "type": "string",
                        "maxLength": 32,
                        "description": "Non-negative decimal amount with at most two decimal places and value no greater than AUD 1,000,000,000,000; larger or unsafe-precision strings are rejected."
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1000000000000
                      }
                    ]
                  },
                  "gst_amount": {
                    "oneOf": [
                      {
                        "type": "string",
                        "maxLength": 32,
                        "description": "Non-negative decimal amount with at most two decimal places and value no greater than AUD 1,000,000,000,000; larger or unsafe-precision strings are rejected."
                      },
                      {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1000000000000
                      }
                    ]
                  },
                  "bsb": {
                    "type": "string",
                    "maxLength": 16,
                    "pattern": "^[0-9 -]+$",
                    "description": "BSB shape only; does not verify bank-account ownership."
                  },
                  "account_number": {
                    "type": "string",
                    "maxLength": 32,
                    "pattern": "^[0-9 -]+$",
                    "description": "Account-number shape only; does not verify bank-account ownership."
                  },
                  "remittance_email": {
                    "type": "string",
                    "maxLength": 254,
                    "format": "email"
                  },
                  "payment_reference": {
                    "type": "string",
                    "maxLength": 120
                  },
                  "asset_vin": {
                    "type": "string",
                    "maxLength": 17,
                    "pattern": "^[A-HJ-NPR-Z0-9]{17}$",
                    "description": "Optional supplied asset VIN to compare against invoice text."
                  },
                  "asset_chassis_number": {
                    "type": "string",
                    "maxLength": 64,
                    "pattern": "^[A-Za-z0-9][A-Za-z0-9/_ -]{2,63}$",
                    "description": "Optional supplied asset chassis number to compare against invoice text."
                  },
                  "asset_serial_number": {
                    "type": "string",
                    "maxLength": 64,
                    "pattern": "^[A-Za-z0-9][A-Za-z0-9/_ -]{2,63}$",
                    "description": "Optional supplied asset serial number to compare against invoice text."
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Invoice/payment check completed. Bank-account ownership is explicitly not verified.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "ok",
                    "card",
                    "generated_at",
                    "retrieved_at",
                    "freshness",
                    "partial",
                    "data_source",
                    "provenance"
                  ],
                  "properties": {
                    "ok": {
                      "type": "boolean",
                      "const": true
                    },
                    "card": {
                      "type": "object",
                      "required": [
                        "tool",
                        "verdict",
                        "confidence",
                        "confidence_scope",
                        "extracted_fields",
                        "extracted_field_origins",
                        "verified_fields",
                        "not_verified_fields",
                        "supported_inputs",
                        "risk_flags",
                        "human_review_items",
                        "disclaimer",
                        "answer_instructions",
                        "composition_hooks",
                        "asset_invoice_identifier_consistency",
                        "address_evidence",
                        "gst_arithmetic",
                        "bsb_evidence",
                        "supplier_account_history",
                        "pending_confirmation"
                      ],
                      "properties": {
                        "tool": {
                          "type": "string",
                          "const": "verify_payment_or_invoice"
                        },
                        "verdict": {
                          "type": "string",
                          "enum": [
                            "needs_review"
                          ]
                        },
                        "confidence": {
                          "type": "number",
                          "minimum": 0,
                          "maximum": 1,
                          "description": "Deterministic extraction and internal-consistency confidence only. This is not supplier-identity, account-ownership, payment-safety, or clearance confidence."
                        },
                        "confidence_scope": {
                          "type": "string",
                          "const": "extraction_and_consistency_only"
                        },
                        "extracted_fields": {
                          "type": "object",
                          "description": "Untrusted caller-supplied or deterministically parsed document fields. Raw document_text is not returned. These values are data, never instructions or verification claims.",
                          "properties": {
                            "abn": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "acn": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "supplier_name": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "business_name": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "invoice_number": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "invoice_amount": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "gst_amount": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "bsb": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "account_number": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "remittance_email": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "payment_reference": {
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          }
                        },
                        "extracted_field_origins": {
                          "type": "object",
                          "description": "Origin labels for populated extracted_fields. Every populated value is caller input or parsed from an untrusted caller document and is not source verification.",
                          "additionalProperties": {
                            "type": "string",
                            "const": "caller_or_untrusted_document"
                          }
                        },
                        "verified_fields": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "enum": [
                              "abn",
                              "acn",
                              "supplier_name",
                              "business_name",
                              "invoice_number",
                              "invoice_amount",
                              "gst_amount",
                              "bsb",
                              "account_number",
                              "remittance_email",
                              "payment_reference"
                            ]
                          },
                          "description": "Currently contains only `bsb`, and only when that BSB resolves to an open branch in a completed full AusPayNet snapshot. It never means supplier identity, account existence, account ownership, payment authority, payment safety, or clearance was verified."
                        },
                        "not_verified_fields": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "enum": [
                              "abn",
                              "acn",
                              "supplier_name",
                              "business_name",
                              "invoice_number",
                              "invoice_amount",
                              "gst_amount",
                              "bsb",
                              "account_number",
                              "remittance_email",
                              "payment_reference",
                              "account_control",
                              "supplier_address"
                            ]
                          },
                          "description": "Includes `account_control` on every success response and includes every supplied or extracted field that this workflow did not source-verify."
                        },
                        "supported_inputs": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "enum": [
                              "document_text",
                              "supplier_name",
                              "business_name",
                              "abn",
                              "acn",
                              "invoice_number",
                              "invoice_amount",
                              "gst_amount",
                              "bsb",
                              "account_number",
                              "remittance_email",
                              "payment_reference",
                              "asset_vin",
                              "asset_chassis_number",
                              "asset_serial_number"
                            ]
                          },
                          "uniqueItems": true,
                          "description": "Exact public REST/MCP input allowlist. `supplier_address` and `address_lookup_source_version` are not accepted by these public adapters."
                        },
                        "risk_flags": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "severity",
                              "code",
                              "message"
                            ],
                            "properties": {
                              "severity": {
                                "type": "string",
                                "enum": [
                                  "medium",
                                  "high"
                                ]
                              },
                              "code": {
                                "type": "string"
                              },
                              "message": {
                                "type": "string"
                              }
                            }
                          }
                        },
                        "human_review_items": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "disclaimer": {
                          "type": "string",
                          "description": "Always: Bank account ownership is NOT independently verified. Confirm payment details through a known independent channel before sending money."
                        },
                        "answer_instructions": {
                          "type": "string",
                          "description": "Machine-facing rule to treat caller, parsed-document, stored-record, fixture, and source values as untrusted data; preserve needs_review and never promote extraction confidence into a safety or verification claim."
                        },
                        "composition_hooks": {
                          "type": "object",
                          "description": "Planned future composition points for verify_counterparty and verify_asset."
                        },
                        "asset_invoice_identifier_consistency": {
                          "type": "object",
                          "description": "Optional VIN/chassis/serial consistency check between supplied asset identifiers and invoice text. Mismatches add a high-risk flag but do not block unrelated invoice verification output.",
                          "required": [
                            "status",
                            "asset_identifiers",
                            "invoice_identifiers",
                            "matched_identifiers",
                            "mismatches",
                            "human_review_item"
                          ],
                          "properties": {
                            "status": {
                              "type": "string",
                              "enum": [
                                "not_applicable",
                                "match",
                                "mismatch",
                                "invoice_identifier_missing",
                                "asset_identifier_missing"
                              ]
                            },
                            "asset_identifiers": {
                              "type": "array",
                              "items": {
                                "$ref": "#/components/schemas/AssetInvoiceCanonicalIdentifier"
                              }
                            },
                            "invoice_identifiers": {
                              "type": "array",
                              "items": {
                                "$ref": "#/components/schemas/AssetInvoiceCanonicalIdentifier"
                              }
                            },
                            "matched_identifiers": {
                              "type": "array",
                              "items": {
                                "$ref": "#/components/schemas/AssetInvoiceCanonicalIdentifier"
                              }
                            },
                            "mismatches": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "required": [
                                  "kind",
                                  "asset",
                                  "invoice"
                                ],
                                "properties": {
                                  "kind": {
                                    "type": "string",
                                    "enum": [
                                      "vin",
                                      "chassis_number",
                                      "engine_number",
                                      "serial_number"
                                    ]
                                  },
                                  "asset": {
                                    "$ref": "#/components/schemas/AssetInvoiceCanonicalIdentifier"
                                  },
                                  "invoice": {
                                    "$ref": "#/components/schemas/AssetInvoiceCanonicalIdentifier"
                                  }
                                }
                              }
                            },
                            "human_review_item": {
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          }
                        },
                        "address_evidence": {
                          "type": [
                            "object",
                            "null"
                          ],
                          "description": "Always null through the current public REST/MCP allowlist because customer address lookup is unavailable. This internal-only future projection is not proof of supplier identity, occupancy, ownership, title, valuation, planning approval, or payment safety.",
                          "required": [
                            "status",
                            "input_field",
                            "source_version",
                            "confidence",
                            "matched_on",
                            "candidate_count",
                            "mismatch_flags",
                            "top_candidate",
                            "failure"
                          ],
                          "properties": {
                            "status": {
                              "type": "string",
                              "enum": [
                                "lookup_not_run",
                                "exact_match",
                                "fuzzy_match",
                                "no_match",
                                "ambiguous",
                                "lookup_failed"
                              ]
                            },
                            "input_field": {
                              "type": "string",
                              "const": "supplier_address"
                            },
                            "source_version": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "confidence": {
                              "type": "number",
                              "minimum": 0,
                              "maximum": 1,
                              "description": "Address-candidate matching confidence only; never supplier-identity, ownership, or payment-safety confidence."
                            },
                            "matched_on": {
                              "type": "string"
                            },
                            "candidate_count": {
                              "type": "integer",
                              "minimum": 0
                            },
                            "mismatch_flags": {
                              "type": "array",
                              "items": {
                                "type": "object"
                              }
                            },
                            "top_candidate": {
                              "type": [
                                "object",
                                "null"
                              ]
                            },
                            "failure": {
                              "type": [
                                "object",
                                "null"
                              ]
                            }
                          },
                          "additionalProperties": false
                        },
                        "gst_arithmetic": {
                          "type": "object",
                          "description": "Deterministic arithmetic over caller-supplied or parsed-document amounts. It does not establish GST registration, invoice authenticity, supplier identity, or tax compliance.",
                          "required": [
                            "status",
                            "invoice_amount",
                            "gst_amount",
                            "expected_gst_amount",
                            "tolerance_cents",
                            "message"
                          ],
                          "properties": {
                            "status": {
                              "type": "string",
                              "enum": [
                                "not_checked",
                                "consistent_with_gst_inclusive_total",
                                "inconsistent_with_gst_inclusive_total"
                              ]
                            },
                            "invoice_amount": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "gst_amount": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "expected_gst_amount": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "tolerance_cents": {
                              "type": "integer",
                              "minimum": 0
                            },
                            "message": {
                              "type": "string"
                            }
                          },
                          "additionalProperties": false
                        },
                        "bsb_evidence": {
                          "type": "object",
                          "description": "BSB-directory evidence. Only status `resolved` with `snapshot_backed=true` and `data_mode=completed_full_snapshot` may place `bsb` in verified_fields. Representative fixture rows are non-verifying, produce no source freshness, and never verify account existence or ownership.",
                          "required": [
                            "status",
                            "bsb",
                            "institution",
                            "institution_code",
                            "branch",
                            "state",
                            "payments_flags",
                            "snapshot_backed",
                            "data_mode",
                            "snapshot_date",
                            "citation",
                            "message"
                          ],
                          "properties": {
                            "status": {
                              "type": "string",
                              "enum": [
                                "not_checked",
                                "resolved",
                                "representative_fixture_match",
                                "representative_fixture_no_match",
                                "closed",
                                "not_in_directory",
                                "malformed"
                              ]
                            },
                            "bsb": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "institution": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "institution_code": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "branch": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "state": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "payments_flags": {
                              "type": [
                                "object",
                                "null"
                              ],
                              "properties": {
                                "paper": {
                                  "type": "boolean"
                                },
                                "electronic": {
                                  "type": "boolean"
                                },
                                "high_value": {
                                  "type": "boolean"
                                }
                              },
                              "additionalProperties": false
                            },
                            "snapshot_backed": {
                              "type": [
                                "boolean",
                                "null"
                              ]
                            },
                            "data_mode": {
                              "type": "string",
                              "enum": [
                                "not_checked",
                                "representative_fixture",
                                "completed_full_snapshot"
                              ]
                            },
                            "snapshot_date": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "format": "date"
                            },
                            "citation": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "message": {
                              "type": "string"
                            }
                          },
                          "additionalProperties": false
                        },
                        "supplier_account_history": {
                          "type": "object",
                          "description": "Comparison with a customer-authored decision-memory record labelled confirmed out-of-band. Hoist did not verify that label or the account; matching is consistency only, and a difference is a review signal only.",
                          "required": [
                            "status",
                            "abn",
                            "prior_recorded_at",
                            "attestation_source",
                            "prior_bsb",
                            "prior_account_number_masked",
                            "compared_fields",
                            "uncompared_fields",
                            "message"
                          ],
                          "properties": {
                            "status": {
                              "type": "string",
                              "enum": [
                                "not_checked",
                                "history_unavailable",
                                "no_prior_customer_record",
                                "not_comparable_to_prior_customer_record",
                                "partially_consistent_with_prior_customer_record",
                                "consistent_with_prior_customer_record",
                                "changed_since_prior_customer_record"
                              ]
                            },
                            "abn": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "prior_recorded_at": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "format": "date-time"
                            },
                            "attestation_source": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "enum": [
                                "customer_authored_unverified",
                                null
                              ]
                            },
                            "prior_bsb": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "prior_account_number_masked": {
                              "type": [
                                "string",
                                "null"
                              ],
                              "description": "At most the final three digits of a prior customer-authored account number; the full value is never returned."
                            },
                            "compared_fields": {
                              "type": "array",
                              "items": {
                                "type": "string",
                                "enum": [
                                  "bsb",
                                  "account_number"
                                ]
                              }
                            },
                            "uncompared_fields": {
                              "type": "array",
                              "items": {
                                "type": "string",
                                "enum": [
                                  "bsb",
                                  "account_number"
                                ]
                              }
                            },
                            "message": {
                              "type": "string"
                            }
                          },
                          "additionalProperties": false
                        },
                        "pending_confirmation": {
                          "type": "null",
                          "description": "Always null. This route emits no PPSR price-confirmation action because Hoist PPSR preview and paid search are currently unavailable; asset identifiers instead produce an explicit unavailable risk flag and AFSA-direct review action."
                        }
                      }
                    },
                    "generated_at": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "retrieved_at": {
                      "type": "string",
                      "format": "date-time",
                      "description": "Wall-clock assembly time; identical to generated_at."
                    },
                    "freshness": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "format": "date",
                      "description": "Source effective date only when a BSB resolved in a completed full AusPayNet snapshot; otherwise null. Never the wall-clock assembly time."
                    },
                    "partial": {
                      "type": "boolean",
                      "const": true,
                      "description": "Always true because the verdict remains needs_review and organisation identity/account ownership are not verified."
                    },
                    "data_source": {
                      "type": "string",
                      "const": "hoist_payment_or_invoice_verify"
                    },
                    "provenance": {
                      "type": "object",
                      "required": [
                        "data_origin",
                        "untrusted_fields",
                        "note"
                      ],
                      "properties": {
                        "data_origin": {
                          "type": "string",
                          "enum": [
                            "caller_input",
                            "mixed"
                          ]
                        },
                        "untrusted_fields": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "note": {
                          "type": "string"
                        }
                      },
                      "additionalProperties": false
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request body or insufficient invoice/payment fields.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "ok",
                    "code",
                    "message"
                  ],
                  "properties": {
                    "ok": {
                      "type": "boolean",
                      "const": false
                    },
                    "code": {
                      "type": "string",
                      "enum": [
                        "invalid_input"
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "401": {
            "description": "Authenticated user identity is required.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "ok",
                    "code",
                    "message"
                  ],
                  "properties": {
                    "ok": {
                      "type": "boolean",
                      "const": false
                    },
                    "code": {
                      "type": "string",
                      "enum": [
                        "unauthorized"
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/FairUseRateLimited"
          },
          "503": {
            "$ref": "#/components/responses/FairUseUnavailable"
          }
        }
      }
    },
    "/verify-counterparty": {
      "post": {
        "operationId": "verifyCounterparty",
        "summary": "Verify an Australian counterparty",
        "description": "Verify an Australian business using currently available ABN, GST, ASIC-public, and related business-source checks. Returns a compact Evidence Card with source-attributed facts, explicit fixture limitations where applicable, and audit metadata. It does not preview, search, or return a PPSR result, price, registration status, certificate, or clearance. Direct ACN/PPSR verification is rejected before source dispatch; use company_lookup for the ASIC public snapshot or the official AFSA PPSR service outside Hoist for a current PPSR search. A PPSR OAuth scope, account, plan, subscription, billing setup, or B2G status does not unlock PPSR here. Auth: bearer credential when provisioned; the authenticated userId is derived from the bearer, not from the request body.",
        "security": [
          {
            "oauth2": [
              "abn:lookup",
              "gst:status"
            ]
          },
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "At least one of `abn`, `acn`, or `business_name` is required by the compatibility schema. Current callable identifiers are `abn` and `business_name`; a direct `acn` request returns an explicit unavailable error before any source call because no live PPSR path is wired. `business_name`-only requests are resolved through ABR MatchingNames; ambiguous or unresolved names return invalid_input. The authenticated userId is derived from the bearer token.",
                "anyOf": [
                  {
                    "required": [
                      "abn"
                    ]
                  },
                  {
                    "required": [
                      "acn"
                    ]
                  },
                  {
                    "required": [
                      "business_name"
                    ]
                  }
                ],
                "properties": {
                  "abn": {
                    "type": "string",
                    "description": "Australian Business Number (11 digits, spaces optional).",
                    "pattern": "^[0-9 ]{11,13}$",
                    "example": "51 824 753 556"
                  },
                  "acn": {
                    "type": "string",
                    "description": "Reserved compatibility input. Direct ACN/PPSR verification is currently unavailable and fails before source dispatch; supplying an ACN, scope, credential, account, or plan does not unlock it.",
                    "pattern": "^[0-9 ]{9,11}$",
                    "example": "123 456 789"
                  },
                  "business_name": {
                    "type": "string",
                    "minLength": 1,
                    "pattern": "\\S",
                    "description": "Legal entity name. Used for soft-matching against ABR results when an `abn` is also supplied, or as the sole identifier when ABR MatchingNames resolves exactly one current high-confidence entity. The currently available verification path is free and does not consult billing."
                  },
                  "trading_name": {
                    "type": "string",
                    "description": "Trading-as / brand name. Recorded for context only."
                  },
                  "address": {
                    "type": "string",
                    "description": "Reserved single-line address input. G-NAF customer lookup is currently unavailable; an account, scope, credential, or plan does not unlock it."
                  },
                  "email_domain": {
                    "type": "string",
                    "description": "Email DOMAIN ONLY (e.g. \"hoistai.com\"). Full email addresses are rejected \u2014 emails are banned audit fields.",
                    "example": "hoistai.com"
                  },
                  "phone": {
                    "type": "string",
                    "description": "Contact phone. Advisory metadata only \u2014 never used for identification."
                  },
                  "context": {
                    "type": "string",
                    "description": "Human-readable verification purpose. Stored as provenance metadata. Not used for access-control decisions."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Available business-source verification completed. This response contains no current PPSR result, registration status, certificate, clearance, or successful PPSR audit event.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "ok",
                    "card",
                    "answer_card",
                    "entity_candidates",
                    "pack_id",
                    "generated_at",
                    "audit_metadata"
                  ],
                  "properties": {
                    "ok": {
                      "type": "boolean",
                      "const": true
                    },
                    "card": {
                      "type": "object",
                      "description": "Compact Evidence Card (~3KB JSON-serialised). Mirrors `EvidenceCard` from src/canonical/evidence-card.ts. Source-attributed facts only \u2014 no raw input reflected. The previous schema shorthand (`verdict / confidence / evidence_summary / findings`) was aspirational and never matched the implementation; Stage-2 PR #311 review aligned this schema to the canonical type (ha-w8e3 follow-up).",
                      "required": [
                        "headline_verdict",
                        "one_sentence_reason",
                        "risk_flags",
                        "source_checks",
                        "recommended_actions",
                        "pack_id",
                        "generated_at"
                      ],
                      "properties": {
                        "headline_verdict": {
                          "type": "string",
                          "enum": [
                            "pass",
                            "review_required",
                            "high_risk",
                            "insufficient_data"
                          ],
                          "description": "Top-level verdict derived from findings severity. `pass`: no critical/high findings. `review_required`: at least one high finding. `high_risk`: at least one critical finding. `insufficient_data`: no evidence items returned."
                        },
                        "one_sentence_reason": {
                          "type": "string",
                          "description": "One sentence explaining the verdict, written for a financial professional audience."
                        },
                        "risk_flags": {
                          "type": "array",
                          "description": "Top N risk flags from findings (severity-sorted, critical first). Capped at 5 by default.",
                          "items": {
                            "type": "object",
                            "required": [
                              "finding_id",
                              "severity",
                              "message"
                            ],
                            "properties": {
                              "finding_id": {
                                "type": "string",
                                "description": "Unique finding ID for back-reference to the full pack."
                              },
                              "severity": {
                                "type": "string",
                                "enum": [
                                  "critical",
                                  "high",
                                  "medium",
                                  "low",
                                  "info"
                                ]
                              },
                              "message": {
                                "type": "string",
                                "description": "Human-readable risk description. Must not contain raw PII."
                              },
                              "recommended_action": {
                                "type": "string",
                                "description": "Optional next action for the reviewer."
                              }
                            }
                          }
                        },
                        "source_checks": {
                          "type": "array",
                          "description": "Per-source check summaries \u2014 one row per unique source_id in the pack. Capped at 10 by default.",
                          "items": {
                            "type": "object",
                            "required": [
                              "source_id",
                              "source_checked_at",
                              "result_summary"
                            ],
                            "properties": {
                              "source_id": {
                                "type": "string",
                                "description": "Source adapter ID for a business source checked in this response, for example `abr-lookup`. No current successful response identifies `afsa-ppsr`."
                              },
                              "source_checked_at": {
                                "type": "string",
                                "format": "date-time",
                                "description": "ISO-8601 timestamp of the most recent fetch from this source (e.g. \"2026-07-04T00:00:00.000Z\")."
                              },
                              "result_summary": {
                                "type": "string",
                                "description": "Short human-readable result description."
                              }
                            }
                          }
                        },
                        "recommended_actions": {
                          "type": "array",
                          "description": "Recommended actions from risk_flag findings (deduplicated, ordered by finding severity descending).",
                          "items": {
                            "type": "string"
                          }
                        },
                        "pack_id": {
                          "type": "string",
                          "description": "pack_id of the source EvidencePack \u2014 back-reference pointer. Mirrors the envelope's top-level pack_id."
                        },
                        "shareable_url": {
                          "type": "string",
                          "description": "Public shareable URL for this card, if a base URL was configured. Format: `<baseUrl>/evidence/<pack_id>`."
                        },
                        "generated_at": {
                          "type": "integer",
                          "description": "Unix epoch milliseconds copied from the source pack's `generated_at`. NOTE: the envelope's top-level `generated_at` is the same instant serialised as ISO-8601."
                        }
                      }
                    },
                    "answer_card": {
                      "type": "object",
                      "description": "Human-facing answer shape for LLM clients. Start with summary_result, then render detail_table. Includes only applicable business sources checked in this response.",
                      "required": [
                        "summary_result",
                        "plain_english_answer",
                        "answer_instructions",
                        "detail_table",
                        "caveats",
                        "next_actions"
                      ],
                      "properties": {
                        "summary_result": {
                          "type": "string"
                        },
                        "plain_english_answer": {
                          "type": "string"
                        },
                        "answer_instructions": {
                          "type": "string"
                        },
                        "detail_table": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "data_source",
                              "source_id",
                              "check",
                              "status",
                              "result",
                              "checked_at"
                            ],
                            "properties": {
                              "data_source": {
                                "type": "string"
                              },
                              "source_id": {
                                "type": "string"
                              },
                              "check": {
                                "type": "string"
                              },
                              "status": {
                                "type": "string",
                                "enum": [
                                  "clear",
                                  "review",
                                  "not_clear"
                                ]
                              },
                              "result": {
                                "type": "string"
                              },
                              "checked_at": {
                                "type": "string",
                                "format": "date-time"
                              }
                            }
                          }
                        },
                        "caveats": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "next_actions": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "coverage_upgrade": {
                          "$ref": "#/components/schemas/CoverageUpgradePrompt"
                        }
                      },
                      "additionalProperties": false
                    },
                    "entity_candidates": {
                      "type": "array",
                      "description": "Deterministic company identity candidates derived from caller ACN and ABN-backed data. Carries ABN-to-ACN cross-walk evidence before live ASIC access is available.",
                      "items": {
                        "type": "object",
                        "required": [
                          "kind",
                          "abn",
                          "acn",
                          "entity_name",
                          "entity_type",
                          "source",
                          "confidence",
                          "evidence_ids"
                        ],
                        "properties": {
                          "kind": {
                            "type": "string",
                            "const": "company"
                          },
                          "abn": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Canonical spaced ABN when the candidate is ABN-backed."
                          },
                          "acn": {
                            "type": "string",
                            "description": "Canonical spaced ACN."
                          },
                          "entity_name": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "ABN-backed entity name when available."
                          },
                          "entity_type": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "ABN-backed entity type when available."
                          },
                          "source": {
                            "type": "string",
                            "enum": [
                              "abn_record",
                              "caller_acn",
                              "abn_record_and_caller_acn"
                            ]
                          },
                          "confidence": {
                            "type": "number",
                            "minimum": 0,
                            "maximum": 1
                          },
                          "evidence_ids": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        }
                      }
                    },
                    "coverage_upgrade": {
                      "$ref": "#/components/schemas/CoverageUpgradePrompt"
                    },
                    "pack_id": {
                      "type": "string",
                      "description": "Pack UUID \u2014 used by downstream tools like `create_due_diligence_pack`.",
                      "example": "01900000-0000-7000-8000-000000000000"
                    },
                    "generated_at": {
                      "type": "string",
                      "format": "date-time",
                      "description": "ISO-8601 generation timestamp."
                    },
                    "audit_metadata": {
                      "type": "object",
                      "description": "Audit metadata for the available business-source verification. It is not a successful PPSR receipt or audit event.",
                      "required": [
                        "search_id",
                        "input_hash",
                        "register",
                        "subject_kind",
                        "initiated_at_ms",
                        "completed_at_ms",
                        "duration_ms"
                      ],
                      "properties": {
                        "search_id": {
                          "type": "string",
                          "description": "UUIDv7 identifier shared by both audit events."
                        },
                        "input_hash": {
                          "type": "string",
                          "pattern": "^[0-9a-f]{64}$",
                          "description": "Full SHA-256 (64 lowercase hex chars) of the canonical verify_counterparty input string."
                        },
                        "register": {
                          "type": "string",
                          "enum": [
                            "abn"
                          ]
                        },
                        "subject_kind": {
                          "type": "string",
                          "enum": [
                            "abn"
                          ]
                        },
                        "initiated_at_ms": {
                          "type": "integer",
                          "description": "Date.now() snapshot from when the service call started."
                        },
                        "completed_at_ms": {
                          "type": "integer",
                          "description": "Date.now() snapshot from when the service returned."
                        },
                        "duration_ms": {
                          "type": "integer",
                          "minimum": 0,
                          "description": "Duration in milliseconds."
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid request (missing required fields, full email supplied as email_domain, etc.)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "ok",
                    "code",
                    "message"
                  ],
                  "properties": {
                    "ok": {
                      "type": "boolean",
                      "const": false
                    },
                    "code": {
                      "type": "string",
                      "enum": [
                        "invalid_input"
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "Bearer token is valid but missing one or more available business-source scopes: abn:lookup or gst:status. No PPSR scope unlocks PPSR access.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "ok",
                    "code",
                    "message",
                    "required_scope"
                  ],
                  "properties": {
                    "ok": {
                      "type": "boolean",
                      "const": false
                    },
                    "code": {
                      "type": "string",
                      "enum": [
                        "insufficient_scope"
                      ]
                    },
                    "message": {
                      "type": "string"
                    },
                    "required_scope": {
                      "type": "string",
                      "enum": [
                        "abn:lookup",
                        "gst:status"
                      ]
                    },
                    "required_scopes": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "enum": [
                          "abn:lookup",
                          "gst:status"
                        ]
                      }
                    },
                    "missing_scopes": {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "enum": [
                          "abn:lookup",
                          "gst:status"
                        ]
                      }
                    }
                  }
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/FairUseRateLimited"
          },
          "502": {
            "description": "Source fetch failed (upstream provider error).",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "ok",
                    "code",
                    "message"
                  ],
                  "properties": {
                    "ok": {
                      "type": "boolean",
                      "const": false
                    },
                    "code": {
                      "type": "string",
                      "enum": [
                        "source_fetch_failed"
                      ]
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "503": {
            "$ref": "#/components/responses/FairUseUnavailable"
          }
        },
        "x-hoist-required-scopes": [
          "abn:lookup",
          "gst:status"
        ]
      }
    },
    "/abn/{abn}": {
      "get": {
        "operationId": "abnLookup",
        "summary": "ABN lookup",
        "description": "Look up an Australian Business Number against the ABN contract shape. Returns entity name, type, status, and registered address summary when the ABR source is available. Org-only: does not search individuals. The currently available ABN lookup has no per-call charge. Auth: bearer credential when provisioned.",
        "security": [
          {
            "oauth2": [
              "abn:lookup"
            ]
          },
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "abn",
            "in": "path",
            "required": true,
            "description": "11-digit Australian Business Number. Spaces and hyphens are accepted and stripped server-side.",
            "schema": {
              "type": "string",
              "pattern": "^[0-9 -]{11,16}$",
              "example": "12 345 678 901"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "ABN found",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "ok",
                    "abn",
                    "entityName",
                    "entityType",
                    "status",
                    "abnRegisteredDate",
                    "acn",
                    "state",
                    "postcode",
                    "sourceUrl",
                    "data_mode"
                  ],
                  "properties": {
                    "ok": {
                      "type": "boolean",
                      "const": true,
                      "description": "Always true on a 200 response"
                    },
                    "abn": {
                      "type": "string",
                      "description": "Normalised 11-digit ABN (no spaces)",
                      "example": "12345678901"
                    },
                    "entityName": {
                      "type": "string",
                      "description": "Registered entity name from the ABR",
                      "example": "MOCK BUILDING SUPPLIES PTY LTD"
                    },
                    "entityType": {
                      "type": "string",
                      "description": "Entity type (e.g. Australian Private Company, Partnership)",
                      "example": "Australian Private Company"
                    },
                    "status": {
                      "type": "string",
                      "description": "Current ABN status: Active or Cancelled",
                      "example": "Active"
                    },
                    "abnRegisteredDate": {
                      "type": "string",
                      "description": "ISO date the ABN was first registered",
                      "example": "2010-03-15"
                    },
                    "acn": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "ACN if the entity has one (companies + registered bodies); null otherwise",
                      "example": "123 456 789"
                    },
                    "state": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Primary business location state code (NSW/VIC/etc.) or null",
                      "example": "NSW"
                    },
                    "postcode": {
                      "type": [
                        "string",
                        "null"
                      ],
                      "description": "Primary business location postcode or null",
                      "example": "2000"
                    },
                    "sourceUrl": {
                      "type": "string",
                      "format": "uri",
                      "description": "Official ABR detail page for the looked-up ABN.",
                      "example": "https://abr.business.gov.au/ABN/View?id=12345678901"
                    },
                    "data_mode": {
                      "type": "string",
                      "enum": [
                        "live",
                        "mock",
                        "hybrid_mock_fallback"
                      ],
                      "description": "Backing mode that served the ABN result. Only live means a real ABR provider served the lookup.",
                      "example": "mock"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid ABN input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AbnLookupError"
                }
              }
            }
          },
          "401": {
            "description": "Authentication required",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PpsrSearchError"
                }
              }
            }
          },
          "403": {
            "description": "Bearer token is valid but missing the abn:lookup scope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PpsrSearchError"
                }
              }
            }
          },
          "404": {
            "description": "ABN not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AbnLookupError"
                }
              }
            }
          },
          "429": {
            "description": "Upstream rate limit hit",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/FairUseRetryAfter"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/FairUseCacheControlNoStore"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/AbnLookupError"
                    },
                    {
                      "$ref": "#/components/schemas/FairUseRateLimitedError"
                    }
                  ]
                }
              }
            }
          },
          "502": {
            "description": "Upstream ABR error (network / parse / non-2xx)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AbnLookupError"
                }
              }
            }
          },
          "503": {
            "$ref": "#/components/responses/FairUseUnavailable"
          }
        },
        "x-hoist-required-scopes": [
          "abn:lookup"
        ]
      }
    },
    "/receipts/due-diligence": {
      "get": {
        "operationId": "showDueDiligenceReceipt",
        "summary": "Due-diligence receipt for the authenticated user",
        "description": "Retrieve available business-source register-search audit records for the authenticated user. The schema can represent compatible historical or future record types, but no current Hoist PPSR success, result, price, certificate, clearance, or completed PPSR receipt exists. Account access or a scope does not unlock PPSR. Records are PII-free and contain no raw query payloads; the userId is derived from the bearer credential.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Maximum number of receipt records to return (default 50, effective cap 200; higher values are clamped to 200).",
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "description": "Key-based cursor from a previous response for pagination.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "search_id",
            "in": "query",
            "required": false,
            "description": "Exact register-search audit correlation id. Use this to reconcile a just-completed search.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "business_name",
            "in": "query",
            "required": false,
            "description": "Optional customer-supplied business-name hint. Used for privacy-preserving entity filtering against derived receipt fingerprints; raw query payloads are never returned.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "abn",
            "in": "query",
            "required": false,
            "description": "Optional customer-supplied ABN hint. Used for privacy-preserving entity filtering against derived receipt fingerprints; raw query payloads are never returned.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "acn",
            "in": "query",
            "required": false,
            "description": "Optional customer-supplied ACN hint. Used for privacy-preserving entity filtering against derived receipt fingerprints; raw query payloads are never returned.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from_date",
            "in": "query",
            "required": false,
            "description": "ISO-8601 inclusive lower bound on the event timestamp.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "to_date",
            "in": "query",
            "required": false,
            "description": "ISO-8601 inclusive upper bound on the event timestamp.",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "consistent_read",
            "in": "query",
            "required": false,
            "description": "When true or omitted, waits up to ~8s for pending audit writes visible to this server isolate to drain before scanning receipts, then returns the fast-path result with a `consistency_note` if the drain timed out (never blocks indefinitely). Set false for the fastest eventually-consistent read with no drain wait.",
            "schema": {
              "type": "boolean",
              "default": true
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Receipt envelope for available business-source audit records. It contains no current successful Hoist PPSR event or certificate.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "ok",
                    "data",
                    "generated_at",
                    "user_id_hash",
                    "freshness",
                    "partial",
                    "confidence",
                    "data_source"
                  ],
                  "properties": {
                    "ok": {
                      "type": "boolean",
                      "const": true
                    },
                    "data": {
                      "type": "object",
                      "required": [
                        "records",
                        "nextCursor",
                        "searches",
                        "answer_card",
                        "entity_filter"
                      ],
                      "properties": {
                        "records": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "search_id",
                              "register",
                              "status"
                            ],
                            "properties": {
                              "search_id": {
                                "type": "string"
                              },
                              "register": {
                                "type": "string"
                              },
                              "status": {
                                "type": "string",
                                "enum": [
                                  "initiated",
                                  "completed",
                                  "failed"
                                ]
                              },
                              "subject_kind": {
                                "type": "string"
                              },
                              "initiated_at": {
                                "type": "number"
                              },
                              "completed_at": {
                                "type": "number"
                              },
                              "failed_at": {
                                "type": "number"
                              },
                              "cert_sha256": {
                                "type": "string"
                              },
                              "cost_cents": {
                                "type": "number"
                              },
                              "reason": {
                                "type": "string"
                              },
                              "integrity_flags": {
                                "type": "array",
                                "description": "Non-secret annotations for legacy audit records, for example legacy placeholder input-hash metadata.",
                                "items": {
                                  "type": "string",
                                  "enum": [
                                    "legacy_placeholder_input_hash"
                                  ]
                                }
                              }
                            }
                          }
                        },
                        "nextCursor": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "searches": {
                          "type": "array",
                          "description": "Search-level grouping for human answers. Prefer this over records[] when summarising receipt state.",
                          "items": {
                            "$ref": "#/components/schemas/DueDiligenceReceiptSearchSummary"
                          }
                        },
                        "answer_card": {
                          "$ref": "#/components/schemas/DueDiligenceReceiptAnswerCard"
                        },
                        "entity_filter": {
                          "$ref": "#/components/schemas/DueDiligenceReceiptEntityFilter"
                        }
                      }
                    },
                    "generated_at": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "user_id_hash": {
                      "type": "string",
                      "description": "First 24 hex chars of SHA-256(userId)"
                    },
                    "freshness": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "partial": {
                      "type": "boolean"
                    },
                    "confidence": {
                      "type": "number"
                    },
                    "data_source": {
                      "type": "string",
                      "const": "hoist_audit_due_diligence"
                    },
                    "consistency_note": {
                      "type": "string",
                      "description": "Present only when consistent_read was requested (true/omitted) but the bounded ~8s audit-write drain timed out before completing. Signals that this page reflects the fast eventually-consistent scan rather than a fully-drained read; a just-completed search may not yet appear. Absent when the drain completed or consistent_read=false."
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Invalid query input, including inverted from_date/to_date ranges",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean",
                      "const": false
                    },
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/FairUseRateLimited"
          },
          "502": {
            "description": "R2 audit-bucket scan failure",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "ok": {
                      "type": "boolean",
                      "const": false
                    },
                    "code": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          },
          "503": {
            "$ref": "#/components/responses/FairUseUnavailable"
          }
        }
      }
    },
    "/exports": {
      "post": {
        "operationId": "createEvidencePack",
        "summary": "Create a prelaunch sample/contract Evidence Pack export",
        "description": "Build an owner-bound prelaunch sample/contract export containing machine-pack JSON, client-facing PDF metadata, fixture/unsearched rows, timestamps, fixture-derived risk signals, and human-review items. Every ABR, GST, VIN, and PPSR row produced by this route is fixture or unsearched data; it does not verify an ABN, GST status, vehicle, asset, or counterparty and does not return a live PPSR result, source confidence, price, registration status, clearance, or AFSA certificate. Authentication permits writing and later retrieving the caller's own sample artifact only and does not unlock any register source.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Optional client-generated key that makes the sample-export POST safe to retry when bearer authentication supplies a trustworthy user identity. An unauthenticated request is rejected even if the broader v1 auth middleware is in rollback mode. This is not a source-search, price, or billing control. 8-200 characters of [A-Za-z0-9:_.-]; a malformed key returns 400 invalid_idempotency_key.",
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z0-9:_.-]{8,200}$",
              "example": "exports:12345678901:2026-07-04T00:00:00Z"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "At least one of abn or vin is required to label the sample. Neither input triggers a current source query or verification.",
                "properties": {
                  "abn": {
                    "type": "string",
                    "maxLength": 32,
                    "pattern": "^[0-9 -]{11,32}$",
                    "description": "ABN label for fixture-only sample output. The route does not query ABR or verify ABN or GST status."
                  },
                  "vin": {
                    "type": "string",
                    "maxLength": 32,
                    "pattern": "^[A-HJ-NPR-Z0-9 -]{17,32}$",
                    "description": "VIN label for fixture-only sample output. The route does not query PPSR, verify a vehicle, or establish clearance."
                  },
                  "purpose": {
                    "type": "string",
                    "maxLength": 240,
                    "description": "Human-readable purpose for the evidence pack. Stored as provenance metadata only."
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Fixture/unsearched sample export created; no current register result, price, certificate, clearance, or source-backed verification is returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EvidencePackEnvelope"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (e.g. neither abn nor vin provided)",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EvidencePackError"
                }
              }
            }
          },
          "401": {
            "description": "No server-trusted authenticated owner is available; no artifact is created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EvidencePackError"
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/FairUseRateLimited"
          },
          "502": {
            "description": "Upstream (PDF renderer or R2 storage) failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EvidencePackError"
                }
              }
            }
          },
          "503": {
            "description": "Evidence Pack storage not available (env.AUDIT binding missing)",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/FairUseUnavailableRetryAfter"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/FairUseCacheControlNoStore"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/EvidencePackError"
                    },
                    {
                      "$ref": "#/components/schemas/FairUseUnavailableError"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-hoist-required-scopes": [
          "exports:write"
        ]
      }
    },
    "/exports/{id}": {
      "get": {
        "operationId": "getEvidencePack",
        "summary": "Retrieve a prelaunch sample Evidence Pack PDF",
        "description": "Stream the truth-stamped prelaunch fixture PDF bytes only when the current authenticated principal owns the export. The PDF preserves fixture/unsearched limitations and is not proof that ABR, GST, VIN, or PPSR was queried or verified. Missing, ownerless, and other-owner artifacts share the same 404 response so their existence is not disclosed. An owner-bound artifact with an older truth contract is withheld with 410.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Pack identifier (UUID v4 8-4-4-4-12 hex shape).",
            "schema": {
              "type": "string",
              "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "PDF bytes for the truth-stamped prelaunch fixture sample.",
            "content": {
              "application/pdf": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            },
            "headers": {
              "x-hoist-evidence-contract-version": {
                "schema": {
                  "type": "string",
                  "const": "fixture-machine-truth-v2"
                },
                "description": "Truth-contract stamp for the stored fixture artifact. Current fixture responses expose no source-snapshot or raw-artifact headers."
              }
            }
          },
          "400": {
            "description": "Invalid id shape",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EvidencePackError"
                }
              }
            }
          },
          "401": {
            "description": "No server-trusted authenticated principal is available.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EvidencePackError"
                }
              }
            }
          },
          "404": {
            "description": "Evidence Pack is absent, ownerless, or not owned by the current authenticated principal; these cases are intentionally indistinguishable.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EvidencePackError"
                }
              }
            }
          },
          "410": {
            "description": "Legacy unstamped artifact withheld because its machine-truth contract cannot be established",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EvidencePackError"
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/FairUseRateLimited"
          },
          "502": {
            "description": "Upstream (R2) failed",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EvidencePackError"
                }
              }
            }
          },
          "503": {
            "description": "Evidence Pack storage not available (env.AUDIT binding missing)",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/FairUseUnavailableRetryAfter"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/FairUseCacheControlNoStore"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/EvidencePackError"
                    },
                    {
                      "$ref": "#/components/schemas/FairUseUnavailableError"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-hoist-required-scopes": [
          "exports:write"
        ]
      }
    },
    "/asic/licence/lookup": {
      "post": {
        "operationId": "asicLicenceLookup",
        "summary": "ASIC AFSL/ACL licence lookup",
        "description": "Look up an ASIC Australian Financial Services Licence or Australian Credit Licence status. AFSL responses retain explicit fixture compatibility data; ACL responses read one exact record from a fresh, operationally trusted ASIC Credit Licensees snapshot and fail closed when unavailable. No live or paid current ASIC extract is available through Hoist. Legacy current-extract fields fail closed with paid_source_unavailable; use the ASIC Professional Registers directly for current information. Auth: bearer credential when provisioned.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AsicLicenceLookupRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "AFSL fixture compatibility or trusted source-backed ACL result with provenance",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AsicLicenceLookupResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AsicLicenceLookupError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AsicLicenceLookupError"
                }
              }
            }
          },
          "404": {
            "description": "Licence not found in the selected fixture or exact trusted source snapshot",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AsicLicenceLookupError"
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/FairUseRateLimited"
          },
          "503": {
            "description": "Trusted ACL snapshot unavailable, stale, malformed, incomplete, or legacy current extract not wired",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/FairUseUnavailableRetryAfter"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/FairUseCacheControlNoStore"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/AsicLicenceLookupError"
                    },
                    {
                      "$ref": "#/components/schemas/FairUseUnavailableError"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/verify-professional": {
      "post": {
        "operationId": "verifyProfessional",
        "summary": "Verify a professional register record",
        "description": "Verify a professional-register role against source-cited ASIC public snapshots. Supports liquidators, financial advisers, banned/disqualified persons, AFS representatives, credit representatives, Registered Auditors, and SMSF Auditors. Representative, auditor-condition, suspension, and same-name matches require manual review before relying on them as authority evidence.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerifyProfessionalRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Professional verification result with source-cited evidence wording",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VerifyProfessionalResponse"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VerifyProfessionalError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer token",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VerifyProfessionalError"
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/FairUseRateLimited"
          },
          "503": {
            "description": "Required ASIC public-source snapshot is unavailable",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/FairUseUnavailableRetryAfter"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/FairUseCacheControlNoStore"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/VerifyProfessionalError"
                    },
                    {
                      "$ref": "#/components/schemas/FairUseUnavailableError"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-hoist-required-scopes": [
          "professional:verify"
        ]
      }
    },
    "/due-diligence-packs": {
      "post": {
        "operationId": "createDueDiligencePack",
        "summary": "Create a fixture-only due-diligence sample pack",
        "description": "Assemble an explicitly fixture-only due-diligence sample pack for a counterparty and optional asset. The output demonstrates the entity/asset slice contract but is not current register evidence, is not persisted to a retrievable URL, and emits no completed PPSR receipt or register-search audit event. Asset fields shape fixture output only. Hoist PPSR preview and paid search are currently unavailable; no paid-search flag, confirmation, credential, scope, account, plan, billing setup, or B2G status unlocks them.",
        "security": [
          {
            "oauth2": [
              "abn:lookup",
              "gst:status"
            ]
          },
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "counterparty": {
                    "type": "string",
                    "description": "ABN or business-name label used to shape the fixture-only sample pack; the pack is not proof that a current register search ran."
                  },
                  "asset": {
                    "type": "string",
                    "description": "Sample VIN or other serial label used only to shape fixture output. It never triggers or unlocks a PPSR preview or paid search."
                  },
                  "document": {
                    "type": "string",
                    "description": "Free-text document reference. UNTRUSTED: it contributes only to an in-memory sample hash; the raw text is never reflected or persisted."
                  },
                  "transaction_context": {
                    "type": "string",
                    "description": "Optional untrusted purpose. It contributes only to an in-memory input hash and a transaction_context_provided boolean; raw text is never reflected or persisted."
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Fixture-only sample pack assembled. It is not persisted, contains no current PPSR result, registration status, price, certificate, clearance, completed receipt, or successful PPSR audit event.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input or missing subject",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/FairUseRateLimited"
          },
          "500": {
            "description": "Internal synthetic-fixture assembly error; no upstream register request was made",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "503": {
            "$ref": "#/components/responses/FairUseUnavailable"
          }
        },
        "x-hoist-required-scopes": [
          "abn:lookup",
          "gst:status"
        ]
      }
    },
    "/asset-finance-evidence-packs": {
      "post": {
        "operationId": "createAssetFinanceEvidencePack",
        "summary": "Create a prelaunch asset-finance sample export (legacy alias)",
        "description": "Legacy alias for the owner-bound prelaunch sample/contract Evidence Pack exporter. The success contract exactly mirrors the canonical fixture machine-truth fields and adds legacy_alias metadata. Every ABR, GST, VIN, and PPSR row is fixture or unsearched data: this route does not verify an ABN, GST status, vehicle, asset, or counterparty and does not return source freshness, source confidence, a live PPSR result, price, registration status, clearance, or AFSA certificate. Any written export is partial sample output, not current source-backed evidence.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "abn": {
                    "type": "string",
                    "description": "ABN label for fixture-only sample output. This route does not query ABR or verify the ABN or GST status."
                  },
                  "vin": {
                    "type": "string",
                    "description": "VIN label for fixture-only sample output. This route does not query PPSR, verify the vehicle, or establish clearance."
                  },
                  "purpose": {
                    "type": "string",
                    "description": "Human-readable purpose stored as provenance metadata."
                  }
                },
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Created a fixture/unsearched sample export with legacy-alias metadata; no current register result, price, certificate, clearance, or source-backed verification is returned.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssetFinanceEvidencePackEnvelope"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EvidencePackError"
                }
              }
            }
          },
          "401": {
            "description": "No server-trusted authenticated owner is available; no artifact is created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EvidencePackError"
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/FairUseRateLimited"
          },
          "502": {
            "description": "PDF rendering or R2 persistence failed.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EvidencePackError"
                }
              }
            }
          },
          "503": {
            "description": "Evidence Pack storage is unavailable.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/FairUseUnavailableRetryAfter"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/FairUseCacheControlNoStore"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "$ref": "#/components/schemas/EvidencePackError"
                    },
                    {
                      "$ref": "#/components/schemas/FairUseUnavailableError"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-hoist-required-scopes": [
          "exports:write"
        ]
      }
    },
    "/explain-risk-flags": {
      "post": {
        "operationId": "explainRiskFlags",
        "summary": "Explain risk flags in plain English",
        "description": "Translate Hoist risk-flag identifiers into deterministic, audience-appropriate plain-English explanations (broker / borrower / operator). No external source is queried; no register-search audit event is emitted.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "risk_flag_ids_csv": {
                    "type": "string",
                    "description": "Comma-separated list of risk-flag identifiers or kinds (max 20)."
                  },
                  "audience": {
                    "type": "string",
                    "enum": [
                      "broker",
                      "borrower",
                      "operator"
                    ],
                    "description": "Reader role controlling explanation tone."
                  },
                  "pack_id": {
                    "type": "string",
                    "description": "Optional Evidence Pack back-reference (recorded, not dereferenced)."
                  }
                },
                "required": [
                  "risk_flag_ids_csv",
                  "audience"
                ],
                "additionalProperties": false
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Per-flag plain-English explanations",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input (missing csv/audience or unknown audience)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/FairUseRateLimited"
          },
          "503": {
            "$ref": "#/components/responses/FairUseUnavailable"
          }
        },
        "x-hoist-required-scopes": [
          "mcp:account.receipts"
        ]
      }
    },
    "/trust-receipt": {
      "get": {
        "operationId": "showTrustReceipt",
        "summary": "Read the assistant's own access log",
        "description": "Return the assistant's own access log for currently available tool calls, newest first. This is not a register-search audit chain. Hoist PPSR is currently unavailable and cannot appear as a current successful preview, search, result, certificate, clearance, or completed receipt; account access does not unlock it.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer"
            },
            "description": "Maximum number of events to return (default 50, max 200)."
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Opaque cursor from a previous response's nextCursor."
          }
        ],
        "responses": {
          "200": {
            "description": "Access-log events, newest first",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid bearer token",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/FairUseRateLimited"
          },
          "503": {
            "description": "Audit bucket not available in this environment",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/FairUseUnavailableRetryAfter"
              },
              "Cache-Control": {
                "$ref": "#/components/headers/FairUseCacheControlNoStore"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "type": "object"
                    },
                    {
                      "$ref": "#/components/schemas/FairUseUnavailableError"
                    }
                  ]
                }
              }
            }
          }
        },
        "x-hoist-required-scopes": [
          "mcp:account.receipts"
        ]
      }
    },
    "/policies/evaluate": {
      "post": {
        "operationId": "checkVerificationPolicy",
        "summary": "Evaluate a verification policy",
        "description": "Evaluate an Evidence Pack projection against a workflow policy template. Returns pass, fail, needs_review, or missing_evidence with rule-level source references. This applies customer/workflow thresholds above source-cited evidence and risk flags; it does not mutate Evidence Packs or source assertions.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerificationPolicyEvaluateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Policy evaluation result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VerificationPolicyEnvelope"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input or unknown policy template",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VerificationPolicyError"
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/FairUseRateLimited"
          },
          "503": {
            "$ref": "#/components/responses/FairUseUnavailable"
          }
        }
      }
    },
    "/decision-memory/events": {
      "post": {
        "operationId": "recordDecisionMemory",
        "summary": "Record decision-memory feedback",
        "description": "Record an append-only reviewer outcome event against an Evidence Pack, risk flag, source assertion, source match, or policy evaluation. The event is stored separately from source facts and does not mutate Evidence Packs, risk flags, source assertions, or policy results.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DecisionMemoryRecordRequest"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Decision-memory event recorded",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DecisionMemoryRecordEnvelope"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DecisionMemoryError"
                }
              }
            }
          },
          "401": {
            "description": "Missing authenticated reviewer identity",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DecisionMemoryError"
                }
              }
            }
          },
          "409": {
            "description": "Duplicate decision id",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DecisionMemoryError"
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/FairUseRateLimited"
          },
          "503": {
            "$ref": "#/components/responses/FairUseUnavailable"
          }
        }
      },
      "get": {
        "operationId": "listDecisionMemoryEvents",
        "summary": "List decision-memory feedback",
        "description": "List append-only reviewer outcome events for future policy/risk tuning. Results are filtered by org_id and optional evidence/policy/source references.",
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "parameters": [
          {
            "name": "org_id",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "evidence_pack_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "policy_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "policy_version",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "policy_evaluation_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "risk_flag_code",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "source_assertion_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "source_match_ref",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "reviewer_user_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Decision-memory events",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DecisionMemoryListEnvelope"
                }
              }
            }
          },
          "400": {
            "description": "Invalid input",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DecisionMemoryError"
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/FairUseRateLimited"
          },
          "503": {
            "$ref": "#/components/responses/FairUseUnavailable"
          }
        }
      }
    }
  },
  "x-org-only-scope": "Hoist operates under an org-only scope: organisation-grantor and serial-number searches only, no PII. The API does NOT accept individual-grantor searches and will reject them with a 400 response before any search runs. See https://hoistai.com/trust/npii-boundary."
}